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

# Use cases

> Start from what you are building. Each goal maps to the lifecycle stages you actually have to implement, and links straight to the pages for them.

<div className="bmoni-spine">
  <span>Lifecycle</span>
  <a data-stage="1" href="/lifecycle#1-create-the-user">User</a>
  <a data-stage="2" href="/lifecycle#2-provision-the-smart-wallet">Wallet</a>
  <a data-stage="3" href="/lifecycle#3-verify-identity-kyc">KYC</a>
  <a data-stage="4" href="/lifecycle#4-activate-the-rail">Rail</a>
  <a data-stage="5" href="/lifecycle#5-fund-the-wallet">Fund</a>
  <a data-stage="6" href="/lifecycle#6-move-money">Move money</a>
</div>

Most integrations only need part of the [lifecycle](/lifecycle). Find your goal below: the highlighted stages are the ones you implement, the dimmed ones you can ignore.

***

## Give users a USD account

Anyone outside Nigeria and Canada can hold US dollars and receive money into a virtual bank account.

<div className="bmoni-pipe">
  <span className="on" data-stage="1">User</span>
  <span className="on" data-stage="2">Wallet</span>
  <span className="on" data-stage="3">KYC</span>
  <span className="on" data-stage="4">Rail</span>
  <span className="on" data-stage="5">Fund</span>
  <span data-stage="6">Move money</span>
</div>

Create a `USDB` wallet, run Global KYC (`id-and-liveness`), gate on `GET /kyc/usd-readiness`, then `POST /onboarding/start-usa`. The account is issued asynchronously, so poll `GET /vba/usd` until it reports `active`.

Read: [KYC — USD](/api-reference/kyc-usd-requirements) · [USD virtual bank account](/api-reference/usd-vba)

## Nigerian wallets and bank withdrawals

Hold `CNGN`, receive into an NGN virtual account, and withdraw to any Nigerian bank.

<div className="bmoni-pipe">
  <span className="on" data-stage="1">User</span>
  <span className="on" data-stage="2">Wallet</span>
  <span className="on" data-stage="3">KYC</span>
  <span className="on" data-stage="4">Rail</span>
  <span className="on" data-stage="5">Fund</span>
  <span className="on" data-stage="6">Move money</span>
</div>

Nigeria is the shortest KYC path: a BVN auto-populates the profile, and `POST /kyc/activate` takes no `sumsubLevelName`. Withdrawals verify the destination account first, then register it, then offramp.

Read: [KYC — Nigeria](/api-reference/kyc-nga-requirements) · [NGN deposits & withdrawals](/api-reference/ngn-rails)

## Mexican peso on and off ramp

Let Mexican users fund by SPEI transfer and pay out to a CLABE.

<div className="bmoni-pipe">
  <span className="on" data-stage="1">User</span>
  <span className="on" data-stage="2">Wallet</span>
  <span className="on" data-stage="3">KYC</span>
  <span className="on" data-stage="4">Rail</span>
  <span className="on" data-stage="5">Fund</span>
  <span className="on" data-stage="6">Move money</span>
</div>

Mexico activates through Etherfuse rather than an `onboarding/start-*` endpoint: `POST /latam/mx/kyc/activate`, have the user sign Etherfuse's agreements via `GET /latam/mx/kyc/launch/agreements`, then poll until approved — the CLABE is provisioned automatically. Every movement afterwards is a quote followed by an order.

Read: [KYC — Mexico](/api-reference/kyc-mex-requirements) · [MXN on/offramp](/api-reference/mxn-ramp)

## Pay out to EU bank accounts

Send euros from an `EURe` wallet to any IBAN over SEPA.

<div className="bmoni-pipe">
  <span className="on" data-stage="1">User</span>
  <span className="on" data-stage="2">Wallet</span>
  <span className="on" data-stage="3">KYC</span>
  <span className="on" data-stage="4">Rail</span>
  <span className="on" data-stage="5">Fund</span>
  <span className="on" data-stage="6">Move money</span>
</div>

The EUR rail activates with a Monerium handshake (`POST /onboarding/start-monerium`) after the standard KYC wizard. Payouts are a three-call handshake because the transfer is signed on-device.

Read: [KYC — Europe](/api-reference/kyc-eur-requirements) · [EU SEPA payouts](/api-reference/eu-sepa)

## Top up with crypto instead of a bank

Take USDC (and other supported assets) on-chain rather than through fiat rails.

<div className="bmoni-pipe">
  <span className="on" data-stage="1">User</span>
  <span className="on" data-stage="2">Wallet</span>
  <span className="on" data-stage="3">KYC</span>
  <span data-stage="4">Rail</span>
  <span className="on" data-stage="5">Fund</span>
  <span className="on" data-stage="6">Move money</span>
</div>

A crypto top-up needs no local rail: read `GET /deposit/supported-assets` for the chains and tokens on offer, then `POST /deposit/wallet` for a deposit address.

Read: [Supported regions](/api-reference/supported-regions)

## Onboard users without your own app

You have no mobile app. Your users onboard inside the BMONI app from an invite, and you read their accounts over the API.

<div className="bmoni-pipe">
  <span className="on" data-stage="1">User</span>
  <span data-stage="2">Wallet</span>
  <span className="on" data-stage="3">KYC</span>
  <span data-stage="4">Rail</span>
  <span data-stage="5">Fund</span>
  <span data-stage="6">Move money</span>
</div>

This is the smallest integration there is: one invite call that carries the KYC you already hold, a webhook that tells you the user linked, and a read of their virtual account. Stages 2, 4, 5, and 6 happen inside the BMONI app.

Read: [Integration flow (no mobile app)](/api-reference/integration-flow-no-app)

***

<Card title="Not sure yet? Read the lifecycle" icon="route" href="/lifecycle">
  All six stages, what each one needs before it works, and what it leaves you with.
</Card>
