Registry entry
Italy VAT Number (Partita IVA) Business-Start Declaration for Individual Enterprises and Self-Employed Workers (Modello AA9/12)
The Italian Modello AA9/12, 'Dichiarazione di inizio attività, variazione dati o cessazione attività ai fini IVA (imprese individuali e lavoratori autonomi)', the declaration individual entrepreneurs (imprese individuali) and self-employed workers (lavoratori autonomi — artists/professionals) file with the Agenzia delle Entrate under Art. 35 of D.P.R. 26 ottobre 1972, n. 633 to obtain a Partita IVA (VAT number), Italy's core mechanism for an individual to formally start a business subject to VAT. The same form also serves data-variation and business-cessation declarations, and a VAT-certificate duplicate request, sharing common Quadro B/Quadro C identifying-data fields with the business-start pathway. This document models the business-start (inizio attività) pathway in full: Quadro A's declaration-type selector and start date; Quadro B's taxpayer identification, prevailing-activity (ATECO code), premises address, intra-EU-acquisition and e-commerce declarations, and the two preferential-regime elections; Quadro C's titolare (individual owner) personal and residence data; the submission-channel choice and its conditional identity-document attachment; and the closing quadri-compilati/signature block. It deliberately does NOT model: the variazione-dati and cessazione-attività declaration types' own date/reference fields (Quadro A caselle 2-3); Quadro D (rappresentante — used only when a court-appointed administrator, guardian, heir, or non-resident's fiscal representative signs in the titolare's place); Quadro E (extraordinary operations/business transfers/successions/business leases — irrelevant to a fresh business start); Quadro F (multiple accounting-record deposit locations, including abroad); Quadro G (secondary activities and additional business locations beyond the single prevailing activity/premises Quadro B models); Quadro H (the presunzione-di-cessione representation-relationship notice); Quadro I (the additional clientele-type/premises/investment disclosures required only for the specific ATECO activity codes listed in the Agenzia delle Entrate's 21 December 2006 director's provvedimento, an external, form-external code list this v1.0.0 does not enumerate); the DELEGA proxy-appointment block; and the IMPEGNO ALLA PRESENTAZIONE TELEMATICA block (the office-facing CAF/intermediary transmission undertaking, not an applicant-supplied field). 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-aa9-12-inizio-attivita-partita-iva
Machine access
- Schema document
registry/it/agenzia-entrate/modello-aa9-12-inizio-attivita-partita-iva/1.0.0/schema.jsonapplication/schema+json- Verification record
registry/it/agenzia-entrate/modello-aa9-12-inizio-attivita-partita-iva/1.0.0/VERIFICATION.mdtext/markdown- Registry catalog
registry/index.jsonone record per schema id
Field reference
37 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
-
taxpayerTaxCodestring requiredThe declarant's 16-character Italian codice fiscale, printed at the top of every page of the declaration.
patternclassification: sensitive-pii -
declarationTypeenum requiredWhich of the four declaration types Quadro A's checkboxes select. This v1.0.0 fully models only 'inizio_attivita' (business start); the other three values are recorded for completeness (matching the source form's own selector) but their own type-specific fields (variation/cessation date, VAT-number reference, duplicate-certificate request) are out of scope — see this document's own description.
enum: inizio_attivita | variazione_dati | cessazione_attivita | richiesta_duplicato_partita_iva -
activityStartDatedate optionalThe date the VAT-subject business activity began. Must not be later than the date the declaration is filed.
-
businessOrIndividualNamestring requiredThe business name (ditta), if one exists, otherwise the taxpayer's own surname and given name, written in full with no abbreviations. Married women give only their maiden surname, per the istruzioni's general drafting rules.
length: 0–60classification: sensitive-pii -
nonResidentForeignAddressstring optionalFor a non-resident subject operating in Italy through a stabile organizzazione (permanent establishment) or, for a self-employed worker, the location of their studio abroad: the complete foreign address and city of the enterprise's or studio's seat.
length: 0–100 -
foreignVatNumberstring optionalFor a subject resident in another EU Member State: the VAT identification number (or other identifying number) assigned by their home State. Mandatory for such subjects per the istruzioni, though this schema does not track EU-residency as a separate boolean field.
length: 0–30 -
activityCodestring requiredThe ATECO classification code of the prevailing activity (by turnover), drawn from the economic-activity classification table in force at the time of filing, published by the Agenzia delle Entrate/Ministero dell'Economia e delle Finanze.
pattern -
activityDescriptionstring requiredThe plain-text description corresponding to the declared activity code.
length: 0–100 -
presumedTurnoverEurinteger optionalEstimated annual (or pro-rata) turnover in whole euros, rounded per the istruzioni's own rounding rule. Filled in only when the taxpayer believes this turnover triggers a special VAT regime with its own compliance obligations (e.g. exempt farmers, travelling-show operators); must be left blank by taxpayers electing either preferential regime recorded in 'favorableTaxRegime'.
range: 0–∞classification: financial -
intraCommunityAcquisitionsFlagboolean optionalChecked by taxpayers who, before making any intra-EU acquisitions of the goods identified by the decree of 22 December 2005 (issued under Art. 60-bis), are required to post a surety bond or bank guarantee with the competent office, and who plan to make such acquisitions — even occasionally — from the moment of this business-start declaration. Does not by itself request VIES-archive inclusion (that requires the out-of-scope Quadro I).
-
premisesAddressstring requiredThe complete address of the individual enterprise's seat or, for a self-employed worker, the location of their studio. For a non-resident subject relying on a stabile organizzazione/base fissa, its address instead.
length: 0–100classification: pii -
premisesPostalCodestring requiredThe 5-digit postal code (Codice di Avviamento Postale) of the business premises address.
pattern -
premisesMunicipalitystring requiredThe municipality (comune) of the business premises address, written in full with no abbreviations.
length: 0–60 -
premisesProvincestring requiredThe 2-letter Italian province code (the same abbreviation used on vehicle registration plates) of the business premises municipality, or 'EE' for a foreign address.
pattern -
premisesAccountingRecordsKeptHereboolean optionalChecked only if the taxpayer's accounting records required by tax law are kept, in whole or in part, at the business premises address given above.
-
favorableTaxRegimeenum optionalWhich preferential tax regime the taxpayer elects, if any: the youth-entrepreneurship/mobility-worker regime (Art. 27, commi 1-2, D.L. 98/2011), or the flat-rate regime for business/arts/professional-activity taxpayers (Art. 1, comma 54, L. 190/2014). Electing either regime means 'presumedTurnoverEur' must be left blank.
enum: regime_vantaggio_giovanile_mobilita | regime_forfetario -
ecommerceWebsiteUrlstring optionalThe web address used to carry out e-commerce transactions (sale of goods/services, digital-content distribution, financial/stock-market operations, public procurement, or any other commercial-type procedure conducted over the Internet).
length: 0–100 -
ecommerceWebsiteTypeenum optionalWhether the declared e-commerce website (see 'ecommerceWebsiteUrl') is the taxpayer's own independent site ('proprio') or a third party's site the taxpayer uses ('ospitante'). Filled in together with 'ecommerceWebsiteUrl' whenever the taxpayer engages in e-commerce activity; left blank otherwise.
enum: proprio | ospitante -
ecommerceServiceProviderstring optionalThe name of the party providing Internet access and hosting space, when the declared e-commerce site is a third party's ('ospitante').
length: 0–60 -
ownerTaxCodestring requiredThe codice fiscale of the titolare (the individual owner of the enterprise or the self-employed worker).
patternclassification: sensitive-pii -
ownerSurnamestring optionalThe titolare's surname. May be omitted if already given in 'businessOrIndividualName' (Quadro B).
length: 0–30classification: sensitive-pii -
ownerGivenNamestring optionalThe titolare's given name. May be omitted if already given in 'businessOrIndividualName' (Quadro B).
length: 0–30classification: sensitive-pii -
ownerBirthDatedate requiredThe titolare's date of birth.
classification: sensitive-pii -
ownerBirthMunicipalitystring requiredThe titolare's municipality of birth, or foreign country of birth if born abroad.
length: 0–60classification: sensitive-pii -
ownerBirthProvincestring requiredThe 2-letter province code of the titolare's municipality of birth, or 'EE' if born abroad.
pattern -
ownerResidenceAddressstring requiredThe titolare's complete residenza anagrafica (civil registry residence) address or, if different, domicilio fiscale (tax domicile) address. For a non-resident subject, the Italian tax domicile of their nominated fiscal representative.
length: 0–100classification: sensitive-pii -
ownerResidencePostalCodestring requiredThe 5-digit postal code of the titolare's residence/domicile address.
pattern -
ownerResidenceMunicipalitystring requiredThe municipality of the titolare's residence/domicile address, written in full with no abbreviations.
length: 0–60classification: sensitive-pii -
ownerResidenceProvincestring requiredThe 2-letter province code of the titolare's residence/domicile municipality, or 'EE' for a foreign address.
pattern -
ownerAccountingRecordsKeptHereboolean optionalChecked only if the taxpayer's accounting records are kept, in whole or in part, at the titolare's residence/domicile address rather than the business premises address.
-
submissionChannelenum requiredThe channel used to file the declaration: in duplicate directly (or via a specially delegated person) at any Agenzia delle Entrate office regardless of the taxpayer's tax domicile; in a single copy by registered mail, attaching a photocopy of the declarant's identity document; or telematically, either directly by the taxpayer or through an authorized intermediary. Taxpayers required to register with the Registro delle Imprese instead file via the separate ComUnica telematic channel, out of scope for this document (see VERIFICATION.md).
enum: sportello_agenzia_entrate | posta_raccomandata | telematico -
formsCompiledQuadroAboolean requiredAffirmative checkbox confirming Quadro A (tipo di dichiarazione) was completed, in whole or in part. The source form's 'quadri compilati' box lists independent checkboxes A through I; this document models only A, B, and C (its own in-scope Quadri) as fields — D through I are out of scope for this v1.0.0 (see VERIFICATION.md).
-
formsCompiledQuadroBboolean requiredAffirmative checkbox confirming Quadro B (soggetto d'imposta) was completed, in whole or in part.
-
formsCompiledQuadroCboolean requiredAffirmative checkbox confirming Quadro C (titolare) was completed, in whole or in part.
-
totalPagesCountinteger requiredThe total number of pages making up the declaration, entered in the 'quadri compilati e firma della dichiarazione' box.
range: 1–∞ -
declarationSignerTaxCodestring requiredThe codice fiscale of the person signing the declaration (the titolare or their legal/negotiating representative), already included in Quadro C or the out-of-scope Quadro D.
patternclassification: sensitive-pii -
declarationSignatureDatedate requiredThe date the declarant signs the declaration.
Verification record
This file is the source-review record for this document version, per the manual-source-review-v1 practice. It documents the provenance of the published fields and states the current verification claim honestly.
Current claim
status:draftverification.method:manual-source-review-v1verification.lastVerifiedAt:2026-07-15
This is a GovSchema Standard Research cycle (GOV-3045). Italy stood at 4 of 6 verticals (DMV, Taxes, Visa, Passport) before this update, via the concurrently-landed GOV-3031/GOV-3032 Passport/Visa openings. This document opens Business Formation, reaching 5 of 6.
This overturns a prior "dead end" finding
This registry's own it/agenzia-entrate/modello-730 VERIFICATION.md (GOV-2382) recorded Italy's Business Formation vertical as a dead end, having examined only the centralized Registro Imprese ComUnica telematic-filing system (digital-signature/intermediary-only — correctly still a dead end for a plain downloadable form). That prior screening did not consider the Agenzia delle Entrate's own, separate AA9/12 VAT-registration declaration — the document a person actually starting an individual business/self-employed activity files to obtain a Partita IVA (VAT number), independent of whether they are also obliged to register with the Registro Imprese. This is the same agency and source tier already established in this registry via modello-730, and it is a genuine, directly-downloadable, unauthenticated PDF.
Sources examined and fetched fresh
Source 1 (primary source, the form)
- Authority: Agenzia delle Entrate (AdE).
- Document: Modello AA9/12, "Dichiarazione di inizio attività, variazione dati o cessazione attività ai fini IVA (imprese individuali e lavoratori autonomi)".
- URL:
https://www.agenziaentrate.gov.it/portale/documents/20143/6020466/Modello+aa9_AA9_12+modello.pdf/b160f029-bd20-984e-334d-5f7602c2ae59?t=1749731883657; landing page:https://www.agenziaentrate.gov.it/portale/web/guest/schede/istanze/dichiarazione-iva/dichiarazione-di-inizio-variazione-e-cessazione-attivita-aa912. - Fetched: direct
curlfrom this sandbox, 2026-07-15. HTTP 200, no login/CAPTCHA/WAF gate. - Size: 80,112 bytes — matches the scouting subagent's own reported size exactly.
- sha256:
a75a7ddab209b5355dc0ab40f78e6ba27d43806140ab60de1f9c8857dc32c599— matches the scouting subagent's own reported hash exactly. - Pages: 5 (confirmed via
pdfjs-dist's owndoc.numPages). - Extraction method:
pdfjs-dist(legacy/build/pdf.js, CommonJS entry point — this sandbox's copy ships nolegacy/build/pdf.mjs, unlike some prior cycles' installs).page.getAnnotations()returned zero Widget annotations across all 5 pages — a static print/hand-fill template (an/AcroFormdictionary exists in the Catalog but its/Fieldsarray is empty), the same source tier already accepted for this registry's ownmodello-730,pl/mf/zeznanie-pit-37, andes/aeat/declaracion-censal-personas-fisicas-modelo-030. Text extracted viapage.getTextContent()with each item'stransformy-coordinate used to group text into rows (rounded to whole units) sorted by x — the form's Quadro/riquadro structure is single-column enough that this recovered fully legible reading order on every page without further reconstruction. - What it confirms: every Quadro/riquadro label this schema's
fields[]/documents[]cite, in place: Quadro A's four declaration-type checkboxes, Quadro B's soggetto d'imposta block (identifying data, activity, e-commerce, preferential regimes), Quadro C's titolare block, and the closing quadri-compilati/firma block.
Source 2 (companion, the istruzioni)
- Document: "AA9/12, ISTRUZIONI PER LA COMPILAZIONE".
- URL:
https://www.agenziaentrate.gov.it/portale/documents/20143/6020466/AA9_12+istruzioni_2024.pdf/3447f8ab-0055-ec13-b96e-9d0ef6d3e3a6?t=1711542402670 - Fetched: direct
curl, 2026-07-15. HTTP 200, no gate. - Size: 210,717 bytes — matches the scouting subagent's own reported size exactly.
- sha256:
89438517659fe2b209e0f75a43e8eb2f44243b6be676b80da2d83e95030f0d55— matches the scouting subagent's own reported hash exactly. - Pages: 12.
- Extraction method: same
pdfjs-distpipeline as Source 1. - What it confirms: the exact Quadro-by-Quadro explanation for every field this schema models — e.g. Quadro A's four-way declaration-type selector and its legal cross-references, Quadro B's "ATTIVITÀ ESERCITATA E LUOGO DI ESERCIZIO" rules (including when
presumedTurnoverEurmust be left blank), the two named preferential tax regimes and their legal citations, the e-commerce sub-block's "proprio"/"ospitante" distinction, Quadro C's residency/domicile rules, and the "Come presentare il modello" section (p.2/12) that this schema'ssubmissionChannelfield and its conditionalidentityDocumentCopydocument are both drawn from directly.
A backup Camera di Commercio "Modello I1" candidate (individual-enterprise registration with the Registro delle Imprese) was also screened this cycle but found only via an unofficial third-party mirror (tuttocamere.it, no camcom.gov.it original located, form dated 2008 — stale). AA9/12 was preferred as the stronger, fresher, directly-hosted source.
Scope: what v1.0.0 models and what it defers
Modello AA9/12 is a single form serving four distinct declaration types (business start, data variation, business cessation, VAT-certificate duplicate request) across nine lettered Quadri (A-I). Per this registry's established convention for multi-purpose forms (e.g. gr/aade's Δ211, GOV-3030), v1.0.0 scopes to a single filer pathway — here, the inizio attività (business-start) declaration for an individual entrepreneur/ self-employed worker — rather than attempting every declaration type and every Quadro in one version.
Modelled in v1.0.0 (37 fields[], 1 documents[] entry):
| Section | Representative fields | Modelled scope | |---|---|---| | Page header | taxpayerTaxCode | Full | | Quadro A | declarationType, activityStartDate | Declaration-type selector modelled for all 4 values; only inizio_attivita's own date field is modelled (the other 3 types' date/reference fields are out of scope) | | Quadro B, Dati identificativi | businessOrIndividualName, nonResidentForeignAddress, foreignVatNumber | Full | | Quadro B, Attività esercitata e luogo di esercizio | activityCode, activityDescription, presumedTurnoverEur, intraCommunityAcquisitionsFlag, premisesAddress/PostalCode/Municipality/Province, premisesAccountingRecordsKeptHere | Full for the single prevailing activity/premises (secondary activities/locations are Quadro G, out of scope) | | Quadro B, Regimi fiscali agevolati | favorableTaxRegime | Full (both named regimes) | | Quadro B, Attività di commercio elettronico | ecommerceWebsiteUrl, ecommerceWebsiteType, ecommerceServiceProvider | Full | | Quadro C, Titolare | ownerTaxCode/Surname/GivenName, ownerBirthDate/Municipality/Province, ownerResidenceAddress/PostalCode/Municipality/Province, ownerAccountingRecordsKeptHere | Full | | Come presentare il modello | submissionChannel, documents[].identityDocumentCopy | Full | | Quadri compilati e firma | formsCompiledQuadroA/B/C, totalPagesCount, declarationSignerTaxCode, declarationSignatureDate | Full for the in-scope Quadri (A/B/C); the checklist also offers D-I on the source form, out of scope here |
Explicitly deferred (out of scope for v1.0.0):
- Quadro A's variazione-dati/cessazione-attività/duplicato-certificato fields — the VAT-number reference and variation/cessation date fields that apply only to the other three declaration types, not a fresh business start.
- Quadro D (Rappresentante) — used only when a court-appointed administrator, guardian, curator, heir, or a non-resident's fiscal representative signs in the titolare's place; a materially different filer scenario from a self-filing individual.
- Quadro E (Operazioni straordinarie — trasformazioni sostanziali soggettive e affitto d'azienda) — business transfers, successions, company-to-sole-trader conversions, and business leases; entirely irrelevant to an individual starting a brand-new activity from scratch.
- Quadro F (Luoghi di conservazione delle scritture contabili) — multiple/ additional accounting-record deposit locations, including abroad, beyond the single premises/residence location this v1.0.0 already models via the two
AccountingRecordsKeptHerecheckboxes. - Quadro G (Informazioni inerenti le attività esercitate) — secondary activities and additional business locations beyond the single prevailing activity/premises Quadro B already models.
- Quadro H (Presunzione di cessione — rapporto di rappresentanza) — a narrow notice rebutting a goods-presumption-of-sale rule for a specific representation relationship; not part of an ordinary business-start filing.
- Quadro I (Altre informazioni in sede di inizio attività) — clientele- type, premises-open-to-public, and initial-investment disclosures required only for the specific ATECO activity codes listed in the Agenzia delle Entrate's 21 December 2006 director's provvedimento (as later amended) — an external, form-external code list this v1.0.0 does not enumerate or attempt to encode as a conditional gate.
- The DELEGA block — the proxy-appointment fields used only when the form is filed via a specially delegated person rather than the titolare themself.
- The IMPEGNO ALLA PRESENTAZIONE TELEMATICA block — the office-facing CAF/intermediary transmission undertaking (their own codice fiscale, CAF-registry number, and the date they assumed the transmission commitment), not an applicant-supplied field.
Judgment calls
declarationTypemodels all four of Quadro A's checkbox values, but onlyinizio_attivita's own conditional field (activityStartDate) is modelled. The other three values are recorded on the field so a consumer sees the form's own full selector rather than a silently narrowed enum, but their own type-specific fields are disclosed out of scope above, matching this registry's precedent (e.g.gr/aadeΔ211, GOV-3030) of modelling a shared selector field across all its source values even when only one branch's downstream fields are in scope.premisesAccountingRecordsKeptHereandownerAccountingRecordsKeptHereare modelled as two independent boolean fields, not a single enum/location-choice field. The source form places one "SCRITTURE CONTABILI" checkbox in the Quadro B premises box and a second, separate one in the Quadro C residence box; each is genuinely independent (the istruzioni describe each in isolation, with no shared radio-group framing), so this schema follows this registry's established independent-checkbox convention (e.g.si/ajpes, GOV-2910;it/ poliziadistato, GOV-3031) rather than fabricating a single either/or enum the source does not actually present.formsCompiledQuadroA/B/Care modelled as three independent required booleans, not a single multi-value field. JSON Schema'senumtype in this spec is single-valued and there is noarrayfield type in the v0.3 meta-schema, and the source's own "quadri compilati" checklist is nine independent Btn-style checkboxes (a filer ticks every Quadro they used, not just one) — the same independent-checkbox reasoning as judgment call 2, scoped here to only the three in-scope Quadri (A, B, C); D through I are disclosed out of scope rather than modelled as always-false fields.- No
requiredWhen/notEqualscondition was written against an optional/absent field.ecommerceWebsiteType's conditional relationship toecommerceWebsiteUrl(filled in together, or both left blank) is disclosed only inecommerceWebsiteType's owndescription, not encoded as arequiredWhen: {notEquals: null}rule — deliberately avoiding this registry's previously-caught notEquals-empty-string/null absent-field bug (an absent optional field evaluates asundefined, which a naivenotEqualscheck against""/nullincorrectly treats as satisfied, spuriously firing the conditional requirement). Where a genuine requiredWhen condition was needed,equalsagainst a concrete enum value was used instead (ecommerceServiceProvidergated onecommerceWebsiteType equals "ospitante";identityDocumentCopygated onsubmissionChannel equals "posta_raccomandata"), which correctly evaluates tofalse— not a spurious match — when the gating field is itself absent. taxpayerTaxCode/ownerTaxCode/declarationSignerTaxCodeuse a generic 16-character alphanumeric pattern (^[A-Z0-9]{16}$), not the full structural codice-fiscale checksum regex, matching this registry's established precedent (modello-730judgment call 5) of avoiding a stricter validator that could silently reject a syntactically valid but structurally unusual codice fiscale.activityCodeuses an ATECO-style pattern (^[0-9]{2}\.[0-9]{2}(\.[0-9]{2})?$) covering both the common 6-digit (NN.NN.NN) and, where a taxpayer cites only the broader 4-digit (NN.NN) classification, the shorter form — the istruzioni direct filers to "the economic-activity classification table in force at the time of filing" without printing the table itself in either source document, so no closed enum of codes is fabricated.submissionChannelmodels only the three channels available to taxpayers not obliged to register with the Registro delle Imprese (in-person at any Agenzia delle Entrate office, registered mail, or telematic filing). Taxpayers who are so obliged instead file exclusively via the separate ComUnica telematic channel (this registry's ownmodello-730VERIFICATION.md's prior Business Formation dead-end finding) — that channel remains out of scope for this document, disclosed directly insubmissionChannel's own field description rather than added as a fourth enum value this schema cannot otherwise model (ComUnica has no plain field-by-field form of its own).
Test run (Phase 4)
No live submission was attempted: Modello AA9/12 assigns a real, permanent Partita IVA and is filed either in person, by post, or through Agenzia delle Entrate's own authenticated Fisconline/Entratel telematic services — creating a live VAT registration against Italy's tax administration with fabricated data is not a safe or reversible action.
Instead, two fully hand-constructed mock records were built from this document's own field inventory and checked 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, all/any/not composition) that checks both fields[].requiredWhen and every documents[] entry's static required/requiredWhen status against a documents: [{id, provided}] array. The script and its rendered PDF-checking artifacts were discarded after use, not committed.
``` $ node validate_instance.mjs registry/it/agenzia-entrate/modello-aa9-12-inizio-attivita-partita-iva/1.0.0/schema.json \ conformance/it/agenzia-entrate/modello-aa9-12-inizio-attivita-partita-iva/1.0.0/resident-sole-trader-in-person-filing.json Static (required/type/pattern/enum/minimum) validation: PASS requiredWhen/documents[] conditional validation: PASS
OVERALL: PASS
$ node validate_instance.mjs registry/it/agenzia-entrate/modello-aa9-12-inizio-attivita-partita-iva/1.0.0/schema.json \ conformance/it/agenzia-entrate/modello-aa9-12-inizio-attivita-partita-iva/1.0.0/artisan-registered-mail-with-ecommerce.json Static (required/type/pattern/enum/minimum) validation: PASS requiredWhen/documents[] conditional validation: PASS
OVERALL: PASS ```
Mutation controls — six 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: 'businessOrIndividualName' (required: true) removed Static (required/type/pattern/enum/minimum) validation: FAIL - (root) must have required property 'businessOrIndividualName' requiredWhen/documents[] conditional validation: PASS OVERALL: FAIL
$ # mutation-control-missing-required-document.json: submissionChannel=posta_raccomandata $ # but documents=[] (identityDocumentCopy's requiredWhen not satisfied) Static (required/type/pattern/enum/minimum) validation: PASS requiredWhen/documents[] conditional validation: FAIL - document 'identityDocumentCopy' is required (requiredWhen matched) but not provided OVERALL: FAIL
$ # mutation-control-enum-violation.json: 'submissionChannel' set to 'fax' Static (required/type/pattern/enum/minimum) validation: FAIL - /submissionChannel must be equal to one of the allowed values requiredWhen/documents[] conditional validation: PASS OVERALL: FAIL
$ # mutation-control-pattern-violation.json: 'taxpayerTaxCode' shortened to 6 characters Static (required/type/pattern/enum/minimum) validation: FAIL - /taxpayerTaxCode must match pattern "^[A-Z0-9]{16}$" requiredWhen/documents[] conditional validation: PASS OVERALL: FAIL
$ # mutation-control-requiredwhen-violation.json: declarationType=inizio_attivita $ # but activityStartDate omitted Static (required/type/pattern/enum/minimum) validation: PASS requiredWhen/documents[] conditional validation: FAIL - field 'activityStartDate' is required (requiredWhen matched) but not provided OVERALL: FAIL
$ # mutation-control-minimum-violation.json: 'totalPagesCount' set to 0 (minimum: 1) Static (required/type/pattern/enum/minimum) validation: FAIL - /totalPagesCount must be >= 1 requiredWhen/documents[] conditional validation: PASS OVERALL: FAIL ```
The mutation-control-missing-required-document.json case specifically exercises documents[].requiredWhen (as opposed to a plain static-required case) — 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-aa9-12-inizio-attivita-partita-iva/1.0.0/schema.json ok registry/it/agenzia-entrate/modello-aa9-12-inizio-attivita-partita-iva/1.0.0/schema.json
1/1 document(s) passed.
$ node tools/validate-ajv.mjs registry/it/agenzia-entrate/modello-aa9-12-inizio-attivita-partita-iva/1.0.0/schema.json ok registry/it/agenzia-entrate/modello-aa9-12-inizio-attivita-partita-iva/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 (460 documents total, including this one, up from 459 before this cycle) 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.
Other candidates screened this cycle (not authored)
- Greece (GR) Passport: a strong candidate found this cycle — the Hellenic Police's own official specimen application form (
passport.gov.gr, "Υπόδειγμα αίτησης έκδοσης Διαβατηρίου"), a scanned specimen (not a fillable AcroForm) but fully legible with every field label visible, plus detailed instructions/supporting-documents/legislation pages. Delegated as a child issue rather than authored in this same PR, per this registry's one-deliverable-per-PR convention. - Greece (GR) National ID: a confirmed dead end this cycle — the Δελτίο Ταυτότητας (national ID card) is a pure in-person, biometric-appointment system (booking only, via
id.gov.gr/TaxisNet); the application-declaration itself is generated and printed by the issuing police officer from the civil registry at the counter, not filled in advance by the citizen, and two fingerprints are captured live. Confirmed directly frommitos.gov.gr(Greece's own National Administrative Procedures Registry): submission type is explicitly "Κατάθεση από τον αιτούντα (αποκλειστικά δια ζώσης)" — in-person only, no other channel exists. See CATALOG.md's Known Gaps section for the full disclosure. - Italy (IT) National ID: a strong candidate found this cycle — the Carta d'Identità Elettronica (CIE), sourced from a municipality's (Comune di Tre Ville) own directly-downloadable application/minor/parental-consent PDF trio, corroborated by the national
cartaidentita.interno.gov.itportal's prose walkthrough (booking-optional, not hard-gated). Delegated as a child issue rather than authored in this same PR.
See CATALOG.md's Known Gaps & Opportunities section for the full disclosure.
View the raw record (VERIFICATION.md)
Version history
-
1.0.0draftlatestthis pagehas verification recordschema.json
Independent and non-affiliated
GovSchema is an independent, open-source project. This reference is not produced, reviewed, or endorsed by Agenzia delle Entrate or any government. The authoritative source is always the live government form and its official instructions.