Stripe credit balance refund: how to return customer credits as cash
Returns a Stripe customer credit balance to the customer as cash. Use when a customer has a positive credit balance and wants it refunded instead of applied to future invoices. Not for applying credits to invoices.
TL;DR
A credit balance is Stripe-internal money, not a charge, so you cannot refund it directly; instead create a refund against the original payment or issue a payout-equivalent credit. The clean path: apply the credit to a zero-amount invoice is wrong; instead refund the original charge for the credit amount if it is still refundable, or handle it as an off-Stripe bank transfer and zero the balance. Document the choice for audit.
Steps
- Read the customer balance: a positive balance_transaction history shows where each credit came from.
Expected output: You know the source of every credit dollar.
- If the credit came from an overpayment on a refundable charge, issue a refund for the credit amount against that charge.
Expected output: Cash returns through the normal refund rails.
- If the original charge is no longer refundable, pay the customer outside Stripe (bank transfer) and record it.
Expected output: The customer still gets their money.
- Zero out the customer balance with an offsetting negative balance transaction so it cannot be spent twice.
Expected output: The balance is cleared exactly once.
- Notify the customer with the amount, method, and timing of the return.
Expected output: No confusion about where the money went.
When to use
- A customer wants their credit balance back as cash
- Overpayments sit as customer balance
- You close an account with leftover credit
When not to use
- You want the credit applied to the next invoice (that is the default behavior)
- The balance is negative (the customer owes you)
- The credit came from a coupon (coupons are not cash-refundable)
Compatibility
Stripe Customer Balance Transactions API; Refunds API. All SDKs and dashboard.
Variant phrasings
### refund customer balance Stripe
### customer credit balance cash out
### negative invoice customer balance refund
Root cause
Customer balance is a ledger, not a payment instrument: it records value Stripe owes the customer but holds no card or bank rail to push money back through. Refunds need a charge to reverse; without one, the money must leave through a separate transfer and the ledger adjusted manually.
Edge cases
- Refunds are limited to the original charge amount and its refund window
- Balance transactions are the audit trail: never edit them, always offset
- Tax treatment of returned credits varies; loop in finance for large amounts
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_tGNU0CDEWUvJol-zrUA8LA
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.