Skip to main content
POST
Create a payout request

Authorizations

X-API-Key
string
header
required

Headers

X-Request-Id
string
Idempotency-Key
string<uuid>
required

Unique idempotency token per logical write (UUID v4). Re-send the same value on safe retries.

Example:

"a1b2c3d4-e5f6-47a8-b9c0-d1e2f3a4b5c6"

Body

application/json
destination_type
enum<string>
required
Available options:
MOBILE_MONEY,
BANK_ACCOUNT,
CRYPTO_WALLET
Example:

"MOBILE_MONEY"

destination_country
string
required

ISO 3166-1 alpha-2 country code

Example:

"GH"

destination_currency
string
required

ISO 4217 currency code

Example:

"GHS"

destination_amount
number
required

Amount the beneficiary receives

Example:

500

destination_account_unique
string
required

Mobile number or bank account number

Example:

"0244000000"

destination_provider_name
string
required

Mobile money provider or bank name

Example:

"MTN"

settlement_currency
string

Currency the merchant settles in — USDT (crypto rail) or NGN (bank transfer). Defaults to USDT.

Example:

"USDT"

settlement_network
enum<string>

Crypto rail only: the chain the merchant will settle on (TRON or BSC). Selects which per-merchant receiving address the payment instruction shows. Ignored on the bank-transfer rail. Defaults to TRON for crypto settlements.

Available options:
TRON,
BSC
Example:

"TRON"

destination_provider_code
string

Machine code for the destination institution — the bank code for BANK_ACCOUNT, the mobile money code for MOBILE_MONEY. Required for both: the processor routes on this code and never on the display name. Omit for CRYPTO_WALLET. Codes are corridor-specific — fetch them from the processor bank list.

Example:

"044"

destination_account_name
string

Beneficiary name. Required for BANK_ACCOUNT and MOBILE_MONEY — the processor rejects a transfer without it.

Example:

"Kwame Mensah"

merchant_reference
string
Example:

"ref_merchant_xyz_001"

notification_url
string

Per-payout webhook override. When set, events for this payout are delivered here instead of the tenant default webhook URL.

Example:

"https://merchant.example.com/hooks/this-payout"

Response

Payout created

id
string
required
Example:

"a3f1c2d4-..."

tenant_id
string
required
status
enum<string>
required
Available options:
CREATED,
PENDING_PAYMENT,
PAYMENT_RECEIVED,
PROCESSING,
SUCCESSFUL,
FAILED,
EXPIRED
merchant_reference
object | null
required
notification_url
object | null
required

Per-payout webhook override, if set

destination_type
enum<string>
required
Available options:
MOBILE_MONEY,
BANK_ACCOUNT,
CRYPTO_WALLET
destination_country
string
required
Example:

"GH"

destination_currency
string
required
Example:

"GHS"

destination_amount
number
required
Example:

500

destination_account_unique
string
required
Example:

"0244000000"

destination_provider_name
string
required
Example:

"MTN"

destination_provider_code
object | null
required

Bank code / mobile money code the processor routes on. Null for crypto.

Example:

"044"

destination_account_name
object | null
required
settlement_currency
string
required
Example:

"USDT"

settlement_amount
number
required

Set by generate-payment-instructions job

Example:

28.5

exchange_rate
number
required
Example:

17.543

platform_fee_amount
number
required
Example:

1.5

platform_fee_currency
string
required
Example:

"USDT"

network_fee_amount
number
required
Example:

0.5

network_fee_currency
string
required
Example:

"USDT"

total_fee_amount
number
required
Example:

2

total_fee_currency
string
required
Example:

"USDT"

is_refunded
boolean
required
Example:

false

payment_instruction
object | null
required

Current active payment instruction, if generated (null until the cronjob runs)

status_timeline
object[]
required

Status transition history, oldest → newest

created_at
string
required
Example:

"2026-03-06T14:30:00.000Z"

updated_at
string
required
Example:

"2026-03-06T14:30:01.000Z"