All plugins
v1.0.0·Estonia·MIT · forkable

artifi-ee-payroll-calculator

Gross-to-net payroll with TSD declaration

A complete Estonian payroll calculation engine that processes gross-to-net for all employees in a payroll run. Applies all Estonian tax formulas: 33% social tax (employer), 22% income tax, 1.6% unemployment insurance (employee), 0.8% unemployment insurance (employer), and funded pension at 2%, 3%, or 6% depending on the employee's tier. Handles the basic tax exemption, pre-tax and post-tax voluntary deductions, and pro-rating for mid-month starts/exits. Generates TSD declaration XML files for direct upload to the EMTA (Estonian Tax and Customs Board) portal.

↗ View on GitHubClone the repo
COMMANDS · 2

Slash commands shipped.

/calculate-payroll

Calculate gross-to-net payroll for all employees in a payroll run. Loads the payroll run, fetches employees with compensation/tax settings/deductions, applies all Estonian tax formulas, validates net pay within 0.02 tolerance, and submits calculated results. Shows summary table with per-employee breakdown.

/generate-tsd

Generate the Estonian monthly TSD declaration XML for EMTA filing. Fetches calculated payroll data, builds structured JSON input, and runs the generate_tsd.py script to produce validated XML with correct namespace and per-employee data (personal ID, gross pay, income tax, social tax, unemployment, pension).

HOW IT WORKS

Workflow steps · agent runs · validation gates.

Payroll Calculation

  1. 1

    Load payroll run and verify status is "draft"

  2. 2

    Fetch all active employees with compensation records, tax settings, and voluntary deductions

  3. 3

    Load Estonian tax rates from payroll tax jurisdiction configuration

  4. 4

    For each employee: calculate gross pay (pro-rated if mid-month start/exit)

  5. 5

    Calculate employee deductions: unemployment insurance (1.6%), funded pension (2%/3%/6%)

  6. 6

    Apply pre-tax voluntary deductions

  7. 7

    Calculate taxable income = gross - unemployment - pension - pre-tax deductions - basic exemption

  8. 8

    Calculate income tax = max(0, taxable income x 22%)

  9. 9

    Apply post-tax voluntary deductions

  10. 10

    Calculate net pay = gross - all employee taxes and deductions

  11. 11

    Calculate employer costs: social tax (33%), employer unemployment (0.8%)

  12. 12

    Validate: net pay = gross - total taxes - total deductions (within 0.02 tolerance)

  13. 13

    Submit calculation results and show summary table

TSD Declaration Generation

  1. 1

    Fetch calculated or approved payroll run data

  2. 2

    Build structured JSON input with per-employee tax details

  3. 3

    Run generate_tsd.py script to produce validated XML

  4. 4

    Output includes header, summary totals, and Annex 1 per-employee lines

  5. 5

    XML ready for upload to e-MTA portal

VALIDATION CHECKPOINTS · 6

Every run must pass.

If any checkpoint fails, the workflow stops and reports the issue. Nothing posts to the ledger until every check passes.

Payroll run exists and is in "draft" status

All employees in the run have active compensation records

All employees have tax settings (pension tier, basic exemption)

Tax rates loaded from payroll tax jurisdiction (country_code = "EE")

For each employee: net pay equals gross minus total taxes minus deductions (within 0.02)

Submission succeeds without validation errors

REFERENCE DATA · 3 FILES

Structured knowledge included.

Formulas, templates, regulatory rules — not hardcoded values. Forkable per firm, per client.

estonian-tax-formulas.md

Complete tax rate formulas: 22% income tax, 33% social tax, 1.6%/0.8% unemployment, 2%/3%/6% pension tiers, basic exemption rules

submission-format.md

JSON structure for payroll calculation submission with per-employee tax lines and deduction details

tsd-declaration.md

TSD structure with Header, Summary, and Annex 1 per-employee field reference

MIT · BUILT FOR ARFITI · OPEN FOR EVERYONE

Designed to work out-of-the-box with the Arfiti ledger. Claude fetches your data, runs calculations, validates results, and submits entries automatically through MCP.

Or fork it. Skills, commands, validation logic, and reference data are all MIT-licensed. Swap the MCP tool calls for your own backend, or use the reference files as standalone Claude project resources.

SUBSCRIBE · NEW POSTS · NO SPAM

Get the next post in your inbox.

Practitioner notes on AI-native finance. One email when something new ships. Unsubscribe any time.