How Invoice Tax Calculations Work
Source: workshop-client/src/app/invoices/invoice.item-totals.service.ts
- Xero-connected companies: tax rates summed first, then applied
- Non-Xero companies: each tax calculated separately then added
- Closed invoices return server values — no recalculation
- All rounding uses ROUND_HALF_UP with 2 decimal places
- Assembly payments use ROUND_HALF_DOWN (different from everything else)
Support scenarios
- "Tax amount is wrong" → Xero vs non-Xero calculation method difference
- "Totals changed after closing invoice" → closed invoice uses server values, not recalculated
- "1 cent discrepancy on payment" → assembly payment rounds differently