Skip to main content

A partial implementation of UK income tax Pay-As-You-Earn calculations

Project description

PAYE

Implementation of UK Income Tax Pay-As-You-Earn algorithms

In the UK, many employees and pensioners pay income tax in weekly or monthly installments as a deduction on their payslip under a system known as Pay-As-You-Earn or PAYE.

In this system, His/Her Majesty's Revenue and Customs (HMRC) gives the employer/pension provider a "Tax Code" which they use to calculate how much income tax to deduct.

This package implements the algorithms for calculating the income tax due as defined by HMRC in their "SPECIFICATION FOR PAYE TAX TABLE ROUTINES" Version 24, dated January 2026

HMRC Constants

The algorithms use a set of constants that are dependent on tax year and defined in the Specification.

This package reads the constants from a TOML file 'hmrc.toml' which needs to be updated for each new tax year.

Exported Objects

  1. the TaxCode class
  2. the Payslip class
  3. the tax_due function

Usage

Weekly vs Monthly pay is selected by the environment variable PAYE_PERIOD: PAYE_PERIOD=weekly or PAYE_PERIOD=monthly

if unset, monthly is assumed

The inputs are:

  1. Your gross pay for the week / month
  2. Your total gross pay for the tax year including this week / month
  3. Your tax code for the week / month (as given by HMRC via a letter or your Personal Tax Account on gov.uk)
  4. The income tax you've paid so far this tax year, NOT including this week/month

Use these to create an instance of the Payslip class Pass this payslip, and the tax_to_date to the tax_due function

Output:

The income tax payable this week / month

Testing

This module is validated against the test cases provided by HMRC

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

paye-0.4.1.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

paye-0.4.1-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file paye-0.4.1.tar.gz.

File metadata

  • Download URL: paye-0.4.1.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.14.3 HTTPX/0.28.1

File hashes

Hashes for paye-0.4.1.tar.gz
Algorithm Hash digest
SHA256 4d209fa032e2e569f519a0ab8db6ada778adc3f516d98ce9382da61f4b7173bc
MD5 a1b0f283873fef752709bd72ea1be8f7
BLAKE2b-256 a9b19e4aaacd888f2ac1c1ff10b1261fd9dfe5928f2af2f040f87873237224b3

See more details on using hashes here.

File details

Details for the file paye-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: paye-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.14.3 HTTPX/0.28.1

File hashes

Hashes for paye-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a5d488b82472c4de7ee001bd84912bc16874ee63876d6181ca5e76bd45b9940a
MD5 9b393dd237a92eb1d815a9876e0cd823
BLAKE2b-256 62d4b0c8b15585bf6c80e7a5f0c746f4abd122a3b0fd4a437965bb6c4da44450

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page