quoteId.
Endpoint
POST:{{baseURL}}/v2/payout
Request Details
Headers
Include these headers in your request:| Header | Value | Required |
|---|---|---|
Content-Type | application/json | โ Yes |
x-api-key | YOUR_API_KEY | โ Yes |
Request Examples
Note: Recipientโs name and Bank name must match the details in the Bank list endpoint and Account enquiry endpoint.
Request Body
The following fields are required when making an NGN payout request:| Field | Type | Description |
|---|---|---|
remark | String | Additional note about the transaction. |
reason | String | Purpose of the transfer (e.g., Gift). |
invoice | String | Optional identifier for the invoice (returned from file upload endpoint). |
quoteId | String | Unique Quote ID for the payout. |
recipient.name | String | Full name of the recipient. |
recipient.paymentChannel | String | Payment method (BANK_TRANSFER). |
recipient.currency | String | ISO currency code (NGN). |
recipient.country | String | ISO country code (NG). |
recipient.account.bankName | String | Name of the recipientโs bank. |
recipient.account.accountNumber | String | Recipientโs bank account number. |
recipient.account.sortCode | String | The 3-digit bank unique code (e.g., 058 for GTBank). |
Success Response (200 OK)
If the payout is successfully created, the API returns the following response:copy
Response Breakdown
| Field | Type | Description |
|---|---|---|
message | String | Confirmation message indicating the result of the request. |
status | String | Overall status of the request (success). |
data | Object | Container for the payout transaction details. |
data.id | String | Unique identifier for the payout transaction. |
data.remark | String | Optional note about the transaction, as provided in the request. |
data.invoice | String | Optional identifier for the invoice, as provided in the request. |
data.reason | String | Reason for the payout, as provided in the request. |
data.referenceNumber | String | Unique reference number generated for the payout. |
data.type | String | Type of transaction (e.g., SEND). |
data.state | String | Current state of the payout (COMPLETED, PENDING, FAILED, REFUNDED). |
data.quote.id | String | Unique ID of the quote used for the transaction. |
data.quote.source.currency | String | Currency of the source funds (NGN). |
data.quote.source.country | String | ISO country code of the source (NG). |
data.quote.source.amount | Number | Amount debited from the source. |
data.quote.target.currency | String | Currency received by the recipient (NGN). |
data.quote.target.country | String | ISO country code of the recipient (NG). |
data.quote.target.amount | Number | Amount credited to the recipient. |
data.quote.rate | Number | Conversion rate applied (1 for NGN โ NGN). |
data.quote.fee.amount | Number | Fee charged for the payout. |
data.recipient.name | String | Full name of the recipient. |
data.recipient.firstName | String | Recipientโs first name. |
data.recipient.lastName | String | Recipientโs last name. |
data.recipient.relationship | String | Relationship to account holder (e.g., SELF). |
data.recipient.type | String | Recipient type (BUSINESS). |
data.recipient.account.accountNumber | String | Recipientโs bank account number. |
data.recipient.account.sortCode | String | Bank unique code (e.g., 058 for GTBank). |
data.recipient.account.bankName | String | Name of the recipientโs bank. |
data.recipient.paymentChannel | String | Payment method used (BANK_TRANSFER). |
data.recipient.currency | String | Currency of the recipientโs account (NGN). |
data.recipient.country | String | Recipientโs ISO country code (NG). |
data.created | String | ISO 8601 timestamp when the transaction was created. |
data.processed | String | ISO 8601 timestamp when the transaction was processed. |
Error Handling
| Status Code | Meaning | Example Response |
|---|---|---|
400 | Insufficient Balance | Insufficient Balance |
401 | Unauthorized | Invalid API key provided. |
403 | Forbidden | IP not whitelisted |
404 | Not Found | The requested endpoint does not exist. |
422 | Unprocessable Entity | Invalid quote ID provided. |
500 | Internal Server Error | An internal error occurred. |
Best Practices
โ EnsurequoteId is valid and linked to an existing quote.โ Confirm that the recipientโs bank account number and bank code are correct.
โ Use a valid API key in the headers.
โ Handle error responses correctly in your integration.

