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.3.tar.gz (20.4 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.3-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uk_chart_of_accounts-0.1.3.tar.gz
  • Upload date:
  • Size: 20.4 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.3.tar.gz
Algorithm Hash digest
SHA256 9544df15606fbaf632d5af723b070714f3b9050552ebd9240293136c865848bc
MD5 3d17bf88068e8938e671e62303be398f
BLAKE2b-256 1f1b562fc7aa3fccbdc32668d9fbc3cb7d31a190ed24654a5e35e07715cea428

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uk_chart_of_accounts-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 de041e5604c32790c20d210c6df72e50330c3eb3f7922635f9968d0c89fa9c8e
MD5 32d31e34ebfebebcb941478108f38e4d
BLAKE2b-256 2db6c108a2ca2250b818d3776b9e66a5ea65388a885392fda7dd27ba5193f8ac

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