expiresAt field is optional. The dispayMessage, payerDetails and paymentDetails object is always required. The paymentDetails, its structure varies based on the selected paymentMethod and currency. Refer to the Supported Payment Methods guide for the required fields per payment method.
Country Code Consistency
ThecurrencyIso2 field at the root of the request must correspond to the country of the currency specified in paymentDetails. For example, if paymentDetails.currency is NGN, then currencyIso2 must be NG. This ensures consistency between the requested currency and its country of issuance.
Request Body
Fields
| Field | Required | Description |
|---|---|---|
amount | Yes | The payment amount. |
currencyIso2 | Yes | The ISO2 country code corresponding to the currency in paymentDetails. |
displayMessage | Yes | A custom message shown to the payer. |
payerDetails.name | Yes | Name of the payer. |
payerDetails.email | Yes | Email of the payer. |
expiresAt | No | Expiry datetime for the payment link in ISO 8601 format. |
paymentDetails.accountName | Yes | Name on the receiving account. |
paymentDetails.accountNumber | Yes | Receiving account number. |
paymentDetails.providerName | Yes | Bank name (for NGN), routing/sort code or institution name (for other BANK_TRANSFER currencies), or mobile money provider (for MOBILE_MONEY). |
paymentDetails.paymentMethod | Yes | BANK_TRANSFER or MOBILE_MONEY. |
paymentDetails.currency | Yes | The currency to collect payment in. |
paymentDetails.bankCode | Conditional | Required for BANK_TRANSFER. Omit for MOBILE_MONEY. |
paymentDetails.network | Conditional | Required for MOBILE_MONEY. Must match providerName. Omit for BANK_TRANSFER. |

