[
{
"name": "grossing up the 3,000 pound payslip's net gives back 3,000",
"args": [
{
"minor": 245364,
"currency": "GBP"
},
{
"gross": {
"minor": 0,
"currency": "GBP"
},
"frequency": "monthly",
"payDate": "2026-04-28",
"taxCode": "1257L",
"previousTaxablePayToDate": {
"minor": 0,
"currency": "GBP"
},
"previousTaxToDate": {
"minor": 0,
"currency": "GBP"
},
"niCategory": "A",
"studentLoanPlans": [],
"pension": null
}
],
"expect": {
"gross": {
"minor": 300000,
"currency": "GBP"
},
"pensionEmployee": {
"minor": 0,
"currency": "GBP"
},
"pensionEmployer": {
"minor": 0,
"currency": "GBP"
},
"taxablePay": {
"minor": 300000,
"currency": "GBP"
},
"tax": {
"minor": 39020,
"currency": "GBP"
},
"employeeNi": {
"minor": 15616,
"currency": "GBP"
},
"employerNi": {
"minor": 38745,
"currency": "GBP"
},
"studentLoan": {
"minor": 0,
"currency": "GBP"
},
"postgraduateLoan": {
"minor": 0,
"currency": "GBP"
},
"net": {
"minor": 245364,
"currency": "GBP"
},
"taxablePayToDate": {
"minor": 300000,
"currency": "GBP"
},
"taxToDate": {
"minor": 39020,
"currency": "GBP"
},
"period": 1,
"taxYear": "2026/27"
}
},
{
"name": "below the allowance and the threshold, gross equals net",
"args": [
{
"minor": 100000,
"currency": "GBP"
},
{
"gross": {
"minor": 0,
"currency": "GBP"
},
"frequency": "monthly",
"payDate": "2026-04-28",
"taxCode": "1257L",
"previousTaxablePayToDate": {
"minor": 0,
"currency": "GBP"
},
"previousTaxToDate": {
"minor": 0,
"currency": "GBP"
},
"niCategory": "A",
"studentLoanPlans": [],
"pension": null
}
],
"expect": {
"gross": {
"minor": 100000,
"currency": "GBP"
},
"pensionEmployee": {
"minor": 0,
"currency": "GBP"
},
"pensionEmployer": {
"minor": 0,
"currency": "GBP"
},
"taxablePay": {
"minor": 100000,
"currency": "GBP"
},
"tax": {
"minor": 0,
"currency": "GBP"
},
"employeeNi": {
"minor": 0,
"currency": "GBP"
},
"employerNi": {
"minor": 8745,
"currency": "GBP"
},
"studentLoan": {
"minor": 0,
"currency": "GBP"
},
"postgraduateLoan": {
"minor": 0,
"currency": "GBP"
},
"net": {
"minor": 100000,
"currency": "GBP"
},
"taxablePayToDate": {
"minor": 100000,
"currency": "GBP"
},
"taxToDate": {
"minor": 0,
"currency": "GBP"
},
"period": 1,
"taxYear": "2026/27"
}
},
{
"name": "2,000 net needs 2,369.96, not the 2,369.26 an unrounded formula suggests",
"args": [
{
"minor": 200000,
"currency": "GBP"
},
{
"gross": {
"minor": 0,
"currency": "GBP"
},
"frequency": "monthly",
"payDate": "2026-04-28",
"taxCode": "1257L",
"previousTaxablePayToDate": {
"minor": 0,
"currency": "GBP"
},
"previousTaxToDate": {
"minor": 0,
"currency": "GBP"
},
"niCategory": "A",
"studentLoanPlans": [],
"pension": null
}
],
"expect": {
"gross": {
"minor": 236996,
"currency": "GBP"
},
"pensionEmployee": {
"minor": 0,
"currency": "GBP"
},
"pensionEmployer": {
"minor": 0,
"currency": "GBP"
},
"taxablePay": {
"minor": 236996,
"currency": "GBP"
},
"tax": {
"minor": 26420,
"currency": "GBP"
},
"employeeNi": {
"minor": 10576,
"currency": "GBP"
},
"employerNi": {
"minor": 29294,
"currency": "GBP"
},
"studentLoan": {
"minor": 0,
"currency": "GBP"
},
"postgraduateLoan": {
"minor": 0,
"currency": "GBP"
},
"net": {
"minor": 200000,
"currency": "GBP"
},
"taxablePayToDate": {
"minor": 236996,
"currency": "GBP"
},
"taxToDate": {
"minor": 26420,
"currency": "GBP"
},
"period": 1,
"taxYear": "2026/27"
}
},
{
"name": "a tax refund can reach the target with no gross pay at all",
"args": [
{
"minor": 50000,
"currency": "GBP"
},
{
"gross": {
"minor": 0,
"currency": "GBP"
},
"frequency": "monthly",
"payDate": "2026-07-28",
"taxCode": "NT",
"previousTaxablePayToDate": {
"minor": 600000,
"currency": "GBP"
},
"previousTaxToDate": {
"minor": 60000,
"currency": "GBP"
},
"niCategory": "A",
"studentLoanPlans": [],
"pension": null
}
],
"expect": {
"gross": {
"minor": 0,
"currency": "GBP"
},
"pensionEmployee": {
"minor": 0,
"currency": "GBP"
},
"pensionEmployer": {
"minor": 0,
"currency": "GBP"
},
"taxablePay": {
"minor": 0,
"currency": "GBP"
},
"tax": {
"minor": -60000,
"currency": "GBP"
},
"employeeNi": {
"minor": 0,
"currency": "GBP"
},
"employerNi": {
"minor": 0,
"currency": "GBP"
},
"studentLoan": {
"minor": 0,
"currency": "GBP"
},
"postgraduateLoan": {
"minor": 0,
"currency": "GBP"
},
"net": {
"minor": 60000,
"currency": "GBP"
},
"taxablePayToDate": {
"minor": 600000,
"currency": "GBP"
},
"taxToDate": {
"minor": 0,
"currency": "GBP"
},
"period": 4,
"taxYear": "2026/27"
}
},
{
"name": "a zero target is an error",
"args": [
{
"minor": 0,
"currency": "GBP"
},
{
"gross": {
"minor": 0,
"currency": "GBP"
},
"frequency": "monthly",
"payDate": "2026-04-28",
"taxCode": "1257L",
"previousTaxablePayToDate": {
"minor": 0,
"currency": "GBP"
},
"previousTaxToDate": {
"minor": 0,
"currency": "GBP"
},
"niCategory": "A",
"studentLoanPlans": [],
"pension": null
}
],
"expectError": "targetNet must be more than zero"
},
{
"name": "a target in euros is an error",
"args": [
{
"minor": 100000,
"currency": "EUR"
},
{
"gross": {
"minor": 0,
"currency": "GBP"
},
"frequency": "monthly",
"payDate": "2026-04-28",
"taxCode": "1257L",
"previousTaxablePayToDate": {
"minor": 0,
"currency": "GBP"
},
"previousTaxToDate": {
"minor": 0,
"currency": "GBP"
},
"niCategory": "A",
"studentLoanPlans": [],
"pension": null
}
],
"expectError": "must be in GBP"
}
]