Skip to main content

Discovery API

Last updated: 2026-07-17

Discovery operations use a public key (pk_*). Start with the catalog, then request bank or operator detail only when the selected method needs it.

Get the market catalog

GET /merchant/api/v1/catalog

Auth: Public key

Returns the markets enabled for the merchant account.

{
"markets": [
{
"countryCode": "GH",
"currencyCode": "GHS",
"methodsIn": ["mobile_money"],
"methodsOut": ["mobile_money"]
}
]
}

methodsIn and methodsOut contain lower-case discovery tokens. Payment requests use PAYMENT_METHOD_* enum values instead.

List pay-in banks

GET /merchant/api/v1/payins/banks

Auth: Public key

Query parameterTypePresenceMeaning
countryCodestringRequiredISO 3166-1 alpha-2 market country
paymentMethodstringRequiredSend PAYMENT_METHOD_BANK_ACCOUNT for bank discovery
trafficVerticalenumOptionalTraffic category used by the payment flow
customerSegmentenumOptionalCustomer segment used by the payment flow
{
"banks": [
{"code": "<bank_code>", "name": "<bank_name>"}
]
}

List pay-in mobile money operators

GET /merchant/api/v1/payins/mmo

Auth: Public key

Query parameterTypePresenceMeaning
countryCodestringRequiredISO 3166-1 alpha-2 market country
paymentMethodstringRequiredPAYMENT_METHOD_MOBILE_MONEY or PAYMENT_METHOD_MOBILE_MONEY_TRANSFER
trafficVerticalenumOptionalTraffic category used by the payment flow
customerSegmentenumOptionalCustomer segment used by the payment flow
{
"operators": [
{"operator": "<operator_code>", "name": "<operator_name>"}
]
}

Treat operators[].operator as an opaque public code and reuse it exactly as returned. For standard mobile money it selects a wallet operator. For mobile money transfer it selects the inbound transfer rail.

Outcomes

Bank and operator discovery can return INVALID_ARGUMENT when a required query parameter is missing or the selected method is unavailable for that market. Handle other non-success responses through the standard error envelope.

Related guide: Catalog and availability.