Registry entry

Slovakia — Individual Income Tax Return, Type A (DPFOAv25)

The Financial Administration of the Slovak Republic's (Finančná správa Slovenskej republiky, FS SR) DPFOAv25 form — "Daňové priznanie k dani z príjmov fyzickej osoby (typ A)" (Type A individual income tax return) for the 2025 tax year, valid from 1 January 2026, filed under § 5 of Act No. 595/2003 Z.z. on income tax (as amended). Type A is used by a taxpayer whose only income during the tax year was employment income (income from a dependent activity, § 5 of the Act); a taxpayer with other income types (self-employment, capital, rental, other) uses the separate Type B return instead, out of this schema's scope. This v1.0.0 models the return's full eleven-section structure in detail: header (return type, taxpayer identification, tax year), Section I (taxpayer data, including a non-resident/limited-tax-liability branch), Section II (legal representative/heir data), Section III (tax-base reduction for a qualifying pension and a spouse, and the tax bonus for one dependent child plus a second-eligible-person sharing arrangement), Section IV (mortgage-interest tax bonus), Section V (tax base from employment income), Section VI (the full tax computation, including the foreign-income exemption and foreign-tax-credit methods, the child tax bonus, and the mortgage-interest tax bonus), Section VII (differences reported on an additional/corrective return), Section VIII (the 2%/3% tax-share donation to a recipient organization or a parent), Section IX (free-text special records, plus a single foreign-employment-income detail row), Section X (further taxpayer data for cross-border cases), and Section XI (the payout/refund request for the tax bonus, employee bonus, mortgage-interest bonus, or a tax overpayment). The source is a genuine client-side, JavaScript-driven fillable HTML e-form (not a PDF/AcroForm), served from the Financial Administration's own eFormVzor form-template subdomain; each field's real name attribute, maxlength, and (where present) its own client-side validation-hint text (the source's own title attribute) were extracted directly from the form's HTML. Several line items are themselves computed/derived amounts the source's own client-side script calculates from other lines (e.g. r.45's tax-bracket formula, or r.71/r.72's final payable/overpayment formula); these are modeled as ordinary editable data fields exactly as the source itself presents them (each such formula is disclosed in the field's own description), following this registry's established practice for other richly cross-referenced tax-computation forms (e.g. kr/nts's year-end tax settlement). Scope decisions disclosed here and in VERIFICATION.md: (1) the roughly 250-entry country/territory dropdown (Section IX's foreign-income country code) is modeled as a free-text numeric-code string rather than enumerated in full; (2) the two 12-checkbox month-selection grids (Section III, r.31 and r.32) are each modeled as one boolean "full year" flag plus one comma-separated multi-select-as-string field for individual months, pending GSP-0009 (repeating/multi-select gap); (3) Section III's dependent-child table prints only a single child row on the source form itself (additional children are declared in Section IX free text, per the source's own r.31a instruction), so no bounded repeating group was invented for it. GovSchema is an independent, non-profit standards body and is not affiliated with, endorsed by, or operated by the Government of the Slovak Republic or the Financná správa Slovenskej republiky.

Registry entry

sk/financna-sprava/dpfoav25-individual-income-tax-return

Jurisdiction
Slovakia · national
Version
1.0.0
Verification
draft

Authoritative source DPFOAv25

Machine access

Registry catalog
registry/index.jsonone record per schema id

Field reference

146 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

  • returnType enum required

    Whether this is an ordinary, corrective (replacing an ordinary return before the filing deadline), or additional (dodatočné, filed after the deadline to correct a previously filed return) tax return. Section VII (differences from an additional return) applies only when this is 'additional'.

    enum: ordinary | corrective | additional
  • taxpayerTin string

    Taxpayer's tax identification number (DIČ), or birth number (rodné číslo) if no DIČ has been assigned. The source requires either this field or taxpayerBirthDateIfNoTin (r.02) to be filled; both are modeled optional since the meta-schema's requiredWhen only supports a clean field-equals-value gate, not an either/or across two optional fields.

    length: 0–10classification: sensitive-pii
  • taxpayerBirthDateIfNoTin date

    Taxpayer's date of birth, completed only if the taxpayer has been assigned neither a DIČ nor a rodné číslo (birth number). See taxpayerTin.

    classification: pii
  • taxYear integer required

    The tax year for which the return is filed. The source form is the 2025 edition; the source's own instruction allows entering 2026 only when filing a return on behalf of a deceased taxpayer.

    enum: 2025 | 2026
  • additionalReturnDiscoveryDate date

    Date the fact requiring an additional (corrective, post-deadline) tax return was discovered. Required only when returnType is 'additional'; an additional return may only be filed after the ordinary filing deadline has passed, except when filing on behalf of a deceased taxpayer.

  • taxpayerSurname string required

    03 - Priezvisko

    length: 0–30classification: pii
  • taxpayerGivenName string required

    04 - Meno

    length: 0–20classification: pii
  • taxpayerTitleBeforeName string

    05 - Titul pred menom

    length: 0–10
  • taxpayerTitleAfterName string

    05 - Titul za priezviskom

    length: 0–10
  • permanentAddressStreet string

    Street of the taxpayer's permanent residence address as of the filing date, in the Slovak Republic or abroad.

    length: 0–30
  • permanentAddressHouseNumber string

    07 - Číslo domu (trvalý pobyt)

    length: 0–11
  • permanentAddressPostalCode string

    08 - PSČ (trvalý pobyt)

    length: 0–15
  • permanentAddressMunicipality string

    09 - Obec (trvalý pobyt)

    length: 0–60
  • permanentAddressCountry string

    10 - Štát (trvalý pobyt)

    length: 0–30
  • isNonResident boolean

    Whether the taxpayer is a non-resident for tax purposes (a taxpayer with limited tax liability in Slovakia). Checking this gates Section X (further taxpayer data) and the residency-period fields below.

  • nonResidentPeriodFrom date

    Start of the period during the tax year for which the taxpayer was a non-resident with limited tax liability in Slovakia.

  • nonResidentPeriodTo date

    End of the period during the tax year for which the taxpayer was a non-resident with limited tax liability in Slovakia.

  • foreignTin string

    Taxpayer identification number (TIN) assigned in the taxpayer's state of tax residence, completed when the taxpayer is a non-resident of Slovakia.

    length: 0–16classification: sensitive-pii
  • srResidenceStreet string

    Street of the address of the dwelling/stay in the Slovak Republic where the taxpayer resided during the tax period. Completed only when the taxpayer has no permanent residence in Slovakia.

    length: 0–30
  • srResidenceHouseNumber string

    13 - Číslo domu (pobyt v SR)

    length: 0–11
  • srResidencePostalCode string

    14 - PSČ (pobyt v SR)

    length: 0–5
  • srResidenceMunicipality string

    15 - Obec (pobyt v SR)

    length: 0–60
  • representativeSurname string

    Surname of the legal representative, heir, or other representative filing this return on the taxpayer's behalf, if any.

    length: 0–30classification: pii
  • representativeGivenName string

    17 - Meno (zástupca)

    length: 0–20classification: pii
  • representativeTitleBeforeName string

    18 - Titul pred menom (zástupca)

    length: 0–10
  • representativeTitleAfterName string

    18 - Titul za priezviskom (zástupca)

    length: 0–10
  • representativeBirthNumberPart1 string

    First part of the representative's Slovak birth number (rodné číslo); if the representative has no birth number, their date of birth in DDMM form.

    length: 0–6classification: sensitive-pii
  • representativeBirthNumberPart2 string

    Second part of the representative's Slovak birth number; if no birth number, their birth year in RRRR form.

    length: 0–4classification: sensitive-pii
  • representativeStreet string

    20 - Ulica (zástupca)

    length: 0–30
  • representativeHouseNumber string

    21 - Číslo (zástupca)

    length: 0–11
  • representativePostalCode string

    22 - PSČ (zástupca)

    length: 0–15
  • representativeMunicipality string

    23 - Obec (zástupca)

    length: 0–60
  • representativeCountry string

    24 - Štát (zástupca)

    length: 0–30
  • contactPhoneNumber string

    Contact phone number: the taxpayer's own number if filing personally, otherwise the representative's number, unless otherwise agreed with the taxpayer. Not a mandatory field under § 32 ods. 7 of the Income Tax Act.

    patternlength: 0–13
  • contactEmail string

    Contact email address (see contactPhoneNumber). The source form limits the total length to 254 characters, with 1-64 characters required before the '@'.

    patternlength: 0–254
  • receivedPensionAtStartOfYear boolean

    Whether the taxpayer was receiving, at the start of the tax year (or was awarded retroactively to the start of the tax year), one of the pensions listed in § 11 ods. 6 of the Income Tax Act.

  • totalPensionAmount number

    Total amount of the pension(s) referred to in r.27 received during the tax year, completed only if claiming the reduction of the tax base.

    range: 0–∞
  • spouseFullName string

    Surname and given name of the spouse living with the taxpayer in the same household, for the purpose of claiming the non-taxable amount on a spouse under § 11 ods. 3.

    length: 0–400classification: pii
  • spouseBirthNumberPart1 string

    29 - Rodné číslo (manželka/manžel), 1. časť

    length: 0–6classification: sensitive-pii
  • spouseBirthNumberPart2 string

    29 - Rodné číslo (manželka/manžel), 2. časť

    length: 0–4classification: sensitive-pii
  • claimSpouseNonTaxableAmount boolean

    30 - Uplatňujem nezdaniteľnú časť základu dane na manželku (manžela)

  • spouseOwnIncomeAmount number

    Spouse's own income for the tax year (gross income less compulsory insurance premiums/contributions the spouse was required to pay on it).

    range: 0–∞
  • spouseQualifyingMonthsCount integer

    Number of calendar months in the tax year at the start of which the statutory conditions for claiming the spouse's non-taxable amount were met.

    range: 1–12
  • childFullName string

    Surname and given name of a dependent child living with the taxpayer in the same household, for the purpose of the tax bonus (daňový bonus) under § 33. Only one child's data row is printed on the source form; a taxpayer with more than one qualifying child records the additional children in Section IX (additionalChildrenNoted).

    length: 0–400classification: pii
  • childBirthNumberPart1 string

    31 - Rodné číslo (dieťa), 1. časť

    length: 0–6classification: sensitive-pii
  • childBirthNumberPart2 string

    31 - Rodné číslo (dieťa), 2. časť

    length: 0–4classification: sensitive-pii
  • childBonusFullYear boolean

    Whether the tax bonus is claimed for all 12 months of the tax year (the source form's dedicated "1-12" checkbox, mutually exclusive with checking individual months in childBonusMonths).

  • childBonusMonths string

    Comma-separated list of individual calendar months (1-12) for which the tax bonus is claimed, used only when not claiming the full year (see childBonusFullYear). The source presents this as 12 separate month checkboxes; modeled as a comma-separated list — multi-select-as-string treatment, pending GSP-0009 (repeating/multi-select gap) — following the precedent already established for several other schemas in this registry (e.g. fr/france-visas/schengen-visa-application's means-of-support fields).

    pattern
  • additionalChildrenNoted boolean

    Checked when the taxpayer has more than one qualifying dependent child and records the additional children's data in Section IX (free-text special-records section) rather than on the single printed child row.

  • applySecondEligiblePersonProcedure boolean

    Whether the taxpayer applies the procedure under § 33 ods. 8 (increasing their own tax base by a second eligible person's tax base, for the purpose of computing entitlement to the tax bonus) rather than each eligible person claiming it separately.

  • secondEligiblePersonFullName string

    Surname and given name of the second person eligible to claim the tax bonus on the same child(ren) named in r.31, sharing custody/care of the household.

    length: 0–400classification: pii
  • secondEligiblePersonBirthNumberPart1 string

    32 - Rodné číslo (druhá oprávnená osoba), 1. časť

    length: 0–6classification: sensitive-pii
  • secondEligiblePersonBirthNumberPart2 string

    32 - Rodné číslo (druhá oprávnená osoba), 2. časť

    length: 0–4classification: sensitive-pii
  • secondEligiblePersonBonusFullYear boolean

    32 - Mesiace 1-12 (druhá oprávnená osoba)

  • secondEligiblePersonBonusMonths string

    Comma-separated list of individual calendar months (1-12) at the start of which the second eligible person met the conditions for the tax bonus. Multi-select-as-string treatment, pending GSP-0009 (see childBonusMonths).

    pattern
  • secondPersonFiledReturnInSlovakia boolean

    Whether the second eligible person named in r.32 themselves filed a tax return in Slovakia reporting a tax base for computing the tax bonus.

  • secondPersonAnnualSettlementCopyAttached boolean

    Checked when a copy of the second eligible person's annual payroll-tax-advance settlement (ročné zúčtovanie) is attached, as evidence of their tax base, because they did not file their own tax return.

  • secondPersonTaxBaseDocumentCopyAttached boolean

    Checked when a copy of a document proving the second eligible person's tax base from employment income is attached, for a person who had neither an annual settlement performed nor a duty to file a return.

  • secondEligiblePersonTaxBaseAmount number

    Tax base (or aggregate tax base) of the second eligible person named in r.32, from employment income and/or self-employment/other independent gainful activity, for the purpose of claiming the tax bonus under § 33 ods. 8.

    range: 0–∞
  • claimMortgageInterestBonus boolean

    Whether the taxpayer claims the tax bonus on interest paid on a home-loan (§ 33a of the Income Tax Act).

  • mortgageInterestPaidAmount number

    Amount of home-loan interest paid during the tax year, per the bank's own confirmation issued under § 26a of Act No. 90/2016 Coll. on housing loans, a copy of which is an annexe to the return. Required alongside claimMortgageInterestBonus. The source's input widget for this line shares a generic 400-character textbox component also used for combined name fields elsewhere on the form; it is modeled here as a numeric amount per the footnote's own description of what r.33 records.

  • mortgageInterestQualifyingMonthsCount integer

    Number of calendar months in the tax year for which the taxpayer is entitled to the mortgage-interest tax bonus.

    range: 1–12
  • mortgageInterestAccrualStartDate date

    Date interest began accruing on the home loan. Must fall within 1 February 2020 - 31 December 2025 per the source's own validation note.

  • mortgageLoanAgreementDate date

    Date the home-loan agreement was concluded. Must fall within 1 January 2018 - 31 December 2025 per the source's own validation note.

  • totalEmploymentIncome number required

    Total employment income from all employers during the tax year. A non-resident reports only Slovak-source income; a resident reports worldwide income.

    range: 0–∞
  • incomeFromNonEmploymentWorkAgreements number

    Of the total on r.34, the portion arising from agreements for work performed outside an employment relationship (dohody). Must not exceed totalEmploymentIncome.

    range: 0–∞
  • totalMandatoryInsuranceContributions number

    Total compulsory social/health insurance premiums and contributions paid on the employment income in r.34.

    range: 0–∞
  • socialInsuranceContributions number

    Of the total on r.36, the portion for social insurance (security) contributions. Must not exceed totalMandatoryInsuranceContributions.

    range: 0–∞
  • healthInsuranceContributions number

    Of the total on r.36, the portion for health insurance contributions. Must not exceed totalMandatoryInsuranceContributions.

    range: 0–∞
  • taxBaseFromEmploymentIncome number

    Tax base from employment income: r.39 = Max(0; r.34 - r.36). The tax base cannot be negative.

    range: 0–∞
  • nonTaxableAmountSelf number

    Non-taxable part of the tax base on the taxpayer, computed per § 11 ods. 2, using the source's own worked reference table at the end of the guidance notes.

    range: 0–∞
  • nonTaxableAmountSpouse number

    Non-taxable part of the tax base claimed on a spouse under § 11 ods. 3, requiring spouseFullName/claimSpouseNonTaxableAmount to be completed.

    range: 0–∞
  • supplementaryPensionContributionsDeduction number

    Non-taxable part of the tax base for verifiably paid contributions to a pan-European personal pension product and supplementary pension savings, up to an aggregate EUR 180 (§ 11 ods. 8).

    range: 0–180
  • totalTaxBaseReduction number

    Sum of r.40 + r.41 + r.42, capped at the tax base in r.39.

    range: 0–∞
  • reducedTaxBase number

    Tax base from r.39 reduced by r.43 and increased by any contribution add-back under § 11 ods. 11 and § 52zza ods. 2.

  • taxAmountUnderSection15 number

    Income tax computed on the tax base in r.44: 19% up to EUR 48,441.43, and 19% on the first EUR 48,441.43 plus 25% on the excess above that threshold (r.45 = 48441.43*0.19 + (r.44-48441.43)*0.25 when r.44 exceeds the threshold). Zero if the taxpayer claims the employee bonus (r.46).

    range: 0–∞
  • employeeBonus number

    Employee bonus (zamestnanecká prémia) under § 32a, available to certain low-income employees in place of the ordinary tax computation.

    range: 0–∞
  • incorrectlyPaidEmployeeBonusAmount number

    Amount of employee bonus incorrectly paid out by the employer or the tax administrator.

    range: 0–∞
  • totalExemptForeignIncome number

    Total income (tax bases) exempted from Slovak taxation under a double-taxation treaty's exemption method, capped at r.39.

    range: 0–∞
  • taxBaseAfterExemption number

    Tax base from r.44 reduced by the exempted income in r.48; zero if the result would be negative.

    range: 0–∞
  • taxAfterExemption number

    Tax under § 15 computed on the tax base in r.49 after the foreign-income exemption. The 25% bracket threshold is EUR 48,441.43.

  • totalForeignSourceIncome number

    Total foreign-source income (tax bases) for which a foreign tax credit is claimed (credit method), capped at r.39.

    range: 0–∞
  • foreignTaxPaid number

    Foreign tax actually paid on the income in r.51.

    range: 0–∞
  • creditPercentageCalculation number

    Credit percentage: [(r.39 - r.48) or r.39] x 100, used to compute the creditable foreign tax.

  • creditableForeignTaxAmountBeforeCap number

    Amount of foreign tax that may be credited before the r.52 cap is applied: [(r.50 or r.45) x r.53] / 100.

  • recognizedForeignTaxCredit number

    Foreign tax credit recognized: r.54 capped at r.52 (r.55 = Max(0, Min(r.54, r.52))).

    range: 0–∞
  • taxLiability number

    Final tax liability: r.45 or r.50, further reduced by the recognized foreign tax credit r.55 where applicable. Reported as zero in several statutorily defined low-liability/low-income cases per the source's own footnote 10.

  • increasedTaxBaseForChildBonus number

    Tax base increased for the purpose of computing the tax bonus under § 33 ods. 8: r.32a / 12 x number of checked months in r.32, plus r.39. Completed only when the taxpayer applies the § 33 ods. 8 procedure.

    range: 0–∞
  • childBonusEntitlement number

    Entitlement to the statutory tax bonus for the dependent child(ren) named in r.31/Section IX: EUR 100/month for a child under 15, EUR 50/month for a child 15 up to and including 18.

    range: 0–∞
  • taxAfterChildBonus number

    Tax liability (r.56) reduced by the tax bonus (r.57); zero if r.57 exceeds r.56.

  • childBonusPaidByEmployer number

    59 - Suma daňového bonusu priznaného a vyplateného zamestnávateľom, EUR

    range: 0–∞
  • childBonusDifferencePositive number

    max(0, r.57 - r.59).

    range: 0–∞
  • childBonusPayableByTaxAuthority number

    max(0, r.60 - r.56). A positive amount here requires completing the payout request in Section XI.

    range: 0–∞
  • childBonusOverpaidByEmployer number

    max(0, r.59 - r.57).

    range: 0–∞
  • mortgageInterestBonusEntitlement number

    Entitlement to the mortgage-interest tax bonus under § 33a: 50% of interest paid, capped at EUR 400/year for loan agreements concluded by 31 December 2023 or EUR 1,200/year for agreements concluded after that date.

    range: 0–∞
  • taxAfterMortgageInterestBonus number

    r.58 - r.63.

  • mortgageInterestBonusPaidByEmployer number

    Completed only in a return filed after an annual settlement (ročné zúčtovanie).

    range: 0–∞
  • mortgageInterestBonusDifferencePositive number

    max(0, r.63 - r.65).

    range: 0–∞
  • mortgageInterestBonusPayableByTaxAuthority number

    max(0, r.66 - r.58). A positive amount here requires completing the payout request in Section XI.

    range: 0–∞
  • advancesPaidUnderSection34 number

    68 - Úhrn preddavkov zaplatených podľa § 34 zákona, EUR

    range: 0–∞
  • advancesWithheldUnderSection35 number

    Advances withheld under § 35, excluding advances under § 35 ods. 10 and 11.

    range: 0–∞
  • advancesPaidUnderSection35Para10And11 number

    70 - Úhrn preddavkov zaplatených podľa § 35 ods. 10 a 11 zákona, EUR

    range: 0–∞
  • taxPayable number

    Tax payable: r.56 - r.57 + r.59 + r.61 - r.63 + r.65 + r.67 - r.68 - r.69 - r.70 + r.47, when positive. Not payable if EUR 5 or less.

    range: 0–∞
  • taxOverpayment number

    Tax overpayment: the negative of the same formula as taxPayable, expressed as a positive overpayment amount.

    range: 0–∞
  • priorReturnTaxAmount number

    Tax liability (r.56) from the return being corrected, or the corresponding line of a prior Type B return or annual settlement.

    range: 0–∞
  • taxIncreaseOrDecrease number

    r.56 - r.73, positive or negative.

  • priorReturnTaxPayableOrOverpayment number

    r.71 or r.72 from the return being corrected (or the corresponding line of a prior Type B return or annual settlement).

  • adjustedTaxPayableOrOverpayment number

    (r.71 or r.72) - r.75, adjusted for any tax-share donation (2%/3%) difference exceeding zero.

  • priorReturnChildBonusPayable number

    77 - Suma daňového bonusu na poukázanie správcom dane z predchádzajúceho daňového priznania, EUR

    range: 0–∞
  • childBonusPayableDifference number

    r.61 - r.77, positive (payable by the tax administrator) or negative (repayable to the tax administrator).

  • priorReturnMortgageInterestBonusPayable number

    79 - Suma daňového bonusu na zaplatené úroky na poukázanie z predchádzajúceho daňového priznania, EUR

    range: 0–∞
  • mortgageInterestBonusPayableDifference number

    r.67 - r.79, positive or negative.

  • doesNotApplyTaxShareProcedure boolean

    Checked when the taxpayer does not designate any portion of paid tax to a recipient organization under § 50; when checked, r.81/r.82 are not completed.

  • recipientOrganizationId string

    Company/organization identification number (IČO, 8 or 12 digits) of the designated recipient of the tax-share donation. The recipient must appear on the Notarial Chamber's own list of eligible recipients for the relevant year.

    length: 0–12
  • recipientOrganizationName string

    Business name of the designated recipient organization named in r.81.

    length: 0–74
  • meetsVolunteering3PercentCondition boolean

    Checked when the taxpayer performed at least 40 hours of volunteer activity during the tax year (Act No. 406/2011 Coll.), raising the eligible donation share from 2% to 3% of tax paid; a written confirmation of the volunteer activity must be attached.

  • taxShareDonationAmount number

    Amount of tax share (2%, or 3% if meetsVolunteering3PercentCondition) designated to the recipient in r.81, minimum EUR 3.

    range: 3–∞
  • consentToShareDataWithRecipient boolean

    Consent to send the taxpayer's name, surname, and permanent residence to the recipient designated in r.81, per § 50 ods. 8.

  • doesNotApplyParentProcedure boolean

    Checked when the taxpayer does not designate a share of paid tax to a parent (or parents) under § 50aa.

  • parentABirthNumberPart1 string

    83 - Rodné číslo (rodič A), 1. časť

    length: 0–6classification: sensitive-pii
  • parentABirthNumberPart2 string

    83 - Rodné číslo (rodič A), 2. časť

    length: 0–4classification: sensitive-pii
  • parentASurname string

    83 - Priezvisko (rodič A)

    length: 0–30classification: pii
  • parentAGivenName string

    83 - Meno (rodič A)

    length: 0–20classification: pii
  • parentBBirthNumberPart1 string

    83 - Rodné číslo (rodič B), 1. časť

    length: 0–6classification: sensitive-pii
  • parentBBirthNumberPart2 string

    83 - Rodné číslo (rodič B), 2. časť

    length: 0–4classification: sensitive-pii
  • parentBSurname string

    83 - Priezvisko (rodič B)

    length: 0–30classification: pii
  • parentBGivenName string

    83 - Meno (rodič B)

    length: 0–20classification: pii
  • inSubstituteParentalCare boolean

    Checked when the taxpayer designates their tax share to a person into whose substitute parental care they were placed by a competent authority's decision, a copy of which is attached.

  • hasSpecialNotes boolean

    Checked when the taxpayer records any special notes in Section IX (e.g. additional dependent children beyond the single printed row, or foreign-source employment income detail).

  • foreignEmploymentIncomeCountryCode string

    Numeric country/territory code (per Decree of the Statistical Office of the Slovak Republic No. 112/2012 Z.z., as amended by No. 108/2014 Z.z.) of the state where employment income within r.34 was earned, for a resident with unlimited tax liability. The source presents this as a dropdown of about 250 countries/territories; not enumerated here as a validation.enum given its length — modeled as a free-text numeric code, a disclosed scope decision.

    pattern
  • foreignEmploymentIncomeAmount number

    Príjmy (zo zdrojov v zahraničí), EUR

    range: 0–∞
  • foreignEmploymentExpenses number

    Compulsory insurance premiums/contributions payable by the employee, verifiably paid in Slovakia and abroad.

    range: 0–∞
  • foreignEmploymentExpensesAbroad number

    Of the expenses above, the portion of compulsory insurance premiums/contributions verifiably paid abroad.

    range: 0–∞
  • specialNotesText string

    Free-text area for any special records the taxpayer needs to disclose (e.g. additional dependent children per r.31a, or a foreign bank account's own routing details when not in IBAN format, per Section XI's own instruction).

  • taxResidenceCountry string

    State of tax residence, completed when the taxpayer has limited tax liability in Slovakia (isNonResident) — and left blank for a resident.

    length: 0–37
  • totalTaxableIncomeWorldwide number

    Aggregate of all taxable income from Slovak and foreign sources, completed by a resident applying § 33 ods. 9, a non-resident applying § 11 ods. 7/§ 33 ods. 9/§ 33a ods. 10/§ 46a, or a taxpayer who is a second eligible person for § 33 ods. 8 purposes. Includes income taxed by withholding.

    range: 0–∞
  • totalTaxableIncomeSlovakSource number

    Of the total in r.85, the portion from Slovak sources. Must not exceed totalTaxableIncomeWorldwide.

    range: 0–∞
  • attachmentCount integer

    Total number of all annexes/attachments accompanying this tax return.

    range: 0–∞
  • declarationDate date required

    Date of the taxpayer's declaration that all information in the return is correct and complete.

  • requestChildBonusPayout boolean

    Request payout of the tax bonus (r.61) or its positive difference (r.78) by the tax authority.

  • requestEmployeeBonusPayout boolean

    Request payout of the employee bonus under § 32a (r.46) by the tax authority.

  • requestMortgageInterestBonusPayout boolean

    Request payout of the mortgage-interest tax bonus (r.67) or its positive difference (r.80) by the tax authority.

  • requestOverpaymentRefund boolean

    Request refund of the tax overpayment (r.72, or the negative difference in r.76) under § 79 of the Tax Administration Act.

  • payoutMethod enum

    How a requested payout is to be made: by postal money order (up to and including EUR 15,000), to the taxpayer's own account, or to a foreign account the taxpayer is not the holder of. Exactly one of these three source radio options may be selected.

    enum: postal-money-order | own-account | foreign-account-not-own
  • payoutIban string

    IBAN for the payout, required when payoutMethod is own-account or foreign-account-not-own. Format: 2-letter country code, 2-digit check digits, up to 30 alphanumeric characters.

    patternlength: 0–34classification: financial
  • payoutRequestDate date

    Date of this payout/refund request.

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-2981, opening Slovakia as this registry's 56th jurisdiction, via its Taxes vertical. This is a previously-scouted, well-verified candidate carried forward from GOV-2969 and re-confirmed as a live-outage/Wayback-capture case in GOV-2976 (2026-07-14).

Duplicate-concurrent-run check

Checked git branch -a | grep -i "sk-\|slovak" and searched for any open PR referencing sk/financna-sprava before starting — neither found an existing branch or PR for this deliverable, so no reconciliation was needed.

Live-outage re-check

Re-checked financnasprava.sk and pfseform.financnasprava.sk at the start of this cycle (2026-07-14):

``` $ curl -s -o /dev/null -w "HTTP %{http_code} -> %{url_effective}\n" -L https://financnasprava.sk HTTP 000 -> https://financnasprava.sk/ (connection failure / no response)

$ curl -s -o /dev/null -w "HTTP %{http_code} -> %{url_effective}\n" -L https://pfseform.financnasprava.sk/Formulare/eFormVzor/DP/form.620.html HTTP 200 -> https://servis.financnasprava.sk/odstavka/ ```

The forms subdomain still redirects to the same outage page (servis.financnasprava.sk/odstavka) first observed in GOV-2969 and still live as of GOV-2976 — no ETA published. Per the task brief, the Wayback Machine capture was used instead of a fresh live fetch.

Source verification

  • Wayback lookup: https://archive.org/wayback/available?url=pfseform.financnasprava.sk/Formulare/eFormVzor/DP/form.620.html returned a single available snapshot at timestamp 20260521100832 (21 May 2026), confirming the source's own Last-Modified header (22 Apr 2026) predates the capture.
  • Fetched via curl (per this registry's established WebFetch hard-fails-on-web.archive.org workaround — resolve the timestamp via the archive.org/wayback/available JSON API with WebFetch, then curl the actual snapshot URL from Bash): http://web.archive.org/web/20260521100832/https://pfseform.financnasprava.sk/Formulare/eFormVzor/DP/form.620.htmlHTTP 200, Content-Type: text/html, the Wayback proxy's own x-archive-orig-content-length header reports 1,533,265 bytes for the original capture (the rewritten/proxied HTML actually saved locally is 1,501,443 bytes, reflecting Wayback's own link-rewriting); locally saved file sha256: 19a2f118c29b2bbe96929c17c60c6e2c3d16c757835d0d3dad54d9a588aca330. memento-datetime: Thu, 21 May 2026 10:08:32 GMT confirms the capture timestamp.
  • The document's own <title> reads "DPFOAv25 - Daňové priznanie k dani z príjmov fyzickej osoby (typ A) za zdaňovacie obdobie 2025 (platné od 1.1.2026)" — confirming this is the DPFOAv25 individual income-tax-return Type A form for the 2025 tax year, effective from 1 January 2026.
  • This is a genuine client-side, JavaScript-rendered fillable HTML e-form (not a PDF/AcroForm): a <form id="DPFOA2025"> containing real <input>, <select>, and <textarea> elements with their own name/id/ maxlength/title (client-side validation-hint) attributes, served directly from the Financial Administration's own pfseform.financnasprava.sk form-template subdomain — a first-party, unauthenticated, no-login/CAPTCHA/WAF-gated source (accessible without JavaScript execution for extraction purposes, since the raw HTML markup itself carries every field's real attributes).

Field extraction method

Rather than trusting a prior scouting summary, the saved HTML was independently re-parsed from scratch using Python's html.parser (HTMLParser subclass tracking fieldLabel spans, headercorrection section-heading divs, and input/select/option/textarea elements in document order) rather than a naive regex — an initial regex-based pass mis-parsed roughly a dozen <input> tags whose own title attributes contained an unescaped > character (e.g. formula text like "r.46 > 0"), which silently truncated the regex match; the HTMLParser-based re-parse independently confirmed every one of those inputs was actually a normal type="text" field with a real maxlength, not a malformed/anonymous tag.

Extraction counts, independently tallied from the parsed event stream:

  • 172 non-hidden <input> elements (119 type="text", including every date field — the source uses type="text" class="date datepicker" for dates, not a native type="date" — plus tbR36, whose own raw tag had an unescaped > inside its title attribute that initially broke a naive regex parse, independently confirmed a normal type="text" field via the HTMLParser re-parse; 45 type="checkbox"; 6 type="radio"; 1 type="submit"; 1 type="button"), plus 129 type="hidden" inputs (confirmed to be pure DOM/layout-section anchors carrying no value attribute and no applicant-facing label — excluded from the field list as structural markers, not data fields).
  • 2 <select> elements: KodStatu (a ~250-entry ISO-style numeric country/territory code list per Decree of the Statistical Office of the Slovak Republic No. 112/2012 Z.z., as amended by No. 108/2014 Z.z.) and Skryte_pomocne_pole (a Slovak bank-code lookup list, confirmed to be a hidden helper field for the IBAN entry UI, not an applicant-facing field itself — excluded).
  • 1 <textarea> (OsobitneZaznamy, the Section IX free-text notes field).
  • 11 lettered sections (I through XI), confirmed via the headercorrection heading text — not 9 sections as the prior GOV-2969 scouting note estimated; this cycle corrects that estimate having now actually opened and read the full form. Line numbering runs 01 through 86 (with lettered sub-lines 32a, 56a, 85a), not "~89" as the scouting note estimated — also corrected here.

Field derivation and scoping — 146 fields modeled

The full parsed event stream (clean_extracted.txt, 858 lines) was read in full, section by section, before modeling any field. Scope:

  • Header (5 fields): return type (ordinary/corrective/additional, from the g1 radio group), taxpayer TIN/birth-number-or-birth-date (r.01/r.02, an either/or pair left independently optional — no invented gate, see Scoping judgment calls below), tax year (r., enum [2025, 2026] per the source's own instruction restricting 2026 to a deceased taxpayer's return), and the additional-return discovery date (requiredWhen returnType equals additional).
  • Section I — taxpayer data (17 fields): name, permanent-address block, the non-resident/limited-tax-liability branch (r.11, gating a requiredWhen-bound non-residency period and Section X's taxResidenceCountry), and the Slovak-residence-address block used only when the taxpayer has no permanent Slovak residence.
  • Section II — legal representative/heir (13 fields): name, birth number, address, and contact phone/email (the source's own footnote 4 states these two are not mandatory under § 32 ods. 7).
  • Section III — tax-base reduction and child tax bonus (24 fields): the pension-based reduction (r.27/r.28), spouse non-taxable amount (r.29/r.30), one dependent child's data (r.31 — the source form prints only a single child row; additional children are declared in Section IX free text per the source's own r.31a instruction, so no bounded repeating group was invented here), and the second-eligible-person shared-claim mechanism (r.32/r.32a, § 33 ods. 8).
  • Section IV — mortgage-interest tax bonus (5 fields): the claim flag (r.33) plus its four requiredWhen-gated companions (amount, months count, loan-accrual start date, loan-agreement date).
  • Section V — tax base from employment income (6 fields): r.34 through r.39, the ordinary/dohody income split and the compulsory-insurance breakdown.
  • Section VI — full tax computation (34 fields): r.40 through r.72 — every computed line the source's own client-side script derives from other lines (e.g. r.45's 19%/25% bracket formula, r.71/r.72's final payable/overpayment formula) is modeled as an ordinary editable number field, with the governing formula transcribed verbatim into that field's own description, following this registry's established practice for other richly cross-referenced tax-computation forms (e.g. kr/nts's year-end tax settlement, which models its own derived lines the same way).
  • Section VII — differences from an additional return (8 fields): r.73 through r.80, requiredWhen-gated on returnType equals additional where a clean single-condition gate existed (r.73/r.74's own cross-reference makes clear these apply only to a dodatočné/additional return).
  • Section VIII — 2%/3% tax-share donation (16 fields): the § 50 recipient-organization block (r.81/r.82, including the volunteering-based 3% eligibility flag) and the § 50aa parent-designation block (r.83, two parent slots as printed).
  • Section IX — free-text special records (6 fields): the has-notes flag, the single foreign-employment-income detail row (country code + income/expenses), and the free-text notes field itself.
  • Section X — further taxpayer data (5 fields): r.84 through r.86 plus the declaration date, including taxResidenceCountry's clean requiredWhen gate on isNonResident.
  • Section XI — payout/refund request (7 fields): the four payout-type request flags, the mutually-exclusive payout-method enum (postal money order / own account / foreign account not own), the requiredWhen-gated IBAN, and the request date.

Scoping and modeling judgment calls

  • taxpayerTin/taxpayerBirthDateIfNoTin (r.01/r.02) left independently optional, no invented gate: the source's own validation note reads "Musí byť vyplnené DIČ (rodné číslo) na r.1, alebo dátum narodenia na r.2" (either r.1 or r.2 must be filled) — an either/or across two optional fields, which the meta-schema's requiredWhen (a single field-equals-value gate) cannot cleanly express. Disclosed here rather than invented as a fabricated crossFieldValidation rule, per this registry's own established no-invented-gate convention (see e.g. ke/nrb's identical reasoning for its own "at least one of five optional fields" case).
  • Two 12-checkbox month-selection grids (Section III, r.31 and r.32) each modeled as one boolean "full year" flag (childBonusFullYear/secondEligiblePersonBonusFullYear) plus one comma-separated multi-select-as-string field for individually checked months (childBonusMonths/secondEligiblePersonBonusMonths) — following the established multi-select-as-string precedent already used elsewhere in this registry (e.g. fr/france-visas/schengen-visa-application's means-of-support fields, us/ca/sos/voter-registration's language field), pending GSP-0009 (repeating/multi-select gap). Not modeled as 12 independent boolean fields each, since the source's own title text states the "1-12" checkbox and the individual month checkboxes are mutually exclusive as a group, which neither an exclusivityGroup (limited to "at most one true across the whole group," which would incorrectly forbid checking two individual months at once) nor 12 independent booleans cleanly expresses.
  • foreignEmploymentIncomeCountryCode modeled as a free-text numeric-code string, not enum: the source's own KodStatu dropdown lists approximately 250 countries/territories; enumerating all of them was judged disproportionate to this field's role (a single supplementary disclosure row in Section IX), so only a 3-digit numeric-code pattern is validated, with the code list itself cited by its governing Decree in the field's own description — a disclosed scope decision, not an omission.
  • Computed/derived tax-computation lines (r.39 through r.80) modeled as ordinary editable number fields, each field's own description transcribing the governing formula verbatim from the source's own title attribute (e.g. taxAmountUnderSection15's 19%/25% bracket formula, taxPayable's full r.56-through-r.47 formula) — the source form itself presents these as fields its own client-side script populates, not as read-only display text, so they are modeled as data fields per this registry's precedent for other richly cross-referenced tax forms.
  • mortgageInterestPaidAmount (t33_1) modeled number despite its raw HTML maxlength="400": cross-referenced against the section's own footnote 8 ("Suma zaplatených úrokov za zdaňovacie obdobie, dátum uzavretia zmluvy o úvere a dátum začatia úročenia úveru sa uvádza podľa potvrdenia...") confirms this line records the interest amount; the oversized maxlength is disclosed as an artifact of a generic textbox UI component shared with unrelated combined-name fields elsewhere on the same form (e.g. tPriezvisko29_1_1, also maxlength="400"), not a literal 400-character numeric value.
  • payoutMethod modeled as a 3-value enum (postal-money-order, own-account, foreign-account-not-own) from the source's own PoukazkaUcet radio group; payoutIban requiredWhen gated on the latter two values (both require an account number), not on postal-money-order.
  • Classification: birth numbers (taxpayerTin when it carries a rodné číslo, representativeBirthNumberPart1/2, spouseBirthNumberPart1/2, childBirthNumberPart1/2, secondEligiblePersonBirthNumberPart1/2, parentABirthNumberPart1/2, parentBBirthNumberPart1/2, foreignTin) tagged sensitive-pii; plain names/addresses tagged pii; payoutIban tagged financial. Plain numeric/enumerated/boolean filing and tax-computation fields are left unclassified, matching this registry's established precedent.
  • jurisdiction.level is national — the Financial Administration is Slovakia's national tax authority. process.type is filing, process.language is sk, matching this registry's established conventions for tax-return forms.

Conformance run

Two hand-authored valid fixtures under conformance/sk/financna-sprava/dpfoav25-individual-income-tax-return/1.0.0/:

  • valid-wage-earner-minimal.json — a resident wage-earner with no pension, spouse, child, or mortgage-interest claims, a small final tax payable, and the tax-share-donation/parent-designation opt-outs checked — exercises the schema's minimal static-required-field path (returnType, taxYear, taxpayerSurname, taxpayerGivenName, totalEmploymentIncome, declarationDate).
  • valid-nonresident-with-child-bonus-and-refund.json — a non-resident taxpayer filing an additional (corrective, post-deadline) return, with a declared non-residency period and foreign TIN, one dependent child claimed for the full year, a mortgage-interest bonus claim with all four conditional companions supplied, a requested overpayment refund routed to an IBAN, and Section IX free-text notes disclosing a second child — exercises requiredWhen gates across returnType, isNonResident, claimMortgageInterestBonus, and payoutMethod together.

Ten mutation-control fixtures, each isolated to raise exactly one error:

  • mutation-control-missing-required-field.json — drops taxpayerSurname (static required: true).
  • mutation-control-invalid-enum-value.json — sets returnType to "revised", not one of the enum's 3 values.
  • mutation-control-invalid-date-format.json — sets declarationDate to "15-03-2026", not the required YYYY-MM-DD shape.
  • mutation-control-invalid-type-income-amount.json — sets totalEmploymentIncome to the string "twenty-four-thousand" instead of a number.
  • mutation-control-value-below-minimum.json — sets totalEmploymentIncome to -500, below validation.minimum: 0.
  • mutation-control-value-above-maximum.json — sets supplementaryPensionContributionsDeduction to 250, above validation.maximum: 180.
  • mutation-control-missing-conditional-discovery-date.json — built from the full non-resident fixture (which already carries returnType: "additional" and its priorReturnTaxAmount companion), dropping only additionalReturnDiscoveryDate.
  • mutation-control-missing-conditional-mortgage-interest-amount.json — built from the same full fixture, dropping only mortgageInterestPaidAmount while claimMortgageInterestBonus: true and its other three conditional companions remain present.
  • mutation-control-missing-conditional-nonresident-period.json — drops only nonResidentPeriodFrom while isNonResident: true and nonResidentPeriodTo remain present.
  • mutation-control-missing-conditional-payout-iban.json — drops only payoutIban while requestOverpaymentRefund: true and payoutMethod: "own-account" remain present.

(Note: three of these mutations are deliberately built from the fuller valid fixture rather than the minimal one, specifically because several requiredWhen gates in this schema share a single trigger field — e.g. returnType: "additional" gates both additionalReturnDiscoveryDate and priorReturnTaxAmount, and claimMortgageInterestBonus: true gates four separate companions — so flipping the trigger alone from the minimal fixture would raise more than one error at once. Isolating exactly one missing field required starting from a base where every other companion of that trigger was already supplied.)

All twelve fixtures were checked with a from-scratch Node conformance checker (/tmp/sk-dpfoav25/validate_conformance.mjs, not committed — a disposable script run from an isolated scratch directory, per this registry's own established practice since no committed conformance-fixture validator exists) implementing this schema's own required/requiredWhen/type/validation.enum/validation.minimum/ validation.maximum/validation.pattern/date-format grammar directly:

`` $ node validate_conformance.mjs schema.json conformance/sk/financna-sprava/dpfoav25-individual-income-tax-return/1.0.0 OK mutation-control-invalid-date-format.json errors=["declarationDate: invalid date format \"15-03-2026\", expected YYYY-MM-DD"] OK mutation-control-invalid-enum-value.json errors=["returnType: value \"revised\" not in enum [\"ordinary\",\"corrective\",\"additional\"]"] OK mutation-control-invalid-type-income-amount.json errors=["totalEmploymentIncome: expected type number, got string (\"twenty-four-thousand\")"] OK mutation-control-missing-conditional-discovery-date.json errors=["additionalReturnDiscoveryDate: required but missing"] OK mutation-control-missing-conditional-mortgage-interest-amount.json errors=["mortgageInterestPaidAmount: required but missing"] OK mutation-control-missing-conditional-nonresident-period.json errors=["nonResidentPeriodFrom: required but missing"] OK mutation-control-missing-conditional-payout-iban.json errors=["payoutIban: required but missing"] OK mutation-control-missing-required-field.json errors=["taxpayerSurname: required but missing"] OK mutation-control-value-above-maximum.json errors=["supplementaryPensionContributionsDeduction: value 250 above maximum 180"] OK mutation-control-value-below-minimum.json errors=["totalEmploymentIncome: value -500 below minimum 0"] OK valid-nonresident-with-child-bonus-and-refund.json errors=[] OK valid-wage-earner-minimal.json errors=[] ``

All ten negative controls raised exactly one error each, and neither valid scenario raised an unexpected error.

The registry's zero-dependency structural validator and its ajv-based meta-schema validator were both run against the full registry (including this new schema) and pass:

``` $ node tools/validate.mjs 448/448 document(s) passed. 3/3 mapping.json companion(s) passed.

$ node tools/validate-ajv.mjs 448/448 document(s) validated against the meta-schema (ajv 2020-12). 3/3 mapping.json companion(s) validated. ```

tools/govschema-client/registry-index.json was regenerated via npm run build-index inside tools/govschema-client/.

Scope and jurisdiction notes

  • Opens Slovakia as this registry's 56th jurisdiction, via its Taxes vertical (1 of 6). The other five verticals (Passport, National ID, DMV, Business Formation, Visa) remain undiscovered/unscouted for Slovakia — this cycle did not screen them, and no claim is made about their availability one way or the other. A future cycle deepening Slovakia should scout all five in parallel per this registry's established practice.
  • financnasprava.sk's site-wide outage (first observed GOV-2969, still live as of GOV-2976 and re-confirmed still live in this cycle, GOV-2981, on 2026-07-14) means a future re-verification of this schema should first re-check whether the live site has recovered, and if so, re-fetch pfseform.financnasprava.sk/Formulare/eFormVzor/DP/form.620.html directly rather than continuing to rely on the Wayback capture.
  • The two slovensko.sk MZV consular eForms noted in GOV-2969/GOV-2976 as backup candidates (National ID card request, driving-licence request, both scoped to citizens abroad) remain unauthored disclosed backlog for a future cycle building out Slovakia's National ID/DMV verticals.

Re-verification

Per the practice's cadence, nextReviewBy is set to 2027-01-14 (6 months). A future review should prioritize: (1) re-checking whether financnasprava.sk has recovered from its outage, and if so, re-fetching DPFOAv25 directly from the live site rather than the Wayback capture used here; (2) confirming whether a later edition of DPFOA has superseded the 2025-tax-year/platné od 1.1.2026 version modeled here; (3) scouting Slovakia's other five verticals (Passport, National ID, DMV, Business Formation, Visa), all currently undiscovered for this jurisdiction.

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 Finančná správa Slovenskej republiky (Financial Administration of the Slovak Republic) or any government. The authoritative source is always the live government form and its official instructions.