[
{
"name": "standard rate today: 12% on a 100.00 net premium",
"args": [
{
"minor": 10000,
"currency": "GBP"
},
false,
"standard",
"2026-09-23",
"half-up"
],
"expect": {
"net": {
"minor": 10000,
"currency": "GBP"
},
"tax": {
"minor": 1200,
"currency": "GBP"
},
"gross": {
"minor": 11200,
"currency": "GBP"
},
"basisPoints": 1200,
"band": "standard",
"validFrom": "2017-06-01"
}
},
{
"name": "taking 12% out of 112.00 gives 12.00 of tax, not 13.44",
"args": [
{
"minor": 11200,
"currency": "GBP"
},
true,
"standard",
"2026-09-23",
"half-up"
],
"expect": {
"net": {
"minor": 10000,
"currency": "GBP"
},
"tax": {
"minor": 1200,
"currency": "GBP"
},
"gross": {
"minor": 11200,
"currency": "GBP"
},
"basisPoints": 1200,
"band": "standard",
"validFrom": "2017-06-01"
}
},
{
"name": "higher rate today: 20% on a 50.00 travel premium",
"args": [
{
"minor": 5000,
"currency": "GBP"
},
false,
"higher",
"2026-09-23",
"half-up"
],
"expect": {
"net": {
"minor": 5000,
"currency": "GBP"
},
"tax": {
"minor": 1000,
"currency": "GBP"
},
"gross": {
"minor": 6000,
"currency": "GBP"
},
"basisPoints": 2000,
"band": "higher",
"validFrom": "2011-01-04"
}
},
{
"name": "first day of 12%: net of 250.00 gross is 223.21 (22321.43 rounds down)",
"args": [
{
"minor": 25000,
"currency": "GBP"
},
true,
"standard",
"2017-06-01",
"half-up"
],
"expect": {
"net": {
"minor": 22321,
"currency": "GBP"
},
"tax": {
"minor": 2679,
"currency": "GBP"
},
"gross": {
"minor": 25000,
"currency": "GBP"
},
"basisPoints": 1200,
"band": "standard",
"validFrom": "2017-06-01"
}
},
{
"name": "last day of 10%: net of 250.00 gross is 227.27",
"args": [
{
"minor": 25000,
"currency": "GBP"
},
true,
"standard",
"2017-05-31",
"half-up"
],
"expect": {
"net": {
"minor": 22727,
"currency": "GBP"
},
"tax": {
"minor": 2273,
"currency": "GBP"
},
"gross": {
"minor": 25000,
"currency": "GBP"
},
"basisPoints": 1000,
"band": "standard",
"validFrom": "2016-10-01"
}
},
{
"name": "9.5% on 199.99: 18.99905 rounds half-up to 19.00",
"args": [
{
"minor": 19999,
"currency": "GBP"
},
false,
"standard",
"2016-01-01",
"half-up"
],
"expect": {
"net": {
"minor": 19999,
"currency": "GBP"
},
"tax": {
"minor": 1900,
"currency": "GBP"
},
"gross": {
"minor": 21899,
"currency": "GBP"
},
"basisPoints": 950,
"band": "standard",
"validFrom": "2015-11-01"
}
},
{
"name": "9.5% on 199.99 rounded down is 18.99",
"args": [
{
"minor": 19999,
"currency": "GBP"
},
false,
"standard",
"2016-01-01",
"down"
],
"expect": {
"net": {
"minor": 19999,
"currency": "GBP"
},
"tax": {
"minor": 1899,
"currency": "GBP"
},
"gross": {
"minor": 21898,
"currency": "GBP"
},
"basisPoints": 950,
"band": "standard",
"validFrom": "2015-11-01"
}
},
{
"name": "higher rate on its last day at 17.5%",
"args": [
{
"minor": 8000,
"currency": "GBP"
},
false,
"higher",
"2011-01-03",
"half-up"
],
"expect": {
"net": {
"minor": 8000,
"currency": "GBP"
},
"tax": {
"minor": 1400,
"currency": "GBP"
},
"gross": {
"minor": 9400,
"currency": "GBP"
},
"basisPoints": 1750,
"band": "higher",
"validFrom": "1997-04-01"
}
},
{
"name": "higher rate on the first day of 20%",
"args": [
{
"minor": 8000,
"currency": "GBP"
},
false,
"higher",
"2011-01-04",
"half-up"
],
"expect": {
"net": {
"minor": 8000,
"currency": "GBP"
},
"tax": {
"minor": 1600,
"currency": "GBP"
},
"gross": {
"minor": 9600,
"currency": "GBP"
},
"basisPoints": 2000,
"band": "higher",
"validFrom": "2011-01-04"
}
},
{
"name": "standard 6% from 4 January 2011: 33.33 gives 2.00 (1.9998)",
"args": [
{
"minor": 3333,
"currency": "GBP"
},
false,
"standard",
"2011-01-04",
"half-up"
],
"expect": {
"net": {
"minor": 3333,
"currency": "GBP"
},
"tax": {
"minor": 200,
"currency": "GBP"
},
"gross": {
"minor": 3533,
"currency": "GBP"
},
"basisPoints": 600,
"band": "standard",
"validFrom": "2011-01-04"
}
},
{
"name": "standard 5% on the day before 6%",
"args": [
{
"minor": 10500,
"currency": "GBP"
},
true,
"standard",
"2011-01-03",
"half-up"
],
"expect": {
"net": {
"minor": 10000,
"currency": "GBP"
},
"tax": {
"minor": 500,
"currency": "GBP"
},
"gross": {
"minor": 10500,
"currency": "GBP"
},
"basisPoints": 500,
"band": "standard",
"validFrom": "1999-07-01"
}
},
{
"name": "introductory 2.5% in 1995",
"args": [
{
"minor": 10000,
"currency": "GBP"
},
false,
"standard",
"1995-06-01",
"half-up"
],
"expect": {
"net": {
"minor": 10000,
"currency": "GBP"
},
"tax": {
"minor": 250,
"currency": "GBP"
},
"gross": {
"minor": 10250,
"currency": "GBP"
},
"basisPoints": 250,
"band": "standard",
"validFrom": "1994-10-01"
}
},
{
"name": "4% in 1998",
"args": [
{
"minor": 10000,
"currency": "GBP"
},
false,
"standard",
"1998-01-01",
"half-up"
],
"expect": {
"net": {
"minor": 10000,
"currency": "GBP"
},
"tax": {
"minor": 400,
"currency": "GBP"
},
"gross": {
"minor": 10400,
"currency": "GBP"
},
"basisPoints": 400,
"band": "standard",
"validFrom": "1997-04-01"
}
},
{
"name": "the first day IPT existed",
"args": [
{
"minor": 4000,
"currency": "GBP"
},
false,
"standard",
"1994-10-01",
"half-up"
],
"expect": {
"net": {
"minor": 4000,
"currency": "GBP"
},
"tax": {
"minor": 100,
"currency": "GBP"
},
"gross": {
"minor": 4100,
"currency": "GBP"
},
"basisPoints": 250,
"band": "standard",
"validFrom": "1994-10-01"
}
},
{
"name": "a return premium carries its IPT back: -33.33 at 12% is -4.00 of tax",
"args": [
{
"minor": -3333,
"currency": "GBP"
},
false,
"standard",
"2026-09-23",
"half-up"
],
"expect": {
"net": {
"minor": -3333,
"currency": "GBP"
},
"tax": {
"minor": -400,
"currency": "GBP"
},
"gross": {
"minor": -3733,
"currency": "GBP"
},
"basisPoints": 1200,
"band": "standard",
"validFrom": "2017-06-01"
}
},
{
"name": "gross 1.00 at 12%: net 0.89, tax 0.11",
"args": [
{
"minor": 100,
"currency": "GBP"
},
true,
"standard",
"2026-09-23",
"half-up"
],
"expect": {
"net": {
"minor": 89,
"currency": "GBP"
},
"tax": {
"minor": 11,
"currency": "GBP"
},
"gross": {
"minor": 100,
"currency": "GBP"
},
"basisPoints": 1200,
"band": "standard",
"validFrom": "2017-06-01"
}
},
{
"name": "a zero premium has no tax",
"args": [
{
"minor": 0,
"currency": "GBP"
},
false,
"higher",
"2026-09-23",
"half-up"
],
"expect": {
"net": {
"minor": 0,
"currency": "GBP"
},
"tax": {
"minor": 0,
"currency": "GBP"
},
"gross": {
"minor": 0,
"currency": "GBP"
},
"basisPoints": 2000,
"band": "higher",
"validFrom": "2011-01-04"
}
},
{
"name": "no higher rate before 1 April 1997",
"args": [
{
"minor": 10000,
"currency": "GBP"
},
false,
"higher",
"1996-01-01",
"half-up"
],
"expectError": "no IPT rule for higher on 1996-01-01"
},
{
"name": "no IPT before 1 October 1994",
"args": [
{
"minor": 10000,
"currency": "GBP"
},
false,
"standard",
"1994-09-30",
"half-up"
],
"expectError": "no IPT rule for standard on 1994-09-30"
},
{
"name": "a malformed date is refused",
"args": [
{
"minor": 10000,
"currency": "GBP"
},
false,
"standard",
"23/09/2026",
"half-up"
],
"expectError": "onDate must be an ISO date"
},
{
"name": "an unknown band is refused",
"args": [
{
"minor": 10000,
"currency": "GBP"
},
false,
"reduced",
"2026-09-23",
"half-up"
],
"expectError": "unknown IPT band"
}
]