keepcalculator

06 Numbers and Powers

Stripe Connect Refund Anatomy: How It Works

Card No. 06·57329 · Updated · Standard formula, shown below

A Stripe Connect refund is the process of returning funds from a connected account’s balance to a customer, with the platform either absorbing or passing along the cost. This article explains the complete anatomy of a Stripe Connect refund: how funds move, who pays what, and what happens to fees and balances.

Background: How Stripe Connect Structures Money Movement

Stripe Connect is a platform that lets you accept payments and pay out to third parties (e.g., marketplace sellers, gig workers). There are two main account types:

  • Standard accounts: The connected user has their own Stripe account; the platform doesn’t handle their funds directly.
  • Express and Custom accounts: The platform manages the connected account’s funds, with Stripe holding the money and the platform controlling payouts.

When a charge is made, the money goes into the connected account’s Stripe balance. Stripe then deducts its processing fee (typically ~2.9% + 30¢, but varies). The platform may also take a separate platform fee. A refund reverses this flow: money moves from the connected account back to the customer’s card or bank.

How a Refund Works Step-by-Step

When you issue a refund on a Connect charge, Stripe performs the following steps:

  1. You call the Refunds API (or use the Dashboard) with the charge ID and amount.
  2. Stripe debits the connected account’s balance for the refund amount (if the balance is sufficient).
  3. The customer’s payment method is credited — typically within 5-10 business days for cards, faster for some methods.
  4. Stripe’s original processing fee is not automatically returned — unless you use the refund_application_fee parameter (for application fees) or the refund happens within a specific window (see below).
  5. If the connected account has insufficient balance, Stripe may debit the platform’s own balance or put the account into negative balance, depending on your settings.

For Custom and Express accounts, you can also choose to refund the application fee separately using refund_application_fee=true. This returns the platform fee to the connected account.

Who Pays the Stripe Processing Fee on a Refund?

This is the most common confusion. Stripe’s standard policy is:

  • Full refunds within the same billing period: Stripe returns the original processing fee (the 2.9% + 30¢) to the connected account. So the platform doesn’t lose the fee.
  • Partial refunds or refunds after the period: Stripe does not return the original fee. The fee remains with Stripe. The connected account loses the fee plus the refunded amount.
  • Application fees (platform fees): These are only returned if you explicitly set refund_application_fee=true when creating the refund. Otherwise, the platform keeps its fee.

Example: A $100 charge with a $10 platform fee. You refund $50 after the billing period. The customer gets $50. The connected account loses $50 plus the original Stripe fee (~$3.20). The platform keeps its $10 fee unless you refund it.

Common Problems and Edge Cases

Several issues arise with Connect refunds:

  • Negative balance: If the connected account has spent its balance (via payouts), a refund can drive it negative. You can set a negative balance limit or have Stripe debit the platform’s account.
  • Refund on a charge that was partially captured: You can only refund up to the captured amount, not the authorized amount.
  • Refund on a charge with a transfer already made: If you used Stripe’s transfers feature to move funds to a separate account, the refund does not automatically reverse the transfer. You must handle that separately.
  • Currency mismatches: Refunds must be in the same currency as the original charge. If you need a different currency, you must issue a new charge.
  • Disputed refunds: If a customer disputes a charge, Stripe may reverse the refund and initiate a dispute process, which has its own fee.

How to Choose the Right Refund Method

Stripe offers several ways to issue refunds:

  • Dashboard: Manual, good for rare refunds.
  • API: Automated, for scale. Use POST /v1/refunds with the charge ID.
  • Partial vs. full: Specify the amount. Partial refunds are allowed multiple times until the full amount is refunded.
  • Application fee refund: Set refund_application_fee to true if you want to return your platform fee.

For most platforms, you’ll want to automate refunds via API and decide whether to refund your fee based on your business policy. If you’re building a marketplace, you might want to refund the fee only in cases of fraud or service failure.

Costs and Timing

Refunds themselves do not incur an extra fee from Stripe. However, you may lose the original processing fee (as described above). The timing for the customer to see the refund depends on the payment method:

  • Cards: 5-10 business days.
  • Bank debits (ACH): 3-5 business days.
  • Wallets (Apple Pay, etc.): Usually 1-3 days.

For Connect, the refund is immediately deducted from the connected account’s balance (if available), so the platform doesn’t wait for the customer’s bank to process.

Frequently Asked Questions

Q: Can I refund a Connect charge after the connected account has been paid out?
Yes, but the connected account will go into a negative balance. Stripe will attempt to recover the negative balance from future charges or payouts. You can also set a negative balance limit to prevent this.

Q: Does Stripe return the processing fee on a full refund?
Only if the refund is issued in the same calendar month as the original charge. After that, the fee is not returned. This is a common point of confusion.

Q: How do I refund the platform fee separately?
When creating a refund via the API, set refund_application_fee to true. This returns the application fee to the connected account. If you don’t set this, the platform keeps the fee.

Q: What happens if the connected account has zero balance?
Stripe will debit the platform’s own balance if you have that setting enabled (default for Custom accounts). Otherwise, the connected account goes negative and must be repaid from future earnings.

Q: Can I refund a charge that was made with a different currency?
No. Refunds must be in the same currency as the original charge. If you need to refund in a different currency, you must issue a new charge and then refund the original separately.

Q: Is there a limit on how many partial refunds I can issue?
No, you can issue multiple partial refunds up to the total captured amount. However, each refund is a separate API call and may incur its own processing fee if it’s partial and after the billing period.

Related

Method: the standard formula for this calculation, rounded as each result states. See how the calculators work or report an error.

More cards in this drawer

The whole Numbers and Powers drawer →