Registry entry

Bulgaria — Annual Tax Declaration under Article 50 of the Personal Income Tax Act (Обр. 2001)

The Национална агенция за приходите's (NRA, Bulgaria's National Revenue Agency) "Годишна данъчна декларация по чл. 50 от Закона за данъците върху доходите на физическите лица" (Annual tax declaration under Art. 50 of the Personal Income Tax Act, ZDDFL), internally numbered Образец/Обр. 2001 (Form 2001) — the annual combined income-tax self-assessment return Bulgarian resident and non-resident individuals file, distributed as a free unauthenticated download from NRA's own static document host as part of a ZIP bundle of the current tax year's declaration and its numbered annexes. Adds a second schema to Bulgaria's Taxes vertical (Bulgaria's 51st-jurisdiction opening is carried by the sibling schema bg/nra/deklaratsiya-za-registratsiya-na-samoosiguryavashto-se-litse, authored the same cycle). The source is a Microsoft Word (.doc) template, not an AcroForm PDF — NRA distributes this and its sibling annexes only as editable Word documents (confirmed: no PDF edition of Обр. 2001 could be found on nra.bg or any cross-checked mirror this cycle). Обр. 2001 is the omnibus "root" declaration: every individual taxpayer files this one document, checking off which of 13 numbered Приложения (annexes, each its own separate form covering one income category — employment, sole-trader/business, rental, capital gains, foreign assets, tax reliefs, loans, etc.) accompany it, and (for taxpayers who have any such annexes) copying selected annex totals into this root form's own Част IV (Part IV) tax-computation worksheet. This v1.0.0 models the complete Обр. 2001 root document only — Part I (taxpayer identification), Part II (authorized-proxy/legal-representative identification, gated on the source's own "filed by representative" condition), Part III (the 18-row checklist of which annexes/attachments accompany the declaration), Part IV (the root-level annual tax computation on the total annual tax base, rows/codes 4001-4012 and their 40121/40122/40123/401241-401245 sub-rows for refund vs. offset elections of any overpaid tax), Part V (the cross-border tax-scheme disclosure under DOPK Art. 143ya), and the declaration/signature block. It deliberately excludes, as a disclosed backlog item rather than a silent gap, the field-by-field content of every numbered Приложение (Annex) 1 through 13 and the several companion declarations/references listed in Part III (Обр. 2004 insurable-income references, Обр. 2005/2006 child-tax-relief declarations, the annual activity report) — each is its own separate NRA form and a natural candidate for a future, separately-versioned companion schema, exactly as this registry treats other jurisdictions' annex/schedule forms (e.g. ch/zh's Hilfsblatt series). Обр. 2001в, a structurally similar but distinct variant of this same form for declaring the income of a deceased person (filed by an heir or legatee), is also out of scope for this v1.0.0. GovSchema is an independent, non-profit standards body and is not affiliated with, endorsed by, or operated by the Government of Bulgaria or the Национална агенция за приходите.

Registry entry

bg/nra/godishna-danachna-deklaratsiya-chl-50-zddfl

Jurisdiction
Bulgaria · national
Version
1.0.0
Verification
draft

Authoritative source NRA ZIP bundle "Декларация по чл. 50 за 2025 г. всички приложения" (published 2025-12-29 per the NRA documents page), inner file "образец 2001-1.doc" (Обр. 2001, the root declaration this schema models)

Machine access

Registry catalog
registry/index.jsonone record per schema id

Field reference

86 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

  • taxYear string required

    The 4-digit tax year this annual declaration covers (the year the declared income was acquired).

    pattern
  • correctionAfterDeadline boolean optional

    Whether this filing is a one-time correction made after the statutory filing deadline, on the grounds of Art. 53(2) of the Personal Income Tax Act (a taxpayer may correct a previously filed declaration once, by the following September 30, after discovering an error).

  • taxpayerId string required

    The taxpayer's identification number: EGN (Bulgarian personal number), LN (personal number of a foreigner), LNCh (personal number of a foreigner), an NRA-issued service number, or the BULSTAT/EIK of a foreign natural person, per the code selected in taxpayerIdTypeCode.

    patternclassification: sensitive-pii
  • taxpayerIdTypeCode enum required

    The code identifying which kind of number was entered in taxpayerId: 1=EGN, 2=LN, 3=LNCh, 4=NRA-issued service number, 5=EIK of a foreign natural person.

    enum: 1 | 2 | 3 | 4 | 5
  • firstName string required

    The taxpayer's given name.

    classification: pii
  • middleName string optional

    The taxpayer's patronymic (father's-name), a standard element of a Bulgarian full name.

    classification: pii
  • lastName string required

    The taxpayer's family name.

    classification: pii
  • correspondenceOblast string optional

    The province (oblast) of the taxpayer's correspondence address. Correspondence-address fields (point 4) are completed only when the correspondence address differs from the taxpayer's permanent address on file with NRA.

    classification: pii
  • correspondenceObshtina string optional

    The municipality (obshtina) of the taxpayer's correspondence address. Correspondence-address fields (point 4) are completed only when the correspondence address differs from the taxpayer's permanent address on file with NRA.

    classification: pii
  • correspondenceSettlement string optional

    The city/town/village of the taxpayer's correspondence address. Correspondence-address fields (point 4) are completed only when the correspondence address differs from the taxpayer's permanent address on file with NRA.

    classification: pii
  • correspondencePostalCode string optional

    The postal code of the taxpayer's correspondence address. Correspondence-address fields (point 4) are completed only when the correspondence address differs from the taxpayer's permanent address on file with NRA.

    classification: pii
  • correspondenceStreet string optional

    The street, number, complex, building, entrance, and apartment of the taxpayer's correspondence address. Correspondence-address fields (point 4) are completed only when the correspondence address differs from the taxpayer's permanent address on file with NRA.

    classification: pii
  • phone string optional

    The taxpayer's telephone number. Optional per the form's own instructions.

    classification: pii
  • email string optional

    The taxpayer's email address. Optional per the form's own instructions.

    classification: pii
  • isNonResident boolean required

    Whether the taxpayer is a foreign person (non-resident) rather than a local (resident) person for Bulgarian tax purposes. The source prints "6. Местно лице" (local/resident) and "7. Чуждестранно лице" (foreign/non-resident) as two adjoining checkboxes for one binary choice; modeled as a single boolean, consistent with this registry's precedent (e.g. ro/anaf's "nonResident").

  • selfInsuredPerson boolean optional

    Whether the taxpayer was a self-insured person under the Social Insurance Code (KSO) for all or part of the tax year. Self-insured persons must file this declaration electronically only (see VERIFICATION.md).

  • healthInsuredUnderArt40Para5 boolean optional

    Whether the taxpayer, not being a self-insured person under point 8, was health-insured under Art. 40(5) of the Health Insurance Act for all or part of the tax year.

  • personSubjectToArt51Para1 boolean optional

    Whether the declarant is a person who, under Art. 51(1) of the Personal Income Tax Act, must also submit an annual activity report together with this declaration (traders under the Commerce Act, including sole traders, and registered farmers under Art. 29a).

  • foreignAddressCountry string optional

    The country of the taxpayer's foreign address. Completed only when the taxpayer is a foreign person (isNonResident = true).

    classification: pii
  • foreignAddressSettlement string optional

    The city/town of the taxpayer's foreign address.

    classification: pii
  • foreignAddressStreet string optional

    The street and number of the taxpayer's foreign address.

    classification: pii
  • filedByRepresentative boolean optional

    Whether this declaration is filed by an authorized proxy or legal representative rather than directly by the taxpayer, covering any of three conditions the source states as its own gate for completing Part II: (1) the declarant is a foreign natural person and the declaration is filed through a proxy with a permanent address in Bulgaria; (2) the declarant is a minor, a person under 18, or a person placed under judicial disability, and the declaration is filed by their legal representative; or (3) the declaration is filed through a general power-of-attorney holder. The source prints each condition as its own explanatory note tied to an unlabeled checkbox glyph that this cycle's plain-text extraction of the underlying .doc could not individually resolve (symbol-font checkbox glyphs do not survive text extraction) — collapsed into one boolean gating Part II, per the source's own instructions text ("Част ІІ се попълва само ако е отбелязано съответното обстоятелство..."). Disclosed as a known extraction limitation in VERIFICATION.md.

  • representativeId string optional

    The identification number of the authorized proxy or legal representative filing on the taxpayer's behalf.

    classification: sensitive-pii
  • representativeIdTypeCode enum optional

    The code identifying which kind of number was entered in representativeId: 1=EGN, 2=LN, 3=LNCh, 4=NRA-issued service number, 5=EIK of a foreign natural person.

    enum: 1 | 2 | 3 | 4 | 5
  • representativeFirstName string optional

    The given name of the authorized proxy or legal representative.

    classification: pii
  • representativeMiddleName string optional

    The patronymic of the authorized proxy or legal representative.

    classification: pii
  • representativeLastName string optional

    The family name of the authorized proxy or legal representative.

    classification: pii
  • representativeOblast string optional

    The province (oblast) of the representative's correspondence address, when different from their permanent address.

    classification: pii
  • representativeObshtina string optional

    The municipality of the representative's correspondence address.

    classification: pii
  • representativeSettlement string optional

    The city/town/village of the representative's correspondence address.

    classification: pii
  • representativePostalCode string optional

    The postal code of the representative's correspondence address.

    classification: pii
  • representativeStreet string optional

    The street/number/complex/building/entrance/apartment of the representative's correspondence address.

    classification: pii
  • representativePhone string optional

    The representative's telephone number. Optional per the form's own instructions.

    classification: pii
  • representativeEmail string optional

    The representative's email address. Optional per the form's own instructions.

    classification: pii
  • hasAnnex1Employment boolean optional

    Whether Приложение № 1 (Annex 1, income from employment relationships) accompanies this declaration.

  • hasAnnex2SoleTrader boolean optional

    Whether Приложение № 2 (Annex 2, income from business activity as a sole trader, and income under Art. 29a) accompanies this declaration.

  • hasAnnex3OtherBusiness boolean optional

    Whether Приложение № 3 (Annex 3, income from other business activity) accompanies this declaration.

  • hasAnnex4Rental boolean optional

    Whether Приложение № 4 (Annex 4, rental income or other paid use of rights/property) accompanies this declaration.

  • hasAnnex5TransferOfRights boolean optional

    Whether Приложение № 5 (Annex 5, income from transfer of rights or property) accompanies this declaration.

  • hasAnnex6OtherSources boolean optional

    Whether Приложение № 6 (Annex 6, income from other sources under Art. 35) accompanies this declaration.

  • hasAnnex7PatentTax boolean optional

    Whether Приложение № 7 (Annex 7, income subject to patent tax and/or taxi-transport tax) accompanies this declaration.

  • hasAnnex8ForeignAssets boolean optional

    Whether Приложение № 8 (Annex 8, foreign shares/holdings/permanent establishment/real estate, and final tax on foreign-source dividends/liquidation shares/certain other income) accompanies this declaration.

  • hasAnnex9DoubleTaxationRelief boolean optional

    Whether Приложение № 9 (Annex 9, application of double-taxation relief methods for income declared in Annexes 1-6) accompanies this declaration.

  • hasAnnex10TaxReliefs boolean optional

    Whether Приложение № 10 (Annex 10, use of tax reliefs) accompanies this declaration.

  • hasAnnex11Loans boolean optional

    Whether Приложение № 11 (Annex 11, cash loans given/received) accompanies this declaration.

  • hasAnnex12FinalTaxRecalculation boolean optional

    Whether Приложение № 12 (Annex 12, recalculation of final tax on Art. 37 income of foreign natural persons) accompanies this declaration.

  • hasAnnex13ExemptAndFinalTaxIncome boolean optional

    Whether Приложение № 13 (Annex 13, non-taxable income, income taxed with final tax under Art. 38 other than Annex 8's, alternative chapter-VIIa tax, and inherited/bequeathed/gifted property) accompanies this declaration.

  • hasIncomeCertCurrentYear boolean optional

    Whether a reference/statement of the final amount of insurable income for the current year (Обр. 2004) accompanies this declaration.

  • hasIncomeCertPastYears boolean optional

    Whether one or more references/statements of the final amount of insurable income for past years (Обр. 2004) accompany this declaration.

  • pastYearsReferenceYears string optional

    The year, or years, that the past-years insurable-income reference(s) in row 14.2 relate to.

  • hasChildTaxReliefDeclaration boolean optional

    Whether a declaration for the child tax relief under Art. 22c(8) (Обр. 2005) accompanies this declaration.

  • hasDisabledChildTaxReliefDeclaration boolean optional

    Whether a declaration for the tax relief for children with disabilities under Art. 22d(7) (Обр. 2006) accompanies this declaration.

  • hasAnnualActivityReport boolean optional

    Whether an annual activity report (per Art. 20(4) of the Accounting Act) accompanies this declaration. Required only of persons who conducted business as traders (incl. sole traders) or as registered farmers under Art. 29a; not filed by persons with no accounting-law activity during the tax year.

  • annualActivityReportReferenceNumber string optional

    The incoming reference number and date under which the annual activity report was filed.

  • otherDocumentsCount integer optional

    The total count of other documents or copies attached to the declaration under the Personal Income Tax Act (e.g. proof of patent tax paid, proof of foreign tax/social-security contributions paid for double-taxation relief, supplementary-row lists).

    range: 0–∞
  • sumOfAnnualTaxBasesArt17 number optional

    Row 1 (code 4001): the sum of the annual tax bases under Art. 17, aggregated from Annexes 1, 3, 4, 5 and 6 (each out of scope for this v1.0.0 — see VERIFICATION.md).

    range: 0–∞classification: financial
  • totalTaxReliefDeductions number optional

    Row 2 (code 4002): the total amount of tax reliefs the taxpayer is entitled to deduct, taken from Annex 10 (out of scope for this v1.0.0).

    range: 0–∞classification: financial
  • overallAnnualTaxBase number optional

    Row 3 (code 4003): the overall annual tax base, row 1 minus row 2. A negative result is entered as zero.

    classification: financial
  • taxOnOverallAnnualTaxBase number optional

    Row 4 (code 4004): the tax on the overall annual tax base, row 3 times the 10% flat rate.

    range: 0–∞classification: financial
  • cashlessPaymentsTaxRelief number optional

    Row 5 (code 4005): the relief for cashless payments made during the year (1% of row 4, capped at 500 BGN); completed only when Annex 10 Part X is completed (out of scope for this v1.0.0).

    range: 0–∞classification: financial
  • taxesDeductibleFromOverallTax number optional

    Row 6 (code 4006): taxes deductible from the tax on the overall annual tax base, aggregated from Annexes 1, 3, 4, 6, 9 and 12 (each out of scope for this v1.0.0).

    range: 0–∞classification: financial
  • taxReducedByReliefAndDeductions number optional

    Row 7 (code 4007): the tax on the overall annual tax base after subtracting rows 5 and 6. A negative result is entered with a minus sign.

    classification: financial
  • advanceTaxPaidDuringYear number optional

    Row 8 (code 4008): advance tax the taxpayer personally paid during the year under Art. 43(6) and 44(3).

    range: 0–∞classification: financial
  • taxDueForAdditionalPayment number optional

    Row 9 (code 4009): tax due for additional payment (positive difference of row 7 minus row 8).

    range: 0–∞classification: financial
  • earlyElectronicFilingDiscount number optional

    Row 10 (code 4010): a 5%-of-row-9 discount (capped at 500 BGN), available to taxpayers who file electronically by 31 March of the following year with no enforceable public obligations outstanding.

    range: 0–∞classification: financial
  • taxDueAfterDiscount number optional

    Row 11 (code 4011): tax due for additional payment after the discount, rounded to the nearest whole lev.

    range: 0–∞classification: financial
  • overpaidTax number optional

    Row 12 (code 4012): overpaid tax, rounded to the nearest whole lev.

    range: 0–∞classification: financial
  • refundUnderArt128To130 boolean optional

    Row 12.1 (code 40121): whether the taxpayer elects to have the overpaid tax on row 12 refunded under Art. 128-130 of the Tax and Social Insurance Procedure Code (DOPK).

  • refundBankName string optional

    The bank to which the refund under row 12.1 should be transferred.

    classification: financial
  • refundBankBic string optional

    The BIC of the bank to which the refund under row 12.1 should be transferred.

    classification: financial
  • refundBankIban string optional

    The IBAN of the account to which the refund under row 12.1 should be transferred.

    classification: financial
  • refundAccountHolderEgn string optional

    The EGN of the holder of the refund account.

    classification: sensitive-pii
  • refundAccountHolderName string optional

    The name of the holder of the refund account.

    classification: pii
  • offsetOverpaidTaxUnderArt130a boolean optional

    Row 12.2 (code 40122): whether the taxpayer elects to use the overpaid tax on row 12 to offset existing or future public obligations under Art. 130a of DOPK, instead of a direct refund.

  • offsetTotalAmountInEur number optional

    Row 12.3 (code 40123): the total overpaid amount from row 12, converted to euro per the Law on the Introduction of the Euro in the Republic of Bulgaria (ZVERB).

    classification: financial
  • offsetCentralBudgetTaxes number optional

    Row 12.4.1 (code 401241): the portion of the overpaid amount (in euro) allocated to central-budget taxes and other revenue.

    classification: financial
  • offsetSocialSecurityDOO number optional

    Row 12.4.2 (code 401242): the portion allocated to State Social Insurance (DOO) contributions.

    classification: financial
  • offsetHealthInsuranceNZOK number optional

    Row 12.4.3 (code 401243): the portion allocated to National Health Insurance Fund (NZOK) contributions.

    classification: financial
  • offsetSupplementaryPensionDZPO number optional

    Row 12.4.4 (code 401244): the portion allocated to supplementary mandatory pension insurance (DZPO) contributions and related penalty interest.

    classification: financial
  • offsetForcedCollectionPublicReceivables number optional

    Row 12.4.5 (code 401245): the portion allocated to publicly-owed receivables under forced collection.

    classification: financial
  • crossBorderTaxSchemeApplied boolean optional

    Whether the taxpayer applied a cross-border tax scheme, within the meaning of Art. 143ya(4) of DOPK, during the tax year. Completed under Art. 143ya3(7) of DOPK by natural persons, including sole traders, who applied such a scheme.

  • crossBorderSchemeNumber1 string optional

    The unique reference number of the first cross-border tax scheme applied during the year.

  • crossBorderSchemeNumber2 string optional

    The unique reference number of a second cross-border tax scheme applied during the year, if any. The source prints exactly two numbered rows for this list.

  • declarationDate date required

    The date the declaration is signed.

  • taxpayerSignature string required

    The taxpayer's name, standing in for their physical signature, attesting the declaration.

    classification: pii
  • representativeSignature string optional

    The authorized representative's or legal representative's name, standing in for their physical signature, when the declaration is filed on the taxpayer's behalf.

    classification: pii

Verification record

This file is the source-review record for this document version, per the manual-source-review-v1 practice.

Current claim

  • status: draft
  • verification.method: manual-source-review-v1
  • verification.lastVerifiedAt: 2026-07-14
  • maturity.level: structural-reference

This is GovSchema Standard Research cycle GOV-2821. This schema adds a second schema to Bulgaria's Taxes vertical.

Duplicate-concurrent-run note, added after this schema was first authored: a separate, independent execution of the same authoring run also produced a schema for GOV-2821 — bg/nra/deklaratsiya-za-registratsiya-na-samoosiguryavashto-se-litse (NRA Form ОКД-5, self-employed-person registration), merged first as PR #466 — before this schema (PR #467) was aware of it. Per this registry's established duplicate-concurrent-run reconciliation practice, the two are kept as separate, non-overlapping schemas rather than one being discarded, since they model genuinely different NRA forms and the registry does not cap one schema per vertical per jurisdiction. #466 carries the "opens Bulgaria (51st jurisdiction)" claim in CATALOG.md; this document is presented as an addition to the Taxes vertical it already opened. See CATALOG.md's Executive Summary for both updates.

Jurisdiction/vertical screening this cycle

The cycle's own primary lead — NRA's "Декларация за регистрация на самоосигуряващо се лице" (self-employed-person registration declaration, Business Formation) — was screened first. The direct nra.bg content page for it (https://nra.bg/wps/portal/nra/documents/insurance/naredba.obshtestveno.osiguryavane.morski.litsa/ee0b7711-f4dc-4d2b-ac21-3e6366c4eedd) is a WebSphere Portal navigation shell with no fillable-document attachment of its own (unlike the Taxes lead below, its underlying wcm/connect content page carries no vp-download-attachments block at all) — a genuine dead end for a first-party fetch, not merely hard to navigate. Third-party mirrors (hamixbg.com, trox-bg.com, tera-bg.com) named in this cycle's briefing were not pursued further once the Taxes lead below turned out to be a first-party, unauthenticated, substantially richer source.

The Taxes lead — NRA's annual individual income tax return, Обр. 2001, "Годишна данъчна декларация по чл. 50 от ЗДДФЛ" — was fetched directly from nra.bg's own document page and found to be a strong, genuine, unauthenticated, first-party source (see below), so it was chosen over further-screening DMV (МВР/КАТ), Visa (МВнР), Passport (МВР), and National ID (МВР) leads. National ID was spot-checked anyway (search-only, no fetch) via МВР's own published process description, which states the application "се попълва и разпечатва на гишето" (is filled in and printed at the counter) with civil-registry data auto-populated by staff — a staff-completed, non-independently-fillable source, consistent with this registry's other MVR/counter-service dead ends; not pursued further. DMV, Visa, and Passport were not independently fetched this cycle once the Taxes lead's strength was confirmed — logged as open, unscreened Bulgaria backlog candidates for a future cycle.

Source verification (independently fetched this cycle)

  • Source page: https://nra.bg/wps/portal/nra/documents/documents_priority/0db5e77f-4b35-419e-85ce-99927af497fb ("Годишна данъчна декларация по чл. 50 от ЗДДФЛ") — the WebSphere Portal wrapper page carries no direct href to the attachment in its rendered HTML (confirmed: no .pdf/.doc/.zip href present in the fetched page source); the actual download link was found by fetching the underlying wcm/connect content fragment directly: https://nra.bg/wps/wcm/connect/agency/site/documents/documents_priority/0db5e77f-4b35-419e-85ce-99927af497fb, which renders a vp-download-attachments block with one attachment link.
  • Fetched file: https://nra.bg/wps/wcm/connect/nra.bg25863/cc035cb3-1ede-4600-bd2c-c7d8174b5e1d/Декларация+по+чл.+50+за+2025+г.+всички+приложения.zip?MOD=AJPERES (this schema's source.url, with the CACHEID query parameter dropped: independently re-fetched both with and without it and confirmed byte-identical, so source.url records the shorter, stable form).
    • HTTP 200, Content-Type: application/zip, 638,754 bytes.
    • sha256 (whole ZIP): f68db65db877e5607a3da2c248f076208064eb5915399c6ba5ccb5622a42ead2.
    • Page's own "Дата на публикуване" (publication date): Dec 29, 2025.
    • The ZIP contains the current declaration (образец 2001-1.doc), its deceased-person variant (образец 2001в.doc), and 13 numbered annex/ companion-form .doc/.docx files, plus a nested ZIP of the insurable- income reference (Обр. 2004). Extracted with Python's zipfile module (no unzip binary available in this sandbox).
  • Modeled file: образец 2001-1.doc (Обр. 2001, the root declaration, distinct from образец 2001в.doc — a deceased-person variant this v1.0.0 does not model).
    • sha256: 036d08164ba52cc0c1259bdf087663170d21c1dd620bc101c59c3b225294886e.
    • 303,616 bytes.

Extraction method — no PDF/AcroForm technique applies to this source

NRA distributes Обр. 2001 and every sibling annex only as Microsoft Word .doc/.docx files, not as an AcroForm PDF (independently confirmed: no PDF edition was found on nra.bg itself or on any of several third-party accounting-site mirrors turned up by search, e.g. tita.bg, schetovodnakantoravarna.com — all of which also serve .doc). The pdfjs-dist/render-and-widget-correlation technique this registry uses for scanned/AcroForm PDFs therefore does not apply here; there is no pdftotext, antiword, catdoc, LibreOffice/soffice, or Python python-docx in this sandbox to lean on either. Text was extracted with the npm package word-extractor@1.0.4 (installed standalone in a scratch directory, not committed), which parses the legacy OLE/Compound-File .doc binary format directly:

`` $ node extract.js "образец 2001-1.doc" > obr2001-1.txt ``

A material, disclosed extraction limitation: .doc's printed checkbox glyphs are rendered from a symbol font (e.g. Wingdings), and word-extractor (like every other text-only .doc reader available in this sandbox) does not render symbol-font glyphs — they extract as blank/whitespace, while the surrounding label text survives. This was directly observable for the declaration's own checkbox items (e.g. "6. Местно лице >>", "7. Чуждестранно лице >>" — the >> mark for these two is itself literal cross-reference notation printed in the template, distinct from the actual checkbox glyph which is invisible in extraction) and, more materially, for three explanatory notes describing when Part II (authorized-proxy/legal-representative identification) must be completed — the source text makes clear these are three real, distinct conditions ("деклараторът е чуждестранно физическо лице и декларацията се подава чрез пълномощник с постоянен адрес в страната"; "деклараторът е малолетно, непълнолетно или поставено под запрещение..."; "декларацията се подава от пълномощник"), each presumably tied to its own checkbox glyph somewhere in the header area, but the exact per-condition label/position of each checkbox could not be independently confirmed from plain-text extraction alone, and no PDF/rasterizable edition of this specific .doc could be produced in this sandbox (no LibreOffice/soffice available) to visually cross-check. Modeling decision, disclosed rather than guessed away: collapsed the three conditions into a single boolean, filedByRepresentative, gating Part II's own required fields — see schema.json's own field description for the verbatim disclosure. This is the one place in this schema where the field-level structure is inferred from the instructions text rather than directly read off an unambiguous per-widget position, and it is called out here for a future reviewer with LibreOffice/an equivalent rasterizer available to confirm or refine.

Everything else in the document — every numbered Part I/II/III/IV/V item, every printed footnote, every row code (4001-4012, 40121-401245) — was mapped directly from the extracted text, which preserves the original table-cell tab-separation cleanly enough to reconstruct the row/column structure by inspection (repr()-level inspection of raw lines, not just a visual dump, to confirm tab boundaries where the printed layout was ambiguous).

Field derivation, by form part

  • Part I — Данни за данъчно задълженото лице (taxpayer identification). Tax year; a one-time-correction-after-deadline flag (Art. 53(2)); the taxpayer's ID number + a 5-value ID-type code (EGN/LN/LNCh/NRA service number/EIK); name (given/patronymic/family); an optional correspondence address (5 sub-fields, printed as applicable "only when different from the permanent address" already on file); optional phone/email; a resident/ non-resident boolean (the source's own items 6 "Местно лице" and 7 "Чуждестранно лице" collapsed into one boolean, consistent with this registry's ro/anaf nonResident precedent); self-insured-person, Art. 40(5)-health-insured, and Art. 51(1)-activity-report-obligated booleans (items 8-10); a foreign address (items 11.1-11.3, requiredWhen isNonResident); and the collapsed filedByRepresentative flag (see extraction-limitation note above).
  • Part II — Данни за упълномощеното лице или законния представител (representative identification). Mirrors Part I's identification block (ID/ID-type/name/address/contact) for the proxy or legal representative; the four core identity fields are requiredWhen filedByRepresentative.
  • Part III — Приложения към декларацията (attachment checklist, 18 rows). Modeled as one boolean per printed row: 13 numbered annexes (Приложения № 1-13, each a full companion NRA form this v1.0.0 does not itself model — see Scoping below), a current-year and a past-years insurable-income-reference flag (row 14.1/14.2, the latter with its own pastYearsReferenceYears free-text field for the year(s) it covers), two child-tax-relief companion-declaration flags (rows 15-16), an annual-activity-report flag with its own reference-number field (row 17, requiredWhen on the flag), and a count of other attached documents (row 18, integer, minimum: 0).
  • Part IV — Изчисляване на данъка върху общата годишна данъчна основа (root tax computation). The 12 numbered worksheet rows (codes 4001-4012: aggregate annual tax base, total tax reliefs, overall tax base, tax due, cashless-payment relief, deductible taxes, net tax due, advance tax paid, tax due for additional payment, early-e-filing discount, final tax due, overpaid tax); a refund-under-DOPK-Art.128-130 flag (40121) with its own bank-details/account-holder sub-block, each requiredWhen that flag; and an offset-under-DOPK-Art.130a flag (40122) with its own EUR-conversion total (40123) and 5-way allocation breakdown (401241-401245, central-budget taxes / DOO pension contributions / NZOK health contributions / DZPO supplementary-pension contributions / forced collection of public receivables), each requiredWhen that second flag.
  • Part V — Информация за трансгранични данъчни схеми (cross-border tax scheme disclosure, DOPK Art. 143ya3(7)). A boolean flag plus exactly the 2 numbered scheme-reference-number rows the source itself prints (modeled as a bounded pair, crossBorderSchemeNumber1/2, per this registry's bounded-repeating-group convention — not an unbounded list).
  • Signature block. Declaration date; the taxpayer's signature (name standing in for a physical signature, per this registry's ro/anaf/ ro/dgpci precedent); the representative's signature, requiredWhen filedByRepresentative.

86 fields[] entries in total, plus 1 documents[] entry (the verbatim criminal-liability attestation printed above the signature block: "За деклариране на неверни данни се носи наказателна отговорност по Наказателния кодекс.").

Scoping and modeling judgment calls

  • Models the root declaration (Обр. 2001) only — no annex content. Обр. 2001 is an omnibus "root" form: every individual files this one document and checks off which of 13 numbered Приложения (each its own separate NRA form, covering one income category — employment, sole-trader business, rental, capital transfers, foreign assets, tax reliefs, loans, etc.) accompany it. This v1.0.0 models only the root document's own 86 fields (identification, the attachment checklist itself, the root-level tax computation, and the cross-border-scheme/signature blocks) — not the field-by-field content of any annex. This mirrors this registry's existing precedent for other jurisdictions with a root-form-plus-annexes structure (e.g. ch/zh's Hilfsblatt series, ro/anaf's own Anexa companion forms): each annex is a natural candidate for its own, separately-versioned companion schema in a future cycle, disclosed here rather than silently dropped.
  • образец 2001в (deceased-person variant) is a different document, out of scope. Fetched and diffed against образец 2001-1.doc this cycle to confirm it is a structurally distinct form (its own Part I is "Данни за декларатора," with an heir/legatee selector absent from the standard declaration) rather than a mere cosmetic variant — genuinely a separate schema candidate, not this v1.0.0's concern.
  • Part IV's worksheet rows modeled required: false, not excluded. Every row 1-12 formula explicitly aggregates figures from one or more of the out-of-scope annexes (e.g. row 1's own printed formula references Annexes 1, 3, 4, 5, 6). Since this v1.0.0 does not model those annexes, a filer with no annexes attached would leave most of Part IV blank/zero; rather than silently drop these rows, they are kept as ordinary optional number fields with the source's own formula quoted in description, consistent with this registry's ro/anaf precedent of disclosing a printed footnote/formula rather than omitting the row it belongs to.
  • The three Part-II-triggering conditions collapsed to one boolean. See the Extraction method section above — a disclosed, not invented, gate.
  • Resident/non-resident collapsed to one boolean (isNonResident). The source prints "6. Местно лице" and "7. Чуждестранно лице" as two adjoining checkboxes for what is, on its own terms, a single binary choice; modeled as one boolean per this registry's ro/anaf nonResident precedent, rather than two independent (and redundant) booleans.
  • Comb-style/free-text ID fields kept as unconstrained or loosely patterned strings. Unlike Romania's fixed-width CNP/CAEN comb boxes, taxpayerId covers five structurally different identifier types (EGN, LN, LNCh, an NRA service number, or a foreign EIK) selected via taxpayerIdTypeCode, so it is modeled as a loosely bounded alphanumeric string (^[0-9A-Za-z]{1,15}$) rather than a single fixed-digit pattern — a deliberately looser constraint than this registry's usual practice for a single-format national ID, disclosed here rather than silently over-constrained to the EGN's own 10-digit shape.
  • No edition axis used, despite being an annual filing. Consistent with this registry's ro/anaf/jo/istd precedent for other annual personal-tax returns, the tax year is modeled as an ordinary taxYear field rather than a path-level edition.

Conformance run

No PDF/AcroForm widget-count cross-check applies (see Extraction method). In its place, two hand-authored mock instances were built and checked against schema.json's own required/requiredWhen/validation.pattern/ validation.enum/validation.minimum grammar with a disposable, from-scratch Python checker (not committed, per this registry's own established practice of not committing one-off verification scripts):

  • standard-resident-filer — a resident individual, non-amending filing, Annex 1 (employment income) attached, self-insured/Art.40(5)/Art.51(1) all false, no representative, no refund/offset election, no cross-border scheme. 47 of 86 fields populated. PASS.
  • nonresident-via-representative-with-refund — a non-resident filer (exercising foreignAddressCountry/foreignAddressSettlement/ foreignAddressStreet), a one-time post-deadline correction, filed through a representative (exercising the full Part II block and representativeSignature), Annex 4 (rental income) and a past-years insurable-income reference attached, an overpaid-tax refund election under Art. 128-130 (exercising the full bank-details/account-holder block), and a cross-border tax scheme disclosure. 58 of 86 fields populated. PASS.

Two mutation-control checks confirmed the checker actually enforces the gates rather than passing vacuously: dropping taxpayerId from the first instance, and dropping refundBankIban from the second (with refundUnderArt128To130 still true), each correctly raised exactly the one expected missing-required-field error.

``` $ node tools/validate.mjs registry/bg/nra/godishna-danachna-deklaratsiya-chl-50-zddfl/1.0.0/schema.json ok registry/bg/nra/godishna-danachna-deklaratsiya-chl-50-zddfl/1.0.0/schema.json 1/1 document(s) passed.

$ node tools/validate-ajv.mjs registry/bg/nra/godishna-danachna-deklaratsiya-chl-50-zddfl/1.0.0/schema.json ok registry/bg/nra/godishna-danachna-deklaratsiya-chl-50-zddfl/1.0.0/schema.json [v0.3] 1/1 document(s) validated against the meta-schema (ajv 2020-12). ```

tools/node_modules did not exist in this worktree at the start of this cycle; npm ci --include=dev installed ajv/ajv-formats cleanly with no wipe. word-extractor/pdfjs-dist were installed in an unrelated scratch directory (/tmp/docparse, outside the repo) rather than inside tools/, so this cycle's own extraction tooling could not collide with tools/'s committed dependency set at all.

tools/govschema-client/registry-index.json was regenerated via npm run build-index inside tools/govschema-client/ — see the diff in this PR for the updated jurisdiction/document counts.

Scope and jurisdiction notes

  • Adds a second schema to Bulgaria's Taxes vertical — PR #466 (bg/nra/deklaratsiya-za-registratsiya-na-samoosiguryavashto-se-litse) opened Bulgaria as the registry's 51st jurisdiction and this vertical, and merged first; see the duplicate-concurrent-run note above. DMV, Business Formation, Visa, Passport, and National ID & Civic Documents are all open, unscreened (Business Formation and National ID were screened and found weak/dead-end this cycle — see above) backlog candidates for Bulgaria — DMV, Visa, and Passport not independently fetched this cycle.
  • jurisdiction.level is national — NRA is Bulgaria's national revenue authority.
  • process.type is filing, matching the form's own nature as an annual self-assessment declaration.
  • process.language is bg: the specimen's full text is entirely in Bulgarian; no English-language parallel edition was located or expected for a domestic self-assessment form of this kind.

Re-verification

Per the practice's cadence, nextReviewBy is set to 2027-01-14 (6 months). A future review should prioritize: (1) confirming whether the 2026 tax year has produced a new edition of Обр. 2001 at a new URL (NRA republishes this ZIP bundle annually, per the Ministry of Finance order cadence observed this cycle — Order № ЗМФ-1780/20.12.2024, Държавен вестник issue 109/28.12.2024, approved forms 2001/2021/2031/2051/2010/2013 for the 2025 filing season); (2) whether a future cycle wants to author one or more of the 13 numbered annexes (Приложение № 2, sole-trader business income, is likely the next-most-common after employment income) as companion schemas; (3) re-attempting the three-condition Part-II-trigger checkbox disambiguation with a rasterizer (LibreOffice/soffice) available, rather than plain-text extraction alone; (4) whether Bulgaria's other four unscreened verticals (DMV, Visa, Passport, National ID already screened weak) should be scouted.

View the raw record (VERIFICATION.md)

Version history

  • 1.0.0 draft latest this page has verification record schema.json

Independent and non-affiliated

GovSchema is an independent, open-source project. This reference is not produced, reviewed, or endorsed by Национална агенция за приходите or any government. The authoritative source is always the live government form and its official instructions.