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

# Nigeria

# Nigeria (NG / NGN)

Nigeria supports **bank transfer** for OnRamp and OffRamp. Retail customers require **BVN** fields.

## Required retail fields

| Field                           | Example                |
| ------------------------------- | ---------------------- |
| `customer.additional_id_type`   | `bvn`                  |
| `customer.additional_id_number` | `12345678901`          |
| `customer.name`                 | `John Doe` (two words) |

## Discovery

Retail bank institutions come from **payment-methods** (or catalog `payment_methods.bank.providers[]`). Do **not** use `GET /partner/banks` for Nigeria retail — that path returns deposit-account ledger rails, not retail bank transfer institutions.

```bash theme={null}
curl -sS "$BASE/partner/payment-methods?country=NG&order_type=OnRamp" \
  -H "X-API-Key: $API_KEY" | jq .

curl -sS "$BASE/partner/payment-methods?country=NG&order_type=OffRamp" \
  -H "X-API-Key: $API_KEY" | jq .
```

Take `network_id` from `methods[].networks[]` (or catalog `payment_methods.bank.providers[].id`) — bank institution names. Quote with `type: bank`, `account_number`, `account_name`, and BVN for retail.

<Warning>
  Do **not** pick ids whose codes look like `NGN_ACCOUNT_USDC` / `USDC_NGN_ACCOUNT` (or labels such as “NGN account to USDC” / “USDC to NGN account”). Those are deposit-account ledger rails and require `payment_method.entity_id` + `payment_method.account_id`, not retail bank transfer.
</Warning>

## Sandbox bank account

Full matrix: [Sandbox success & failure](/sandbox/success-failure). Sandbox only.

| `account_number` | Result  |
| ---------------- | ------- |
| `1111111111`     | Success |
| `0000000000`     | Failure |

<Warning>
  Do not use arbitrary account numbers like `0123456789` — orders may remain `pending` indefinitely on sandbox. Never use these test accounts in production.
</Warning>

## OnRamp quote (sketch)

```bash theme={null}
curl -sS -X POST "$BASE/partner/orders/quote" \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "order_type": "OnRamp",
    "currency": "NGN",
    "country": "NG",
    "local_amount": 5000,
    "asset": {
      "token": "0x833589fcd6edb6e08f4c7c32d4f71b54bdA02913",
      "currency": "USDC",
      "network": "BASE"
    },
    "customer": {
      "uid": "partner-ng-001",
      "type": "user",
      "name": "John Doe",
      "country": "NG",
      "phone": "+2348012345678",
      "address": "Lagos",
      "dob": "01/01/1990",
      "email": "john@example.com",
      "id_number": "A1234567",
      "id_type": "passport",
      "additional_id_number": "12345678901",
      "additional_id_type": "bvn"
    },
    "payment_method": {
      "type": "bank",
      "network_id": "5f1af11b-305f-4420-8fce-65ed2725a409",
      "account_number": "1111111111",
      "account_name": "John Doe"
    },
    "wallet_address": "0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe"
  }'
```

Example `network_id` above is **illustrative** — always re-fetch from payment-methods (or catalog) on **your** environment.

Quote response includes **`payment_instructions`** with the bank account the customer must transfer to — display before accept.

Full copy-paste payloads: [Sandbox test payloads](/sandbox/test-payloads).
