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
| Schedule | Description |
|---|---|
| Daily automatic | Funds paid out every business day (default for most accounts) |
| Weekly automatic | Funds paid out on a specific day of the week |
| Monthly automatic | Funds paid out on a specific day of the month |
| Manual | You 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 nowpending— funds that will become available after the delay period
Payout status lifecycle
| Status | Description |
|---|---|
paid | Payout successfully sent to bank |
pending | Payout submitted but not yet confirmed by bank |
in_transit | Funds on their way to the bank |
failed | Payout failed — funds returned to Stripe balance |
canceled | Payout 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=instantInstant payout availability depends on your account type, country, and bank.
Failed payouts
When a payout fails:
- The funds are returned to your Stripe balance
- A
payout.failedwebhook fires with afailure_code - The external bank account may be disabled for future payouts
Common failure codes:
| Failure code | Cause |
|---|---|
account_closed | Bank account has been closed |
account_frozen | Bank account is frozen |
bank_account_restricted | Account can't accept this type of transfer |
could_not_process | Bank couldn't process the payout |
debit_not_authorized | Bank account not authorized for debit |
insufficient_funds | Stripe account has insufficient funds |
invalid_account_number | Account number is invalid |
no_account | Bank account doesn't exist |
To resolve a failed payout:
- Update or replace the bank account in Dashboard → Settings → Payouts
- Re-enable the account if it was disabled due to failures
- 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)
| Field | Example |
|---|---|
| Routing number | 9-digit ABA routing number |
| Account number | Checking or savings account number |
| Account type | individual or company |
United Kingdom (GB)
| Field | Example |
|---|---|
| Sort code | 6-digit sort code |
| Account number | 8-digit account number |
Euro zone (SEPA)
| Field | Example |
|---|---|
| IBAN | Country-specific IBAN |
Australia (AU)
| Field | Example |
|---|---|
| BSB | 6-digit BSB number |
| Account number | 4–9 digit account number |
Canada (CA)
| Field | Example |
|---|---|
| Transit number | 5-digit transit number |
| Institution number | 3-digit institution number |
| Account number | 7–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=usdSee the Connect section for platform-level payout control, payout pausing, and cross-border payouts.
Webhook events
| Event | When it fires |
|---|---|
payout.created | Payout initiated |
payout.paid | Funds successfully sent to bank |
payout.failed | Payout failed — funds returned to balance |
payout.canceled | Payout canceled |
payout.updated | Payout status updated |
balance.available | Balance 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