Daily Summary vs Real-Time Stripe Sync in QuickBooks
Acodei can write every Stripe charge into QuickBooks Online, or one aggregated Sales Receipt per day. Here is exactly what each sync mode creates, what...
If you run 4,000 Stripe charges a month, you have a choice to make before a single record lands in QuickBooks: do you want 4,000 sales receipts in your books, or roughly 30?
That is the whole substance of the daily summary vs. real-time decision. It is not a performance setting or a sync frequency preference, and it is not something you can tune later without consequences. It changes which QuickBooks records exist at all — their type, their count, their dates, and what your accountant can drill into six months from now.
Acodei supports both modes. This post is the plain-English version of how each one actually writes to QuickBooks Online: what gets created, what stays the same either way, and the parts that surprise people.
<div class="cta-block">Syncing Stripe to QuickBooks the hard way? Acodei posts every charge, refund, fee and payout into QuickBooks Online automatically — in whichever shape your books need. Start a free trial.
</div>The one setting behind everything
Internally the mode is a single field on your account, payout_sync_method: 0 means real-time, 1 means daily summary. Acodei's own codebase calls them RTS and DS.
The distinction is not "how fast." It is how many QuickBooks records one day of Stripe activity turns into:
- Real-time — each charge and each refund becomes its own QuickBooks record, as it happens.
- Daily summary — no per-charge records at all. One aggregated Sales Receipt per day summarizes everything that moved through your Stripe balance.
Everything below follows from that.
What real-time actually writes
In real-time mode, Acodei turns each Stripe event into a specific QuickBooks record. Which record depends on whether the charge belongs to a Stripe invoice:
| Stripe activity | QuickBooks record |
|---|---|
charge.succeeded, no invoice | Sales Receipt |
charge.succeeded, tied to a Stripe invoice you already sync | Payment, applied to that invoice |
charge.refunded | Refund Receipt |
That second row matters more than it looks. If you use Stripe Billing and sync invoices, Acodei will not create a sales receipt that duplicates the invoice — it records a payment against the existing QuickBooks invoice instead. There is even a mid-job handoff: if the sales-receipt path discovers the related invoice does exist in QuickBooks after all, it stops and hands off to the payment path rather than writing a duplicate revenue record.
A few details worth knowing about the records themselves:
- Line items come from your product mapping. Each Stripe line resolves to a mapped QuickBooks product; anything unmapped falls back to your default product.
- The Stripe fee, by default, is recorded as a negative line on the receipt using your mapped Stripe-fee product. That nets the receipt down to what actually entered your Stripe balance. If you have fees configured as expenses instead, the fee posts as a separate Purchase and the receipt stays gross.
- The audit trail is written into the record. The PrivateNote carries the original charge amount and the Stripe fee, so you can reconstruct the math from inside QuickBooks without opening Stripe.
- Refunds are checked against the original charge to determine whether they are full or partial, because the two build different line and tax structures.
If you have duplicate protection enabled, Acodei sets the QuickBooks DocNumber to its own internal transaction id. That is what stops a re-sent Stripe webhook from producing a second copy of the same sale. Worth being precise about what that does and doesn't cover: it prevents Acodei from writing the same transaction twice. It is not a check against entries you or your bookkeeper typed into QuickBooks by hand.
What daily summary actually writes
In daily summary mode, Acodei creates one Sales Receipt per day, per currency, deposited into your holding account with that day as the transaction date.
The receipt is not a single lump sum. It is built by taking every balance transaction for the day, grouping them by date and type, and turning each group into its own line item:
- Sales groups use your default and mapped products.
- Fee groups use your mapped Stripe-fee product.
- Uncommon types — reserves, advances, financing, Climate contributions, Connect transfers — use whatever you have configured under Balance Transaction Mapping.
Tax codes are applied per line rather than to the receipt as a whole, so fee lines get your fee tax code (or the account default if you haven't set one).
So a single day's receipt might carry gross sales, refunds, Stripe fees and a reserve hold as separate lines, together netting to the amount that actually moved through your Stripe balance that day. Acodei also persists those line items separately, so the day's composition stays visible in the Data Feed and in an audit rather than only as QuickBooks line text.
The tradeoff is the obvious one. Because daily-summary accounts skip per-charge records entirely, QuickBooks will not hold customer-level sales detail for those charges. If your reporting depends on running sales-by-customer inside QuickBooks, that is the cost.
The part nobody tells you: real-time accounts get summaries too
This trips up almost everyone who assumes "real-time" means "no daily entries ever."
Some Stripe activity has no per-transaction record to attach to. Standalone Stripe service fees, instant-payout fees, adjustments — these exist only in your Stripe balance history, not as a charge you can point at. Real-time accounts therefore still receive daily balance summary entries covering that activity.
If you are on real-time and you see a daily summary entry in QuickBooks, it is not a misconfiguration. It is the only correct place for balance activity that never had a charge behind it.
Pending charges are carved out of the summary
There is one deliberate exception to the aggregation rule, and it exists because of ACH.
When the daily scan hits a pending charge — an ACH payment still settling, for example — Acodei does not bake that unsettled amount into the day's summary. It creates an individual transaction for it and dispatches the real-time job instead. If that payment later fails, the entry is reversed with paired records on the failure date, showing the money entering and exiting the Stripe balance.
The effect is that an amount which may never arrive never gets folded into an aggregate — and reversing a standalone record is far cleaner than unwinding one line out of a summary.
Every summary is checked against Stripe
An aggregated entry is only as good as the arithmetic behind it, so summaries are not trusted on creation.
Acodei re-derives the day's expected totals directly from Stripe balance history — respecting your account's timezone and its sync mode — and compares them against what was actually recorded. A scheduled job then sweeps for days that failed validation or never got written at all.
Timezone handling is the part that matters in practice. "A day" is not a universal boundary, and a summary built on UTC boundaries for an account reporting in Pacific time would misplace every transaction in an eight-hour window at each end. The validation runs on the account's own timezone.
What does not change between the modes
A surprising amount. The sync mode decides record granularity; several things people expect it to control are actually governed elsewhere:
- Your holding account still determines the shape of payouts. On Undeposited Funds, a payout is an itemized Deposit. On a regular asset clearing account, it is a simple Transfer. Both modes still post payouts — in daily summary mode the summary carries the day's composition while the payout still lands as a Transfer or Deposit.
- Product and account mapping works the same way; daily summary just applies it at the group level instead of the line level.
- Balance Transaction Mapping governs uncommon types in both modes.
- Tax configuration applies in both.
If you are choosing a holding account at the same time, that decision deserves its own attention — and it is worth getting right first, because the holding account cannot be freely changed once transactions have synced. It only unlocks when the account has no synced transactions at all. Our guide to the Stripe clearing account in QuickBooks covers the tradeoff.
Where fees land, in each mode
Fee placement is configured separately, under Account Mapping ▸ Fee Management, and it interacts with the sync mode.
During onboarding Acodei creates a product in QuickBooks called "Stripe Fees – Acodei" and maps it to an account you choose. Everything below routes through that product.
Fees are split into two categories, following Stripe's own balance-transaction taxonomy:
- Transactional fees — the
feefield riding along on a charge, payment or refund balance transaction. - Non-transactional fees — standalone fee balance transactions:
stripe_fee,network_cost,application_fee, and adjustments in the fee reporting category, which is where Billing, Radar and Stripe Tax product fees show up.
Each category can be routed independently. You can keep transactional fees netted onto the daily summary lines while booking Stripe's service fees as a separate Purchase, or combine them, or split them the other way. Daily summary users on a non-Undeposited-Funds holding account can also record all fees as Purchases rather than as receipt lines.
Two constraints worth knowing before you commit:
- Fees never appear on an Invoice. Putting them there would break the match between the invoice total and the payment total, so fees go to the summary, the deposit, or an expense.
- Changing your fee method is not retroactive. Historical transactions keep whatever treatment they had when they synced. If you want the old ones to match the new method, they need a resync.
For the mechanics of reconciling those fee amounts once they are in QuickBooks, see our step-by-step guide to reconciling Stripe fees.
How to choose
| If this is true | Lean toward |
|---|---|
| High charge volume, and per-charge records would flood QuickBooks | Daily summary |
| You reconcile at the day level against the bank feed | Daily summary |
| You need sales-by-customer reporting inside QuickBooks | Real-time |
| You sync Stripe invoices and want payments applied to them | Real-time |
| You want each transaction individually traceable in QuickBooks | Real-time |
| Your accountant works from monthly totals, not transaction detail | Daily summary |
The honest summary: daily summary optimizes for clean, compact books and day-level reconciliation. Real-time optimizes for detail and traceability at the cost of record volume. Neither is a downgrade — but they suit genuinely different businesses, and the mismatch is unpleasant to discover after a few thousand transactions have already synced.
If you are unsure, the question to answer first is not about volume. It is: will anyone ever need to look up a single customer's payment history inside QuickBooks? If yes, real-time. If your QuickBooks file exists to produce accurate financial statements and the transaction-level detail lives in Stripe, daily summary will give you cleaner books.
For a broader look at what a full Stripe-to-QuickBooks setup involves, start with our complete guide to syncing Stripe with QuickBooks Online.
Frequently Asked Questions
Does daily summary mode mean my books are less accurate?
No. Every summary is validated against Stripe balance history before it stands, and a scheduled job re-checks for days that failed or went missing. The totals are the same either way — what changes is how much detail sits inside QuickBooks versus inside Stripe.
Can I see which transactions went into a daily summary?
Yes. The line items behind each summary are stored per day and visible in Acodei's Data Feed, which is the ledger of every synced and errored transaction. The composition is not locked inside a single QuickBooks line.
Why am I seeing daily summary entries when I'm on real-time sync?
Because some Stripe activity has no charge behind it. Standalone Stripe fees, instant-payout fees and adjustments exist only in balance history, so real-time accounts receive daily summary entries for them. This is expected behavior, not a configuration error.
How does daily summary handle multiple currencies?
One summary posts per currency per day, with a per-currency customer resolved for each. Multicurrency Support is enabled by the Acodei team rather than being a self-serve toggle — see our multicurrency guide for how the currency handling works end to end.
What happens to an ACH payment that hasn't settled yet?
Pending charges are pulled out of the summary and posted as individual transactions instead. If the payment later fails, the entry is reversed with paired records dated to the failure, so an unsettled amount never sits silently inside an aggregate.
Does the sync mode change how payouts are recorded?
No — that is governed by your holding account, not the sync mode. Undeposited Funds produces an itemized Deposit; a regular asset clearing account produces a Transfer. Both happen in either sync mode. See our Stripe payout reconciliation guide for the full picture.
Where do reserves and other unusual balance types go?
Both modes route them through Balance Transaction Mapping, where each type posts against a product you configure. Our post on Stripe reserves and holds in QuickBooks covers that in detail.
The takeaway
Daily summary and real-time are not fast and slow. They are aggregate and itemized, and the right answer depends on whether anyone will need to find one customer's payment inside QuickBooks.
Get the holding account and the sync mode right at setup and the rest of the integration follows sensibly. The holding account in particular is worth deliberating over, because once transactions have synced against it, changing it is a migration conversation rather than a settings toggle.
Stripe's own balance transaction types reference is the best place to understand what actually flows through your balance — which is, in the end, what both modes are reporting on.
<div class="cta-block">Ready to stop hand-keying Stripe activity into QuickBooks? Acodei syncs charges, refunds, fees, payouts and the uncommon balance-transaction types behind them — in real time or as a daily summary, whichever fits your books. Start a free trial or talk to us about your setup.
</div>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.