Skip to main content
When creating a payment link, the 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

The currencyIso2 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

{
  "amount": 100000,
  "currencyIso2": "NG",
  "displayMessage": "Pay on time",
  "payerDetails": {
    "name": "JOHN DOE",
    "email": "johndoe@gmail.com"
  },
  "expiresAt": "2025-06-25T17:40:00Z",
  "paymentDetails": {
    "accountName": "MONIRATES LIMITED",
    "accountNumber": "0115847370",
    "providerName": "MTN",
    "paymentMethod": "BANK_TRANSFER",
    "currency": "NGN",
    "bankCode": "90221"
  }
}

Fields

FieldRequiredDescription
amountYesThe payment amount.
currencyIso2YesThe ISO2 country code corresponding to the currency in paymentDetails.
displayMessageYesA custom message shown to the payer.
payerDetails.nameYesName of the payer.
payerDetails.emailYesEmail of the payer.
expiresAtNoExpiry datetime for the payment link in ISO 8601 format.
paymentDetails.accountNameYesName on the receiving account.
paymentDetails.accountNumberYesReceiving account number.
paymentDetails.providerNameYesBank name (for NGN), routing/sort code or institution name (for other BANK_TRANSFER currencies), or mobile money provider (for MOBILE_MONEY).
paymentDetails.paymentMethodYesBANK_TRANSFER or MOBILE_MONEY.
paymentDetails.currencyYesThe currency to collect payment in.
paymentDetails.bankCodeConditionalRequired for BANK_TRANSFER. Omit for MOBILE_MONEY.
paymentDetails.networkConditionalRequired for MOBILE_MONEY. Must match providerName. Omit for BANK_TRANSFER.