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

ModulePurpose
KYC + Bank Account VerificationFiat on/off ramp identity verification; travel-rule hooks
Creator ShieldCreator payout compliance for token platforms
Charge Intents + 3D SecureStep-up auth for risky deposit flows; crypto-specific MCCs
Billing MetersPer-transaction metered billing for conversions
PayoutsPush-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:

CREATE USER ACCOUNT
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