A Stripe Dispute on a Foreign-Currency Charge in QuickBooks

Stripe converts a dispute on a currency-converted charge at the dispute-date rate, so the chargeback rarely matches the sale. Here is how to split lost...

Acodei Content Team · 9/26/2026 · 13 min read

On May 2 a customer in Dublin pays you €800 by card. Your Stripe account settles in US dollars, so Stripe converts the payment at 1.08 and $864.00 lands in your balance. On July 10 the customer's bank files a chargeback. The customer is disputing €800, the amount they paid, but by July the euro trades at 1.12. Stripe pulls $896.00 out of your balance, plus a $15.00 dispute fee. Before anyone has decided who is right, this dispute has taken $32.00 more than the sale ever brought in.

That $32 is the part a Stripe dispute on a converted charge adds to ordinary chargeback accounting, and it's the part that breaks QuickBooks reconciliations. The usual entry assumes the chargeback mirrors the sale to the cent. On a currency-converted charge it can't, because Stripe converts the dispute at a different rate than the payment. This post covers what Stripe records at each stage, how to split the withdrawal between lost revenue and an exchange loss, what to do when you win, and how to check it all at month end. If you'd rather have Stripe's sales, fees and dispute activity posted for you and spend your time on the one line that needs judgment, start a free trial.

Why a dispute on a converted charge costs a different amount than the sale

Stripe states the rule in its documentation on conversions for disputes and refunds: "If a currency-converted payment is disputed or refunded, the amount you received is converted to the presentment currency at the current exchange rate." It goes on: "the amount deducted from your merchant balance depends on the current rate and this amount might be more or less than the original payment."

Two terms carry the whole idea:

  • Presentment currency is the currency the customer paid in. Here, EUR.
  • Settlement currency is the currency of the balance the money landed in. Here, USD.

The cardholder disputes a euro amount, and the card network deals in euros. Your balance is in dollars. So the dispute has to be converted, and Stripe uses the rate on the day of the dispute, not the rate on the day of the sale.

Stripe's guide to how disputes work lists currency conversion first among the reasons a disputed amount differs from the original charge. Its example: a business in Ireland sells something for 100 EUR to a customer in the United States, whose card is charged 113.74 USD. In April the customer disputes the 113.74 USD, "but the exchange rate has changed, so the 113.74 USD chargeback is now 107.86 EUR to the business instead of the original 100 EUR." That business lost 7.86 EUR to the rate before the dispute was even decided.

The difference cuts both ways. If the customer's currency had weakened against yours, the dispute would have cost you less than the sale brought in. Either way, the gap is not a fee and not revenue. It's the price of carrying a foreign-currency exposure while your books run in dollars.

What Stripe records when a dispute opens and when it closes

A dispute touches your balance at most twice. The Dispute object carries a balance_transactions list of "zero, one, or two balance transactions that show funds withdrawn and reinstated to your Stripe account as a result of this dispute." Both are type=adjustment in the API, and Stripe's reporting categories separate adjustments into categories that include disputes and dispute reversals, which is how the rows appear in the balance report.

Each of those balance transactions has an exchange_rate. Per Stripe's API reference, "If money converts from currency A to currency B, then the amount in currency A, multiplied by the exchange_rate, equals the amount in currency B." That field is your evidence for the split below.

Here is the Dublin example as it appears in Stripe, assuming you contest and win:

DateBalance rowCustomer sideYour balance (USD)Exchange rate
May 2charge€800.00 paid+864.001.08
Jul 10dispute withdrawal€800.00 disputed-896.001.12
Sep 20dispute reversal (won)€800.00 returned+872.001.09

Around those rows sit the fees. The charge carried a processing fee of $46.96. Opening the dispute cost a $15.00 dispute fee. Countering it cost another $15.00, which came back when you won.

The processing fee is illustrative. Under Stripe's US standard pricing, a card payment costs 2.9% + 30¢, plus 1.5% for an international card and 1% when currency conversion is required: 5.4% plus 30¢ on $864.00 is $46.96. The $15 dispute fee and the $15 counter fee are the current US amounts from Stripe's dispute fee update. The dispute received fee is not returned if you win. The dispute countered fee "will be returned to you if you win."

A caution on the returned amount. Stripe documents the rate rule for the withdrawal. It does not publish an equivalent sentence for the reinstatement when you win. The $872.00 and 1.09 in the table are an example, not a formula. Read the reinstatement's actual amount and exchange_rate off its balance transaction instead of computing it, and expect it to differ from both the sale and the withdrawal.

Splitting the withdrawal: lost revenue versus exchange loss

Put the July 10 withdrawal in dollars and it's two separate things:

  1. $864.00 of reversed revenue. That is what the €800 sale was worth when you booked it. If the dispute is lost, this is the revenue you gave back.
  2. $32.00 of exchange loss. The euro strengthened from 1.08 to 1.12 while the obligation sat on your books. That movement has nothing to do with the customer's complaint.

The standard chargeback entry, the one in our chargeback accounting guide, debits a chargebacks expense and credits Stripe Clearing for the full withdrawal. On a converted charge, split it:

AccountDebitCredit
Stripe Chargebacks864.00
Foreign exchange gain/loss32.00
Stripe Clearing896.00

Book the $15.00 dispute fee on its own line against your dispute fees account, and the $15.00 counter fee on a separate line if you contest. Put the dispute ID (du_...) and both exchange rates in the memo.

Why bother with the split, when the full $896.00 as chargeback expense would reconcile the clearing account just as well? Three reasons:

  • Your chargeback line becomes the revenue you actually lost. A dispute rate or loss rate built from that account compares like with like.
  • A win reverses cleanly. The chargeback line clears to exactly zero, and any rate movement lands where it belongs.
  • Your exchange result is complete. If you already book exchange differences on refunds, as in our refund exchange-rate walkthrough, disputes belong in the same account. Otherwise the refunds show an FX loss and the disputes hide theirs inside chargebacks.

Holding a contested dispute as an asset instead. Some accountants don't expense a dispute they're contesting with strong evidence. They park the principal in a current asset account (something like "Funds held in dispute") until the issuer decides. The split still applies: the $864.00 goes to the holding asset, the $32.00 goes to exchange loss, and on resolution the asset either reverses to Clearing or moves to chargeback expense. Pick one method and use it for every dispute.

The reversal entry when you win the dispute

In the example, the issuer rules for you on September 20. Stripe returns €800 worth of dollars to your balance, $872.00 at 1.09, and returns the $15.00 counter fee.

AccountDebitCredit
Stripe Clearing872.00
Stripe Chargebacks864.00
Foreign exchange gain/loss8.00

Plus the counter fee reversal:

AccountDebitCredit
Stripe Clearing15.00
Stripe dispute fees, countered15.00

The chargeback line nets to zero, which is right: you kept the sale. The exchange account nets to a $24.00 loss: $32.00 lost on the way out, $8.00 recovered on the way back. The base $15.00 dispute fee stays on the books permanently.

Check it against cash. You received $817.04 net on May 2, lost $896.00 plus $30.00 in fees in July, and got back $872.00 plus $15.00 in September. That leaves $778.04 in your Stripe balance from this customer. On the books: $864.00 of revenue, less the $46.96 processing fee, the $15.00 base dispute fee and the $24.00 exchange loss, is $778.04. It ties.

If the euro had weakened instead, say to 1.04 at the dispute, the withdrawal would have been $832.00 and the first entry would carry a $32.00 exchange gain as a credit. The mechanics don't change. Only the direction does.

The entry when you lose the dispute

If the issuer rules for the cardholder, nothing comes back. The July entries stand. The final position is:

  • revenue from the sale: $864.00, fully offset by $864.00 in Stripe Chargebacks
  • the processing fee of $46.96, which Stripe keeps
  • the $15.00 dispute fee and the $15.00 counter fee, both kept
  • the $32.00 exchange loss

The total cost is $108.96 against a sale that no longer exists. Cash agrees: $817.04 came in and $926.00 went out. The only thing the split changes is where the $32.00 shows up. Without it, your chargeback expense reads $896.00 for an €800 sale, and nobody reading the P&L can tell that $32.00 of it was the currency market rather than the customer.

Partial disputes follow the same arithmetic. If the cardholder disputes €300 of the €800, the reversed revenue is €300 at the sale rate (1.08, so $324.00), and the exchange difference is €300 times the change in rate.

When there is no exchange difference in Stripe

The gap only exists when Stripe converts. Three setups change the picture.

You hold a euro balance at Stripe. With multi-currency settlement, a euro charge settles into a euro balance and neither leg is converted. The dispute takes exactly €800 from the euro balance. There's no Stripe-side exchange difference at all. The exposure moves into QuickBooks instead, where a foreign-currency clearing account is revalued at period end. Our guide to the QuickBooks home currency adjustment covers that side.

The charge was in your own currency. A customer abroad who is charged in dollars pays their bank's conversion, not yours. Your dispute is $864.00 out for a $864.00 sale, and the ordinary chargeback entry works unchanged.

Your QuickBooks file runs Multicurrency and the sale was booked in euros. QuickBooks knows both the euro amount and the rate on the sale. The dispute still reaches your dollar balance at the July rate, so the $32.00 still exists. It surfaces as the difference between the sale's home-currency value and the withdrawal's home-currency value, and the same split applies. The Exchange Gain or Loss account that QuickBooks creates in a Multicurrency file is the natural home for it. In a single-currency file, create an ordinary expense account such as "Foreign exchange gain/loss".

Month-end checks for disputes on converted charges

Disputes on converted charges stay open for weeks, and a won dispute often reverses in a later month than the withdrawal. A short routine keeps them from turning into an unexplained clearing variance:

  1. Pull the month's dispute rows from Stripe's balance report. Filter for disputes and dispute reversals with a populated exchange rate. Those are the converted ones.
  2. For each withdrawal, compare its settlement amount to the original charge's settlement amount. The difference is exchange gain or loss. Book it, or check that it's booked.
  3. For each reversal (a won dispute), compare the returned amount to the original charge. The difference is the second leg of the exchange result.
  4. Check open disputes against your chargeback or held-funds account. Anything still open should appear there at the sale-date value, with the exchange part already split out.
  5. Reconcile Stripe Clearing to Stripe's ending balance. If the gap is roughly the sum of unsplit dispute differences, you know where to look.

You don't need a journal entry per dispute if volume is high. One monthly entry for the total exchange difference, supported by the Stripe export, is enough. The month-end close checklist puts this step in context with the rest of the close. For the dispute lifecycle itself (evidence, timelines, outcomes), see the Stripe dispute glossary entry.

Where Acodei fits

The routine above is easier when dispute activity already reaches QuickBooks through a mapping you set once, instead of a journal entry someone has to remember. That part is what Acodei automates.

  • No per-dispute journal entries. Disputes are one of the uncommon balance transaction types Acodei handles through Balance Transaction Mapping on the Account Mapping page. You map disputes to a product once, and Acodei processes them in the daily balance summary or on the payout deposit, depending on your settings.
  • A won dispute is not re-posted as a new payment. When Stripe returns the funds, Acodei doesn't recreate the customer's original payment. If you want the customer record to show the sale as paid again, record that yourself.
  • Multicurrency, enabled by the Acodei team. Multicurrency Support and Invoice Multicurrency are turned on by the Acodei team on request, not by a self-serve toggle. QuickBooks Multicurrency has to be on before any non-home-currency transaction can sync.

Two limits to know. Zero-decimal currencies such as JPY are not supported today, so handle yen disputes separately. And the exchange split is a presentation choice for you or your accountant: whether the difference stays inside the dispute line or moves to an exchange gain or loss account is your call. The reclass above is how you make it.

Disputes stay open for weeks and often close in a different month than they opened, which is exactly when an unexplained $32 gets forgotten. To get your Stripe activity into QuickBooks so the exchange line is the only thing left to decide, start a free trial.

Frequently asked questions

Why did Stripe take more for a dispute than the customer originally paid?

Because the charge was converted into your settlement currency, and Stripe converts the dispute at the exchange rate on the dispute date, not the payment date. The cardholder disputes the amount they paid in their own currency. If that currency strengthened against yours in between, the withdrawal costs you more in your currency than the sale brought in.

Is the extra amount on a converted chargeback a Stripe fee?

No. The dispute fee is a separate, fixed line ($15 in the US). The extra amount comes from the exchange rate moving between the payment and the dispute, so it's a foreign exchange loss, or a gain if the rate moved the other way. Keep it out of your fee accounts so they keep matching Stripe's fee totals.

If I win the dispute, do I get back exactly what Stripe took?

Not necessarily. Stripe returns the disputed funds, but its documentation doesn't state which exchange rate applies to the returned amount on a converted charge. Read the reinstatement's amount and exchange rate from its balance transaction. The difference between that and the original sale's value is the second leg of your exchange result.

Can I refund the customer instead while the dispute is open?

No. Stripe's documentation says you can't issue a refund outside the dispute process while the dispute is open. Once a dispute exists, you either accept it or counter it with evidence. A refund issued before the dispute is filed follows the refund rules instead, which convert at the refund-date rate.

Where should the exchange difference on a dispute go in QuickBooks Online?

In a Multicurrency file, use the Exchange Gain or Loss account QuickBooks already created. In a single-currency file, create an expense account such as "Foreign exchange gain/loss". Post the difference there with a journal entry, per dispute or as one monthly total supported by a Stripe balance report export.

Share

Automate your Stripe to QuickBooks sync

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

14-day free trial · card required · cancel anytime

How Acodei handles this in your stack

Stripe QuickBooks Integration

See how Acodei syncs Stripe payments, fees, refunds, invoices, and payouts into QuickBooks Online automatically.

Or go straight to a capability

Get more operational finance guides like this one

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