Skip to main content

Machine-readable UK Chart of Accounts with VAT treatments and HMRC mappings

Project description

uk-chart-of-accounts

PyPI version Python versions License: MIT

Machine-readable UK Chart of Accounts for Python. 166 standard nominal codes with account types, VAT treatments, and HMRC box mappings.

Why this exists

There is no well-maintained, machine-readable UK Chart of Accounts on PyPI. US-centric libraries exist, but UK accounting has different nominal code ranges, VAT treatments (standard, reduced, zero-rated, exempt, outside scope), and HMRC-specific box mappings (CT600, VAT Return, FPS/RTI, CIS). This library fills that gap — designed for developers building UK accounting tools, bookkeeping automation, and AI-powered transaction categorisation.

Install

pip install uk-chart-of-accounts

Quick start

from uk_coa import ChartOfAccounts, AccountType, VatRate

coa = ChartOfAccounts()

# Look up by code
account = coa.get(7602)
account.name          # "Accountancy Fees"
account.type          # AccountType.OVERHEAD
account.vat           # VatRate.STANDARD
account.vat_rate_pct  # 0.20
account.debit_increase  # True (expenses increase on debit side)

# Search
coa.search("insurance")           # All accounts with "insurance" in the name
coa.by_type(AccountType.INCOME)   # All income accounts
coa.by_vat(VatRate.EXEMPT)        # All VAT-exempt accounts
coa.by_tag("motor")               # All motor-related accounts
coa.code_range(7000, 7012)        # Payroll overheads

# Convenience
coa.expenses()                    # Direct expenses + overheads
coa.income_accounts()             # All income codes
coa.balance_sheet_accounts()      # Assets, liabilities, equity
coa.profit_and_loss_accounts()    # Income, expenses

# Export for LLM prompts
context = coa.to_prompt_context()
# or filter: coa.to_prompt_context(types=[AccountType.OVERHEAD])

# Export as dict (JSON-serialisable)
data = coa.to_dict()

What's included

  • 166 nominal codes - the standard UK chart (Fixed Assets through Control accounts)
  • 10 account types - with double-entry rules (debit/credit increase direction)
  • VAT treatments - Standard (20%), Reduced (5%), Zero-rated, Exempt, Outside Scope
  • HMRC box mappings - CT600, VAT Return, FPS/RTI references where applicable
  • Tags - searchable labels (motor, payroll, premises, insurance, etc.)
  • LLM export - to_prompt_context() formats the chart for AI/LLM prompts
  • Zero dependencies - pure Python, stdlib only

Account types

Type Debit increases? Statement
Fixed Asset Yes Balance Sheet
Current Asset Yes Balance Sheet
Current Liability No Balance Sheet
Long-Term Liability No Balance Sheet
Equity No Balance Sheet
Income No Profit & Loss
Direct Expense Yes Profit & Loss
Overhead Yes Profit & Loss
Tax Yes Profit & Loss
Control Yes Balance Sheet

VAT treatments

Treatment Rate Example codes
Standard 20% Most expenses, sales
Reduced 5% Domestic fuel/power
Zero-rated 0% Books, postage
Exempt - Insurance, bank charges, rent
Outside Scope - Wages, taxes, depreciation

Contributing

PRs welcome — particularly for:

  • Additional HMRC box mappings
  • VAT treatment corrections
  • Descriptions for accounts that lack them
  • Industry-specific code extensions

See CONTRIBUTING.md for setup instructions and guidelines.

Licence

MIT

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

uk_chart_of_accounts-0.1.1.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

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

uk_chart_of_accounts-0.1.1-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file uk_chart_of_accounts-0.1.1.tar.gz.

File metadata

  • Download URL: uk_chart_of_accounts-0.1.1.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.8

File hashes

Hashes for uk_chart_of_accounts-0.1.1.tar.gz
Algorithm Hash digest
SHA256 228fe3f60921ac0d57d617cb633fd12c2b9a579ac9b85d72a0d431674d9c27f2
MD5 4ba2956432ada17624c8e6115b192ec7
BLAKE2b-256 46896b2ae4fcff3675343b0aec8b89b2fab20b234be58d3d1cfea3b473acfbe6

See more details on using hashes here.

File details

Details for the file uk_chart_of_accounts-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for uk_chart_of_accounts-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5f938eedd2cf1c92e79794ea0058c999a96f22c5dea13c7f700092309930c0da
MD5 dd541b78d928e59a78e8675469dcc7c3
BLAKE2b-256 82cfb923c37170123326f74821a7b6c7da279fb9ed6308f8d63bc7bc08c873ea

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