Build fiat on/off ramps for crypto
Build fiat on/off ramp flows with identity verification, bank account verification, and push-to-debit withdrawals.
Crypto platforms need identity verification for fiat on/off ramps, travel-rule hooks, and compliant creator payouts. frameOS provides KYC, bank account verification, Creator Shield, Charge Intents with 3D Secure, Billing Meters, and Payouts for instant fiat withdrawals with configurable limits.
Use this guide if you're building a crypto platform where:
- Users need identity verification for fiat deposits and withdrawals.
- You require bank account verification for fiat on/off ramps with travel-rule compliance.
- Creator or token platforms need payout compliance via Creator Shield.
- You want 3DS step-up for risky deposit flows and crypto-specific MCCs.
- You bill per-transaction with metered billing for conversions.
- Users withdraw fiat instantly to debit with configurable limits.
We recommend this configuration for fiat on/off ramp and token payout flows. Use the API or Frame.js.
FrameOS modules
| Module | Purpose |
|---|---|
| KYC + Bank Account Verification | Fiat on/off ramp identity verification; travel-rule hooks |
| Creator Shield | Creator payout compliance for token platforms |
| Charge Intents + 3D Secure | Step-up auth for risky deposit flows; crypto-specific MCCs |
| Billing Meters | Per-transaction metered billing for conversions |
| Payouts | Push-to-debit instant fiat withdrawals with configurable limits |
Before you begin
Sign up at the Frame Developer Portal and obtain your sandbox API key.
Essential tasks
1. Create a user account
Create an individual account with KYC, bank verification, and payout capabilities:
curl --request POST \
--url https://api.framepayments.com/v1/accounts \
--header 'Authorization: Bearer sk_test_YOUR_SANDBOX_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"type": "individual",
"capabilities": [
"kyc",
"kyc_prefill",
"bank_account_verification",
"creator_shield",
"card_send",
"bank_account_send",
"card_receive",
"bank_account_receive"
],
"profile": {
"individual": {
"email": "user@example.com",
"name": {
"first_name": "Alex",
"last_name": "User"
},
"phone": {
"number": "3107484186",
"country_code": "1"
}
}
}
}'
2. KYC and bank verification
Create an onboarding session for KYC and bank account verification. Use KYC Prefill when you have a verified phone. Bank verification validates ownership for fiat off-ramps.
3. Deposits with 3DS step-up
Use Charge Intents for fiat deposits. Frame triggers 3D Secure automatically for risky flows. Include sonar_session_id from Frame.js for fraud checks. Configure crypto-specific MCCs as needed.
4. Creator Shield for token payouts
Add Creator Shield for creator or token payout compliance. It monitors inbound payments and restricts accounts when adverse media or risk signals are detected.
5. Metered billing and instant payouts
Use Billing Meters for per-transaction conversion fees. Configure Payouts for instant push-to-debit with limits in the Frame Dashboard.
Resources
Accounts · Onboarding Sessions · KYC · Bank Account Verification · Creator Shield · Charge Intents · 3D Secure · Payouts · Billing Meters · Frame.js · Webhooks