How to Record Stripe Refunds and Disputes in QuickBooks Online
Stripe refunds and disputes show up as negative amounts in your CSV export. Learn how to categorize them correctly in QuickBooks Online so your revenue and fees stay accurate.
TL;DR
- In a Stripe balance CSV, refunds appear as negative amounts on the same
Date,Description,Amountrows as charges. Disputes (chargebacks) appear as separate negative entries, often with a dispute fee. - In QuickBooks, categorize refunds against the original income account (reducing revenue), not as a generic expense.
- Dispute fees ($15 in the US) are a separate expense — categorize them to a “Bank/Processing Fees” account.
- If a dispute is won, Stripe returns the funds as a positive entry. Match it against the original dispute to avoid double-counting revenue.
- PayoutPrep preserves refund and dispute rows exactly as Stripe reports them, so nothing gets silently dropped.
How Refunds Appear in Your Stripe Export
When you refund a customer, Stripe doesn’t delete the original charge. Instead, it adds new balance transactions:
| Type | Amount sign | Description example |
|---|---|---|
| Original charge | Positive | Charge for order #1234 |
| Refund | Negative | Refund for charge ch_... |
| Refund fee reversal | Positive (small) | Stripe returns part of its processing fee on refunds |
The net effect: your CSV contains both the +$100 charge and the −$100 refund. Your books must reflect both — deleting the original charge would understate gross sales, which matters for tax reporting.
How Disputes (Chargebacks) Appear
Disputes are messier. A typical lost dispute generates three rows:
- Dispute withdrawal — negative, the disputed amount leaving your balance.
- Dispute fee — negative $15 (US), non-refundable even if you win.
- If you win — a positive reversal for the disputed amount (but not the fee).
Many bookkeepers miss the fee row because it’s small. Over a year of occasional disputes, those $15 fees add up to real money miscategorized or missing entirely.
The Correct QuickBooks Categorization
For each row type, here’s where it belongs:
- Refunds → categorize against the same income account as the original sale (e.g. “Product Sales”). This reduces net revenue correctly. Do not put refunds in an expense account — that inflates both revenue and expenses.
- Refunded Stripe fees (the small positive reversal) → “Processing Fee Income” or net against your fee expense account.
- Dispute withdrawals → same income account as the original sale (it’s a reversed sale).
- Dispute fees → expense account, e.g. “Merchant Processing Fees” or “Bank Charges”.
- Won dispute reversals → reverse the dispute withdrawal entry; the $15 fee stays as an expense.
Common Mistakes
- Netting refunds manually before import. Some people delete the original charge and the refund, keeping only the net. This destroys your audit trail and understates gross revenue.
- Categorizing dispute fees as refunds. The fee is a cost of doing business, not a returned sale. Mixing them corrupts your refund-rate metrics.
- Ignoring partial refunds. A $40 refund on a $100 order leaves $60 of legitimate revenue. Make sure both rows import — partial refunds are the #1 source of “my QuickBooks doesn’t match Stripe” complaints.
- Forgetting currency conversion on cross-border disputes. If the dispute is in another currency, Stripe converts at its own rate. Record the USD (or home-currency) amount Stripe reports, not the original foreign amount.
How PayoutPrep Handles Them
PayoutPrep doesn’t filter, merge, or “clean up” refund and dispute rows. Every balance transaction Stripe reports becomes exactly one CSV row, with the sign preserved:
- Refunds keep their negative amount.
- Dispute fees appear as their own rows.
- Reversals appear as positive rows.
This 1:1 fidelity means your QuickBooks import matches your Stripe dashboard to the cent — which is the entire point of reconciliation. After importing, use QuickBooks’ “Find match” or bank rules to categorize recurring patterns (e.g. auto-categorize anything with “dispute fee” in the description to your fee expense account).
Reconciling at Month End
Once refunds and disputes are categorized:
- In QuickBooks, open the Stripe clearing account register.
- Compare the ending balance against Stripe’s dashboard payout total for the period.
- They should match. If they don’t, the usual suspects are: a missing batch (see our 1,000-row limit guide), a mis-categorized dispute fee, or a partial refund assigned to the wrong account.
For the mechanics of the monthly reconciliation workflow, see how to reconcile Stripe payouts in QuickBooks.
Convert Your Stripe CSV to QuickBooks Online
Fees split automatically, dates converted to calendar formats, and batched under 1,000 rows. Processed 100% locally in your browser.