Skip to main content
POST
Initiate bank transfer

Authorizations

x-api-key
string
header
required

Merchant API key (e.g., sk_live_xxx or sk_test_xxx)

Body

application/json
accountId
string<uuid>
required

Source account UUID

Example:

"68f11209-451f-4a15-bfcd-d916eb8b09f4"

amount
number
required

Transfer amount

Required range: x >= 0.01
Example:

1000

reference
string
required

Unique client reference (alphanumeric, dots, underscores, hyphens)

Pattern: ^[a-zA-Z0-9._-]+$
Example:

"transfer-001"

narration
string

Transfer narration

Maximum string length: 100
Example:

"Payment for services"

transferRecipientId
string<uuid>

Transfer recipient UUID (use this OR accountNumber+bankId)

Example:

"68f11209-451f-4a15-bfcd-d916eb8b09f4"

accountNumber
string

Bank account number (required if no transferRecipientId)

Example:

"1234567890"

bankId
string

Bank ID (required if no transferRecipientId)

Example:

"bank-001"

country
enum<string>

Country code

Available options:
zm,
ng
Example:

"zm"

walletId
string

Source wallet ID to debit (optional, uses main wallet if not specified)

Example:

"68f11209-451f-4a15-bfcd-d916eb8b09f4"

recipientName
string

Recipient name for the transaction record

Maximum string length: 100
Example:

"Jane Doe"

Response

Transfer initiated successfully

status
boolean
required

Request success status

Example:

true

message
string
required

Response message

Example:

"Operation completed successfully"

data
object