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

# USDC to GHS mobile money

> A customer sells USDC and receives cedi in their mobile money wallet.

**Scenario:** Kwame has 100 USDC on Base. He wants cedi in his MTN mobile money wallet.

| | |
| - | - |
| Direction | Offramp |
| Customer sends | USDC on Base |
| Customer receives | GHS, to MTN mobile money |
| Limits | 2 to 8,000 USDC |

**1. Onboard Kwame (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":"Kwame","last_name":"Mensah","email":"kwame@example.com","phone":"+233241234567"}}'
```

**2. Look up the network code**

```bash theme={null}
curl "https://sandbox.core.linkio.world/api/payments/momo-networks?currency=GHS" \
  -H "X-BRIDGE-API-Key: $BRIDGE_API_KEY" \
  -H "API-Version: 2026-10-29-atlas"
```

MTN is `0004`.

**3. 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_2mQ9xLp3VnR7tY1wZ4cB6dE8fK",
    "transaction_type": "offramp",
    "source_amount": "100",
    "source_currency": "USDC",
    "target_currency": "GHS",
    "payout_method": "momo",
    "network": "base"
  }'
```

Show Kwame `quote.target_amount` (how many cedi he'll get).

**4. Create the offramp**

```bash theme={null}
curl -X POST https://sandbox.core.linkio.world/api/payments/offramp \
  -H "X-BRIDGE-API-Key: $BRIDGE_API_KEY" \
  -H "API-Version: 2026-10-29-atlas" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: kwame-cashout-12" \
  -d '{
    "customer_id": "cus_2mQ9xLp3VnR7tY1wZ4cB6dE8fK",
    "quote_id": "qte_6dE8fK2mQ9xLp3VnR7tY1wZ4cB",
    "payment_details": {
      "type": "momo",
      "currency": "GHS",
      "details": { "bank_code": "0004", "account_number": "0241234567", "account_name": "Kwame Mensah" }
    },
    "source_wallet": {
      "currency": "USDC",
      "address": "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed",
      "network": "base"
    }
  }'
```

**5. Show Kwame where to send**

Show `payment.deposit.details.address` and the network (**Base**). If `tag` isn't `null`, show that too. Kwame sends exactly 100 USDC.

**6. Handle the webhooks**

| Event | Show Kwame |
| - | - |
| `payment.offramp.stables_pending` | "Waiting for your USDC." |
| `payment.offramp.stables_received` | "Got your USDC. Sending cedi to your MTN wallet." |
| `payment.offramp.completed` | "Done! Check your mobile money balance." |
| `payment.offramp.failed` | "Something went wrong. Our team will contact you." |
| `payment.offramp.reversed` | "Your mobile money provider returned the payment. Our team will contact you." |

## Paying to a bank account instead

Use `"payout_method": "bank_transfer"` in the quote, and in `payment_details` use `"type": "bank_transfer"` with the bank's code from [List banks](https://docs.bridge.linkio.world/api-reference/lookups/banks.md).


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