Skip to main content

Intro

Khaime automatically routes each payment to a gateway based on the customer’s payment currency — you don’t configure or select gateways yourself.

Context

Gateway routing is the connective layer between Multicurrency (which determines what currency the customer pays in) and the Create Charge / Create Payment Intent endpoints (which actually initiate the payment). The currency field you send on either request is the only input to routing.

Hows

  1. You send a charge request with the customer’s currency
  2. Khaime looks up the gateway configured for that currency
  3. The response tells you which checkout flow to use

Checkout flows

The charge response includes a payment_gateway field. Your integration needs to handle two checkout types:

Example response

Currency-to-gateway mapping

You can force stripe or paystack via the payment_gateway field — the request fails if the currency wouldn’t naturally resolve to the gateway you named. Flutterwave and StartButton are never selectable by force-override; they’re only reached automatically for the African currencies above.

Supported regions

Khaime supports payments across:
  • Africa — Nigeria, Ghana, Kenya, South Africa, Tanzania, Uganda, and CFA-franc countries
  • North America — United States, Canada, Mexico
  • South America — Brazil, Argentina, Chile
  • Europe — UK, Eurozone, and several non-Euro currencies (Switzerland, the Nordics, Poland, Czechia, Hungary, Romania)
  • Middle East — UAE, Saudi Arabia
  • Asia-Pacific — Australia, New Zealand, India, China, Japan, South Korea, the Philippines
The list of supported currencies and regions is growing. Check the multicurrency page for the full list.

Integration reference

See the WooCommerce plugin payment flow for a working example that handles both embedded and redirect checkout flows.

Whys

Currency-based routing exists so gateway selection never needs to be an integration decision. Different gateways have materially different reach and cost by region — Paystack and Flutterwave/StartButton clear Nigerian and other African currencies far more reliably than a global processor would, while Stripe covers most of the rest of the world with a single integration surface. Centralizing that choice in Khaime means the same partner integration works correctly worldwide without region-specific branching in your code.

Why nots

  • Routing is not configurable per merchant preference — it follows the currency, full stop. If you need a specific gateway, you can only force stripe or paystack, and only when the currency supports it.
  • Routing does not consider anything other than currency — it does not, for example, route based on card BIN, customer risk profile, or transaction size.
  • Flutterwave and StartButton are not directly selectable — which of the two handles a given African currency is a platform configuration detail, not something your integration controls.