Lesson 18 / 25
Balances, Payouts and Stripe Connect
Getting money to your bank and to other sellers.
Payouts, reconciliation and marketplaces
Settled funds land in your Stripe balance, first as pending and then available, and are sent to your bank as payouts on a schedule (or manually). Every movement is a balance transaction, and listing them by payout is how you reconcile a bank deposit with the payments, refunds and fees inside it. Stripe Connect lets a platform or marketplace route payments to other businesses. Connected accounts were traditionally described as Standard, Express and Custom, which differ in who handles onboarding, dashboards and liability; newer API versions describe this with controller settings, so check the docs. Charges can be direct (on the connected account) or destination charges (on the platform with funds transferred), and the platform can keep an application fee.
Balances and a destination charge
Server-side Node.js.
// what is in the balance right now
const balance = await stripe.balance.retrieve();
console.log(balance.available, balance.pending);
// reconcile one payout with its underlying transactions
const txns = await stripe.balanceTransactions.list({ payout: 'po_...', limit: 100 });
// marketplace: charge the buyer, send funds to the seller, keep a platform fee
await stripe.paymentIntents.create({
amount: 10000,
currency: 'usd',
automatic_payment_methods: { enabled: true },
application_fee_amount: 1000, // platform keeps 10.00
transfer_data: { destination: 'acct_...' }, // the seller's connected account
});
// onboarding link for a connected account
const link = await stripe.accountLinks.create({
account: 'acct_...',
refresh_url: 'https://example.com/connect/retry',
return_url: 'https://example.com/connect/done',
type: 'account_onboarding',
});
Reconcile with balance transactions, not payment totals
Bank deposits are net of fees, refunds and disputes. Balance transactions for each payout explain the exact deposited amount.
Quick check: In a destination charge, how does the platform keep its cut?
- With application_fee_amount on the payment
- By refunding the seller
- By creating a separate subscription
- By changing the payout schedule
Answer
With application_fee_amount on the payment — The application fee stays with the platform; the rest is transferred.