Functional Weave
Code in TypeScript

finance.tax.remove-vat@1.0.0

vectors.json

2,075 bytes · view raw

[
  { "name": "VAT inside 120 pounds is 20, not 24", "args": [{ "minor": 12000, "currency": "GBP" }, "GB", "STANDARD", "2026-09-16"], "expect": { "net": { "minor": 10000, "currency": "GBP" }, "tax": { "minor": 2000, "currency": "GBP" }, "gross": { "minor": 12000, "currency": "GBP" }, "basisPoints": 2000 } },
  { "name": "round trips with add-vat", "args": [{ "minor": 239, "currency": "GBP" }, "GB", "STANDARD", "2026-09-16"], "expect": { "net": { "minor": 199, "currency": "GBP" }, "tax": { "minor": 40, "currency": "GBP" }, "gross": { "minor": 239, "currency": "GBP" }, "basisPoints": 2000 } },
  { "name": "a 1 pound gross price", "args": [{ "minor": 100, "currency": "GBP" }, "GB", "STANDARD", "2026-09-16"], "expect": { "net": { "minor": 83, "currency": "GBP" }, "tax": { "minor": 17, "currency": "GBP" }, "gross": { "minor": 100, "currency": "GBP" }, "basisPoints": 2000 } },
  { "name": "zero rated gross is all net", "args": [{ "minor": 10000, "currency": "GBP" }, "GB", "ZERO", "2026-09-16"], "expect": { "net": { "minor": 10000, "currency": "GBP" }, "tax": { "minor": 0, "currency": "GBP" }, "gross": { "minor": 10000, "currency": "GBP" }, "basisPoints": 0 } },
  { "name": "reduced rate gross", "args": [{ "minor": 10500, "currency": "GBP" }, "GB", "REDUCED", "2026-09-16"], "expect": { "net": { "minor": 10000, "currency": "GBP" }, "tax": { "minor": 500, "currency": "GBP" }, "gross": { "minor": 10500, "currency": "GBP" }, "basisPoints": 500 } },
  { "name": "a 2009 gross price uses the 2009 rate", "args": [{ "minor": 11500, "currency": "GBP" }, "GB", "STANDARD", "2009-06-01"], "expect": { "net": { "minor": 10000, "currency": "GBP" }, "tax": { "minor": 1500, "currency": "GBP" }, "gross": { "minor": 11500, "currency": "GBP" }, "basisPoints": 1500 } },
  { "name": "a refund of a gross price", "args": [{ "minor": -12000, "currency": "GBP" }, "GB", "STANDARD", "2026-09-16"], "expect": { "net": { "minor": -10000, "currency": "GBP" }, "tax": { "minor": -2000, "currency": "GBP" }, "gross": { "minor": -12000, "currency": "GBP" }, "basisPoints": 2000 } }
]