> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bridge.linkio.world/llms.txt
> Use this file to discover all available pages before exploring further.

# NGN to USDC

> A customer in Nigeria buys USDC with a bank transfer.

**Scenario:** Ada wants to buy USDC with ₦50,000. She'll pay by bank transfer and receive USDC on Solana.

| | |
| - | - |
| Direction | Onramp |
| Customer pays | NGN, by bank transfer |
| Customer receives | USDC on Solana |
| Limits | ₦15,000 to ₦5,000,000 |
| Time to pay | 30 minutes |

**1. Onboard Ada (once)**

```bash theme={null}
curl -X POST https://sandbox.core.linkio.world/api/customers/onboard \
  -H "X-BRIDGE-API-Key: $BRIDGE_API_KEY" \
  -H "API-Version: 2026-10-29-atlas" \
  -H "Content-Type: application/json" \
  -d '{"type":"retail","details":{"first_name":"Ada","last_name":"Obi","email":"ada@example.com","phone":"+2348012345678"}}'
```

Save `id` (for example `cus_4hT9pL2mQx8VnR3tY7wZ1cB5dE`). Skip this step if Ada is already a customer.

**2. Get a quote**

```bash theme={null}
curl -X POST https://sandbox.core.linkio.world/api/quotes/generate \
  -H "X-BRIDGE-API-Key: $BRIDGE_API_KEY" \
  -H "API-Version: 2026-10-29-atlas" \
  -H "Content-Type: application/json" \
  -d '{
    "customer_id": "cus_4hT9pL2mQx8VnR3tY7wZ1cB5dE",
    "transaction_type": "onramp",
    "source_amount": "50000",
    "source_currency": "NGN",
    "target_currency": "USDC",
    "payment_method": "bank_transfer",
    "network": "solana"
  }'
```

Show Ada `quote.target_amount` (how much USDC she gets). When she confirms, go straight to the next step: the quote lasts about 20 seconds.

**3. Create the onramp**

```bash theme={null}
curl -X POST https://sandbox.core.linkio.world/api/payments/onramp \
  -H "X-BRIDGE-API-Key: $BRIDGE_API_KEY" \
  -H "API-Version: 2026-10-29-atlas" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: ada-order-77" \
  -d '{
    "customer_id": "cus_4hT9pL2mQx8VnR3tY7wZ1cB5dE",
    "quote_id": "qte_9xLp3VnR7tY1wZ4cB6dE8fK2mQ",
    "payment_details": {
      "type": "stablecoin",
      "currency": "USDC",
      "details": { "address": "6KhMtrKUhYGqVVgV6fcr1Vr1XnQtZCrDwpXTNZHPiReR", "network": "solana" }
    }
  }'
```

If you get `quote_expired`, [refresh the quote](https://docs.bridge.linkio.world/api-reference/quotes/refresh.md) and try again.

**4. Show Ada where to pay**

From the response, show:

* `payment.deposit.details.bank_name`
* `payment.deposit.details.account_number`
* `payment.deposit.details.account_name`
* `payment.deposit.amount_expected`: **the exact amount to send**

Tell her to pay within 30 minutes.

**5. Handle the webhooks**

| Event | Show Ada |
| - | - |
| `payment.onramp.fiat_pending` | "Waiting for your transfer." |
| `payment.onramp.fiat_received` | "We've got your money. Sending your USDC." |
| `payment.onramp.completed` | "Done! Your USDC has arrived." |
| `payment.onramp.failed` | "We didn't receive your transfer in time. Please start again." |
| `payment.onramp.flagged` | "Your payment is being checked. We'll update you soon." |

**6. Show the blockchain receipt**

After `completed`, call [Get a payment](https://docs.bridge.linkio.world/api-reference/payments/details.md) and show Ada the `transaction_hash`.

## Using USDT or another network

Change `target_currency` to `USDT`, and `network` to any [supported network](https://docs.bridge.linkio.world/before-you-build/currencies.md#networks). The wallet's `currency` and `network` must match.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.