Commet
  • Pricing
Log InTry out
Introduction

Quickstart

Learn

Finance OverviewRequest a Payout to Your BankAccount VerificationSupported CountriesMerchant of RecordAcceptable Use Policy

Resources

SDK ReferenceAPI VersioningError HandlingTestingCLI

Plugins

Better Auth
System status
DocumentationKnowledge BaseBuild with AIAPI ReferenceWebhooks

Account Verification

How to get verified for payouts — complete the KYC form in the Commet dashboard.

You can start accepting payments immediately, but you need to verify your account before you can withdraw money.

How it works

Click Verify Account in the finance section to start the one-time KYC process — a multi-step form in the Commet dashboard: business info → personal info → identity document → bank account. Commet submits it to the payment provider for review, then wait for approval — usually a few days.

Your country is set in the first step and locks once the verification is submitted to the provider. Contact support to correct it after that.

What you'll need

  • Business information: Company name, address, registration number
  • Personal information: For business owners and directors
  • Identity document: Government-issued ID for the account holder
  • Bank account details: Where you want payouts sent

Security

Verification data is collected in the Commet dashboard and submitted to the payment provider for KYC review. Full bank account numbers are never returned by the API — only the last 4 digits.

Approval can take several days. You'll be notified when your account is ready.

Manage payouts with the SDK

Verify your account, add destination bank accounts, and withdraw your balance programmatically.

Verify your account

Provision your payout account in a single call with the full KYC and bank payload. The account starts pending_verification and flips to verified once the provider's webhook arrives. This call is idempotent — it returns the existing account if your organization already has one.

const verification = await commet.payouts.completeVerification({
  email: 'founder@acme.com',
  businessType: 'individual',
  businessUrl: 'https://acme.com',
  documentUrl: 'https://files.acme.com/id.pdf',
  bank: {
    accountNumber: '000123456789',
    accountHolderName: 'Jane Doe',
    routingNumber: '110000000',
    accountType: 'checking',
  },
  individual: {
    firstName: 'Jane',
    lastName: 'Doe',
    phone: '+15555550100',
    dateOfBirth: '1990-01-15',
    address: {
      line1: '123 Market St',
      city: 'San Francisco',
      state: 'CA',
      postalCode: '94103',
      country: 'US',
    },
  },
})
from commet.types import (
    CompletePayoutVerificationParamsBank,
    CompletePayoutVerificationParamsIndividual,
    CompletePayoutVerificationParamsIndividualAddress,
)

verification = commet.payouts.complete_verification(
    email="founder@acme.com",
    business_type="individual",
    business_url="https://acme.com",
    document_url="https://files.acme.com/id.pdf",
    bank=CompletePayoutVerificationParamsBank(
        account_number="000123456789",
        account_holder_name="Jane Doe",
        routing_number="110000000",
        account_type="checking",
    ),
    individual=CompletePayoutVerificationParamsIndividual(
        first_name="Jane",
        last_name="Doe",
        phone="+15555550100",
        date_of_birth="1990-01-15",
        address=CompletePayoutVerificationParamsIndividualAddress(
            line1="123 Market St",
            city="San Francisco",
            state="CA",
            postal_code="94103",
            country="US",
        ),
    ),
)
verification, err := client.Payouts.CompleteVerification(ctx, &commet.CompletePayoutVerificationParams{
    Email:        "founder@acme.com",
    BusinessType: "individual",
    BusinessURL:  "https://acme.com",
    DocumentURL:  "https://files.acme.com/id.pdf",
    Bank: commet.CompletePayoutVerificationParamsBank{
        AccountNumber:     "000123456789",
        AccountHolderName: "Jane Doe",
    },
    Individual: &commet.CompletePayoutVerificationParamsIndividual{
        FirstName:   "Jane",
        LastName:    "Doe",
        Phone:       "+15555550100",
        DateOfBirth: "1990-01-15",
        Address: commet.CompletePayoutVerificationParamsIndividualAddress{
            Line1:      "123 Market St",
            City:       "San Francisco",
            PostalCode: "94103",
            Country:    "US",
        },
    },
})
var verification = commet.payouts().completeVerification(
    CompletePayoutVerificationParams.builder(
        "founder@acme.com",
        "individual",
        "https://acme.com",
        "https://files.acme.com/id.pdf",
        new CompletePayoutVerificationParamsBank(
            "000123456789", "Jane Doe", "110000000", "checking"
        )
    )
    .individual(new CompletePayoutVerificationParamsIndividual(
        "Jane", "Doe", "+15555550100", "1990-01-15", null, null,
        new CompletePayoutVerificationParamsIndividualAddress(
            "123 Market St", null, "San Francisco", "CA", "94103", "US"
        )
    ))
    .build()
);
$verification = $commet->payouts->completeVerification(
    email: 'founder@acme.com',
    businessType: 'individual',
    businessUrl: 'https://acme.com',
    documentUrl: 'https://files.acme.com/id.pdf',
    bank: [
        'accountNumber' => '000123456789',
        'accountHolderName' => 'Jane Doe',
        'routingNumber' => '110000000',
        'accountType' => 'checking',
    ],
    individual: [
        'firstName' => 'Jane',
        'lastName' => 'Doe',
        'phone' => '+15555550100',
        'dateOfBirth' => '1990-01-15',
        'address' => [
            'line1' => '123 Market St',
            'city' => 'San Francisco',
            'state' => 'CA',
            'postalCode' => '94103',
            'country' => 'US',
        ],
    ],
);
curl -X POST https://commet.co/api/v1/payouts/verification \
  -H "x-api-key: $COMMET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "founder@acme.com",
    "businessType": "individual",
    "businessUrl": "https://acme.com",
    "documentUrl": "https://files.acme.com/id.pdf",
    "bank": {
      "accountNumber": "000123456789",
      "accountHolderName": "Jane Doe",
      "routingNumber": "110000000",
      "accountType": "checking"
    },
    "individual": {
      "firstName": "Jane",
      "lastName": "Doe",
      "phone": "+15555550100",
      "dateOfBirth": "1990-01-15",
      "address": {
        "line1": "123 Market St",
        "city": "San Francisco",
        "state": "CA",
        "postalCode": "94103",
        "country": "US"
      }
    }
  }'

Pass company instead of individual when businessType is company.

Add a bank account

Add an additional destination bank account to an existing payout account. Country and currency are resolved from your organization. The full account number is never returned — only last4.

const account = await commet.payouts.addBankAccount({
  accountNumber: '000123456789',
  accountHolderName: 'Jane Doe',
  routingNumber: '110000000',
  accountType: 'checking',
  setDefault: true,
})
account = commet.payouts.add_bank_account(
    account_number="000123456789",
    account_holder_name="Jane Doe",
    routing_number="110000000",
    account_type="checking",
    set_default=True,
)
account, err := client.Payouts.AddBankAccount(ctx, &commet.AddPayoutBankAccountParams{
    AccountNumber:     "000123456789",
    AccountHolderName: "Jane Doe",
})
var account = commet.payouts().addBankAccount(
    AddPayoutBankAccountParams.builder("000123456789", "Jane Doe")
        .routingNumber("110000000")
        .accountType("checking")
        .setDefault(true)
        .build()
);
$account = $commet->payouts->addBankAccount(
    accountNumber: '000123456789',
    accountHolderName: 'Jane Doe',
    routingNumber: '110000000',
    accountType: 'checking',
    setDefault: true,
);
curl -X POST https://commet.co/api/v1/payouts/bank-accounts \
  -H "x-api-key: $COMMET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountNumber": "000123456789",
    "accountHolderName": "Jane Doe",
    "routingNumber": "110000000",
    "accountType": "checking",
    "setDefault": true
  }'

Request a payout

Withdraw available balance to your verified payout account. amount is in cents (USD, minimum 1000 = $10). The payout is created in pending and settles to paid asynchronously as provider webhooks arrive.

const payout = await commet.payouts.request({
  amount: 50000,
  description: 'March payout',
})
payout = commet.payouts.request(amount=50000, description="March payout")
description := "March payout"
payout, err := client.Payouts.Request(ctx, &commet.RequestPayoutParams{
    Amount:      50000,
    Description: &description,
})
var payout = commet.payouts().request(
    RequestPayoutParams.builder(50000).description("March payout").build()
);
$payout = $commet->payouts->request(amount: 50000, description: 'March payout');
curl -X POST https://commet.co/api/v1/payouts \
  -H "x-api-key: $COMMET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount": 50000, "description": "March payout"}'

Related

  • Finance Overview — Balances, payouts, and transaction history
  • Merchant of Record — How Commet handles taxes and compliance

How is this guide?

Request a Payout to Your Bank

Withdraw your available Commet balance to your bank account — $10 minimum, no payout fee, arrives in up to 7 business days.

Supported Countries

Countries where Commet supports payouts and business operations.

On this page

How it works
What you'll need
Security
Manage payouts with the SDK
Verify your account
Add a bank account
Request a payout
Related