The offramp flow
Verify the user
Each user completes identity verification once. Verification runs asynchronously, so you trigger it and then poll until the user is verified. If your users are already KYC’d, you can bring them over by passing their identity data, so they skip the in-flow verification. See KYC & Compliance.
Save the user's bank account
The user’s bank details are saved as a reusable payment method. Sensitive fields are tokenized at capture, so raw account numbers never touch your servers or Crossmint’s.
Create an offramp order
Your backend creates an order specifying the amount of USDC to cash out and the bank account to pay. The order comes back with a prepared deposit transaction that already carries a memo tying the deposit to this order.
Send the deposit
Your app broadcasts the prepared transaction from the user’s wallet. Crossmint matches the on-chain deposit to the order by its memo, so no extra confirmation call is needed.
Conversion and payout
Crossmint converts the USDC and pays out fiat to the user’s bank account over local rails.
Key concepts
Exact-in amounts
You specify the amount of USDC the user sends (exact-in). The user sends exactly that amount of crypto, and the equivalent fiat, minus any applicable fees, is deposited into their bank account.
First-party payouts
The destination bank account must belong to the same user who owns the wallet and completed verification. The wallet the user pays from is linked to that verified identity, and the order resolves KYC through it. Offramp pays users out to their own bank accounts, never to third parties.Settlement timing
Once the USDC deposit is confirmed, fiat arrival depends on the payout rail, ranging from minutes to a few business days. In the staging environment, payouts are simulated, so you can run the full flow end to end without funds moving. Funds only move in production.What Crossmint handles vs. what you build
| Crossmint handles | You build |
|---|---|
| Identity screening and compliance | The in-app cash-out experience |
| Converting USDC to fiat | Collecting the user’s bank account |
| Paying out over local bank rails | Creating orders and tracking status |
| Regulatory and licensing coverage | (Optional) passing KYC data you already hold |
Next steps
Quickstart
Build your first offramp end to end
KYC & Compliance
How verification works for offramp

