Moving from another system without changing the past
Three traps that raise no error — and the question that has to be answered first: what happens to the quarters you have already filed?
This page was last checked on: 30/08/2026
01The rule above all others: an import adds
Everything before the move has already been filed. An import may represent those periods but must not recalculate them — otherwise your new system shows different figures for a submitted quarter than your return does.
So the tax treatment is carried over, not recomputed. What was treated as a reverse charge then stays a reverse charge — even where the new system would decide differently today.
And for the same reason an import triggers no activity: no sending, no reminders, no filing. A legacy set that starts working as it loads sends mail to customers whose invoice was paid two years ago.
02Trap one: the separator
Many exports separate with a semicolon rather than a comma, and carry an invisible mark at the start of the file. Read with the wrong separator, every field containing a comma invents a new column.
No error arises. The file is read; there are simply three times as many rows — and nobody notices, because nothing crashes.
The same applies to addresses with a line break inside the field: a reader that takes the file line by line cuts them in half.
03Trap two: the truncated zero
Exports like to write amounts without the final zero. Seven hundred and two euros ten becomes a string ending in a one. Pad the decimals from the right and it turns into a single cent — every tenth amount then sits a factor of ten out.
And convert through the string, never through floating point. A floating-point number times a hundred is not always a whole number — the decimals that appear are not your money but the machine’s imprecision.
04Trap three: the field called tax rate is not one
Many exports carry a default rate per invoice. Under the reverse charge that field still shows the standard rate while the tax amount is nil — it records what was preset, not what was applied.
Take it as the tax rate and you import invoice after invoice carrying tax that was never charged. The rate belongs to be derived from the amount and the net — and where no tax arose, no rate belongs at all.
05Numbering continues, it does not restart
Your old invoice numbers have been sent out. They stay exactly as they are, even where they come from three different systems in three different patterns.
The new sequence continues above them — above the highest number that actually appeared on an invoice, not above the counter in the old system. Those two differ whenever invoices were raised after the export.
If the new system issues a number that already appeared on an invoice this year, you have two different invoices with the same number. A single continuous sequence within a year is easier to explain in an audit than two overlapping ones.
Gaps in the old sequence are normal, by the way: a cancelled invoice, a deleted draft. They have to be explainable, not closed.
06What to check before you move
- Can the import be undone? A run that only goes forward is not a trial but a decision.
- Is there a run that writes nothing? Count first, create afterwards.
- Does net plus tax equal gross in every single record — and do the line items add up to the invoice header?
- Does every invoice have a customer and at least one line?
These four checks cost an hour and catch the cases where the file looks complete and is not.
Related guides
What this page is built from
- Our own migration on 30 August 2026 out of two successive systems — each of the three traps sprang on the first run.
This text is orientation, not tax advice. What applies to your company is for your accountant to decide.