Stripe Credit Notes in QuickBooks Online (Not Refunds)

A Stripe credit note reduces an invoice without moving cash, which makes it a QuickBooks credit memo rather than a refund receipt. Here is how each credit...

Acodei Content Team · 7/31/2026 · 14 min read

A refund moves money. A credit note usually doesn't. That single distinction decides whether your Stripe billing activity lands in QuickBooks Online as a credit memo against accounts receivable or as a refund receipt drawing on your holding account — and getting it backwards is one of the quieter ways a Stripe-to-QuickBooks sync starts drifting from reality.

If you bill through Stripe Invoicing or Stripe Billing, you will issue credit notes. A customer downgrades mid-cycle. You over-billed a seat count. A deal was renegotiated after the invoice went out. Stripe's answer to all three is a credit note, not a refund, and QuickBooks has a matching object — the credit memo — that most teams never see because they book the adjustment by hand as a refund or, worse, as a negative sales receipt.

This is what actually happens to a Stripe credit note on its way into QuickBooks Online, what changes on the invoice, and the specific places the accounting goes wrong.

Acodei syncs Stripe credit notes into QuickBooks Online as credit memos, applied to the right invoice, with the totals validated. Start a free trial.

A credit note is an adjustment, not a payment

In Stripe's data model, a credit note is attached to an invoice and reduces what that invoice was worth. Stripe's own framing is that it acts as "a source of truth for the correct amount that was owed to you."

What it does depends entirely on whether the invoice has been paid.

On an open (unpaid) invoice, a credit note simply decreases the amount due. There is no refund method to choose, because no money has moved yet. Per Stripe's documentation, credit notes "reduce the amount due without recording any payment." If the credit reduces the balance to zero, the invoice's status flips to paid — despite no cash ever arriving. That status change catches people out constantly.

On a paid invoice, the money is already yours, so Stripe forces you to say where the credit goes. There are three options, and you can combine them:

OptionWhat Stripe doesWhere the money goes
RefundCreates a real refund against the original chargeBack to the customer's card
Credit balanceAdds to the customer's Stripe balanceAutomatically applied to their next invoice
Out of bandRecords that you credited them outside StripeNowhere in Stripe — a cheque, a wire, a write-off

For a paid invoice, the sum of the refund, credit-balance, and out-of-band amounts must equal the credit note total. Stripe enforces this. Since the December 2019 API change, out_of_band_amount is required when creating a post-payment credit note if the refund and credit amounts together fall short of the total.

A few more constraints worth knowing before you reconcile anything:

  • The sum of all credit notes on an invoice cannot exceed the invoice total. Stripe will not let you credit more than you billed.
  • Credit notes are not modifiable once issued. You can issue several against one invoice, but you cannot edit one.
  • You can only void a credit note on an open invoice. Voiding reverses the adjustment and pushes the amount due back up. On a paid invoice, there is no undo.

That last point matters more than it looks. A mistaken credit note on a paid invoice is permanent in Stripe, which means the correcting entry has to happen in your books.

The QuickBooks side: credit memo, not refund receipt

QuickBooks Online has two objects that both reduce revenue, and they are not interchangeable.

A credit memo sits against a customer in accounts receivable. It reduces what that customer owes you. No cash moves. If QuickBooks has automatic application turned on, the credit memo settles against an open invoice on its own; if not, it sits as an unapplied credit on the customer record.

A refund receipt records money leaving a bank or holding account and going back to the customer. Cash moves.

If what you actually have is a refund rather than a credit note, our guide to recording Stripe refunds in QuickBooks Online covers the full and partial cases.

Book a credit note as a refund receipt and you have told QuickBooks that cash left your Stripe balance when it didn't. Your holding account will not clear at month end, and the variance will be exactly the size of the credit note. Book a refund as a credit memo and the opposite happens — A/R absorbs an adjustment that should have hit cash.

What Acodei does with each event

Acodei's Invoice Sync is a one-way mirror of Stripe invoices and their subsequent payments into QuickBooks Online. It is a paid-plan feature, toggled per company under Account Mapping ▸ Premium Features in the Acodei dashboard.

With it on, the routing looks like this:

Stripe eventQuickBooks record
invoice.created / invoice.finalizedInvoice
invoice.paid / charge.succeededPayment applied to that invoice
credit_note.createdCredit Memo
invoice.voidedVoid the invoice, or create a Credit Memo
charge.refundedRefund Receipt

The credit memo is linked to the originating invoice where possible; where it isn't, it posts to the customer instead and sits there as an available credit.

Two consequences of that fall out immediately.

First, keep Automatic Application turned on in QuickBooks. Acodei's own best-practice guidance is explicit about this: with it on, payments and credit memos settle invoices automatically. With it off, you accumulate a pile of unapplied credits and open invoices that net to the right number but read as wrong on an A/R aging report.

Second, a voided invoice is handled differently depending on what came before it. On invoice.voided, Acodei either voids the QuickBooks invoice or creates a credit memo — and if credit notes already exist against that invoice, they are deleted first. You cannot void an invoice and keep its credit memos; that would double-count the reduction.

The refund-plus-credit-note case

Here is the one to be careful with. If you issue a credit note on a paid invoice and choose to refund the card, Stripe emits two events: credit_note.created and charge.refunded. Acodei's documentation notes that credit-note-driven refunds interact with post-payment credit notes on the invoice, and the exact records produced depend on your account's configuration and tax mapping.

So don't assume. Open the Data Feed in the Acodei dashboard and confirm which QuickBooks records were actually created for that credit note before you close the month. The Data Feed is the per-transaction ledger of everything synced or errored, and it is the correct place to answer this question for your configuration — rather than reasoning from what ought to happen.

Worked example: a mid-cycle downgrade

This is the most common credit note a SaaS business will ever issue, and it doesn't produce a credit note at all in the simple case. Worth walking through, because the distinction is exactly where teams get confused.

A customer is on a $200/month Pro plan billed on a 30-day cycle. On day 15 they downgrade to Growth at $80/month.

Stripe Billing computes the proration itself:

  • Unused Pro time: $200 × 15/30 = −$100 credit
  • New Growth charge for the remaining 15 days: $80 × 15/30 = +$40
  • Net: −$60

Those are line items on the next invoice, not a credit note. Stripe Billing does the arithmetic; Acodei syncs the invoice that comes out of it. If the customer's next invoice also includes a fresh $80 month, the invoice nets to $20 and syncs as an ordinary invoice.

But if nothing else is billed that cycle, the invoice total is negative — credits exceed charges. Acodei handles that case explicitly: a negative invoice total is converted to a credit memo, or split into a credit memo plus a $0 invoice, depending on amount_paid. You get a QuickBooks credit memo for $60 against that customer, which then applies to their next real invoice.

The failure mode here is a bookkeeper seeing a −$60 invoice in Stripe and hand-keying a $60 refund in QuickBooks. Cash never moved. A/R was the account that changed.

Worked example: crediting a paid invoice three ways

Same customer, different situation. Invoice INV-1042 for $1,200 (annual plan), already paid by card. You agree to credit $300.

The credit note total is $300 in all three cases. What lands in QuickBooks is not the same.

Refund $300 to the card. Money leaves your Stripe balance. Two Stripe events fire, and per the section above, check the Data Feed for what your configuration produced. Your Stripe balance drops $300, so your payout that period is $300 smaller — which is the number that has to tie out against the holding account.

Credit $300 to the customer balance. No money moves. Stripe holds a $300 credit and applies it automatically to their next invoice. This one has a second-order effect worth understanding, covered below.

Out of band $300. You paid them by cheque, or wrote it off. Stripe records the credit note and moves nothing. QuickBooks needs the cash side booked separately, because Stripe never saw it — and Acodei syncs what Stripe reports.

Three identical-looking credit notes in the Stripe dashboard; three genuinely different sets of books. Stripe's revenue recognition examples walk through how each shape affects recognized revenue if you report on an accrual basis.

The applied balance setting that changes your A/R

If you use the customer-balance option, this section is the one that matters.

When Stripe applies a customer balance to an invoice, it reduces that invoice's amount_due. So a $500 invoice with a $300 balance applied charges the customer $200. The question for your books is: was that a $500 sale or a $200 sale?

Accounting says $500. The revenue was earned; the customer just paid part of it with a credit they already held.

By default, Acodei includes the applied balance (starting_balance) as a line item on the QuickBooks invoice, so the QuickBooks record reflects the exact amount Stripe charged. That keeps the invoice tied to the cash but understates the gross sale.

There is an admin-side setting — "Skip 'Applied Balance' as line item on Invoice" — that makes Acodei ignore the applied balance and create the invoice at its full gross amount (subtotal + tax), so QuickBooks A/R reflects the full value of the sale. If your revenue reporting has to show gross bookings, this is the setting you want, and it's enabled on the Acodei side rather than being a self-serve toggle. Talk to us about which behaviour fits your reporting.

Related: Acodei skips the applied balance line when credit sync is enabled, so the two mechanisms don't both reduce the invoice.

One thing Acodei does not do: push credits back the other way. Two-way credit balance sync isn't a feature — QuickBooks credit memos you create by hand do not flow into Stripe as customer balance. Stripe remains the system of record for the balance itself; Acodei can track those balances over time, but the sync direction is Stripe → QuickBooks.

Credit notes in a second currency

If you invoice in a currency other than your QuickBooks home currency, credit notes get an exchange rate.

Acodei creates the credit note in the same currency as the invoice. Where that currency differs from the QuickBooks home currency, it includes an exchange rate drawn from QuickBooks' ExchangeRate API or from Stripe's data. That's the same treatment applied to payments, payouts and refunds under Invoice Multicurrency.

Three practical notes:

  • Invoice Multicurrency and Multicurrency Support are enabled by the Acodei team, not toggles you flip yourself. Ask support to turn them on.
  • If a customer transacts in two currencies, you will see two QuickBooks customer records in the CustomerName - CAD format. That is QuickBooks' design — a customer record carries exactly one currency — not a sync defect.
  • Zero-decimal currencies such as JPY are not supported yet. If you bill in yen, credit notes are not the place to start.

More on the mechanics in our guide to multicurrency Stripe payouts and QuickBooks.

Where this goes wrong

Booking the credit note as a refund. The most common error, and the one that breaks reconciliation. A credit note with the customer-balance or out-of-band option moves no cash. If you book it against your holding account, that account will be off by the credit amount until someone finds it. Our Stripe clearing account guide covers what a clean holding account should look like.

Assuming a paid invoice means you got paid. An invoice credited to zero shows as paid in Stripe. If your revenue reporting keys off invoice status, that invoice looks like a collected $500 that never existed. Check amount_paid, not status.

Double-counting a credit note and its refund. Covered above — verify in the Data Feed rather than assuming.

Hand-editing the QuickBooks side. Acodei validates what it writes: invoice numbers are compared to prevent duplicates, and where tax is enabled it compares the final QuickBooks invoice against the Stripe invoice amount to confirm they match exactly. Editing the QuickBooks record by hand breaks that tie-out silently. If something is wrong, resync from the Data Feed instead.

Duplicate invoice numbers. If your team also raises invoices directly in QuickBooks, Acodei's invoice-number suffixes (-AC1, -AC2) prevent collisions. Worth leaving on. Note that duplicate protection tracks what Acodei itself has synced — it works by setting the QuickBooks DocNumber to the Acodei transaction id so re-sent webhooks can't create doubles. It is not a check against records you keyed in by hand. More on that in preventing duplicate Stripe transactions in QuickBooks.

Expecting fees on the credit note. Stripe fees are never added to invoices — putting them there would break the total-matching validation. Fees are handled separately as sales receipts, deposits or expenses, per your fee configuration. See reconciling Stripe fees in QuickBooks.

A reconciliation checklist for credit notes

Run this before you close the month:

  1. Pull every credit note issued in the period from the Stripe dashboard.
  2. For each, note which option was used — refund, credit balance, or out of band.
  3. Confirm the refund-option ones show a matching cash movement, and the other two show none.
  4. Check the Data Feed for the QuickBooks records Acodei created against each.
  5. Review the A/R aging for unapplied credits — a pile of them usually means automatic application is off in QuickBooks.
  6. Tie the holding account to zero. A residual equal to a credit note amount is the tell.

Step 6 is the one that catches everything else. Our Stripe and QuickBooks month-end close checklist covers the rest of the close.

Frequently asked questions

Is a Stripe credit note the same as a refund?

No. A refund moves money back to the customer's card and reduces your Stripe balance. A credit note is an adjustment to an invoice's value. A credit note can trigger a refund — that is one of three options on a paid invoice — but on an unpaid invoice it simply reduces the amount due and no cash moves at all.

What QuickBooks record does a Stripe credit note become?

A credit memo. Acodei creates it on the credit_note.created event and links it to the originating QuickBooks invoice where possible; where it can't be linked, it posts to the customer as an available credit.

Why does my Stripe invoice say "paid" when nobody paid it?

Because a credit note reduced the amount due to zero. Stripe changes the invoice status to paid when the balance reaches zero regardless of how it got there. Key your reporting off amount_paid rather than invoice status.

How do I record a mid-cycle downgrade credit in QuickBooks?

Stripe Billing calculates the proration and puts it on the next invoice as line items — a credit for unused time and a charge for the new plan. If the invoice nets negative, Acodei converts it to a QuickBooks credit memo, or splits it into a credit memo plus a $0 invoice depending on the amount paid. You should not be keying a refund.

Can I undo a Stripe credit note?

Only on an open invoice, where voiding reverses the adjustment and increases the amount due again. On a paid invoice there is no undo, and credit notes cannot be edited once issued. A correcting entry in your books is the remedy.

Do credit memos sync from QuickBooks back to Stripe?

No. Acodei's sync is one-way, Stripe to QuickBooks. A credit memo you create by hand in QuickBooks does not become a Stripe customer balance.

What happens to a credit note in a foreign currency?

Acodei creates it in the invoice's currency and attaches an exchange rate from QuickBooks' ExchangeRate API or Stripe when that currency differs from your QuickBooks home currency. Zero-decimal currencies such as JPY are not supported.

Get the credit notes right without thinking about it

Credit notes are a small share of invoice volume and a large share of reconciliation pain, because they are the transactions where the cash and the accounting deliberately disagree. Acodei maps each Stripe event to the QuickBooks record that matches what actually happened — credit memos for credit notes, refund receipts for refunds — and validates the totals rather than trusting them.

Start a free trial and watch a credit note land in QuickBooks correctly, or talk to us if your billing setup has edges worth discussing first.

Share

Automate your Stripe to QuickBooks sync

Save hours every month. Acodei automatically syncs your Stripe transactions, invoices, and payouts to QuickBooks Online.

Get more operational finance guides like this one

We will only send high-value product and finance content.