Skip to main content

Corridors overview

African local fiat corridors share the same integration pattern. Differences are field requirements, network_id values, and sandbox test identities.

Discovery endpoints

Always run discovery on your environment — network_id UUIDs are not portable across sandbox resets.

Order types

Provider lists in catalog differ by direction — filter with ?order_type=OnRamp or OffRamp.

Payment rails

Mobile money

  • payment_method.type: mobile_money
  • payment_method.phone_number: E.164 MSISDN (routing identity)
  • payment_method.network_id: from catalog payment_methods.*.providers[].id or GET /partner/payment-methods methods[].networks[]

Bank

  • payment_method.type: bank
  • payment_method.network_id: from GET /partner/payment-methods methods[].networks[] or catalog payment_methods.bank.providers[].id (preferred for African local fiat, especially NG)
  • account_number, account_name required
  • Skip ids that look like deposit-account ledger rails (e.g. codes/labels such as NGN_ACCOUNT_USDC / “NGN account to USDC”) — those need entity_id + account_id, not retail bank transfer

Customer type (retail vs institution)

Local fiat quotes default to retail. For B2B, pass customer_type: "institution" (and customer.type: "institution"). Institution KYC uses business_name, business_id, and email instead of personal name / DOB / national ID. Discover exact fields with GET /partner/order-requirements?…&customer_type=institution. See Kenya and Sandbox test payloads.

Supported markets (local fiat)

Source of truth for the partner: call discovery on your API key and environment. Do not hardcode country lists from this page alone — corridors can be enabled per partner, and provider availability differs by OnRamp vs OffRamp.
Catalog shape (local African): under onramp.countries / offramp.countries, each country has payment_methods.mobile_money and/or bank with providers[] (id = network_id on quote).

African corridors on the local fiat rail (indicative)

OnRamp/OffRamp flags and exact providers (Safaricom, banks, etc.) come from GET /partner/catalog?order_type=…. Need a market not listed or missing in your catalog? Email compliance@elementpay.net — we enable corridors per partner; do not assume every country in our wider network is live for your key.

Documented playbooks

Other countries: use catalog + order-requirements; request enablement if empty.

Supported stablecoins (asset)

Pass asset.token, asset.currency, and asset.network on every quote.
Local fiat corridors currently support two contract addresses only:
Partner guidance: use Base USDC for all OnRamp and OffRamp sandbox examples unless we tell you otherwise. Quickstart and corridor samples use Base USDC. Polygon USDT remains available on the rail but can behave differently for direct settlement — stick to Base USDC unless QA has confirmed USDT for your corridor. Same addresses apply on sandbox and production for these rails.