This page describes what the platform supports. Your own account may have fewer methods enabled, and a single checkout can offer fewer still. The
payment_methods array on a checkout session is the list your customer actually sees.Currency support
Each row below is one corridor. A corridor name is the value you send inpayment_method_types, and for everything except card it is also the value the API returns on payment_method. See How methods are named for the card exception.
A crypto code names the asset and the network together. The same asset on a different network is a different value, and sending to the wrong network loses the funds.
Amounts below a currency’s minimum are not offered. A method can be enabled and still not appear on a small checkout for that reason.
Product support
Subscription means the method can back a recurring charge. Only cards can, because later cycles are billed without the customer present, and NGN cards are not enabled for subscriptions by default. Ask us if you need them.
Save for later means the method can be stored on a customer and charged again, which a setup checkout collects. Only the card rail matching the checkout’s currency can do this, so a setup checkout in USD offers the USD card and nothing else. An
NGN card can be saved only while the customer pays. It cannot be saved on a checkout that charges nothing. See Why a checkout cannot save a card.
Free trial means the method can start a subscription that takes no money up front. It requires saving the method without charging it, so it follows the same rule as Save for later.
Why a checkout has no payment method
A checkout that cannot offer anything is refused when you create it rather than handed to a customer who cannot pay. Creating it would send that customer to a page with nothing to pay with. Four error codes cover this, and which one you get tells you where the problem is.
Work through these in order.
1. Read what your account has enabled. Call
GET /v1/accounts/checkout/settings. At least one corridor in enabled_payment_methods needs "enabled": true. CRYPTO also needs at least one asset set to true in its currencies map, since a CRYPTO entry that is enabled with every asset false offers nothing.
2. Confirm the account can currently use it. enabled_payment_methods is your own configuration. It does not tell you whether the account is able to collect with those methods, and a method can read as enabled while the account cannot offer it. Two things cause that, and they have their own error codes. ACCOUNT_NOT_ACTIVATED means the account has not finished verification and is not live yet, which is the most common cause on a new live key: see Go live, or keep building against a sandbox key, where every method is available. ACCOUNT_PAYMENT_METHODS_RESTRICTED means the methods have been restricted on the account, which you cannot change from your own settings: contact support@bachs.io.
3. Check the currency you are collecting in. When adaptive_pricing is false, the checkout can only be paid in its base_currency, so any method that does not accept that currency drops out. Either turn adaptive pricing on, or price the checkout in a currency your enabled methods accept. The currency support table above lists which method accepts what.
4. Check what the checkout is for. Subscriptions, free trials, and setup checkouts can only be paid by card, as the product support table sets out. They need a card enabled in a currency you can charge, and enabling bank transfer or mobile money does not help them.
If all four check out and you still cannot create a checkout, send your account ID and the full error response to support@bachs.io.
How methods are named
A corridor name is the same wherever it appears, with one exception. The value you use to restrict a checkout inpayment_method_types is the value the API returns as payment_method on a payment or checkout object, for every method except card.
USD_CARD and drops NGN_CARD. A card charge reports payment_method as CARD, not USD_CARD or NGN_CARD. Read the charge’s currency to tell which card corridor collected it. Bank transfer, mobile money, and crypto have no such exception: the corridor name you restrict with is the value you get back.
Related
- Restrict payment methods: limit what one checkout offers
- Supported currencies: collection, balance, and withdrawal currencies

