Skip to main content

Create Payment Request (Atlas)

Overview

The POST /banking/ibans/v2/payments/create endpoint creates a standardized payment request. It dynamically validates required fields according to the specified paymentType:

  1. WALLET_PAYOUT: Transfers funds from a wallet to an external beneficiary bank account (targetAccountId).
  2. WALLET_TO_BUSINESS: Transfers funds from a wallet directly to another platform business entity (targetCompanyId).
  3. TRANSFER_WITHIN_WALLETS: Moves funds between two wallets belonging to your own company (targetWalletId).

Resource Access

  • HTTP Method: POST
  • Endpoint: /banking/ibans/v2/payments/create
  • Authentication: Bearer token required
  • Permissions: Client:Make Payment To Account:write, Client:Make Payment To Another Business:write

Request Headers

HeaderValueRequiredDescription
AuthorizationBearer {access_token}YesJWT Bearer access token
Content-Typeapplication/jsonYesRequest payload format
Acceptapplication/jsonYesResponse payload format

Request Payloads by Type

1. WALLET_PAYOUT (Bank Account Payout)

FieldTypeRequiredDescription
paymentTypestringYesMust be "WALLET_PAYOUT".
sourceWalletIdstringYesUnique identifier of the funding wallet.
sourceAmountnumberYesFloat amount to transfer (minimum 0.01).
targetAccountIdstringYesBeneficiary bank account ID registered in Atlas.
purposeIdstringYesPurpose code identifier (obtained from /payments/purpose-codes).
customPaymentReferencestringNoCustom memo or invoice reference displayed on statements.
paymentIdstringNoUnique client-generated UUID for idempotent request handling.
supportingDocS3KeystringNoS3 key returned by /documents/generate-upload-link if required.
scheduledDatestringNoISO 8601 UTC timestamp for future execution.
recurFrequencystringNoRecurrence frequency: ONE_TIME, WEEKLY, MONTHLY.
senderobjectNoUnderlying customer details when paying on behalf of an end-user.

Example: WALLET_PAYOUT

{
"paymentType": "WALLET_PAYOUT",
"sourceWalletId": "12345",
"sourceAmount": 1000.50,
"targetAccountId": "67890",
"purposeId": "1",
"customPaymentReference": "Invoice payment #12345",
"paymentId": "550e8400-e29b-41d4-a716-446655440000"
}

2. WALLET_TO_BUSINESS (Transfer to Another Business)

FieldTypeRequiredDescription
paymentTypestringYesMust be "WALLET_TO_BUSINESS".
sourceWalletIdstringYesFunding wallet ID.
sourceAmountnumberYesFloat amount to transfer.
targetCompanyIdstringYesTarget company identifier on the platform.
purposeIdstringYesPurpose code identifier.
customPaymentReferencestringNoCustom memo or invoice reference.
paymentIdstringNoUnique idempotency UUID.

Example: WALLET_TO_BUSINESS

{
"paymentType": "WALLET_TO_BUSINESS",
"sourceWalletId": "12345",
"sourceAmount": 500.00,
"targetCompanyId": "comp-98765",
"purposeId": "2",
"customPaymentReference": "Service settlement Q3"
}

3. TRANSFER_WITHIN_WALLETS (Inter-Wallet Sweep)

FieldTypeRequiredDescription
paymentTypestringYesMust be "TRANSFER_WITHIN_WALLETS".
sourceWalletIdstringYesSource wallet ID.
sourceAmountnumberYesFloat amount to sweep.
targetWalletIdstringYesDestination wallet ID.
customPaymentReferencestringNoCustom reference.
paymentIdstringNoUnique idempotency UUID.

Example: TRANSFER_WITHIN_WALLETS

{
"paymentType": "TRANSFER_WITHIN_WALLETS",
"sourceWalletId": "12345",
"sourceAmount": 250.00,
"targetWalletId": "67890",
"customPaymentReference": "Liquidity top-up"
}

Response

Success Response (201 Created)

{
"reference": "TO-29072023-114",
"type": "WALLET_PAYOUT",
"state": "REQUESTED"
}

Response Fields

FieldTypeDescription
referencestringUnique Atlas tracking reference (e.g. TO-29072023-114).
typestringStandardized payment type: WALLET_PAYOUT, WALLET_TO_BUSINESS, TRANSFER_WITHIN_WALLETS, CONVERT_WITHIN_WALLETS, CONVERT_WALLET_PAYOUT.
statestringCurrent lifecycle state: REQUESTED, DISPUTED, COMPLETED, REFUNDED, CANCELLED, ARCHIVED, SCHEDULED.

Code Examples

cURL

curl -X POST "https://api.ahrvo.network/banking/ibans/v2/payments/create" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"paymentType": "WALLET_PAYOUT",
"sourceWalletId": "12345",
"sourceAmount": 1000.50,
"targetAccountId": "67890",
"purposeId": "1",
"customPaymentReference": "Invoice #12345"
}'

JavaScript (Fetch)

const response = await fetch('https://api.ahrvo.network/banking/ibans/v2/payments/create', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
paymentType: 'WALLET_PAYOUT',
sourceWalletId: '12345',
sourceAmount: 1000.50,
targetAccountId: '67890',
purposeId: '1',
customPaymentReference: 'Invoice #12345'
})
});

const result = await response.json();
console.log('Payment Reference:', result.reference, 'State:', result.state);

Python (requests)

import requests

url = "https://api.ahrvo.network/banking/ibans/v2/payments/create"
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
payload = {
"paymentType": "WALLET_PAYOUT",
"sourceWalletId": "12345",
"sourceAmount": 1000.50,
"targetAccountId": "67890",
"purposeId": "1",
"customPaymentReference": "Invoice #12345"
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())

Interactive API Console

Test the endpoint directly in your browser: