Skip to main content
BlogOctober 24, 2026

Voids, credit notes and refunds in Stripe Billing: how each one should hit the ledger

When to void a Stripe invoice, issue a credit note or refund, and the journal entry each needs in NetSuite, QuickBooks or Xero. Every rule cites Stripe.

Zuny FesterBy Zuny Fester, Head of Operations and Marketing
Reviewed by Zuny Fester
Published Editorial policy

Part of the subscription and usage billing guide.

One invoice branches three ways: to a struck-through invoice, to a document with a minus badge, and to a coin with a return arrow, each leading to its own ledger card.

Void a Stripe invoice when it should never have existed and nothing has been paid on it. Issue a credit note when the invoice was valid but the amount owed has to come down. Refund only when money has to go back to the customer, and route that refund through a credit note so Stripe and the ERP describe the same event. In the ledger, a void reverses the original invoice entry. A credit note reduces revenue against receivables, a customer credit or cash. A refund moves cash out against that credit note.

The three actions look alike in Stripe Billing. They create different records, and mixing them up leaves stale balances in AR aging or records the same reduction twice. This guide sets out when to use each, what Stripe records, and the entry your ERP needs. Every Stripe rule below comes from Stripe's own documentation.

Key takeaways

  • Void only open or uncollectible invoices. Stripe treats a voided invoice as zero-value for reporting, and the void is terminal.
  • A credit note adjusts a finalized invoice without replacing it. On an open invoice it lowers the amount due. On a paid invoice it becomes a refund, a customer credit balance or an out-of-band credit.
  • A credit note that takes an open invoice to zero marks it paid with no payment recorded. Your sync must not treat that status as cash received.
  • Route refunds through credit notes. Stripe lets a credit note create a refund or link one already issued, which keeps the invoice, the refund and the ledger tied together.
  • Write-offs are a different action. Marking an invoice uncollectible is the bad-debt path; voiding it as well credits AR twice and leaves the allowance misstated.

The decision table

Pick the action from what happened to the invoice, then post the entry that matches. The entries assume a $1,000 invoice originally booked as debit accounts receivable, credit revenue (or deferred revenue if the service period has not started). The figures are illustrative.

SituationStripe actionWhat Stripe recordsERP record (NetSuite, QuickBooks, Xero)Journal entry
Invoice issued in error, nothing paidVoidStatus void, zero-value, terminalVoid or reverse the invoiceDr Revenue (or deferred revenue) 1,000 / Cr AR 1,000
Wrong details on an open one-off invoiceReviseOriginal voided, new invoice finalizedVoid the original, post the new invoiceReverse original, book new
Amount owed reduced, invoice still openCredit note on open invoiceAmount due reduced; paid at zeroCredit memo (NetSuite, QuickBooks) or credit note (Xero) applied to the invoiceDr Contra revenue 200 / Cr AR 200
Paid invoice, customer keeps the creditCredit note to customer credit balanceCredit applies to next finalized invoiceUnapplied credit memo or credit note on the customerDr Contra revenue 200 / Cr Customer credit 200
Paid invoice, money goes backCredit note with refundRefund to original payment methodCredit memo or credit note plus a customer refundDr Contra revenue 200 / Cr Stripe clearing 200
Paid invoice, credit paid outside StripeCredit note with out-of-band amountCredit recorded, no Stripe money movementCredit memo or credit note plus a refund from the bankDr Contra revenue 200 / Cr Cash 200
Customer will not payMark uncollectibleStatus uncollectibleWrite-off against the allowanceDr Allowance (or bad debt) 1,000 / Cr AR 1,000

The account names are examples. Whether a credit hits revenue directly or a contra-revenue account is your policy and your auditor's call. What matters is that each event posts once, to one place.

When should you void a Stripe invoice?

Void a Stripe invoice when it should not exist at all: wrong customer, duplicate, or billed in error, with no payment applied. A void cancels the invoice and keeps the paper trail.

Stripe's invoicing overview describes voiding as "conceptually similar to deleting or canceling" an invoice, except that it "maintains a paper trail, which allows you to look up the invoice by number." Voided invoices "are treated as zero-value for reporting purposes, and aren't payable." The status is terminal. Stripe only lets you void an invoice in open or uncollectible status, so a paid invoice cannot be voided.

The ledger entry for a void reverses the original invoice entry in full. If the original period is still open, date the reversal in that period. If the period is locked, post the reversal in the current open period rather than reopening the books. Our guide to locking accounting periods covers why.

One failure to watch for is a void that never leaves Stripe. Stripe sends an invoice.voided event when an invoice moves to void. If the integration ignores it, the ERP keeps the invoice open and AR aging overstates receivables. The article on what breaks when a voided Stripe invoice doesn't clear from AR aging walks through the symptoms.

What about revising an invoice instead?

Revising a finalized invoice in Stripe is a void plus a new invoice, and the ledger needs both. Stripe's guide "Edit finalized invoices" states that when you update the invoice, "Stripe finalizes the new invoice and voids the old one."

Stripe allows revisions on open or uncollectible invoices, not void or paid ones. It also states that you cannot revise invoices attached to subscriptions after finalization (editing them is in private preview for one billing mode). Your sync has to post the void of the original as well as the new invoice. A sync that only picks up new invoices leaves the original open. Stripe also notes that compliance rules vary by country and that a business in the European Union may want to void and issue a credit note rather than revise. Confirm the right approach with your advisers.

When should you issue a credit note?

Issue a credit note when the invoice was right to issue but the amount the customer owes has to change. Overcharges, undelivered services and discounts agreed after finalization all fit.

Stripe's documentation states that a credit note "reduces the amount of a finalized invoice without voiding and replacing the original invoice." You can issue one against an open, paid or uncollectible invoice through the API, though the Dashboard does not support credit notes on uncollectible invoices. Per Stripe's credit notes guide, "the sum of all credit notes issued for an invoice can't exceed the total amount of the invoice."

Credit note on an open invoice

On an open invoice, a credit note lowers the amount due, and the ledger entry reduces revenue against accounts receivable. No money moves.

Stripe states that a credit note "reduces the amount due without recording any payment. However, if a credit note reduces the balance of an open invoice to 0, the invoice status changes to paid." That paid status is the trap. An integration that books a cash receipt whenever an invoice turns paid will record cash that never arrived. Match cash on payment records, not on invoice status.

A credit note on an open invoice can be voided. Stripe states that voiding it "reverses its adjustment, increasing the amount due on the invoice." Credit notes on paid invoices cannot be voided. In the ERP, reverse the credit memo or credit note with the same date logic as an invoice void.

Credit note on a paid invoice

On a paid invoice, a credit note does not change the amount due; instead, the credit goes somewhere. Stripe's guide "Generate credit notes programmatically" lists four options: create a refund, link an existing refund, credit the customer's credit balance, or credit outside of Stripe. For a paid invoice, the refund, credit and out-of-band amounts must add up to the credit note total.

Each option posts differently:

  • Refund: contra revenue against Stripe clearing. Money leaves your Stripe balance.
  • Customer credit balance: contra revenue against a customer credit. Stripe's "Customer credit balance" documentation states the credit "automatically applies to the next finalized invoice" and that you "can't choose a specific invoice to apply the credit balance to." When it applies, clear the customer credit against that invoice's receivable.
  • Out of band: contra revenue against the bank account or a payable to the customer, for a credit paid by check or wire outside Stripe.

When should you refund, and how?

Refund when money has to return to the customer, and issue the refund through a credit note on the invoice. A refund created on its own from the Payments page sits against the charge, not the invoice lines.

Stripe's credit note options include "Link a refund," which links an existing refund for the invoice's charge. If someone refunded from the Payments page, create a credit note that links that refund, so the invoice shows why money went back. Without it, the Stripe invoice and the ERP describe the same customer differently, and month-end reconciliation finds the gap.

Three refund facts from Stripe's refunds documentation change the entries:

  1. Fees are not returned. "Stripe's processing fees from the original transaction aren't returned." The original fee stays as an expense; only the refunded amount reverses.
  2. Refunds draw on your available Stripe balance. If the balance cannot cover a card refund, Stripe holds it as pending; refunds for other payment method types fail.
  3. Refunds can fail. When a bank or card issuer cannot process a refund, the money returns to your Stripe balance, which "can take up to 30 days." Stripe sends a refund.failed event. Reverse the refund entry and arrange another way to pay the customer.

How refunds show up in Stripe payouts and the bank deposit is a payout-side question, covered in our guides to reconciling Stripe with NetSuite and reconciling Stripe with QuickBooks.

Where does marking an invoice uncollectible fit?

Mark an invoice uncollectible when the customer will not pay, and treat it as a write-off, not a void. Stripe states that uncollectible means "the customer is unlikely to pay the invoice. Normally, you treat it as bad debt in your accounting process."

An uncollectible invoice can later move to void or paid. This is where AR gets credited twice. The write-off already credited AR against the allowance (or bad debt expense). If someone later voids the same invoice in Stripe and the sync reverses every void, it credits AR a second time and debits revenue. The customer's AR goes negative, revenue is understated, and the allowance carries a loss for an invoice that was cancelled. Decide what the event is. If the invoice was valid and the customer did not pay, it stays a write-off. If the invoice was wrong, reverse the write-off and post the void. If the customer pays after all, reverse the write-off and apply the cash.

The four errors this table prevents

Four errors account for many problems with voids, credit notes and refunds, and each one shows up in a different report.

ErrorWhere it showsRoot cause
Stale open balanceAR aging overstates receivablesA void or revision in Stripe never reached the ERP
Revenue reduced twiceRevenue understated; contra revenue too highCredit note and refund both posted as separate reductions
AR credited twiceNegative AR for the customer; allowance misstated; revenue understatedA write-off followed by a void of the same invoice
Phantom cash receiptCash and AR disagree with the bankA credit note took an invoice to paid and the sync booked a payment

Checking these at month-end is the job of a reconciliation between Stripe invoice status and open AR. The article on reconciling Stripe invoice payment status against open AR covers that tie-out. Preventing them is a matter of posting each Stripe event once, by type.

What this looks like as a workflow

A governed workflow reads each Stripe event, applies the decision table as fixed rules, and posts one ERP entry per event. Anything that does not fit the table goes to a person.

Loopfour, the deterministic finance workflow automation platform, builds this on your Stripe account and your ERP, with approvals in Slack:

Stripe event received (invoice.voided, credit note created, refund.failed, invoice.marked_uncollectible) → event typed by rule → matching ERP record built (reversal, credit memo or credit note, refund, write-off) → amounts above your threshold approved in Slack → posted to NetSuite, QuickBooks or Xero → execution tree records the event, the rule and the approver

Every step is predefined, so the same event always produces the same entry. No model chooses an account. Loopfour is SOC 2 Type II certified, and we build, run and maintain the workflow, so a new Stripe event type or an ERP field change is our fix to make. If credit notes and refunds are where your Stripe-to-ERP sync breaks, book a workflow review and we will map your event types against this table.

Frequently asked questions

What happens when you void an invoice in Stripe?

Stripe changes the invoice status to void, which is terminal. The invoice keeps its number and stays searchable, but Stripe treats it as zero-value for reporting and it can no longer be paid. You can only void an invoice that is open or uncollectible.

What is the difference between a credit note and a refund in Stripe?

A credit note reduces what a customer owes on a finalized invoice without voiding it. A refund sends money back to the customer's original payment method. On a paid invoice, a credit note can create a refund, link an existing one, add to the customer's credit balance, or record a credit made outside Stripe.

Can you void a paid invoice in Stripe?

No. Stripe only allows voiding invoices in open or uncollectible status. To reduce or reverse a paid invoice, issue a credit note and choose a refund, a customer credit balance, or an out-of-band credit.

Does a Stripe credit note reduce revenue?

In the ledger, a credit note is usually recorded as a reduction of revenue, often through a contra-revenue account, with the other side to accounts receivable, a customer credit, or cash, depending on whether the invoice was open or paid. Your revenue policy and auditor set the exact accounts.

Why does a voided Stripe invoice still show in AR aging?

Usually because the void in Stripe never reached the ERP. Stripe sends an invoice.voided event when an invoice is voided; if the integration does not handle that event, the ERP keeps the invoice open and AR aging overstates what customers owe.

Are Stripe fees returned when you refund an invoice payment?

No. Stripe's refund documentation states that processing fees from the original transaction are not returned. The fee stays as an expense in the ledger; only the refunded amount reverses.

Conclusion

A Stripe void invoice action is for an invoice that should not exist. A credit note is for an invoice that was right but now owes less. A refund is money going back, recorded through a credit note. Post each one once, by type, and AR aging, revenue and cash all agree with Stripe.

Tell us the one workflow your team dreads. We will show it running. Book a demo.

Sources