Onboard players for gambling

Onboard players for licensed sportsbooks and iGaming with identity verification, jurisdiction checks, and real-time payouts.

Gambling operators face strict regulatory requirements: verify player identity before first deposit, enforce age and jurisdiction rules, and process withdrawals with AML monitoring. frameOS provides KYC, age verification, geocompliance, and instant payouts — plus Charge Intents with 3D Secure and Sonar for deposit security and bonus abuse prevention.

Use this guide if you're building a gambling platform where:

  • Players must verify identity before first deposit.
  • You enforce age restrictions and state-by-state geofencing for licensed operators.
  • You need issuer-aware routing, 3DS step-up for risky cards, and network tokens.
  • Players receive instant push-to-debit withdrawals with AML monitoring and configurable limits.
  • You want velocity checks, shared block lists, and bonus abuse prevention via Sonar.

We recommend this configuration for licensed sportsbooks and iGaming. Compose the flow with the API, use the iOS or Android SDK, or build with Frame.js for web.

FrameOS modules

ModulePurpose
KYC + Onboarding SessionsPlayer identity verification before first deposit
Age VerificationJurisdiction and age checks; configurable play limits
GeocomplianceState-by-state geofencing for licensed sportsbooks & iGaming
Charge Intents + 3D SecureIssuer-aware routing, network tokens, 3DS step-up for risky cards
PayoutsPush-to-debit instant withdrawals with AML monitoring and limits
SonarVelocity checks, shared block lists, bonus abuse prevention

Before you begin

Sign up at the Frame Developer Portal and obtain your sandbox API key. Geocompliance requires Frame.js or the mobile SDK initialized — location is captured via Sonar.

Essential tasks

1. Create a player account

Create an individual account with capabilities for identity verification, geocompliance, age checks, and payouts:

CREATE PLAYER 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",
    "age_verification",
    "geo_compliance",
    "card_send",
    "bank_account_send",
    "card_receive",
    "bank_account_receive"
  ],
  "profile": {
    "individual": {
      "email": "player@example.com",
      "name": {
        "first_name": "Alex",
        "last_name": "Player"
      },
      "phone": {
        "number": "3107484186",
        "country_code": "1"
      }
    }
  }
}'

2. Onboarding and verification

Create an onboarding session and redirect the player. Frame collects KYC, age verification, and payment methods. Geocompliance runs at charge time — ensure Frame.js or the mobile SDK is initialized so location is captured via Sonar.

3. Deposits with Charge Intents and 3DS

Use Charge Intents for deposits. Include sonar_session_id from Frame.js to enable fraud checks. Frame triggers 3D Secure automatically when required for liability shift. See accept a payment for the full flow.

4. Instant payouts

Enable card_receive and bank_account_receive for withdrawals. Configure payout limits and AML monitoring in the Frame Dashboard. See Payouts for instant push-to-debit.

5. Fraud prevention

Use Sonar for velocity checks, shared block lists, and bonus abuse prevention. Include the Sonar session ID with every charge intent.

Resources

Accounts · Onboarding Sessions · KYC · Age Verification · Geocompliance · Charge Intents · 3D Secure · Payouts · Sonar · Frame.js · SDKs