Glossary
Stripe Charge
A Stripe charge is the record of a single attempt to collect a specific amount from a specific payment method, which may have succeeded, may still be settling, or may have failed.
Also called: charge, charge object, ch_, stripe payment record
Definition
The charge is the most load-bearing object in Stripe-to-QuickBooks accounting, and the most commonly misread. People treat a charge as proof that money arrived. It is not. It is proof that a collection was attempted.
Stripe says so in the first field of the object. `amount` is documented as the "Amount intended to be collected by this payment." Intended. The number on a charge is a target, and the rest of the object exists to tell you how close reality came to it.
The `status` field makes the same point structurally. Stripe documents its values as exactly three: "The status of the payment is either `succeeded`, `pending`, or `failed`." Two of those three describe money that has not landed in your balance. So a charge, on its own, is not evidence of revenue. A `succeeded` charge with a [balance transaction](/glossary/stripe-balance-transaction) attached is.
That distinction is the whole entry, and it is what separates the charge from its neighbours in the chain. A [PaymentIntent](/glossary/stripe-payment-intent) is the collection attempt as a lifecycle, from creation through confirmation. A charge is what that lifecycle produces at the moment it actually tries. A balance transaction is what appears afterwards if it worked.
Key points
- +Records one attempt to collect an amount. Its id begins `ch_`.
- +`amount` is documented as the amount "intended to be collected", not the amount collected.
- +`status` is one of `succeeded`, `pending`, or `failed`. Only one of those means the money is yours.
- +`paid` is true if the charge succeeded "or was successfully authorized for later capture", so it does not prove capture.
- +`refunded` stays false on a partial refund. Use `amount_refunded` to see partial activity.
- +`balance_transaction` is the link to the money record, and the field that makes a charge reconcilable.
- +Acodei writes QuickBooks records from `charge.succeeded` and `charge.captured` events.
The three fields people misread, and what they actually say
Almost every charge misreading comes from three boolean-looking fields that mean narrower things than they appear to.
**`paid` does not mean captured.** Stripe documents it as "`true` if the charge succeeded, or was successfully authorized for later capture." That second clause is doing a lot of work. On a deposit taken with a manual capture, `paid` is already true while the money is still an [authorization hold](/glossary/stripe-authorization-hold) and nothing has settled. If you filter a Stripe export on `paid` and treat the result as revenue, you will pull in holds that may never be captured.
**`captured` is a state, not a confirmation.** Stripe describes it as: "If the charge was created without capturing, this Boolean represents whether it is still uncaptured or has since been captured." The amount actually taken lives elsewhere, in `amount_captured`, which Stripe documents as the "Amount in the smallest currency unit captured (can be less than the amount attribute on the charge if a partial capture was made)." So on a partial capture, `amount` and `amount_captured` disagree, and `amount_captured` is the one your books care about. [Stripe partial capture in QuickBooks](/blog/stripe-partial-capture-quickbooks) covers that case in full.
**`refunded` is the trap.** Stripe is blunt about it: "Whether the charge has been fully refunded. If the charge is only partially refunded, this attribute will still be false." A charge with half its value returned to the customer reports `refunded: false`. The partial activity is visible only in `amount_refunded`, documented as the "Amount in the smallest currency unit refunded (can be less than the amount attribute on the charge if a partial refund was issued)." Any reconciliation that reads `refunded` as a general question about whether money went back to the customer will silently miss every partial refund you have ever issued.
The balance transaction is what makes a charge reconcilable
A charge tells you what was attempted and what the result was called. It does not tell you what hit your balance. For that there is one field.
Stripe documents `balance_transaction` as the "ID of the balance transaction that describes the impact of this charge on your account balance (not including refunds or disputes)." That parenthetical matters: the charge points at its own effect on the balance and nothing else. Refunds and disputes create their own separate balance transactions rather than editing this one.
This is why the balance transaction rather than the charge is the reconcilable unit. The charge carries the gross intent. The balance transaction carries the fee, the net, and the date the funds become available. When your QuickBooks total and your Stripe payout disagree, the answer is almost always in the balance transactions, not in the charges.
The mirror image is worth knowing too. A failed bank debit gets a `failure_balance_transaction`, documented as the "ID of the balance transaction that describes the reversal of the balance on your account due to payment failure." A reversal can only exist because something entered the balance first, which is precisely why a failed ACH payment leaves a trail in your books and a declined card leaves none.
When a charge fails, and why nothing reaches your books
A failed charge is still a charge. It has an id, an amount, a customer and a timestamp, and it sits in your Dashboard looking very much like a sale. What it does not have is any effect on your balance.
Three fields explain it. `failure_code` is the "Error code explaining reason for charge failure if available". `failure_message` is the human sentence version, documented as the "Message to user further explaining reason for charge failure if available". And `outcome` carries the assessment, documented as "Details about whether the payment was accepted, and why."
Because a failed charge produces no balance transaction, it produces no accounting record either. That is correct behavior rather than a gap in your sync, though it does not feel that way the first time you notice Stripe showing activity your books do not. [Why a declined Stripe payment never reaches QuickBooks](/blog/stripe-declined-payment-quickbooks) works through the four different things people call a failed payment and how each one books.
One more field belongs here. `disputed` is documented simply as "Whether the charge has been disputed", and a dispute is its own machinery with its own balance transactions rather than an edit to the original charge.
What the charge remembers about how it was paid
A charge carries a snapshot of the instrument used, not just a pointer to it. Stripe documents `payment_method_details` as "Details about the payment method at the time of the transaction."
The phrase "at the time of the transaction" is the useful part. Detaching a saved card or replacing an expired one does not rewrite what an existing charge records, because the brand, the last four and the funding type were copied onto the charge on the day of the sale. When you reconcile something from four months ago, that detail is trustworthy on its own terms. The [Stripe PaymentMethod](/glossary/stripe-payment-method) entry covers the instrument itself and why its type predicts settlement timing and fee shape.
Which QuickBooks record a charge becomes
Acodei keys on the charge, so this is the object the whole sync turns on. `charge.succeeded` and `charge.captured` are the events that route to a job and write a record.
Which record you get is decided by two separate things, and they are worth keeping apart.
The first is an account setting. By default a charge becomes an itemized sales receipt deposited into the resolved holding account for that Stripe account and currency. On a connection with Sales as Payment enabled, the same charge is written instead as a standalone payment against the customer, not linked to an invoice.
The second is a property of the charge. When the charge belongs to a Stripe invoice that Acodei has already synced, it books as a payment receipt applied to that QuickBooks invoice. That is a branch inside the sales-receipt path rather than a different setting.
The Stripe fee follows your fee configuration. By default it posts as a negative line on the receipt using your mapped Stripe fee product, netting the record down to what actually entered your balance. With fee-as-expense configured, the receipt stays gross and the fee posts as a separate purchase. A refund takes its own path and produces a refund receipt drawing from the same holding account.
One exception matters more than it looks. All of the above describes real-time accounts. If your account runs on daily summary, there is no per-charge record at all: the day’s charges are aggregated into a single QuickBooks entry, so an individual charge you are hunting for was never going to exist as its own row. [Daily summary versus real-time sync](/blog/stripe-daily-summary-vs-real-time-quickbooks) covers which mode suits which business.
Want to see this on your own Stripe data?
Start a free trialFrequently asked questions
What is a Stripe charge?
A charge is the record of one attempt to collect a specific amount from a specific payment method. Its id begins `ch_`. Stripe documents its `amount` as the amount "intended to be collected", and its `status` as either `succeeded`, `pending`, or `failed`, so a charge on its own describes an attempt rather than proving that money arrived.
What is the difference between a charge and a balance transaction?
The charge records the attempt and its gross amount. The balance transaction records the effect on your Stripe balance, including the fee, the net, and when the funds become available. The charge points at it through `balance_transaction`, documented as the balance transaction "that describes the impact of this charge on your account balance". Reconcile against the balance transaction, because that is where the money is.
Does `paid: true` mean I have the money?
Not necessarily. Stripe documents `paid` as true "if the charge succeeded, or was successfully authorized for later capture". On a manual-capture charge, `paid` can be true while the amount is still only an authorization hold. Check `captured` and `amount_captured` before treating the charge as settled revenue.
Why does `refunded` say false when I issued a refund?
Because `refunded` only reports full refunds. Stripe documents the field as "Whether the charge has been fully refunded. If the charge is only partially refunded, this attribute will still be false." Partial refunds show up in `amount_refunded` instead. Any report built on the `refunded` boolean will miss partial refunds entirely.
What QuickBooks record does a Stripe charge become?
On a real-time connection it becomes an itemized sales receipt deposited into your resolved holding account, or a standalone payment if your connection has Sales as Payment enabled. If the charge belongs to a Stripe invoice Acodei has already synced, it books as a payment receipt against that invoice instead. On daily summary accounts there is no per-charge record at all.
Does a failed charge create anything in QuickBooks?
No. A failed charge produces no balance transaction, so there is nothing to record. The charge still exists in Stripe with a `failure_code` and a `failure_message`, which is why Stripe can show activity that your books correctly do not.
What customers say about running Stripe through Acodei

“If you're testing out all the different Stripe/QuickBooks integration apps right now, let me save you some time. This one is the best one by far.”
“Works well and is really helpful for massive transactions. The support is really fast and helpful. 100% recommended.”
Related reading
More glossary terms
- Undeposited Funds
- Stripe Balance Transaction
- Available vs Pending Balance
- Stripe Dispute
- Stripe Fee
- Stripe Balance Adjustment
- QuickBooks Credit Memo
- Stripe Tax
- QuickBooks Tax Code
- Stripe Reserve
- Stripe Tax Rate
- Stripe Fee Credit
- Stripe Credit Note
- QuickBooks Product/Service Item
- Stripe Payout
- QuickBooks Sales Receipt
- QuickBooks Bank Deposit
- QuickBooks Transfer
- Stripe Authorization Hold
- QuickBooks Refund Receipt
- QuickBooks Payment
- QuickBooks Expense
- QuickBooks Journal Entry
- Stripe Financial Account
- Holding Account
- Accounts Receivable
- Bank Feed
- Deferred Revenue
- Stripe PaymentIntent
- Stripe Checkout Session
- Stripe SetupIntent
- Stripe PaymentMethod
Ready to try Acodei?
Connect Stripe to QuickBooks Online in minutes and let the fees, refunds, and payouts land where your accountant expects them.