Stripe Reserves and Holds in QuickBooks Online
Stripe reserves are not fees and not losses — they are your money, held. Here are the four kinds of hold, how to tell them apart, and how each posts in...
Your Stripe dashboard says you processed $48,200 this month. Your bank received $44,900. Nothing extra was refunded, no disputes landed, and the fee total looks about right. The missing $3,300 is sitting in a reserve.
Reserves are the most misread line in a Stripe balance report. They are not fees. They are not losses. They are not revenue you failed to earn. They are your own money, parked on Stripe's side of the fence, and they come back. The accounting problem is that they come back later — frequently in a different month than the one they left, which is exactly how a reserve turns a clean month into a mysterious one.
Worse, "reserve" is four different things in Stripe, each with its own balance transaction type, and each one behaves differently in your books. Book them as a single lump and your Stripe clearing account will never tie out.
Here is how to tell them apart, and how each one posts in QuickBooks Online.
Sync Stripe to QuickBooks with Acodei → — reserve holds and releases map once and post themselves after that.
Reserves are a balance movement, not a transaction
Start with the mental model, because it explains everything downstream.
Every dollar that moves in or out of your Stripe balance creates a balance transaction — a row in Stripe's ledger with a type field. A card sale creates one with type charge. Stripe's cut creates one with type stripe_fee. A payout to your bank creates one with type payout.
A reserve is no different. When Stripe holds funds, it writes a balance transaction that debits your available balance. When it releases them, it writes another that credits it back. No customer is involved. No invoice changes. Nothing about your revenue is different. The money simply moved from "available" to "held" and, eventually, back.
That is why reserves never show up in Stripe's Payments tab and why looking for them there sends people down a rabbit hole. They live in the balance report — Stripe documents the full list of balance transaction types here — and the type field is the only reliable way to identify which hold you are looking at.
The four holds, and how to tell them apart
1. Risk reserve — reserved_funds
This is the classic one. Stripe's risk team decides your account carries more forward-delivery exposure than it wants uncovered — long fulfilment windows, a spike in volume, a new product line, a chargeback rate creeping up — and holds back a slice of your balance.
It usually arrives as a percentage of volume held for a fixed window (a rolling reserve), or as a one-off block. You will get an email from Stripe, and the terms appear in your dashboard.
Stripe writes one reserved_funds balance transaction when the hold goes on and a matching one when it comes off. The pair nets to exactly zero. There is no fee attached — a reserve costs you timing, not money.
2. Connect negative-balance reserve — reserve_transaction
This one only affects Stripe Connect platforms, and it catches platform operators by surprise because it is triggered by someone else's account.
When a connected account's balance goes negative — a seller takes refunds or chargebacks against a balance that has already been paid out — Stripe temporarily reserves funds from the platform's balance to cover the shortfall. Your available balance drops because your seller is underwater, not because of anything you did.
Type is reserve_transaction. When the connected account's balance recovers, Stripe releases a corresponding amount back to you with another reserve_transaction.
If the connected account stays negative for 180 days, the temporary hold becomes permanent: Stripe sweeps funds from the platform to zero out the debt, and writes a connect_collection_transfer. That one is not a reserve at all — it is a real loss, and it is the moment a timing problem turns into a bad debt. More on booking it below.
3. Minimum balance requirement — payout_minimum_balance_hold
Rarer. Stripe requires a floor to remain in the balance and holds back enough at payout time to maintain it. Functionally it behaves like a risk reserve: a hold transaction, a release transaction, net zero.
4. Not a reserve at all — pending funds
The most common false alarm. Card payments are not immediately available; they sit in the pending balance until their available_on date, typically two business days after the charge, longer on a new account.
There is no reserve balance transaction here and nothing is being held back. The money is simply in transit. If your "missing" funds appear in Stripe's Pending balance rather than as a reserve line in the balance report, stop looking for a reserve — you have a settlement-timing gap, not a hold.
Two more things that look like reserves and are not. A dispute deduction: Stripe records it as an adjustment, and rather than posting a standalone entry, Acodei reverses or adjusts the original transaction — so the sale comes undone instead of funds being held. And an instant payout recoup: Stripe fronts you the money, records the instant payout, and takes it back out of your next regular payout as advance_funding.
How reserves post in QuickBooks Online
Acodei syncs the set of balance transaction types listed in its allowed-types configuration, and both reserved_funds and reserve_transaction are on that list. When holds or releases appear among a payout's balance transactions or on a daily summary, Acodei aggregates them and posts them as line items using the product you have mapped for that type. payout_minimum_balance_hold and its release are treated the same way.
The mapping lives under Account Mapping ▸ Balance Transaction Mapping in Acodei. The section is hidden until you toggle Customize, which is the single most common reason someone reports they "can't find where to map reserves." Acodei's documentation on uncommon transaction mapping walks through the screen.
You only do this once per type. If a type shows up unmapped, Acodei prompts you to map it rather than silently guessing an account.
Which account should reserves point to?
A reserve is not an expense and it is not revenue. It is your cash, held by a third party — a receivable in substance.
The cleanest treatment is a dedicated other-current-asset account, something like Stripe Reserve — Held. The hold posts a movement out of your Stripe clearing account and into the reserve account; the release moves it back. Your balance sheet then shows, at any moment, exactly how much of your money Stripe is sitting on. That number is genuinely useful — it is a real asset and it belongs in your cash-position view.
The alternative most people default to is running holds and releases straight through the clearing account. It works, in that everything nets to zero eventually, but it gives you nothing to look at in the meantime and it makes the clearing account harder to reconcile while a hold is open.
The month-end problem nobody warns you about
Here is the failure mode that generates the support tickets.
A reserve hold and its release net to zero. Over a long enough window that is always true. But a hold placed on 28 September and released on 12 October does not net to zero in September. September absorbs the hold. October gets the release.
If you have mapped reserves to an expense account — which is the intuitive-looking wrong answer — September shows a phantom expense and October shows phantom income. Your P&L now has a swing that corresponds to nothing that happened in your business. An accountant reviewing the month will spend an hour looking for it.
Two things fix this:
-
Map reserves to a balance sheet account, not a P&L account. A hold that lands in an other-current-asset account cannot distort a single month's profit, because it never touches the P&L in the first place. This is the entire argument for the dedicated reserve account above.
-
Check the reserve balance before you close. Look at what is outstanding on the last day of the period. If Stripe is holding $3,300 on 30 September, that $3,300 belongs on the balance sheet as an asset on 30 September, and your books should say so.
The same reasoning applies to any hold that straddles a period boundary. It is a timing artifact, not a loss — but only if you have booked it somewhere that can represent "timing."
Reconciling the Stripe clearing account with a reserve open
Reconciling Stripe to QuickBooks is normally an exercise in proving that gross sales, minus refunds, minus fees, equals what hit the bank. An open reserve breaks that equation, and it should.
When there is a hold outstanding, your clearing account balance and your Stripe available balance will differ by the amount held. That is not an error. Add the reserve to the reconciliation as its own reconciling item:
Stripe available balance
+ funds held in reserve
+ pending (not yet available)
= what your books should show as owed to you by Stripe
If those two sides agree, your sync is correct even though the headline numbers do not match. If they still disagree after accounting for reserves and pending, you have a genuine gap — and our Stripe payout reconciliation guide walks through finding it.
One detail worth knowing: Acodei records the day's activity as a daily summary that groups balance transactions by date and type, one line per type, deposited into the holding account. Uncommon types like reserves become their own line on that summary rather than being buried in a net figure. That is what makes the reconciliation above possible — you can see the reserve movement as a discrete line rather than inferring it from a total that came out short. Every summary is validated against Stripe's own balance history, and a scheduled sweep catches any day that failed or went missing.
Booking a connect_collection_transfer
If you are a Connect platform and a connected account stays negative for 180 days, the temporary reserve becomes a permanent transfer out of your balance. This is the one case in this article where money genuinely leaves and does not come back.
Acodei imports it as an outflow and posts it to the product configured under Balance Transaction Mapping. Because it is a real loss rather than a timing difference, platforms often reclassify it to Bad Debt Expense — and the cleaner approach is to map it there directly, so it lands in the right account the first time instead of being journaled across every quarter.
Track these. A rising connect_collection_transfer total is a signal about your platform's underwriting, and it is easy to miss when it is grouped with unrelated balance movements. If you run a marketplace, our guide to Stripe Connect accounting in QuickBooks covers the wider set of platform-specific balance types.
Frequently asked questions
Why is my Stripe payout smaller than my sales, with no refunds?
Check the balance report for the payout in question and look at the transaction types included. A reserve hold (reserved_funds or reserve_transaction) reduces the payout without touching your sales figures. If there is no reserve line, check whether the shortfall matches funds still in the Pending balance, or an advance_funding line recouping an earlier instant payout.
Do reserves cost me money?
No. A reserve has no fee. It costs you access to your cash for the length of the hold, which is a real cost to your business, but it does not reduce what you ultimately receive. Holds and releases net to zero.
Should reserves appear on my profit and loss statement?
No. A reserve is your own money held by a third party — a balance sheet item. Putting it on the P&L creates a phantom expense in the month of the hold and phantom income in the month of the release. Map it to an other-current-asset account instead.
How long does a Stripe reserve last?
It depends on why it was imposed. A rolling reserve typically releases on a fixed schedule, such as each held amount coming free after 60 or 90 days. A Connect negative-balance reserve releases when the connected account's balance recovers, and converts to a permanent transfer at 180 days if it does not. Stripe states the terms when the reserve is applied.
Can I get a reserve lifted?
That is between you and Stripe's risk team, not something an accounting integration affects. Reserves usually come off as the underlying risk profile improves — a longer track record, a lower dispute rate, shorter delivery windows. What you can control is that your books represent the held funds accurately while the reserve is in place.
Do I need to do anything each time a reserve appears?
No. Map the reserve types once under Account Mapping ▸ Balance Transaction Mapping and every subsequent hold and release posts to that account automatically.
The short version
A reserve is a timing problem wearing an accounting problem's clothes. The money is yours and it is coming back. What determines whether that is a non-event or a month-end investigation is a single decision: whether the hold lands in a balance sheet account that can hold it, or a P&L account that distorts because of it.
Identify which of the four holds you actually have, map each type once, and reserves stop being the reason your books do not tie out.
Ready to stop hand-booking Stripe balance movements? See how Acodei syncs Stripe to QuickBooks Online →
Automate your Stripe to QuickBooks sync
Save hours every month. Acodei automatically syncs your Stripe transactions, invoices, and payouts to QuickBooks Online.
How Acodei handles this in your stack
Stripe to QuickBooks Integration
Automatically sync Stripe payments, fees, refunds, and payouts to QuickBooks Online. Real-time, accurate, and audit-ready — no manual exports, no spreadsheets.
Advanced Product Mapping
Map Stripe products to QuickBooks with rule-based logic on product ID, price ID, metadata, and account. Set rule priority and extend mapping to refunds and fees.
Automated Invoice Sync
Bring Stripe invoices into QuickBooks and auto-apply payments and credit memos, with numbering, invoice matching, and quantity tracking to cut double-entry.
Multi-Currency Mastery
Sync Stripe transactions across currencies with automatic exchange rate handling, currency-specific customer records, and invoice-level multicurrency.
Class Mapping
Map Stripe products to QuickBooks classes for scalable categorization and multi-entity reporting, enabling precise insights without manual effort.
Historical Data Import
Backfill historical Stripe data into QuickBooks by month range. Preview volume and cost before syncing so reporting starts from a complete baseline.
How to Connect Stripe to QuickBooks Online
Connect Stripe to QuickBooks Online in minutes. Acodei links both accounts with secure OAuth and syncs payments, fees, refunds, and payouts automatically.
Reconcile Stripe Payments in QuickBooks
Reconcile Stripe in QuickBooks Online automatically. Acodei splits out fees, matches payouts to deposits, and keeps every charge audit-ready.
Get more operational finance guides like this one
We will only send high-value product and finance content.