Skip to main content
KYC Onboarding Before a submerchant can receive payouts, they must complete KYC (Know Your Customer) verification. This process collects necessary information and documents to comply with regulatory requirements and enable payouts to bank accounts.

Why KYC is required

KYC verification is required for submerchants to:
  • Enable payouts: Submerchants cannot receive payouts until KYC is completed
  • Comply with regulations: Meet financial regulations and anti-money laundering requirements
  • Link bank accounts: Connect bank accounts for receiving payouts
Check the submerchant’s KYC status via the API to see if they’ve completed onboarding. Until KYC is complete, you can still transfer funds to their account, but they won’t be able to withdraw.

Onboarding options

You have two options for handling KYC onboarding:

Option 1: Embedded onboarding

Use Whop’s embedded components to host the onboarding flow directly on your platform’s website. This provides a seamless experience where submerchants never leave your site. Benefits:
  • Seamless user experience on your platform
  • Full control over the UI/UX around the onboarding flow
  • No redirect away from your site
Implementation: Embed the Whop onboarding component in your React application:
import { WhopOnboardingEmbed } from "@whop/platforms/react";

export default function OnboardingPage({ companyId }) {
  return (
    <WhopOnboardingEmbed
      companyId={companyId}
      onComplete={() => {
        // Handle completion, e.g., redirect to dashboard
        window.location.href = "/dashboard";
      }}
    />
  );
}

Option 2: Hosted onboarding redirect

Send submerchants to Whop’s hosted onboarding page. This is the simplest option and requires no frontend integration. Benefits:
  • No frontend integration required
  • Always up-to-date with latest requirements
  • Minimal development effort
Implementation: Use the client SDK (JavaScript) to generate the onboarding URL for a submerchant:
import { WhopClient } from "@whop/sdk/client";

const client = new WhopClient({
  apiKey: "my_api_key",
});

// Generate the onboarding URL for a submerchant
const onboardingUrl = await client.onboarding.getUrl({
  companyId: "biz_xxxxxxxxxxxxx",
});

// Redirect the user to the onboarding URL
window.location.href = onboardingUrl;

Checking KYC status

You can check whether a submerchant has completed KYC by retrieving their ledger account using the company ID:
from whop_sdk import Whop

client = Whop(
    api_key="my_api_key",
)

ledger_account = client.ledger_accounts.retrieve("biz_xxxxxxxxxxxxx")

# Check KYC status
if ledger_account.payouts_status == "approved":
    print("Submerchant can receive payouts")
elif ledger_account.payouts_status == "pending":
    print("KYC is in progress")
else:
    print("KYC not started or rejected")

Next steps

After a submerchant completes KYC: