Skip to main content

Payment methods

Last updated: 2026-07-17

Select a payment method from the account catalog before creating a payment. Availability depends on the direction, market, environment, and request context.

Request enum values

ValuePay-inPayoutNotes
PAYMENT_METHOD_BANK_ACCOUNTYesYesUse bank discovery when the flow needs a bank code
PAYMENT_METHOD_BANK_TRANSFERYesNoHosted or direct pay-in; optional public submethod moniepoint
PAYMENT_METHOD_MOBILE_MONEYYesYesUse operator discovery when merchant-side selection is required
PAYMENT_METHOD_MOBILE_MONEY_TRANSFERYesNoCustomer-initiated transfer; discover the inbound rail with pay-in operator discovery
PAYMENT_METHOD_TESTNon-production onlyNon-production onlyUse only for test flows
PAYMENT_METHOD_CARDNoNoThe enum exists, but merchant create operations reject it

Discover availability

GET /merchant/api/v1/catalog returns the markets enabled for your account. Each market contains countryCode, currencyCode, methodsIn, and methodsOut.

Catalog values such as mobile_money, mobile_money_transfer, bank_transfer, and bank_account are discovery tokens. Payment requests use the corresponding PAYMENT_METHOD_* enum value.

After choosing a market and method:

  • use pay-in bank or operator discovery for a direct inbound flow;
  • use payout bank or operator discovery for an outbound flow;
  • reuse returned bank and operator codes exactly as returned.

Do not hard-code account availability from this page. Discover it at runtime and handle a method becoming unavailable before payment creation.

Test method controls

PAYMENT_METHOD_TEST is available only in non-production environments. For a direct pay-in or payout, send a testDetails object with one of these status values:

testDetails.statusResulting paymentOrder.status
pendingPAYMENT_ORDER_STATUS_PENDING
completedPAYMENT_ORDER_STATUS_COMPLETED
failedPAYMENT_ORDER_STATUS_FAILED
cancelledPAYMENT_ORDER_STATUS_CANCELLED
expiredPAYMENT_ORDER_STATUS_EXPIRED

The optional error value forces the test request to fail instead of returning the selected payment outcome. The optional providerError value supplies a simulated partner failure detail when the selected negative outcome uses one. These controls do not reproduce production accounting effects; use them to test request and status-handling paths only.

Keep request context aligned

Use the selected market country and currency when creating the payment. Send the same paymentMethod, trafficVertical, and customerSegment context in discovery and create requests.

For standard mobile-money pay-ins and payouts, treat the returned public CAPS operator as opaque and reuse it exactly. Hosted standard mobile money sends it when the selected market requires an operator. Mobile money transfer always discovers and sends a transfer rail code: use mobileMoneyOperator for hosted initialization or mobileMoneyTransferDetails.operator for direct creation. Voucher-based standard mobile-money pay-ins add a voucher PIN only when the selected route requires one.

Continue