[ { "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" } ]