get-quote; do not pass virtualAccountId.| field | required | notes |
|---|---|---|
quoteId | yes | from get-quote; must not be expired |
merchantOrderId | recommended | merchant idempotency / reconciliation key |
remarks | no | free text |
beneficiaryBank | no* | payout bank for this order. Omit the whole object to use the KYB default (extra.bankAccounts). If present, accountName, accountNo and bankId must all be set |
beneficiaryBank.accountName | with beneficiaryBank | account holder name |
beneficiaryBank.accountNo | with beneficiaryBank | local account number (NGN: 10-digit NUBAN) |
beneficiaryBank.bankId | with beneficiaryBank | local bank code from the bank list, not a bank name |
userRefundCryptoAddress and extInfo.travelRule.beneficiaryBank.bankId is validated when the order isGET /v1/account/list-banks?currency={quote fiat} (NGN or KES).bankCode into beneficiaryBank.bankId.| currency | bankId | accountNo |
|---|---|---|
| NGN | NIBSS code from list-banks (e.g. 058) | 10-digit NUBAN |
| KES | local bank code from list-banks (e.g. 01) | local account number |
beneficiaryBank is omitted, the same rule applies to the KYB defaultbankAccounts[].bankCode when that default is used for the order.ODR00001047 — bank code is not in the quote channel's currency catalog.ODR00001048 — bank catalog is unavailable; the order is not created.ODR00001049 — beneficiary account format is invalid (NGN requires a 10-digit NUBAN).datamerchantOrderId, orderId, orderStatus (processing | success | fail).STABLE_ORDER_UPDATED. Do not treat HTTP 200 alone as funds settled.