Functional Weave
Code in Python

payroll.tax-period@1.0.0

README.md

1,822 bytes · view raw

# payroll.tax-period

Every PAYE and National Insurance calculation starts by asking which tax week
or tax month a payment falls in. The answer depends only on the date the
employee is paid, never on the dates the work was done: a monthly salary paid
on 28 April is month 1, and one paid on 3 May is still month 1.

- Tax week 1 is 6 to 12 April, week 2 is 13 to 19 April, and so on. Week 52
  ends on 3 or 4 April, so the last one or two days of every tax year (5 April,
  or 4 and 5 April when the tax year contains 29 February) are **week 53**.
- Tax month 1 is 6 April to 5 May, month 2 is 6 May to 5 June, and so on to
  month 12, 6 March to 5 April.
- `period` is what `payroll.income-tax` and the other payroll capabilities
  take. For monthly pay it is the tax month. For weekly, fortnightly and
  four-weekly pay it is the tax week of the pay date, because HMRC's
  cumulative tables for those frequencies are indexed by week: a fortnightly
  payroll paid in weeks 2, 4, 6 uses the week 2, 4 and 6 figures. A payday in
  week 53 is the extra payday of the year and HMRC calls it week 53 (weekly),
  week 54 (fortnightly) or week 56 (four-weekly); those periods are taxed on a
  non-cumulative basis, which is why they get their own numbers.

This capability does not check that a payroll really is fortnightly or
four-weekly (that the paydays are 14 or 28 days apart); it places one date.

Sources: HMRC, "Employer further guide to PAYE and NICs" (CWG2), sections on
tax weeks and months and on week 53 payments,
https://www.gov.uk/government/publications/cwg2-further-guide-to-paye-and-national-insurance-contributions;
HMRC, "Specification for PAYE tax table routines" v24.0, paragraph 14 (payments
in weeks 53, 54 or 56),
https://www.gov.uk/government/publications/payroll-technical-specifications-income-tax.