Here's a situation that confuses a lot of people the first time they hit it. You're reconciling two systems, everything matches perfectly on the GBP transactions, but the foreign currency ones are all off by a few pence. Nothing's actually wrong — but your reconciliation is flagging dozens of "mismatches" that are really just rounding noise. This guide explains why that happens and how to handle it properly.
Why the same payment shows two different amounts
When a payment is made in a foreign currency — say USD, EUR, or DKK — but your books are kept in GBP, someone has to convert it. The problem is that different systems convert at different moments, using different exchange rates.
Your payment processor might convert at the rate at the instant the payment settled. Your accounting system might use the daily rate, or the rate on the date the invoice was raised, or a month-end rate. None of these is wrong — they're just different reference points for the same underlying amount.
The result: a $100 payment might appear as £78.42 in one system and £78.45 in the other. Both are legitimate. The 3p difference is purely an artefact of when and how each system did the conversion.
A small difference on a foreign currency transaction is usually not an error — it's the unavoidable consequence of two systems converting the same amount at slightly different rates.
The problem with exact matching
If your reconciliation demands that amounts match to the penny, every foreign currency transaction becomes a false positive. You end up with a mismatch list full of 2p and 5p differences that you have to manually confirm are fine — which defeats the entire purpose of automating the reconciliation.
Worse, when genuine errors are buried in a long list of trivial FX differences, they're easy to miss. The noise hides the signal.
The solution: tolerance thresholds
The fix is to allow a small, defined tolerance — a threshold below which a difference is treated as "close enough" and not flagged. But a single threshold isn't quite enough, because the right tolerance depends on the size of the transaction. There are two kinds worth combining:
- An absolute threshold — a fixed amount, like £0.01 or £0.05. Anything smaller is ignored. This handles rounding on small transactions.
- A percentage threshold — like 0.5% of the transaction amount. This scales with the size of the payment, so a large transaction is allowed a proportionally larger drift.
Why you want both
Consider the two extremes. On a £5 payment, a 0.5% tolerance is only 2.5p — too tight to absorb normal FX rounding. On a £50,000 payment, a flat £0.05 tolerance is far too strict, since even a tiny rate difference produces pounds of variation.
The robust approach is to flag a difference as a genuine mismatch only when it exceeds both thresholds at once. A difference sails through if it's within either the absolute floor or the percentage floor — which means small rounding on small amounts passes, proportional drift on large amounts passes, but a real discrepancy of any meaningful size is still caught.
| Amount | Difference | Abs £0.02 | Pct 0.5% | Result |
|---|---|---|---|---|
| £78.42 | £0.03 | over | under (39p) | OK |
| £12.00 | £0.01 | under | under (6p) | OK |
| £5,000.00 | £4.00 | over | under (£25) | OK |
| £120.00 | £8.50 | over | over (60p) | Flag |
Only the last row exceeds both thresholds, so only it gets flagged as a real mismatch.
Choosing your thresholds
Sensible starting points for most finance work:
- Absolute: £0.01 to £0.05, depending on how much rounding your systems introduce.
- Percentage: 0.5% is a common default. Tighten it to 0.1% if your rates are usually close, or loosen it toward 1% if you deal with volatile currencies or rates set on very different dates.
The right numbers depend on your data. Start conservative, look at what gets flagged, and adjust until the mismatch list contains only differences that genuinely warrant investigation.
What still needs investigating
Tolerance handles rounding — it should never hide real problems. A difference that exceeds your thresholds could mean a payment recorded at the wrong amount, a missing transaction inflating or deflating a summed total, a rate applied to the wrong date entirely, or a genuine short payment. Those are exactly the cases you want surfaced, which is why the goal is to tune tolerance to silence the noise without silencing the signal.
Built-in FX tolerance
ReconFiles lets you set both an absolute and a percentage tolerance, so foreign currency rounding doesn't clutter your mismatch list.
Try the reconciliation tool →The bottom line
Foreign currency differences are a normal part of reconciling across systems, not a sign something's broken. The trick is to stop demanding penny-perfect matches and instead define a sensible tolerance — ideally combining an absolute floor and a percentage floor — so that rounding noise passes quietly while real discrepancies still get flagged for you to investigate.