Registry entry

Italy Annual Income Tax Return for Employees and Pensioners (Modello 730/2026)

The Italian Modello 730, the simplified annual personal income tax return ('Dichiarazione dei redditi delle persone fisiche') available to employees, pensioners, and other taxpayers with a substitute d'imposta (withholding agent) able to perform the year-end tax adjustment (conguaglio) directly in their paycheck or pension payment, or, since recent years, filable 'senza sostituto' (without a withholding agent) directly with the Agenzia delle Entrate, a Caf, or a qualified professional. The current version, Modello 730/2026, covers tax year 2025 (filed by the 30 September 2026 deadline in the ordinary case). This document models the common salaried-employee/pensioner core: the taxpayer's own identifying data and residence/domicile (frontespizio), the family-dependents schedule (prospetto dei familiari a carico) for a spouse and up to four further dependents, Quadro C Section I's employment/pension income rows and Sections III-IV's IRPEF/regional/municipal surtax withholding rows, and Quadro E's most common Section I/II deductions (medical expenses, principal-residence mortgage interest, mandatory pension/welfare contributions). It deliberately does NOT model: Quadro A (land income) and Quadro B (building/property income); Quadro C Sections II (other assimilated income), V-VIII (welfare/fringe-benefit/tip/impatriate-worker regimes); Quadro D (capital gains, self-employment, and miscellaneous other income); the remainder of Quadro E (vehicle/guide-dog expenses for disability, leasing payments, spousal alimony, building-renovation/superbonus/energy-efficiency incentives, rent-relief deductions, and the E26-E83 catalog of coded 'altri oneri'); Quadro F (advance payments/withholding reconciliation/tax credits carried forward) and Quadros G through T (tax credits, additional data, RITA, cryptoasset/foreign-asset reporting, regional surtax computation, etc.); the 8x1000/5x1000/2x1000 tax-destination elections; the second frontespizio module used when a representative/guardian/heir files on behalf of the taxpayer; and every downstream computed-arithmetic result the withholding agent/Caf/professional calculates from these inputs (the return's own worksheet, Mod. 730-3). See VERIFICATION.md for the full scope rationale and every disclosed judgment call. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Government of Italy or the Agenzia delle Entrate.

Registry entry

it/agenzia-entrate/modello-730

Jurisdiction
Italy · national
Version
1.0.0
Verification
draft

Authoritative source Modello 730/2026, Redditi 2025 — a genuine, current PDF hosted directly on agenziaentrate.gov.it, no login/CAPTCHA/WAF gate, its own printed casella codes (A1-A6, B1-B12, C1-C18, D1-D5, E1-E83, F1-F15, ...) self-documenting every field's position, cross-referenced field-by-field against the companion istruzioni document's own numbered 'Rigo'-by-'Rigo' explanations

Machine access

Schema document
registry/it/agenzia-entrate/modello-730/1.0.0/schema.jsonapplication/schema+json
Registry catalog
registry/index.jsonone record per schema id

Field reference

67 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

  • taxpayerTaxId string required

    The taxpayer's 16-character Italian codice fiscale, obbligatorio (mandatory) per the form's own label.

    patternclassification: sensitive-pii
  • taxReturnFilingMode enum required

    Whether this return is filed with a substitute d'imposta (withholding agent, typically the employer/pension fund) who performs the year-end adjustment directly in the taxpayer's pay ('con_sostituto', the ordinary case — no casella is marked), or filed 'senza sostituto' (letter 'A' entered in the 730 senza sostituto casella) by an employee with no withholding agent able to perform the adjustment, on behalf of a deceased taxpayer, or by a taxpayer who declines the withholding agent's intermediation.

    enum: con_sostituto | senza_sostituto
  • integrativeReturnCode enum

    Which kind of supplementary (integrativo) return this is, filled in only when correcting/completing a previously filed original 730 for the same year: code 1 when the correction increases the credit or decreases the debt (or leaves the tax due unchanged); code 2 when it corrects only the substitute-d'imposta data block; code 3 when it corrects both the substitute-d'imposta data and the tax-due figures, provided the tax-due change is also favorable to the taxpayer. Left absent for an ordinary (non-integrativo) original return.

    enum: 1 | 2 | 3
  • jointFiling boolean

    Whether this is a joint return filed together with the taxpayer's spouse. This schema models only the individually-completed frontespizio/income/deduction fields; the spouse's own parallel data (which a joint return requires a second, linked 730 for) is out of scope for v1.0.0.

  • firstFilingDeclaration boolean

    Whether this is the taxpayer's first-ever income tax return filing (must be checked whenever the residenza anagrafica block is filled in for a first-time filer, per the form's own instruction).

  • surname string required

    The taxpayer's surname (for a woman, her maiden surname, per the form's own printed instruction).

    classification: pii
  • firstName string required

    The taxpayer's given name.

    classification: pii
  • sex enum required

    The taxpayer's sex as recorded on the codice fiscale.

    enum: M | Fclassification: sensitive-pii
  • dateOfBirth date required

    The taxpayer's date of birth. The form itself splits this into day-month-year boxes; modelled here as one ISO 8601 date, consistent with this registry's convention elsewhere.

    classification: sensitive-pii
  • birthPlace string required

    The taxpayer's place of birth: an Italian comune, or, for a taxpayer born abroad, the foreign country (in which case birthProvince is left blank, per the istruzioni).

    classification: pii
  • birthProvince string

    Two-letter abbreviation of the Italian province of birth. Left blank when birthPlace is a foreign country.

    patternclassification: pii
  • residenceComune string

    Comune of the taxpayer's current residence. Per the istruzioni, the whole residenza anagrafica block is filled in only when the taxpayer's residence changed between 2025-01-01 and the filing date, or when filing for the first time (see firstFilingDeclaration).

    classification: pii
  • residenceProvince string

    Two-letter abbreviation of the province of residenceComune.

    patternclassification: pii
  • residencePostalCode string

    5-digit Italian postal code of the residence.

    patternclassification: pii
  • residenceAddress string

    Street type, name, and house/civic number of the residence, combined into one line (the form itself splits these into separate boxes).

    classification: pii
  • domicilioFiscale2025Comune string required

    Comune of the taxpayer's fiscal domicile as of 2025-01-01, used to determine the region/comune for regional/municipal surtax attribution. Always filled in, per the istruzioni.

    classification: pii
  • domicilioFiscale2025Provincia string required

    Two-letter province abbreviation of domicilioFiscale2025Comune.

    patternclassification: pii
  • domicilioFiscale2026Comune string

    Comune of the taxpayer's fiscal domicile as of 2026-01-01. Filled in only when it differs from domicilioFiscale2025Comune, per the istruzioni.

    classification: pii
  • domicilioFiscale2026Provincia string

    Two-letter province abbreviation of domicilioFiscale2026Comune.

    patternclassification: pii
  • phone string

    Optional phone number (area code plus number, combined into one field) to help the Agenzia delle Entrate reach the taxpayer.

    classification: pii
  • mobile string

    Optional mobile phone number.

    classification: pii
  • email string

    Optional email address.

    classification: pii
  • specialTaxpayerSituation enum

    Marked only when this return is filed by someone other than the taxpayer themself: a legal representative/guardian/support administrator (tutelato_o_rappresentato), a parent filing for a minor child's own income (minore), or an heir filing on behalf of a deceased taxpayer (deceduto). This schema models only the primary taxpayer's own frontespizio module; the second frontespizio module the paper form requires in these cases (identifying the representative/tutor/heir themself) is out of scope for v1.0.0 — see VERIFICATION.md.

    enum: tutelato_o_rappresentato | minore | deceduto
  • spouseTaxId string

    The spouse's codice fiscale. Per the istruzioni, this must be entered whenever the taxpayer has a spouse even if the spouse is not fiscally dependent.

    patternclassification: sensitive-pii
  • spouseMonthsAsDependent integer

    Number of months in 2025 the spouse was fiscally dependent on the taxpayer (12 for the full year), filled in only when the spouse was in fact fiscally dependent.

    range: 1–12
  • dependent1Relationship enum

    The family relationship of the first dependent row: eldest dependent child (primo_figlio, casella F1), a later child (figlio, casella F), an ascendant such as a parent (ascendente, casella G), or another qualifying family member (altro_familiare, casella P).

    enum: primo_figlio | figlio | ascendente | altro_familiare
  • dependent1Disability boolean

    Whether this dependent has a recognized disability under Legge 5 febbraio 1992, n. 104. May be marked in addition to, or instead of, the F/F1 relationship marking.

  • dependent1TaxId string

    The dependent's codice fiscale, required for every dependent except a child in pre-adoptive foster care.

    patternclassification: sensitive-pii
  • dependent1MonthsAsDependent integer

    Number of months in 2025 this dependent was fiscally dependent on the taxpayer.

    range: 1–12
  • dependent1DeductionPercentage number

    Percentage of the dependent-relief deduction the taxpayer is claiming for this dependent (parents typically split 50/50, or allocate 100% to one parent by agreement).

    range: 0–100
  • dependent2Relationship enum

    Family relationship of the second dependent row. See dependent1Relationship.

    enum: primo_figlio | figlio | ascendente | altro_familiare
  • dependent2Disability boolean

    See dependent1Disability.

  • dependent2TaxId string

    See dependent1TaxId.

    patternclassification: sensitive-pii
  • dependent2MonthsAsDependent integer

    See dependent1MonthsAsDependent.

    range: 1–12
  • dependent2DeductionPercentage number

    See dependent1DeductionPercentage.

    range: 0–100
  • dependent3Relationship enum

    Family relationship of the third dependent row. See dependent1Relationship (this row can no longer be the eldest child, so primo_figlio is not offered here).

    enum: figlio | ascendente | altro_familiare
  • dependent3Disability boolean

    See dependent1Disability.

  • dependent3TaxId string

    See dependent1TaxId.

    patternclassification: sensitive-pii
  • dependent3MonthsAsDependent integer

    See dependent1MonthsAsDependent.

    range: 1–12
  • dependent3DeductionPercentage number

    See dependent1DeductionPercentage.

    range: 0–100
  • dependent4Relationship enum

    Family relationship of the fourth dependent row. See dependent3Relationship.

    enum: figlio | ascendente | altro_familiare
  • dependent4Disability boolean

    See dependent1Disability.

  • dependent4TaxId string

    See dependent1TaxId.

    patternclassification: sensitive-pii
  • dependent4MonthsAsDependent integer

    See dependent1MonthsAsDependent.

    range: 1–12
  • dependent4DeductionPercentage number

    See dependent1DeductionPercentage.

    range: 0–100
  • employmentIncomeRow1Type enum

    Income-type code for the first Quadro C Sezione I row: pensione (pension), lavoro_dipendente_o_assimilati (employment or assimilated income, including supplementary pension-fund payouts), lavori_socialmente_utili (subsidized socially-useful-work compensation), lavoro_zona_frontiera (frontier-zone employment income), pensione_superstiti_orfani (survivor's pension paid to orphans), lavoro_sportivi_dilettanti (amateur sports workers), or lavoro_sportivi_professionisti_under23 (professional athletes under 23). Compiling this column is mandatory whenever the row is used.

    enum: 7 values
  • employmentIncomeRow1ContractType enum

    Whether the underlying employment contract (or sports engagement) is a tempo_indeterminato (open-ended) or tempo_determinato (fixed-term) contract, per the corresponding Certificazione Unica 2026 point. Not applicable to pension-type rows.

    enum: tempo_indeterminato | tempo_determinato
  • employmentIncomeRow1Amount number

    Gross amount for this row, per the corresponding Certificazione Unica 2026 point (punto 1, 2, or 3 for ordinary employment/pension income).

    range: 0–∞classification: financial
  • employmentIncomeRow2Type enum

    Income-type code for the second Quadro C Sezione I row. See employmentIncomeRow1Type.

    enum: 7 values
  • employmentIncomeRow2ContractType enum

    See employmentIncomeRow1ContractType.

    enum: tempo_indeterminato | tempo_determinato
  • employmentIncomeRow2Amount number

    See employmentIncomeRow1Amount.

    range: 0–∞classification: financial
  • employmentIncomeRow3Type enum

    Income-type code for the third Quadro C Sezione I row. See employmentIncomeRow1Type.

    enum: 7 values
  • employmentIncomeRow3ContractType enum

    See employmentIncomeRow1ContractType.

    enum: tempo_indeterminato | tempo_determinato
  • employmentIncomeRow3Amount number

    See employmentIncomeRow1Amount.

    range: 0–∞classification: financial
  • irpefWithheld number

    Total IRPEF (national income tax) already withheld on the Sezione I/II employment/pension income, per Certificazione Unica 2026 punto 21.

    range: 0–∞classification: financial
  • ritaSubstituteTaxWithheld number

    Total substitute-tax withholding on early supplementary pension annuity payments (RITA), per the Certificazione Unica 2026 annotations coded AX. Applicable only when the Quadro C 'Casi particolari' box carries code 11.

    range: 0–∞classification: financial
  • regionalSurtaxWithheld number

    Total regional surtax on IRPEF already withheld on the Sezione I/II income, per Certificazione Unica 2026 punto 22.

    range: 0–∞classification: financial
  • municipalSurtaxAdvance2025 number

    2025 advance-payment installment of the municipal surtax already withheld, per Certificazione Unica 2026 punto 26.

    range: 0–∞classification: financial
  • municipalSurtaxBalance2025 number

    2025 balance installment of the municipal surtax already withheld, per Certificazione Unica 2026 punto 27.

    range: 0–∞classification: financial
  • municipalSurtaxAdvance2026 number

    2026 advance-payment installment of the municipal surtax already withheld.

    range: 0–∞classification: financial
  • medicalExpensesExemptPathologies number

    Medical expenses relating to conditions the Servizio Sanitario Nazionale recognizes as exempt from the standard co-payment ticket, for which unused relief can be carried to a non-dependent family member (see E2). Kept separate from medicalExpenses (colonna 2) per the form's own instruction that these two columns must not overlap.

    range: 0–∞classification: financial
  • medicalExpenses number

    Ordinary medical expenses incurred for the taxpayer or a fiscally dependent family member, per Certificazione Unica 2026 'Oneri detraibili' points 341-352 (onere code 1). A 19% deduction is calculated by the withholding agent/Caf/professional only on the portion exceeding EUR 129.11.

    range: 0–∞classification: financial
  • medicalExpensesForNonDependentFamilyMembers number

    Medical expenses incurred for a family member who is not fiscally dependent on the taxpayer but has an exempt pathology, limited to the portion of relief that did not fit within that family member's own gross tax due. Capped at EUR 6,197.48 per the istruzioni.

    range: 0–6197.48classification: financial
  • medicalExpensesForDisability number

    Medical expenses for persons with a recognized disability: aids for mobility/ambulation/lifting, and technical/IT aids supporting self-sufficiency and integration. The 19% relief applies to the full amount, with no EUR 129.11 threshold.

    range: 0–∞classification: financial
  • mortgageInterestContractCode enum

    Which mortgage-date band the principal-residence mortgage interest falls into: before_2022 for mortgages stipulated on or before 2021-12-31 (form code 7), between_2022_and_2024 for mortgages stipulated 2022-01-01 through 2024-12-31 (form code 48), or from_2025 for mortgages stipulated from 2025-01-01 (form code 57).

    enum: before_2022 | between_2022_and_2024 | from_2025
  • mortgageInterestAmount number

    Interest, accessory charges, and index-linked revaluation amounts paid in 2025 on a mortgage taken out to purchase the taxpayer's principal residence, per Certificazione Unica 2026 'Oneri detraibili' points 341-352 (onere code matching mortgageInterestContractCode).

    range: 0–∞classification: financial
  • mandatoryPensionContributions number

    Mandatory and voluntary social-security/welfare contributions paid to the taxpayer's own pension fund, fully deductible from total income (also deductible when paid on behalf of a fiscally dependent family member). Includes INPS Gestione ex-Scau agricultural contributions (net of the employee-attributable share), INAIL domestic-accident insurance (assicurazione casalinghe), and voluntary contributions such as degree-redemption (riscatto laurea) buy-backs.

    range: 0–∞classification: financial

Verification record

This file is the source-review record for this document version, per the manual-source-review-v1 practice. It documents the provenance of the published fields and states the current verification claim honestly.

Current claim

  • status: draft
  • verification.method: manual-source-review-v1
  • verification.lastVerifiedAt: 2026-07-11

This is a GovSchema Standard Research cycle (GOV-2382). Italy was not previously in the registry (35 jurisdictions live before this cycle). This document opens Italy as the 36th jurisdiction, via its Taxes vertical, sourced from Agenzia delle Entrate's Modello 730/2026 — the flagship annual income tax return for employees/pensioners.

Sources examined and fetched fresh

Source 1 (primary source, the form)
  • Authority: Agenzia delle Entrate (AdE).
  • Document: Modello 730/2026, "Redditi 2025" — the current version as published on agenziaentrate.gov.it's own "730-2026 — Modello e istruzioni" landing page at the time of this cycle's retrieval.
  • URL: https://www.agenziaentrate.gov.it/portale/documents/20143/9764684/730_modello_2026.pdf (direct PDF); landing page: https://www.agenziaentrate.gov.it/portale/730-2026/modello-e-istruzioni (HTTP 200, confirmed live 2026-07-11 — an earlier draft of this document cited a different, now-404 URL path for this landing page; corrected after CI's verify-sources check caught it).
  • Fetched: direct curl from this sandbox, 2026-07-11. HTTP 200, no login/CAPTCHA/WAF gate, no WebFetch fallback needed (unlike some other gov PDF hosts this registry has previously hit timeouts against).
  • Size: 1,054,909 bytes (matches the pre-scouted ~1.05MB figure).
  • sha256: e7fa9aa859e165878a5093e9c1ae23ee4c463d05dd25d738d63982088be257d9
  • Pages: 24 (confirmed via pdfjs-dist's own doc.numPages, matching the pre-scouted figure).
  • Extraction method: pdfjs-dist 4.10.38, legacy/build/pdf.mjs. page.getAnnotations() returned zero Widget annotations across all 24 pages — a static, print/hand-fill template, not a fillable PDF (confirmed independently in this cycle, matching the pre-scouted finding). A first pass used page.getTextContent() directly (PDF content-stream reading order), which is legible for simple sections but interleaves columns unpredictably in the dense multi-column Quadro C/Quadro E grids. A second pass grouped each page's text items by their own transform y-coordinate into rows (rounded to a 3-unit bucket) and sorted each row by x-coordinate — a coordinate-based reading-order reconstruction, the same technique this registry has used before for other out-of-order generic-grid forms (e.g. dk/skattestyrelsen/oplysningsskemaet) — which reliably recovered the form's own printed casella sequence (A1-A6, B1-B12, C1-C18, D1-D5, E1-E83, F1-F15, ...) in correct visual reading order.
  • What it confirms: every casella code and printed label this schema's fields[]/documents[] cite, in place, cross-checked against the istruzioni's own field-by-field explanation (Source 2).
Source 2 (companion, the istruzioni)
  • Document: "730/2026, ISTRUZIONI PER LA COMPILAZIONE" (aggiornate al 28 maggio 2026).
  • URL: https://www.agenziaentrate.gov.it/portale/documents/20143/9764684/730_2026_istruzioni_+agg+28+05+2026.pdf
  • Fetched: direct curl, 2026-07-11. HTTP 200, no gate.
  • Size: 3,552,969 bytes.
  • sha256: 0f09c12914f1132f8114cf22e836915d4f9f8fabe99888923bdb1316ffcfe8e6
  • Pages: 175 (a much larger document than the form itself, since it covers every quadro's field-by-field instructions, appendix tables, and worked examples).
  • Extraction method: same pdfjs-dist pipeline as Source 1 (plain getTextContent() reading order, sufficient for this document's predominantly single-column prose layout).
  • What it confirms: the exact numbered-Rigo/Colonna explanation for every casella this schema models (e.g. "Righi da C1 a C3 - Redditi di lavoro dipendente e assimilati", "Rigo E21 - Contributi previdenziali e assistenziali"), the enum values for every coded column, the eligibility thresholds (e.g. EUR 129.11/EUR 6,197.48 for medical-expense reliefs), and the verbatim signature-declaration text.

Casella-to-field mapping method

For every field this schema models, the same three-step process was used:

  1. Locate the casella's printed code (e.g. E21) and its immediately adjacent printed label in the coordinate-reconstructed Modello 730 text (Source 1).
  2. Locate the istruzioni's own numbered explanation for that exact code (e.g. grep -n "Rigo E21" against the istruzioni's plain-text extraction, Source 2), which states the field's meaning, its column breakdown (when a rigo has multiple columns), any coded-enum values, and any eligibility caps/thresholds.
  3. Cross-check the two: the form's own printed label plus the istruzioni's fuller explanation, and only then write the field's label/description/ validation/sourceRef. This is the same "printed casella self-documents the position, istruzioni self-documents the meaning" method already applied to pl/mf/zeznanie-pit-37 and es/aeat/declaracion-censal-personas-fisicas-modelo-030, both also non-AcroForm, fully self-labelled static templates.

Scope: what v1.0.0 models and what it defers

Modello 730/2026 is a large, multi-quadro return (24 pages covering land income, building income, employment/pension income, capital/miscellaneous income, deductions, tax credits, advance payments, and more). Per this registry's established convention for large annual-return forms (Denmark's Oplysningsskemaet, Finland's 50A, South Africa's ITR14 family), v1.0.0 scopes to the common salaried-employee/pensioner core and explicitly defers the rest, rather than attempting all 24 pages in one version or silently omitting sections without disclosure.

Modelled in v1.0.0:

| Section | Representative fields | Modelled scope | |---|---|---| | Frontespizio, Tipo di dichiarazione | taxReturnFilingMode, integrativeReturnCode, jointFiling, firstFilingDeclaration | Full for the primary taxpayer module | | Frontespizio, Dati del contribuente | taxpayerTaxId, surname, firstName, sex, dateOfBirth, birthPlace, birthProvince | Full | | Frontespizio, Residenza anagrafica | residenceComune, residenceProvince, residencePostalCode, residenceAddress | Full (block itself is conditionally relevant only when residence changed or first filing, per the form's own instruction — modelled as always-available optional fields) | | Frontespizio, Domicilio fiscale | domicilioFiscale2025Comune/Provincia (required), domicilioFiscale2026Comune/Provincia (optional) | Full | | Frontespizio, Telefono e posta elettronica | phone, mobile, email | Full | | Frontespizio, Situazioni particolari | specialTaxpayerSituation | Only the primary-module casella; see judgment call 1 | | Familiari a carico | spouseTaxId/spouseMonthsAsDependent + 4 bounded dependent slots (dependentNRelationship/Disability/TaxId/MonthsAsDependent/DeductionPercentage) | Simplified; see judgment call 2 | | Quadro C, Sezione I | employmentIncomeRowN{Type,ContractType,Amount} (rows 1-3, caselle C1-C3) | Full for the 3-row income table | | Quadro C, Sezione III-IV | irpefWithheld, ritaSubstituteTaxWithheld, regionalSurtaxWithheld, municipalSurtaxAdvance2025, municipalSurtaxBalance2025, municipalSurtaxAdvance2026 (C9-C13) | Full | | Quadro E, Sezione I | medicalExpensesExemptPathologies/medicalExpenses (E1), medicalExpensesForNonDependentFamilyMembers (E2), medicalExpensesForDisability (E3), mortgageInterestContractCode/mortgageInterestAmount (E7) | Only these 4 righi of Sezione I's ~14 righi | | Quadro E, Sezione II | mandatoryPensionContributions (E21) | Only this 1 rigo of Sezione II's ~13 righi | | Firma della dichiarazione | documents[].signatureDeclaration | Modelled as an attestation, not a field |

Total: 67 fields[] entries and 4 documents[] entries.

Explicitly deferred (out of scope for v1.0.0):

  • Quadro A (redditi dei terreni — land income) and Quadro B (redditi dei fabbricati — building/property income), including the rental cedolare-secca election and IMU-related fields. Property income is common but a materially separate v1.1.0-scale addition (Quadro B alone runs to 13 columns across 5 righi plus 3 sub-sections on registered lease contracts).
  • Quadro C, Sezione II (other assimilated income: co.co.co-style compensation, family allowances) and Sezioni V-VIII (welfare aziendale/fringe-benefit reductions, impatriate-worker/researcher tax regimes, tip taxation for the tourism/hospitality sector, in-kind benefits) — niche relative to ordinary wage/pension income.
  • Quadro D (redditi di capitale, lavoro autonomo, redditi diversi — capital gains, self-employment income, and miscellaneous other income) in its entirety.
  • Quadro E, remainder — vehicle/guide-dog expenses for disability (E4, E5), previously-instalmented medical expenses (E6), leasing payments (E14), the entire E22-E83 catalog of coded "altri oneri deducibili"/ "altre detrazioni" (spousal alimony, building-renovation/superbonus/ sismabonus incentives, energy-efficiency incentives, rent-relief deductions for tenants, and more) — by far the largest deferred section by row count, but each individual rigo is a narrow, rarely-applicable case relative to the four modelled here.
  • Quadro F (acconti, ritenute, eccedenze — advance-payment reconciliation, other withholding, prior-year credit carryforwards) and Quadro G onward (tax credits, RITA, additional data, regional-surtax computation, cryptoasset/foreign-asset reporting, etc.).
  • The 8x1000/5x1000/2x1000 tax-destination elections (choice of religious confession / non-profit / political-party recipient for a fraction of IRPEF) — a distinct signature-gated election block, not part of the income/deduction core.
  • The second frontespizio module used when a legal representative, guardian, or heir files on behalf of the taxpayer (its own identifying data block) — see judgment call 1.
  • Every downstream computed-arithmetic result (Mod. 730-3, the settlement worksheet the withholding agent/Caf/professional produces from these inputs) — this schema captures declared inputs only, consistent with this registry's established convention (e.g. pl/mf/zeznanie-pit-37 omitting its own computed-arithmetic chain) of not fabricating a downstream total from an admittedly incomplete input set.

Judgment calls

  1. specialTaxpayerSituation models only the primary taxpayer's own frontespizio casella, not the second frontespizio module. Per the istruzioni ("Dichiarazione presentata da soggetto diverso dal contribuente"), when a representative/guardian/heir files on behalf of the taxpayer, the paper form requires a second frontespizio module identifying that other person (their own codice fiscale, name, address, etc.) and, for an heir, an additional "Data carica erede" field and a "Mod. 730 dipendenti senza sostituto" casella. Modelling that second module would roughly double the frontespizio's field count for a comparatively rare filing scenario; this v1.0.0 discloses the gap rather than silently omitting it, and keeps only the single-casella signal (specialTaxpayerSituation) on the primary module, matching this registry's precedent of a disclosed narrower scope over a fabricated full model (e.g. pl/mf/zeznanie-pit-37's joint-filing spouse columns).
  2. The Familiari a carico (dependents) table is simplified relative to the live form. The paper form's row 1 (coniuge/spouse) and rows 2-5 (up to 4 further dependents) share one physical checkbox-column set (C/F1/F/G/D/P) whose available values differ by row (row 1 offers only C; rows 2-5 offer F1/F/G/D/P, with F1 only meaningful on row 2 since it denotes the eldest dependent child). This schema flattens that into a bounded dependent1..dependent4 set (the same bounded repeating-group flattening convention this registry has used for DK's entrant/child rows and FI's custody-of-children-outside-Finland rows), with dependent1Relationship offering primo_figlio and dependent2-4Relationship omitting it (since only the first dependent row can be the eldest child). The disability flag (D) is modelled as an independent boolean per the istruzioni's own statement that it "non è necessario barrare anche la casella 'F'" when marked — i.e., it is not strictly a modifier of the F/F1 checkbox, so keeping it a separate field is the more faithful reading. Not modelled: the finer sub-flags for pre-adoptive foster placement (affido preadottivo) and the columns distinguishing "100%" single-parent detraction claims and joint-custody percentage splits beyond the plain dependentNDeductionPercentage figure — these are real but comparatively narrow refinements on top of the modelled core.
  3. taxReturnFilingMode is derived from the absence/presence of the letter "A" in the "730 senza sostituto" casella, not a directly-labelled enum on the form. The ordinary case (a withholding agent performs the year-end adjustment) corresponds to the casella being left blank; this schema makes that an explicit con_sostituto enum value rather than requiring a consumer to infer "blank means ordinary" — a deliberate translation of a presence/absence casella into a positive two-value enum, disclosed here rather than left implicit.
  4. Money fields use type: "number" with only a minimum: 0 constraint, matching this registry's established convention (e.g. pl/mf/zeznanie-pit-37 judgment call 5) of modelling a split euro/cent-box currency amount as one decimal number, rather than a stricter cent-precision pattern.
  5. taxpayerTaxId/spouseTaxId/dependentNTaxId use a generic 16-character alphanumeric pattern (^[A-Z0-9]{16}$), not the full structural codice-fiscale regex (which encodes surname/name consonants, birth year/month/day, sex offset, and comune belfiore code with a checksum letter). The generic pattern is deliberately chosen to avoid silently rejecting a syntactically valid but structurally unusual codice fiscale (e.g. a provisionally-assigned numeric-only code for a foreign national); this is disclosed rather than presented as a full checksum validator.
  6. No requiredWhen/conditional-gating rule was fabricated for a constraint the sources state only in prose with no actual keyable form field. For example, the istruzioni states dependents' relief percentages must sum to specific splits between parents (50/50 by default, or 100/0 by agreement) — a real constraint, but not backed by any single casella this schema could gate on without inventing a synthetic field; it is disclosed in dependent1DeductionPercentage's own description instead of encoded as a fabricated crossFieldValidation rule.
  7. documents[].medicalExpenseDocumentation and .mortgageInterestDocumentation use requiredWhen with a greaterThan: 0 numeric condition, not a notEquals "" string condition against an optional field — deliberately avoiding the notEquals-empty-string absent-field bug this registry has previously caught (an absent numeric field is undefined, which greaterThan correctly treats as not satisfying the condition, unlike a notEquals "" check against a field that may legitimately be entirely absent).

Test run (Phase 3)

No live submission was attempted: Modello 730 senza sostituto is filed through Agenzia delle Entrate's own authenticated portal (via SPID/CIE/CNS digital identity) or through a Caf/professional intermediary, and the con sostituto route is filed through the taxpayer's own employer/pension-fund payroll system — submitting fabricated taxpayer data against Italy's live tax administration is not a safe or reversible action.

Instead, two fully hand-constructed mock records were built from this document's own field inventory and validated with a purpose-written script (validate_instance.mjs) that compiles schema.json's own fields[] (type/validation/required) into a JSON Schema draft 2020-12 document and checks it with ajv, plus a from-scratch evaluator for the shared Condition grammar (leaf field/operator, and all/any/not composition) that checks both fields[].requiredWhen and every documents[] entry's static required/requiredWhen status against a documents: [{id, provided}] array — deliberately checking documents[] requiredness explicitly rather than only fields[], since this registry's own accumulated experience is that conformance checkers routinely pass "0 errors" while silently skipping documents[] altogether.

``` $ node validate_instance.mjs registry/it/agenzia-entrate/modello-730/1.0.0/schema.json \ conformance/it/agenzia-entrate/modello-730/1.0.0/employed-single-filer-minimal-required-only.json Static (required/type/pattern/enum) validation: PASS requiredWhen/documents[] conditional validation: PASS

OVERALL: PASS

$ node validate_instance.mjs registry/it/agenzia-entrate/modello-730/1.0.0/schema.json \ conformance/it/agenzia-entrate/modello-730/1.0.0/pensioner-with-dependents-mortgage-and-medical-expenses.json Static (required/type/pattern/enum) validation: PASS requiredWhen/documents[] conditional validation: PASS

OVERALL: PASS ```

Mutation controls — five negative fixtures, each targeting a distinct validation rule, run against the same script to confirm it actually catches violations rather than passing vacuously:

``` $ # mutation-control-missing-required-field.json: 'surname' (required: true) removed Static (required/type/pattern/enum) validation: FAIL - (root) must have required property 'surname' requiredWhen/documents[] conditional validation: PASS OVERALL: FAIL

$ # mutation-control-missing-required-document.json: 'signatureDeclaration' document omitted Static (required/type/pattern/enum) validation: PASS requiredWhen/documents[] conditional validation: FAIL - document 'signatureDeclaration' is required (static required:true) but not provided OVERALL: FAIL

$ # mutation-control-missing-conditional-document.json: mortgageInterestAmount/medicalExpenses $ # both > 0 but medicalExpenseDocumentation/mortgageInterestDocumentation not provided Static (required/type/pattern/enum) validation: PASS requiredWhen/documents[] conditional validation: FAIL - document 'medicalExpenseDocumentation' is required (requiredWhen matched) but not provided - document 'mortgageInterestDocumentation' is required (requiredWhen matched) but not provided OVERALL: FAIL

$ # mutation-control-enum-violation.json: 'sex' set to 'X' (only 'M'/'F' valid) Static (required/type/pattern/enum) validation: FAIL - /sex must be equal to one of the allowed values requiredWhen/documents[] conditional validation: PASS OVERALL: FAIL

$ # mutation-control-pattern-violation.json: 'taxpayerTaxId' shortened to 5 characters Static (required/type/pattern/enum) validation: FAIL - /taxpayerTaxId must match pattern "^[A-Z0-9]{16}$" requiredWhen/documents[] conditional validation: PASS OVERALL: FAIL

$ # mutation-control-range-violation.json: 'dependent1DeductionPercentage' set to 150 (max 100) Static (required/type/pattern/enum) validation: FAIL - /dependent1DeductionPercentage must be <= 100 requiredWhen/documents[] conditional validation: PASS OVERALL: FAIL ```

The mutation-control-missing-conditional-document.json case is the one that specifically exercises documents[].requiredWhen (as opposed to the plain static-required case in mutation-control-missing-required-document .json) — a validator that only checks static required: true documents and ignores conditional requiredWhen rules would incorrectly accept this fixture, which is exactly the gap this fixture exists to catch.

Both meta-schema validators were run against the finished document and pass clean:

``` $ node tools/validate.mjs registry/it/agenzia-entrate/modello-730/1.0.0/schema.json ok registry/it/agenzia-entrate/modello-730/1.0.0/schema.json

1/1 document(s) passed.

$ node tools/validate-ajv.mjs registry/it/agenzia-entrate/modello-730/1.0.0/schema.json ok registry/it/agenzia-entrate/modello-730/1.0.0/schema.json [v0.3]

1/1 document(s) validated against the meta-schema (ajv 2020-12). ```

A full-registry run of both validators (362 documents total, including this one) also passed clean, and tools/govschema-client/registry-index.json was regenerated via npm run build-index (in tools/govschema-client/, after npm ci --include=dev since a plain npm ci under a local NODE_ENV= production skips ajv's devDependency install) to include this document's entry.

Italy's other five verticals (screened this cycle, not authored)

  • DMV: a strong pre-scouted follow-on candidate exists — Modello TT2119, Ministero delle Infrastrutture e dei Trasporti / ilportaledellautomobilista.it, confirmed unauthenticated, ~13 pages, real embedded text layer, no AcroForm widgets, its own lettered/coded operation-type table. Not authored this cycle (one-deliverable-per-PR convention); tracked in CATALOG.md's Known Gaps section as this cycle's next candidate.
  • Passport (Polizia di Stato Modello 308): the form's actual fillable pages are a scanned image with zero extractable text (confirmed via pdfjs-dist returning no text-content items for those pages); only the separate instructions page carries real text. A dead end for this specific publishing pattern.
  • Business Formation (Registro Imprese ComUnica): digital-signature/ telematic-only, filed via commercialisti (accountant) intermediaries through the Camere di Commercio's own telematic channel; no plain downloadable fillable modulo for direct citizen use.
  • National ID (Carta d'Identità Elettronica): fully appointment-based at the comune with mandatory in-person biometric capture; no downloadable application form for the main flow.
  • Visa (Farnesina's national D-visa form): a confirmed field-for-field duplicate of the already-modelled de/auswaertiges-amt/national-visa-application EU-harmonized template, the same finding this registry has already reached for Poland's and Spain's equivalent forms.

See CATALOG.md's Known Gaps & Opportunities section for the full disclosure of all five.

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 Agenzia delle Entrate or any government. The authoritative source is always the live government form and its official instructions.