Skip to main content
Stripe is Gumroad’s primary payment processor, handling card payments, bank transfers, and seller payouts through Stripe Connect.

Stripe Connect Overview

Gumroad uses Stripe Connect Custom accounts to process payments and manage seller payouts. This provides:
  • Direct card payment processing
  • Automated compliance and KYC verification
  • Native bank account payouts in 40+ countries
  • Fraud protection with Stripe Radar

Supported Countries

Stripe Connect is available for sellers in these countries:

Configuration

Environment Variables

Configure Stripe in your .env file:

Gemfile Dependencies

Creating Stripe Accounts

Gumroad automatically creates Stripe Connect accounts when sellers:
  1. Provide compliance information (legal name, address, tax ID)
  2. Connect a bank account
  3. Agree to Terms of Service

Account Creation Flow

The system creates a Stripe Custom Connect account with:
  • Account Type: custom
  • Capabilities: ["card_payments", "transfers"]
  • Currency: Based on country (USD, EUR, GBP, etc.)
  • Payout Schedule: Manual (controlled by Gumroad)
Stripe payouts are set to manual mode. Gumroad controls when payouts are sent based on the seller’s configured payout frequency.

Bank Account Connection

Sellers connect bank accounts through the payment settings page:

Supported Bank Account Types

Depending on country, Stripe supports:
  • Standard bank accounts (account + routing number)
  • IBAN accounts (Europe)
  • Debit cards (US only, for instant payouts)

Webhook Events

Gumroad listens for these Stripe webhook events:

account.updated

Handles changes to Stripe account status:
  • Verification status updates
  • Compliance requirements
  • Capability changes
  • Payout enablement

account.application.deauthorized

Handles when seller disconnects their Stripe account:

capability.updated

Handles capability status changes (e.g., card_payments, transfers).
If Stripe disables payouts due to verification issues, sellers receive an email with a remediation link to complete verification.

Compliance & Verification

Stripe requires different information based on:
  • Country: Each country has specific requirements
  • Business Type: Individual vs Company
  • Payment Volume: Higher volume triggers additional verification

Required Fields

Individual accounts need:
  • Legal name (first + last name)
  • Date of birth
  • Address
  • Tax ID (SSN, EIN, or country equivalent)
  • Email and phone
Business accounts additionally need:
  • Business name
  • Business address
  • Business tax ID
  • Representative information
  • Ownership details

Field Mapping

Gumroad maps compliance info to Stripe fields:

Stripe Radar Fraud Prevention

All charges are processed through Stripe Radar for fraud detection:

Disconnecting Stripe

Sellers can disconnect Stripe from Settings > Payments:
Disconnecting Stripe while having active subscriptions or preorders will fail. Sellers must migrate those to PayPal first.

Cross-Border Payouts

Some countries only support Stripe for cross-border payouts (receiving USD):
These accounts have limited capabilities and use service_agreement: "recipient" in TOS acceptance.

Testing

In development/test environments:
  • Use Stripe test API keys
  • Non-USD bank accounts are allowed (normally restricted in production)
  • Webhook events can be simulated

Troubleshooting

Payouts Disabled

Cause: Stripe requires additional verification Solution: Seller receives email with remediation link

Invalid Bank Account

Cause: Bank account details are incorrect Solution: Seller receives email to update bank information

Locked Verification Fields

Cause: Stripe has verified certain fields and they cannot be changed Solution: Only send changed fields in update requests