Tax calculation regression: symptoms, cause, and the test that catches it
Tax or VAT is computed with the wrong rate or jurisdiction after a rules or data update.
Tax calculation regression is documented by 2 accepted public reports from 2 organisations, 2 of them published in the last 5 years.
- Likelihood: low (2 public reports in 5 years)
- Impact: high (2 of 2 reports: money and compliance)
Symptoms
User-visible
- Reservation items with price overrides received an incorrect VAT or tax rate after a rate management feature shipped.[1]
- Some bookings were created with incorrect tax data.[1]
- A small percentage of invoices were generated with invalid tax information.[1]
- The Estonian tax report computed the tax amount at 20% on a line that held the taxable amount at 22%.[2]
Root causes
Public examples
- [1]Mews, 2025-09-17. Mews reported that a recently introduced Rate Management feature caused incorrect VAT or tax rates to be applied to reservation items with price overrides, and its postmortem traced this to a frontend update that stored invalid tax codes. primary Issue with Mews Reservation with wrong VAT
- [2]Odoo, 2024-03-25. An Odoo maintainer fix states that after the Estonian standard VAT rate changed from 20% to 22% at the start of 2024 and the Estonian tax report lines were updated, the report formula still computed tax at 0.2 of the taxable amount. primary [FIX] l10n_ee: tax report computes according to updated taxes
Test classes that catch it
| Test class | Stage | Limitation | Basis |
|---|---|---|---|
| Unit tests | pre-merge | A unit test whose expected Estonian tax amount was written at the old 20% rate keeps passing after the rate change, so the stale 0.2 multiplier survives unless the expected value comes from the current rate table. | by design analysis |
| Integration tests | pre-deploy | An integration test catches the empty array only if it saves a reservation item with a price override while the tax dropdown is disabled. | by design analysis |
Risk
- Likelihood: low (2 public reports in 5 years)
- Impact: high (2 of 2 reports: money and compliance)
| Accepted public reports | 2 |
|---|---|
| Published in the last 5 years | 2 |
| Impact stated: money | 1 |
| Impact stated: compliance | 1 |
Pre-release checklist
- PR-01
- PR-02
- PR-03
- PR-04
- PR-05
- PR-06
First 30 minutes
- FM-01
- FM-02
- FM-03
- FM-04
- FM-05
- FM-06
Download the checklist
What catches this: catalogue entries
Listed because their own documentation or site names unit tests, integration tests on the verification date. Alphabetical. Not a recommendation.
Tools whose documentation names these test classes
- Hoverfly integration source verified 2026-10-21
- Jest unit source verified 2026-10-21
- JUnit unit source verified 2026-10-21
- Nightwatch unit source verified 2026-10-21
- Postman integration source verified 2026-10-21
- pytest unit source verified 2026-10-21
- RSpec unit source verified 2026-10-21
- Serenity BDD integration source verified 2026-10-21
- Testcontainers integration source verified 2026-10-21
- TestNG unit source verified 2026-10-21 integration source verified 2026-10-21
- Vitest unit source verified 2026-10-21
- WebdriverIO unit source verified 2026-10-21
- XCTest unit source verified 2026-10-21
Providers whose site names these test classes
- andagon people GmbH integration source verified 2026-10-21 unit source verified 2026-10-21
- Appmatics integration source verified 2026-10-21
- AQA Masters integration source verified 2026-10-21
- Cleverix integration source verified 2026-10-21
- Crestech Software Systems integration source verified 2026-10-21
- DeviQA integration source verified 2026-10-21
- Inmetrics unit source verified 2026-10-21
- Invensis Technologies integration source verified 2026-10-21
- Outpost QA integration source verified 2026-10-21
- Q-Centric GmbH integration source verified 2026-10-21
- QA Madness integration source verified 2026-10-21
- QA Mentor integration source verified 2026-10-21 unit source verified 2026-10-21
- QAwerk integration source verified 2026-10-21
- Quality Island integration source verified 2026-10-21
- Soflab Technology integration source verified 2026-10-21
- SQA - Software Quality Assurance S.A. integration source verified 2026-10-21
- SunTec India integration source verified 2026-10-21
- T2S Tecnologia unit source verified 2026-10-21
- TestFort integration source verified 2026-10-21
- Testhouse integration source verified 2026-10-21
- Testing IT integration source verified 2026-10-21
- TestMatick integration source verified 2026-10-21
- Testscenario integration source verified 2026-10-21
- Zoonou integration source verified 2026-10-21
Only on this page
Tax calculation regression in report [2] came from a legal rate change outside the codebase. The Estonian VAT rate rose from 20% to 22% at the start of 2024. The report line moved to the 22% taxable amount, and the formula still multiplied by 0.2. The defect reached the maintainers through a support ticket.
Unit tests are the class that targets wrong calculations, yet a unit test asserts the number its author wrote down. When the expected value and the formula both carry the old rate, the test passes. A unit test for tax calculation regression needs its expected rate read from the rate table in force after the effective date.
Related incidents
- Subscription renewal skipped Scheduled renewals do not run or run with stale plan data after a billing job change.
- Double charge after deploy A customer is charged twice for one purchase after a release changes retry or idempotency behaviour.
- Checkout blocked for segment A checkout step fails for one customer segment, country or card type after a release.
- Connection pool exhausted A new code path leaks or holds connections and the pool runs out under load.
- Email or SMS provider template broken Transactional messages are sent with broken templates or to wrong recipients after a template change.
Questions
What causes tax calculation regression?
Both accepted reports name a code-stage cause. One frontend update sent an empty array when a dropdown was disabled, which stored invalid tax codes [1]. One report formula kept a 0.2 multiplier after the Estonian rate rose to 22% [2].
What are the symptoms of tax calculation regression?
Bookings and invoices carry incorrect VAT or invalid tax information [1]. A tax report computes the tax amount at an old rate on a line that holds the taxable amount at the new rate [2].
Why did tests not catch tax calculation regression?
Neither report describes the tests that ran. A unit test whose expected value uses the old 20% rate would keep passing, so the unit entry carries the by-design label.
Which public reports document tax calculation regression?
Two primary reports are accepted, published in March 2024 and September 2025. One covers incorrect VAT on reservation items with price overrides [1]. The other covers an Estonian tax report formula left at 0.2 [2].
How long did it take to detect tax calculation regression in the public reports?
Neither report publishes a time to detect in minutes. The Estonian formula defect was raised through a support ticket [2].
What should be checked before a release to prevent tax calculation regression?
PR-01 asks for a unit test that computes each report line's tax from the current rate table entry. PR-04 asks for an integration test that saves an overridden-price item with the tax dropdown disabled and reads the stored tax code back.
Release Incident Playbook (2026). Tax calculation regression: symptoms, cause, and the test that catches it, content version 1.0.0. https://releasefailures.com/incidents/tax-calculation-regression/. Accessed 2026-10-21.