> ## Documentation Index
> Fetch the complete documentation index at: https://partners.elementpay.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

# Corridors overview

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

## Discovery endpoints

| Endpoint                          | Use                                                                                                                                                        | Response shape (high level)                                                  |
| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| `GET /partner/catalog`            | **Preferred** — full tree for checkout UI                                                                                                                  | `onramp.countries` / `offramp.countries` → `payment_methods` → `providers[]` |
| `GET /partner/corridors`          | Lightweight country/currency list                                                                                                                          | `african_markets[]`, `international_bank.currencies[]`                       |
| `GET /partner/payment-methods`    | Methods + institution `network_id`s for one corridor (preferred for African local fiat bank)                                                               |                                                                              |
| `GET /partner/order-requirements` | Required customer/payment fields (optional `customer_type=institution`)                                                                                    |                                                                              |
| `GET /partner/banks`              | Ledger / deposit-account rails in some markets — **not** the retail NG institution picker today; prefer payment-methods or catalog for African retail bank |                                                                              |
| `GET /partner/rates/indicative`   | Non-binding FX ticker                                                                                                                                      |                                                                              |

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

## Order types

| `order_type` | Direction     | Customer action                                                                                                                                                                                  |
| ------------ | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `OnRamp`     | Fiat → crypto | Pays local fiat; receives stablecoin                                                                                                                                                             |
| `OffRamp`    | Crypto → fiat | Sends stablecoin (production); receives fiat to momo/bank. In sandbox, OffRamp auto-credits when `Successful` is in `customer.name` — see [Sandbox success & failure](/sandbox/success-failure). |

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](/corridors/kenya#institution-b2b) and [Sandbox test payloads](/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.

```bash theme={null}
# Countries + methods + provider ids + min/max (preferred)
curl -sS "$BASE/partner/catalog" -H "X-API-Key: $API_KEY" | jq '.data'

# Lightweight country/currency list
curl -sS "$BASE/partner/corridors" -H "X-API-Key: $API_KEY" | jq '.data'

# Methods for one country
curl -sS "$BASE/partner/payment-methods?country=KE&order_type=OnRamp" \
  -H "X-API-Key: $API_KEY" | jq '.data'
```

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)

| Country | Currency | Typical rails      |
| ------- | -------- | ------------------ |
| KE      | KES      | Mobile money, bank |
| NG      | NGN      | Bank (retail BVN)  |
| UG      | UGX      | Mobile money       |
| TZ      | TZS      | Per catalog        |
| ZA      | ZAR      | Per catalog        |
| RW      | RWF      | Per catalog        |
| MW      | MWK      | Per catalog        |
| BW      | BWP      | Per catalog        |

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](mailto:compliance@elementpay.net)** — we enable corridors per partner; do not assume every country in our wider network is live for your key.

### Documented playbooks

* [Kenya](/corridors/kenya)
* [Nigeria](/corridors/nigeria)
* [Uganda](/corridors/uganda)

Other countries: use catalog + [order-requirements](/api-reference/introduction); 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:

| Use                       | Currency | Network   | Contract (`asset.token`)                     |
| ------------------------- | -------- | --------- | -------------------------------------------- |
| **Default (recommended)** | `USDC`   | `BASE`    | `0x833589fcd6edb6e08f4c7c32d4f71b54bdA02913` |
| Alternate                 | `USDT`   | `POLYGON` | `0xc2132d05d31c914a87c6611c10748aeb04b58e8f` |

**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.
