Stripe COGS Mapping: How to Account for Refunds, Chargebacks,
Key takeaways
- Refunds = contra-revenue. They reduce gross revenue. They are not an expense. Do not post refunds to a COGS or expense account.
- Chargebacks = two entries. The disputed amount reverses revenue (or hits a suspense account pending resolution). The $15 dispute fee is a separate expense.
- Processing fees on refunded transactions are never returned by Stripe. They stay on your fee expense line as a sunk cost.
- Processing fees classify as COGS (cost of revenue) for e-commerce and SaaS businesses where fees scale directly with sales, or as SG&A where they don't.
- Finlens maps every Stripe event charges, refunds, partial refunds, disputes, fee retention to the correct QBO accounts automatically. Free to start.
How should Stripe refunds be recorded in accounting
A refund is not an expense. Under GAAP, refunds are a reduction of revenue specifically, they're "variable consideration" under ASC 606. When a customer gets their money back, the original sale partially or fully reverses. Your P&L shows less revenue, not more expenses.
The journal entry for a full refund:
The processing fee from the original charge stays. Stripe changed this policy in 2019 processing fees are no longer returned on refunds, regardless of whether the refund is full or partial. Per Stripe's documentation, this applies to standard pricing. Some businesses on Interchange Plus (IC+) pricing may see partial interchange returns from issuing banks, but this is inconsistent.
That means a $100 charge with a 2.9% + $0.30 fee ($3.20) that gets fully refunded costs you $3.20 in irrecoverable fees. On a partial refund, Stripe retains the full original fee not a prorated portion.
The accounting impact: Your fee expense line stays the same. Your revenue drops by $100. Your net margin on that transaction is negative $3.20. This compounds at scale a business with a 5% refund rate on $1M in Stripe volume loses roughly $16,000/year in irrecoverable fees.
A bookkeeper on r/Bookkeeping walked through this exact scenario a refund issued, the clearing account left with a negative balance equal to the retained fee. The negative balance offsets against your next positive sales payout, bringing the clearing account back to zero. If you reconcile before the next payout lands, that negative balance is expected, not an error.
Are Stripe processing fees COGS or operating expenses
GAAP doesn't prescribe a single answer. The classification depends on how directly the fee ties to revenue generation.
Processing fees as COGS (cost of revenue):
- E-commerce businesses where every sale incurs a fee → fees scale 1:1 with revenue → cost of revenue
- SaaS businesses where subscription payments run through Stripe → fees are a direct cost of earning that revenue → cost of revenue
- Marketplace platforms where fees are part of the transaction cost structure → cost of revenue
Processing fees as SG&A (operating expense):
- Businesses paying a fixed monthly fee to a processor regardless of volume → not directly tied to individual sales → SG&A
- Companies where card processing is incidental to the core revenue model → operating expense
The practical test: if your Stripe fees would drop to zero if revenue dropped to zero, they're cost of revenue. If they'd stay roughly the same, they're SG&A.
Most SaaS and e-commerce businesses classify Stripe fees as cost of revenue. This is the approach Stripe's own SaaS accounting guide references, and it's consistent with how public SaaS companies report gross margins. Classify them consistently and document the policy in your accounting manual.

How to record Stripe chargebacks and disputes in QuickBooks
Chargebacks are not refunds. A refund is voluntary you initiate it. A chargeback is involuntary the cardholder's bank pulls funds from your Stripe balance without your consent. The accounting treatment is different at every stage.
The $15 fee is gone either way. Using a separate "Disputes Held" asset account instead of dumping disputes directly to expense gives you visibility into how much capital is tied up in open chargebacks at any point.
A thread on r/Bookkeepingdebated this exact question "where do you stick chargebacks?" and the consensus was: separate account for the hold period, never lump into generic "Bank Charges."
Some bookkeepers on r/QuickBooks prefer skipping the suspense step and debiting Sales Returns immediately on dispute notification, then recording a won dispute as net-new income. Simpler registers, but you lose visibility into open dispute exposure.
Complete Stripe event to COA mapping table
This is the reference table. Every Stripe event, the QBO account it hits, and the journal entry direction.
Post this table in your firm's Stripe onboarding documentation. Every new client running Stripe should have their COA mapped before the first sync runs.

When to accrue a chargeback reserve liability
If your dispute rate is material generally above 0.5% of transaction volume GAAP expects you to estimate expected chargeback losses and accrue a reserve. This is the same concept as a bad debt allowance applied to payment disputes.
The accrual:
When this matters:
- Stripe flags accounts above 0.75% dispute rate for review. Above 1%, you risk account restrictions.
- Visa's Dispute Monitoring Program triggers at 100 disputes/month AND 0.9% dispute ratio.
- Investors and auditors expect accrued reserves when dispute volume is predictable and material.
For businesses below 0.5% dispute rate, expensing disputes as incurred is acceptable. Above that threshold, accrue.
Best tools for mapping Stripe events to QuickBooks accounts
For the full Stripe-to-QBO sync tool comparison, see 7 Best Stripe to QuickBooks Sync Tools (2026).
FAQ
Does Stripe return processing fees when you issue a refund?
No. Since 2019, Stripe retains the full processing fee on refunded transactions. This applies to both full and partial refunds. Some IC+ pricing accounts may see partial interchange returns from issuing banks, but this is inconsistent and usually minimal.
Should Stripe processing fees be classified as COGS or SG&A?
It depends on your business model. If fees scale directly with revenue (e-commerce, SaaS), classify as cost of revenue. If fees are fixed regardless of volume, classify as SG&A. Most SaaS and e-commerce companies use cost of revenue. Document the policy and apply consistently.
How do you record a chargeback in QuickBooks?
Three-phase approach: (1) When the dispute opens, debit a "Disputes Held" suspense asset and expense the $15 fee immediately. (2) If you lose, move the disputed amount from suspense to contra-revenue. (3) If you win, move it back to Stripe Clearing. The $15 fee is not refunded either way.
What's the difference between a refund and a chargeback in accounting?
Refunds are voluntary contra-revenue entries you control. Chargebacks are involuntary reversals initiated by the cardholder's bank they require a suspense account for the hold period and a separate expense entry for the dispute fee. Refunds are one entry; chargebacks are two to three entries across periods.
When should you accrue a chargeback reserve?
When your dispute rate is material generally above 0.5% of transaction volume. Estimate expected losses based on trailing 6-month dispute data and accrue a liability. Visa's monitoring program triggers at 0.9% dispute ratio. Auditors expect reserves when dispute patterns are predictable.
Does a partial refund change the fee accounting?
No. Stripe retains the full original processing fee even on partial refunds. The contra-revenue entry reflects the partial refund amount, but the fee expense line stays unchanged from the original charge.
What GAAP standard governs refund accounting?
ASC 606 (Revenue from Contracts with Customers) treats refunds as variable consideration. ASC 605-15 (legacy, pre-ASC 606) addressed product returns specifically. Under ASC 606, entities must estimate expected refunds and recognize a refund liability and corresponding adjustment to revenue at contract inception.
