Registry entry
Estonia Income Tax Return of a Resident Natural Person (Form A / Vorm A)
Vorm A / Form A, 'Residendist füüsilise isiku tuludeklaratsioon' (Income tax return of a resident natural person), the annual individual income tax return an Estonian tax resident files with the Maksu- ja Tolliamet (Estonian Tax and Customs Board, EMTA) declaring the previous calendar year's income. The 2025-tax-year edition (filed 16 February - 30 April 2026) is a genuine, current, directly downloadable, unauthenticated, bilingual (Estonian/English) PDF with no AcroForm layer (confirmed via pdfjs-dist returning zero Widget annotations across all 12 pages) but fully self-documenting numbered sections. This document models the common wage-earner case only: general personal data (Section 1.1), residential address (Section 3), contact details (Section 4), one representative domestic wage-income row from the table of income already taxed at source (Section 5.1, Part I), one representative gift/donation entry (Section 9.4) and one representative paid-training-expense entry (Section 9.6) among the return's voluntary deductions, the domestic bank account nominated for an overpayment refund (Section 11), and the closing declaration (Section 14). It deliberately does NOT model: EEA cross-border resident provisions (Section 2); wage/salary income not yet taxed at source (Section 5.1, Part II) or any of the other Section 5 income-source tables (mandatory/supplementary funded pension and PEPP contracts, unit-linked life insurance, rent/royalty income, income in an association of persons); gains from the transfer of property, including financial assets, forest cutting rights, other property, holding reductions, investment accounts, and company-merger property income (Section 6); income counted only for calculating the basic exemption (Section 7); any foreign-sourced income (Section 8); the remaining voluntary-deduction tables (unemployment insurance and mandatory funded pension contributions, supplementary funded pension/PEPP contributions, foreign social security contributions, and the training-expense transfer to a spouse) (Sections 9.1-9.3, 9.5, 10); refund to a foreign bank account (Section 12); the overpayment-use election (Section 13); and the taxpayer's-representative sub-block (Section 14.2). Every table this document does model is inherently repeatable on the live form (multiple payers, multiple gifts, multiple training-expense claims); this v1.0.0 bounds each to a single representative instance, consistent with this registry's established convention for repeating structures pending a composite/repeating-value construct (see e.g. gb/companies-house/company-incorporation-in01, ph/bir/tin-application-corporations-partnerships). GovSchema is independent and is not affiliated with, endorsed by, or operated by the Government of Estonia or the Maksu- ja Tolliamet.
Registry entry
ee/emta/income-tax-return-form-a
Machine access
- Schema document
registry/ee/emta/income-tax-return-form-a/1.0.0/schema.jsonapplication/schema+json- Verification record
registry/ee/emta/income-tax-return-form-a/1.0.0/VERIFICATION.mdtext/markdown- Registry catalog
registry/index.jsonone record per schema id
Field reference
28 fields, read from the published schema.json, with names, types, requiredness, and validation as the document states them. The live government form remains the authoritative source.
Fields
-
taxYearinteger requiredThe calendar tax year this return declares income for. The form's own header prints two blank year fields ('...aasta kuni / year until ... aasta / year') to accommodate a taxable period shorter than a full calendar year (e.g. arrival in or departure from Estonia mid-year); this document models the common full-calendar-year case as a single value, per this registry's convention of collapsing a near-duplicate representation of the same information (see e.g. pl/mf/zeznanie-pit-37's split day/month/year date-box simplification).
range: 2000–2100 -
firstNamestring requiredThe taxpayer's first name.
classification: pii -
surnamestring requiredThe taxpayer's surname.
classification: pii -
personalIdCodestring requiredThe taxpayer's Estonian personal identification code (isikukood), an 11-digit number.
patternclassification: sensitive-pii -
residentialAddressstring requiredThe taxpayer's permanent or main place of residence at the time of submission of the tax return. The form prints this as a single free-text line, not separate street/house/city boxes.
classification: pii -
residenceCountrystring requiredCountry of the taxpayer's residential address.
classification: pii -
contactPhonestringOptional landline telephone number to help the tax authority reach the taxpayer about this return.
classification: pii -
contactMobilePhonestringOptional mobile telephone number to help the tax authority reach the taxpayer about this return.
classification: pii -
contactEmailstringOptional email address to help the tax authority reach the taxpayer about this return.
patternclassification: pii -
wagesPayerRegistryOrPersonalCodestringThe registry code (for a company) or personal ID code (for a natural-person payer) of the payer of the wages/salary declared in wagesIncomeAmount. The live table (Section 5.1, Part I) is repeatable across multiple payers; this document models one representative payer row, consistent with this registry's established convention for repeating structures (see schema-level description).
-
wagesPayerNamestringName of the payer of the wages/salary declared in wagesIncomeAmount.
-
wagesIncomeTypestringThe payer's declared income-type classification for this payment (e.g. wages, holiday pay, or another code from EMTA's payroll-reporting income-type list). The live form does not print the underlying code list on its own pages; this document captures the value as declared rather than fabricating an enum.
-
wagesIncomeAmountnumberGross wage/salary income received from this payer during the tax year, on which income tax has already been withheld.
range: 0–∞classification: financial -
wagesWithheldIncomeTaxnumberIncome tax already withheld and remitted by this payer during the tax year.
range: 0–∞classification: financial -
wagesPensionInvestmentAccountIncomebooleanWhether this wage payment was received into the taxpayer's pension investment account rather than an ordinary account.
-
giftDonationRecipientNamestringName of the recipient of a gift or donation the taxpayer made during the tax year. The live table (Section 9.4) is repeatable across multiple recipients; this document models one representative entry.
-
giftDonationRecipientRegistryCodestringRegistry code of the recipient organization, when the recipient is a registered legal entity (e.g. a non-profit association eligible for the deduction).
-
giftDonationRecipientCountrystringCountry where the gift/donation recipient is located.
-
giftDonationAmountnumberThe amount of the gift or donation made to this recipient during the tax year.
range: 0–∞classification: financial -
traineePersonalIdCodestringEstonian personal ID code of the person the training expense was paid for (the taxpayer or, e.g., the taxpayer's child). The live table (Section 9.6) is repeatable across multiple trainees/institutions; this document models one representative entry.
classification: sensitive-pii -
traineeFullNamestringFull name of the person the training expense was paid for.
classification: pii -
educationalInstitutionCountrystringCountry where the educational institution is located.
-
educationalInstitutionNameOrCodestringName, registration number, or registry code of the educational institution the training expense was paid to.
-
trainingExpensesPaidAmountnumberThe amount of training expenses paid to this institution during the tax year.
range: 0–∞classification: financial -
refundBankAccountNumberstringAccount number (at an Estonian bank) nominated to receive a refund of overpaid tax. Optional: a taxpayer with no overpayment, or who elects under Section 13 to leave an overpayment against future tax liabilities instead, leaves this absent.
-
refundAccountOwnerFullNamestringFirst and last name of the owner of the nominated refund account, when the account belongs to a third party rather than the taxpayer (per the taxpayer's written application).
classification: pii -
refundAccountOwnerPersonalIdCodestringEstonian personal ID code of the owner of the nominated refund account.
patternclassification: sensitive-pii -
declarationDatedate requiredDate the taxpayer signs the closing declaration.
Verification record
This file is the source-review record for this document version, per the manual-source-review-v1 practice. It documents the provenance of the published fields and states the current verification claim honestly.
Current claim
status:draftverification.method:manual-source-review-v1verification.lastVerifiedAt:2026-07-08
This is a GovSchema Standard Research cycle (GOV-1721), the issue's own named candidate. Estonia stood at 3/6 verticals (National ID via ee/ppa/e-residency-application, Business Formation via ee/rik/private-limited-company-foundation, Passport via ee/ppa/passport-application) going into this cycle. This document closes Taxes to 4/6.
Why this candidate
The issue directly named the source: Vorm A / Form A, Estonia's individual income tax return, at a specific pinned URL (https://www.emta.ee/sites/default/files/documents/2026-02/vorm_a_2025_ee_en.pdf), already confirmed by the issue text to be a genuine, unauthenticated, bilingual PDF with zero AcroForm fields. This cycle's work was to independently re-confirm that claim, extract the form's own field inventory, scope it to the common case per the issue's explicit brief, and author the schema — not to re-screen candidates.
Sources examined
Source 1 (primary source, the form)
- Authority: Maksu- ja Tolliamet (Estonian Tax and Customs Board, EMTA).
- Document: Vorm A / Form A, "Residendist füüsilise isiku tuludeklaratsioon / Income tax return of a resident natural person," 2025 tax year edition (the current version as of this cycle's retrieval date, per emta.ee's own tax-return-forms-and-instructions index, which lists no later version — a 2026-01-dated sibling form,
vorm_a1_est_eng_2025_taidetav.pdf, is a different, pre-filled/"täidetav" variant of the return, not this form). - URL (index page, cited in
source.url): https://www.emta.ee/en/private-client/taxes-and-payment/declaration-income/tax-return-forms-and-instructions — direct, unauthenticated, HTTP 200, server-rendered plain HTML. Confirmed the page's own listing labels this exact file "Form A | Income tax return" under the heading "Tax return forms for resident natural persons." - URL (direct PDF download, cited in
source.documentRef): https://www.emta.ee/sites/default/files/documents/2026-02/vorm_a_2025_ee_en.pdf — directcurl, HTTP 200, no login/CAPTCHA/WAF, 354,710 bytes (346.4 KB per the index page's own listed size), 12 pages. - Retrieved / reviewed: 2026-07-08.
- Extraction method: downloaded directly, then parsed with
pdfjs-dist(legacy/build/pdf.js, loaded viacreateRequiresince this package ships no.mjsentry point for the legacy build — a small variance from the ESMpdf.mjsimport pattern some prior cycles used).page.getAnnotations()returned zero Widget annotations across all 12 pages — confirming the issue's own claim of a static, print/hand-fill template, not a fillable PDF — sopage.getTextContent()was used instead, reading the form's own printed numbered sections (1, 1.1, 2, 2.1-2.4, 3, 4, 5.1-5.5, 6.1-6.6, 7.1-7.3, 8.1-8.9, 9.1-9.6, 10, 10.1-10.3, 11-11.2, 12.1-12.6, 13, 14, 14.1-14.2) and every field's bilingual (Estonian/English) inline label, in full, across all 12 pages. - What it confirms: every field this document models, verbatim, plus the exact closing declaration text used in
documents[].signatureDeclaration(Section 14's confirmation paragraph).
Source 2 (corroboration — filing window, tax rate, and statutory basis)
- URL: https://www.emta.ee/en/private-client/taxes-and-payment/declaration-income/income-tax-returns-2025 — direct, unauthenticated, HTTP 200, server-rendered plain English HTML, retrieved 2026-07-08.
- What it confirms: the 2025-tax-year filing window (16 February - 30 April 2026), the 22% tax rate for this filing year, and — in its own "Legislation" tab — a direct citation of Tulumaksuseadus (Income Tax Act) section 43(4) as the statutory basis for the filing deadline (linked as
riigiteataja.ee/en/eli/ee/521112023001/consolide/current#para43lg4).riigiteataja.eeitself is a fully client-rendered Angular SPA that returns an identical empty shell to an unauthenticated fetch — the same obstacle this registry's prior two EE schemas (ee/rik/private-limited-company-foundation,ee/ppa/passport-application) hit and worked around via Wayback Machine snapshots of the Act's own/tolge/pdf/translation route. This cycle did not repeat that workaround: the statute is cited here only as EMTA's own reference to it (a secondary confirmation of the filing-deadline basis), not independently re-fetched and read section-by-section, since the form itself — not the underlying statute — is this document's primary source and is fully self-documenting (see Source 1). A future version wishing to cite specific Tulumaksuseadus sections for individual deduction/income provisions (e.g. the training-expense or gift/donation reliefs this document models) should apply that same Wayback workaround.
Field inventory (Phase 2)
All 27 fields[] entries and the one documents[] entry, and their exact Vorm A page/section reference, are listed inline in schema.json's own sourceRef per field/document. Summary by section:
| Section | Representative fields | Modelled scope | |---|---|---| | Header | taxYear | Single collapsed value (see judgment call 1) | | §1.1 Personal data | firstName, surname, personalIdCode | Full | | §2 EEA resident provisions | — | Entirely out of scope (issue brief) | | §3 Address | residentialAddress, residenceCountry | Full — form prints one free-text address line, not separate street/house boxes | | §4 Contact | contactPhone, contactMobilePhone, contactEmail | Full | | §5.1 Part I (withheld wages) | payer code/name, income type/amount, withheld tax, pension-investment flag | One representative payer row; Part II (tax not withheld) and §5.2-5.5 out of scope | | §6 Property transfer gains | — | Entirely out of scope (issue brief) | | §7 Basic-exemption-only income | — | Out of scope | | §8 Foreign income | — | Entirely out of scope (issue brief) | | §9.4 Gifts/donations | recipient name/registry code/country, amount | One representative entry | | §9.6 Training expenses | trainee ID/name, institution country/name, paid amount | One representative entry | | §9.1-9.3, 9.5, §10 | — | Out of scope | | §11 Domestic refund account | account number, owner name, owner ID code | Full | | §12 Foreign refund account, §13 overpayment election | — | Out of scope | | §14 Confirmation | declarationDate, documents[].signatureDeclaration | Modelled; §14.2 (taxpayer's representative) out of scope |
Total: 27 fields plus 1 documents[] entry (the closing attestation). No crossFieldValidation rules or exclusivityGroups are modelled.
Access notes and judgment calls
taxYearcollapses the form's own two-blank header ("...aasta kuni / year until ... aasta / year") into a single value. The live form accommodates a taxable period shorter than a full calendar year (e.g. a taxpayer who arrived in or departed from Estonia mid-year) via two separate year blanks; this v1.0.0 models only the common full-calendar-year case as one integer, the same kind of collapsed representationpl/mf/zeznanie-pit-37used for its own split date boxes.- Every table this document models is inherently repeatable on the live form (§5.1 Part I: multiple payers; §9.4: multiple gift/donation recipients; §9.6: multiple trainees/institutions). This v1.0.0 bounds each to a single representative instance, consistent with this registry's established convention for repeating structures (e.g.
gb/companies-house/company-incorporation-in01,ph/bir/tin-application-corporations-partnerships), pending a composite/repeating-value construct in the spec. wagesIncomeTypeis kept as a free string, not an enum. The live form's "Tululiik / Income type" column is populated with a payer-assigned classification code from EMTA's own payroll-reporting system; that code list is not printed on the form's own pages and was not independently sourced this cycle, so this document captures the declared value rather than fabricating an enum.- §5.1's office-only "Maksumäär … (märgib Maksu- ja Tolliamet)" (tax rate, entered by the Estonian Tax and Customs Board) column is excluded, the same class of exclusion this registry applies elsewhere to clerk/office-only fields (e.g.
pl/mswia/wniosek-o-wydanie-dowodu-osobistego's "Adnotacje urzędowe" block). refundBankAccountNumberand its owner fields are optional, not required. §11 only applies to a taxpayer who has an overpayment and elects a refund to a domestic account; a taxpayer with no overpayment, or who elects under §13 (out of scope for v1.0.0) to leave an overpayment against future liabilities, leaves this section blank. This document does not model arequiredWhengate tying refund fields to an overpayment amount, since the arithmetic chain that would produce that amount (§5 income totals, §9 deduction totals) is itself out of scope.personalIdCode(isikukood) uses the generic 11-digit pattern^[0-9]{11}$, matching the pattern this registry's other EE schemas already use (ee/ppa/e-residency-application,ee/rik/private-limited-company-foundation), rather than a stricter century-digit-aware pattern.- §2 (EEA cross-border resident provisions), §6 (property-transfer gains, all six subsections), §8 (all foreign-sourced income, nine subsections), forestry income, and business-merger income are entirely out of scope for v1.0.0, per the issue's explicit brief. §7 (income counted only for the basic-exemption calculation), the remaining §9 deduction tables (unemployment insurance/mandatory funded pension, supplementary funded pension/PEPP, foreign social security, training-expense transfer to a spouse), §10, §12 (foreign refund account), §13 (overpayment-use election), and §14.2 (taxpayer's representative) are also out of scope, consistent with the "common wage-earner case only" framing.
Test run (Phase 3)
No live submission was attempted: Estonia's income tax return is filed either through the authenticated e-MTA self-service portal (requiring a real trusted digital identity — ID-card, Mobile-ID, or Smart-ID) or on paper by post/in person — submitting fabricated taxpayer data against Estonia's live tax administration is not a safe or reversible action.
Instead, one fully hand-constructed mock record was built from this document's own field inventory (an employed Tallinn resident filing individually, one employer's withheld wages, a donation to a registered charity, one paid training-expense claim, and a domestic refund account) and validated with a purpose-written script (reused from a prior cycle's pl/mf/zeznanie-pit-37 review, /tmp/validate_instance.mjs) that compiles schema.json's own fields[] (type/validation/required) into a JSON Schema draft 2020-12 document and checks it with ajv, plus a small hand-rolled evaluator for requiredWhen leaf conditions (unused by this document, since no field uses requiredWhen):
``` $ node validate_instance.mjs registry/ee/emta/income-tax-return-form-a/1.0.0/schema.json mock_vorm_a.json Static (required/type/pattern/enum) validation: PASS requiredWhen conditional validation: PASS
OVERALL: PASS ```
Negative controls, run against the same script to confirm it actually catches violations rather than passing vacuously:
``` $ # personalIdCode shortened to "123" — violates the 11-digit pattern Static (required/type/pattern/enum) validation: FAIL - must match pattern "^[0-9]{11}$"
$ # surname removed — violates required: true Static (required/type/pattern/enum) validation: FAIL - must have required property 'surname' ```
Both meta-schema validators were run against the finished document and pass clean:
``` $ node tools/validate.mjs registry/ee/emta/income-tax-return-form-a/1.0.0/schema.json ok registry/ee/emta/income-tax-return-form-a/1.0.0/schema.json
1/1 document(s) passed.
$ node tools/validate-ajv.mjs registry/ee/emta/income-tax-return-form-a/1.0.0/schema.json ok registry/ee/emta/income-tax-return-form-a/1.0.0/schema.json [v0.3]
1/1 document(s) validated against the meta-schema (ajv 2020-12). ```
View the raw record (VERIFICATION.md)
Version history
-
1.0.0draftlatestthis pagehas verification recordschema.json
Independent and non-affiliated
GovSchema is an independent, open-source project. This reference is not produced, reviewed, or endorsed by Maksu- ja Tolliamet (Estonian Tax and Customs Board) or any government. The authoritative source is always the live government form and its official instructions.