Skip to main content

An 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. utility functions str_to_decimal and uk_tax_period_start_date

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 basic pay for the week / month
  2. Your tax code for the week / month (as given by HMRC via a letter or your Personal Tax Account on gov.uk)
  3. Any pay adjustments for the week / month (e.g. bonus)
  4. Any payrolled benefits in kind ... and for cumulative tax codes;
  5. The tax period number
  6. Your total gross pay for the tax year including this week / month
  7. 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

The income tax for this week / month is provided by the income tax property of the payslip.

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.6.0.tar.gz (92.4 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.6.0-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for paye-0.6.0.tar.gz
Algorithm Hash digest
SHA256 cdd3b20c7d87b7869bc5f6580a3fa7088566d74abf6c18f8936b34d855076e64
MD5 f6a4572ec9d2c5a12d606ab4e491cf2a
BLAKE2b-256 d4ee54927db1b4bb681ef38e036c07b74f126bdf116a18cca0b453a62973a0e8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for paye-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 933f2bf39aff78201631d727ef5c4277bab2b242eff99faf4682a335f3571edd
MD5 f2acb5481cc28e2842b66946f78d745b
BLAKE2b-256 d0cad367babb6d616cd57ef61e881bc19abf7ef7ee9889b4624f48477dd9e469

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