Skip to content

Payouts Fresh

How and when Stripe sends your funds to your bank account.

How payouts work

Stripe accumulates funds from your charges into your Stripe balance. Based on your payout schedule, Stripe automatically sends those funds to your registered bank account.

Initial payout timeline:

  • First payout: typically 7–14 days after your first successful payment
  • Subsequent payouts: follow your configured payout schedule
  • Timeline varies by industry and country

Payout schedules

ScheduleDescription
Daily automaticFunds paid out every business day (default for most accounts)
Weekly automaticFunds paid out on a specific day of the week
Monthly automaticFunds paid out on a specific day of the month
ManualYou trigger payouts yourself via API or Dashboard

Configure in Dashboard → Settings → Payouts or via API:

bash
# Set weekly payout schedule (every Monday)
curl https://api.stripe.com/v1/accounts/{{ACCOUNT_ID}} \
  -u "sk_test_YOUR_KEY:" \
  -d "settings[payouts][schedule][interval]=weekly" \
  -d "settings[payouts][schedule][weekly_anchor]=monday"

# Set monthly payout schedule (1st of each month)
curl https://api.stripe.com/v1/accounts/{{ACCOUNT_ID}} \
  -u "sk_test_YOUR_KEY:" \
  -d "settings[payouts][schedule][interval]=monthly" \
  -d "settings[payouts][schedule][monthly_anchor]=1"

# Switch to manual payouts
curl https://api.stripe.com/v1/accounts/{{ACCOUNT_ID}} \
  -u "sk_test_YOUR_KEY:" \
  -d "settings[payouts][schedule][interval]=manual"

Payout timing

The payout_schedule delay_days setting controls how many days after a charge the funds become available for payout. The default varies by country and account type (typically 2 days for US accounts).

Available balance = charge funds after the delay_days window has passed.

bash
# Check your available and pending balance
curl https://api.stripe.com/v1/balance \
  -u "sk_test_YOUR_KEY:"

Response includes:

  • available — funds available for payout now
  • pending — funds that will become available after the delay period

Payout status lifecycle

StatusDescription
paidPayout successfully sent to bank
pendingPayout submitted but not yet confirmed by bank
in_transitFunds on their way to the bank
failedPayout failed — funds returned to Stripe balance
canceledPayout was canceled before it reached the bank

Trigger a manual payout

bash
# Payout all available USD balance
curl https://api.stripe.com/v1/payouts \
  -u "sk_test_YOUR_KEY:" \
  -d amount=1000 \
  -d currency=usd

# Payout specific amount
curl https://api.stripe.com/v1/payouts \
  -u "sk_test_YOUR_KEY:" \
  -d amount=5000 \
  -d currency=usd \
  -d description="Weekly payout"

Instant payouts

Receive funds within 30 minutes for an additional fee. Available on eligible US accounts with a debit card or premium bank account:

bash
curl https://api.stripe.com/v1/payouts \
  -u "sk_test_YOUR_KEY:" \
  -d amount=10000 \
  -d currency=usd \
  -d method=instant

Instant payout availability depends on your account type, country, and bank.

Failed payouts

When a payout fails:

  1. The funds are returned to your Stripe balance
  2. A payout.failed webhook fires with a failure_code
  3. The external bank account may be disabled for future payouts

Common failure codes:

Failure codeCause
account_closedBank account has been closed
account_frozenBank account is frozen
bank_account_restrictedAccount can't accept this type of transfer
could_not_processBank couldn't process the payout
debit_not_authorizedBank account not authorized for debit
insufficient_fundsStripe account has insufficient funds
invalid_account_numberAccount number is invalid
no_accountBank account doesn't exist

To resolve a failed payout:

  1. Update or replace the bank account in Dashboard → Settings → Payouts
  2. Re-enable the account if it was disabled due to failures
  3. Create a new manual payout

Multiple bank accounts (multi-currency)

Add multiple bank accounts to receive payouts in different currencies:

bash
curl https://api.stripe.com/v1/accounts/{{ACCOUNT_ID}}/external_accounts \
  -u "sk_test_YOUR_KEY:" \
  -d "external_account[object]=bank_account" \
  -d "external_account[country]=GB" \
  -d "external_account[currency]=gbp" \
  -d "external_account[account_number]=00012345" \
  -d "external_account[routing_number]=108800"

Stripe automatically routes charges in a currency to the corresponding bank account. Charges in unsupported currencies convert to your default settlement currency.

Bank account requirements by region

United States (US)

FieldExample
Routing number9-digit ABA routing number
Account numberChecking or savings account number
Account typeindividual or company

United Kingdom (GB)

FieldExample
Sort code6-digit sort code
Account number8-digit account number

Euro zone (SEPA)

FieldExample
IBANCountry-specific IBAN

Australia (AU)

FieldExample
BSB6-digit BSB number
Account number4–9 digit account number

Canada (CA)

FieldExample
Transit number5-digit transit number
Institution number3-digit institution number
Account number7–12 digit account number

Connect payouts

For Connect platforms, payouts from connected accounts work the same way but use the Stripe-Account header:

bash
# List payouts for a connected account
curl https://api.stripe.com/v1/payouts \
  -u "sk_test_YOUR_KEY:" \
  -H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}"

# Trigger manual payout for connected account
curl https://api.stripe.com/v1/payouts \
  -u "sk_test_YOUR_KEY:" \
  -H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}" \
  -d amount=5000 \
  -d currency=usd

See the Connect section for platform-level payout control, payout pausing, and cross-border payouts.

Webhook events

EventWhen it fires
payout.createdPayout initiated
payout.paidFunds successfully sent to bank
payout.failedPayout failed — funds returned to balance
payout.canceledPayout canceled
payout.updatedPayout status updated
balance.availableBalance update — funds available for payout

View payout history

Dashboard → Payouts shows all payouts with status, amount, and expected arrival date.

Via API:

bash
# List all payouts
curl -G https://api.stripe.com/v1/payouts \
  -u "sk_test_YOUR_KEY:" \
  -d limit=10

# Filter by status
curl -G https://api.stripe.com/v1/payouts \
  -u "sk_test_YOUR_KEY:" \
  -d status=failed

Stripe API Reference - Self-contained docs reference, refreshed 2026-05-18