Stripe holds funds for 2-7 days by default to mitigate fraud risk. You can reduce payout delays by enabling Instant Payouts (requires eligible bank/debit card) or by adjusting your payout schedule in the Dashboard. This guide walks through both approaches with code examples for triggering instant payouts via the API.
Why Stripe Holds Your Funds and How to Speed Things Up
Stripe applies a default payout delay (typically 2 business days in the US, up to 7 days in other regions) to protect against chargebacks and fraud. Instant Payouts let you receive funds in minutes for a 1% fee (minimum $0.50). You can also switch from the default rolling schedule to manual or weekly payouts depending on your cash-flow needs.
Prerequisites
- A verified Stripe account with payouts enabled
- Node.js 18 or later installed
- Stripe Node.js SDK installed: npm install stripe
- An eligible debit card or bank account linked for Instant Payouts
Step-by-step guide
Check your current payout schedule
Check your current payout schedule
Use the Stripe API to retrieve your account's current payout settings. This tells you the delay_days and interval currently configured.
1const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);23async function checkPayoutSchedule() {4 const account = await stripe.accounts.retrieve();5 console.log('Payout schedule:', account.settings.payouts.schedule);6 // { delay_days: 2, interval: 'daily' }7}89checkPayoutSchedule();Expected result: Console logs your current payout schedule object showing delay_days and interval.
Check Instant Payout eligibility
Check Instant Payout eligibility
Not all accounts or bank instruments qualify for Instant Payouts. Query your balance to see if instant payouts are available.
1async function checkInstantEligibility() {2 const balance = await stripe.balance.retrieve();3 const available = balance.instant_available;4 if (available && available.length > 0) {5 console.log('Instant Payout available:', available[0].amount, 'cents');6 } else {7 console.log('Instant Payouts not available for this account.');8 }9}1011checkInstantEligibility();Expected result: Console shows either the available instant payout amount or a message that instant payouts are not available.
Trigger an Instant Payout
Trigger an Instant Payout
Create a payout with method set to 'instant'. The amount is in cents. Stripe charges a 1% fee (min $0.50) for instant payouts.
1async function createInstantPayout() {2 const payout = await stripe.payouts.create({3 amount: 5000, // $50.00 in cents4 currency: 'usd',5 method: 'instant',6 });7 console.log('Instant payout created:', payout.id, 'Status:', payout.status);8}910createInstantPayout();Expected result: A payout object is returned with status 'paid' (or 'pending' for standard) and an arrival_date within minutes.
Adjust your automatic payout schedule
Adjust your automatic payout schedule
If Instant Payouts are not available, you can minimize delays by setting delay_days to the minimum your account supports. Go to Dashboard → Settings → Payouts, or use the API.
1async function updatePayoutSchedule() {2 const account = await stripe.accounts.update('acct_self', {3 settings: {4 payouts: {5 schedule: {6 delay_days: 'minimum',7 interval: 'daily',8 },9 },10 },11 });12 console.log('Updated schedule:', account.settings.payouts.schedule);13}1415updatePayoutSchedule();Expected result: The payout schedule is updated to the minimum delay your account qualifies for (often 2 days in the US).
Complete working example
1const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);23async function checkPayoutSchedule() {4 const account = await stripe.accounts.retrieve();5 console.log('Current payout schedule:', account.settings.payouts.schedule);6 return account.settings.payouts.schedule;7}89async function checkInstantEligibility() {10 const balance = await stripe.balance.retrieve();11 const available = balance.instant_available;12 if (available && available.length > 0) {13 console.log('Instant Payout available:', available[0].amount, 'cents');14 return true;15 }16 console.log('Instant Payouts not available.');17 return false;18}1920async function createInstantPayout(amountInCents) {21 try {22 const payout = await stripe.payouts.create({23 amount: amountInCents,24 currency: 'usd',25 method: 'instant',26 });27 console.log('Instant payout created:', payout.id);28 console.log('Status:', payout.status);29 console.log('Arrival:', new Date(payout.arrival_date * 1000));30 return payout;31 } catch (err) {32 console.error('Instant payout failed:', err.message);33 throw err;34 }35}3637async function setMinimumDelay() {38 const account = await stripe.accounts.update('acct_self', {39 settings: {40 payouts: {41 schedule: {42 delay_days: 'minimum',43 interval: 'daily',44 },45 },46 },47 });48 console.log('Updated schedule:', account.settings.payouts.schedule);49 return account.settings.payouts.schedule;50}5152async function main() {53 await checkPayoutSchedule();54 const eligible = await checkInstantEligibility();55 if (eligible) {56 await createInstantPayout(5000); // $50.0057 } else {58 await setMinimumDelay();59 }60}6162main().catch(console.error);Common mistakes when removing payout delays in Stripe
Why it's a problem: Trying Instant Payouts without an eligible debit card linked
How to avoid: Add an eligible Visa or Mastercard debit card as an external account in Dashboard → Settings → Bank accounts and scheduling.
Why it's a problem: Expecting zero-day delays on a new account
How to avoid: New accounts have higher delay requirements. Build transaction history and maintain low dispute rates to qualify for shorter delays.
Why it's a problem: Passing amount in dollars instead of cents
How to avoid: Stripe amounts are always in the smallest currency unit. Use 5000 for $50.00, not 50.
Why it's a problem: Using Instant Payouts in live mode without testing first
How to avoid: Always test in test mode first. Instant Payouts in test mode simulate success without real bank transfers.
Best practices
- Always check instant_available balance before attempting an Instant Payout
- Handle payout failures gracefully — bank rejections can happen even with valid cards
- Monitor payout.failed webhook events to alert your team of issues
- Use the minimum delay_days setting rather than hardcoding a number, as eligibility can change
- Keep dispute rates below 0.75% to maintain favorable payout terms
- Set up payout reconciliation to match Stripe payouts with your bank deposits
- Use metadata on payouts to tag them for internal tracking
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
I'm using the Stripe API with Node.js. My payouts have a 7-day delay. How can I reduce the delay or enable Instant Payouts? Show me the API calls needed.
Help me set up Instant Payouts with Stripe in my Node.js Express app. I want to check eligibility first and fall back to minimum-delay daily payouts if instant is not available.
Frequently asked questions
How much does Stripe Instant Payouts cost?
Instant Payouts cost 1% of the payout amount with a minimum fee of $0.50. For example, a $100 instant payout costs $1.00.
Can I get same-day payouts without using Instant Payouts?
No. Standard payouts take at least 1-2 business days in the US and up to 7 days in other regions. Instant Payouts are the only way to receive funds within minutes.
Why is my Stripe payout delay 7 days instead of 2?
New accounts or accounts in certain countries start with longer delays. As you build transaction history and maintain low dispute rates, Stripe may automatically reduce your delay.
Can I trigger Instant Payouts from the Stripe Dashboard?
Yes. Go to Balance → Pay out funds → select Instant as the speed. The API method shown in this guide is useful for automating the process.
What happens if an Instant Payout fails?
The funds return to your Stripe balance and you are not charged the instant payout fee. Check the payout.failed webhook event for the failure reason.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation