NAV Online Számla XSD schema evolution
Hungarian RTIR is built on a versioned XSD schema, published and maintained by NAV. Four major versions have marked its evolution since 2018 — each adding new fields, fixes, or scope expansions. Understanding this timeline is essential to debug rejections and plan version upgrades.
v1.0 — July 2018, the bootstrap
First operational version, published in May 2018 and in force from 1 July 2018. Scope limited to domestic B2B with a 100,000 HUF VAT threshold:
- Namespace:
http://schemas.nav.gov.hu/OSA/1.0/data - Root elements:
InvoiceData,ModifyInvoiceData,CancelInvoiceData - Mandatory fields: invoiceNumber, supplierTaxNumber, customerTaxNumber, invoiceIssueDate, deliveryDate, invoiceCategory, currencyCode, invoiceSummary, lines
- Known limitations: no self-billing, no explicit intra-EU, no B2C, very constrained line structure (single VAT rate per line), no support for accessory charges (shipping, packaging) in structured blocks.
v1.1 — July 2019, corrections
Intermediate version published to fix operational issues identified during the first year:
- Namespace:
http://schemas.nav.gov.hu/OSA/1.1/data - Key changes. Addition of missing ISO 3166-1 alpha-2 country codes, UN/CEFACT Recommendation 20 measurement unit codes aligned, bug fixes in Schematron validation of Hungarian VAT rates (5/18/27%).
- Compatibility. v1.0 remained accepted until 31 December 2019, with a 6-month coexistence period. After that, automatic rejection of v1.0 submissions.
- No business-breaking change. v1.0 → v1.1 migration essentially a namespace remap.
v2.0 — April 2020, intra-EU
First major version upgrade. Accompanies the removal of the 100,000 HUF threshold (in force 1 July 2020) and extends scope to intra-EU operations:
- Namespace:
http://schemas.nav.gov.hu/OSA/2.0/data - New blocks.
vatRateEUfor intra-EU operations subject to Hungarian VAT,communityVatNumberwith EU country prefix for the customer,thirdStateTradeIndicatorboolean. - Line restructuring. A line can now carry several
sub-elements (structured accessory charges), simplifying complex
invoices. The
lineNatureblock explicitly distinguishes PRODUCT and SERVICE. - Breaking change. The
customerTaxNumberfield becomes conditional based on operation type (B2B HU mandatory, intra-EU replaced by communityVatNumber, B2C optional). Many integrations rejected validation after a poorly anticipated upgrade. - Coexistence window. v1.1 accepted until 30 June 2020. From 1 July 2020, only v2.0 is valid.
v3.0 — January 2021, universal
Currently in-force version. Accompanies the 3rd wave: universalisation to B2C, exports and self-billing. Largest technical jump in the timeline:
- Namespace:
http://schemas.nav.gov.hu/OSA/3.0/data - New B2C blocks.
customerInfocan now omit adószám for individuals, withcustomerVatStatus= PRIVATE_PERSON. For non-taxable EU persons, OTHER with address. - Self-billing.
selfBillingIndicatoradded at invoice level. The recipient (buyer) must report the invoice in place of the issuer (seller). - Exports.
exportIndicatorblock and customs codes, addition ofthirdStatefor non-EU operations. Link with EUR.1 declarations. - Simplified invoices.
egyszerusitettAdattartalom(simplified data content), provided by art. 176 ÁFA for invoices < €100, with a reduced subset of mandatory fields. - Improved VAT granularity. The
summaryByVatRateblock details taxable bases by rate (5%, 18%, 27%, 0%, AAM reverse charge, NAM out of scope). - Parallel migrations. For cross-period operations (invoices issued December 2020 / reported January 2021), NAV accepted v2.0 until 31 March 2021. From 1 April 2021, only v3.0 is valid.
<?xml version="1.0" encoding="UTF-8"?>
<InvoiceData xmlns="http://schemas.nav.gov.hu/OSA/3.0/data"
xmlns:common="http://schemas.nav.gov.hu/NTCA/1.0/common"
xmlns:base="http://schemas.nav.gov.hu/OSA/3.0/base">
<invoiceNumber>INV-2026/001234</invoiceNumber>
<invoiceIssueDate>2026-05-19</invoiceIssueDate>
<completenessIndicator>false</completenessIndicator>
<invoiceMain>
<invoice>
<invoiceHead>
<supplierInfo>
<supplierTaxNumber>
<base:taxpayerId>12345678</base:taxpayerId>
<base:vatCode>2</base:vatCode>
<base:countyCode>42</base:countyCode>
</supplierTaxNumber>
<supplierName>Sample Kft.</supplierName>
<supplierAddress>...</supplierAddress>
</supplierInfo>
<customerInfo>...</customerInfo>
<invoiceDetail>
<invoiceCategory>NORMAL</invoiceCategory>
<invoiceDeliveryDate>2026-05-19</invoiceDeliveryDate>
<currencyCode>HUF</currencyCode>
<exchangeRate>1</exchangeRate>
<paymentDate>2026-06-18</paymentDate>
<paymentMethod>TRANSFER</paymentMethod>
</invoiceDetail>
</invoiceHead>
<invoiceLines>
<line>
<lineNumber>1</lineNumber>
<lineDescription>...</lineDescription>
<quantity>10</quantity>
<unitOfMeasure>PIECE</unitOfMeasure>
<unitPrice>1000</unitPrice>
<lineAmountsNormal>...</lineAmountsNormal>
</line>
</invoiceLines>
<invoiceSummary>...</invoiceSummary>
</invoice>
</invoiceMain>
</InvoiceData> Migration windows and coexistence
| Transition | Coexistence | Integrator effort |
|---|---|---|
| v1.0 → v1.1 | 6 months (Jul-Dec 2019) | Low — namespace remap + codes |
| v1.1 → v2.0 | 3 months (Apr-Jun 2020) | Medium — line restructuring, intra-EU |
| v2.0 → v3.0 | 3 months (Jan-Mar 2021) | High — new B2C, self-billing, exports blocks |
| v3.0 → v3.0 patches | Continuous | Low — code clarifications |
Backward compatibility and patches
The v3.0 schema has remained in force since January 2021 without a new major release. NAV periodically publishes minor patches as timestamped ZIP files:
- Doc-only patches. Documentation clarifications, extra XML examples, FAQ. No code impact.
- Code patches (rare). Non-breaking additions: new enumerated codes (countries, currencies, VAT rates), extension of string field lengths. Backward compatible.
- Announcements. Published on onlineszamla.nav.gov.hu under "Hírek" (news), sometimes also in the Magyar Közlöny for elements with legal scope.
- Next major release planned. No official announcement as of May 2026. NAV indicated in November 2025 its intent to align Online Számla with ViDA by 2030, which should lead to an EN 16931-compliant v4.0.
Common pitfalls
- Hardcoding the namespace. On version upgrade, a hardcoded namespace in the XML generator triggers schema rejections at scale. Always make the namespace parameterizable.
- Ignoring the summaryByVatRate block. In v3.0, the total of taxable bases by rate is mandatory. NAV checks the arithmetic: sum(line.netAmount per rate) must equal summaryByVatRate.vatRateNetAmount to the HUF.
- Entering an adószám for B2C. For B2C, the
customerTaxNumberblock must be OMITTED andcustomerVatStatus= PRIVATE_PERSON. Entering a fake adószám (1111111-1-11 by default) triggers a validation rejection. - Mixing v2.0 and v3.0. A partial integration where some invoices come out in v2.0 and others in v3.0 (depending on the ERP module) triggers random rejections. Big-bang migration recommended.
- Confusing XSD patches and business changes. An XSD patch does not change the 24h deadline or penalties. Conversely, a business decision (changing partner) may require an XSD patch if codes are no longer recognized.