Get in touch
  • WordPress
  • Payments
  • v1.0.0

NAV Online Számla for WooCommerce — Hungarian invoices from orders reported straight to NAV (API 3.0)

Hungarian invoices from WooCommerce orders, reported straight to NAV Online Számla through API 3.0 with your own technical user — no paid invoicing service in between. Number, NAV status and warnings in the order, adószám field at checkout, a printable invoice for the customer once NAV has processed it, a retry queue, TEST and PRODUCTION. Pro adds modifying and cancelling invoices from refunds and cancellations, foreign buyers and currencies, adószám check at NAV, bulk sending, CSV and e-mail alerts.

Download Free
Pro · one-year licence The more sites, the less each one costs
Compatibility
WooCommerce 8.0+ · WordPress 6.2+ · PHP 7.4+ · HPOS · classic and block checkout · NAV Online Számla API 3.0
Licence
one site, annual
Trial
7 days, no card, one per site
Updated
September 2026
Or all 144 Pro modules with All Access — 4 990 ₴ / year

What Free has,
and what Pro adds

The free version works with no time limit. Pro adds the rest of the features in the table.

Feature Free Pro
Invoice from the order of a Hungarian buyer in HUF: private person (PRIVATE_PERSON, without name and address), company with an adószám (DOMESTIC), organisation without an adószám (OTHER) ✔ ✔
Automatically on the "Completed" or "Processing" status + an "Issue and report" button in the order ✔ ✔
Direct reporting to NAV Online Számla API 3.0 with your technical user: tokenExchange → manageInvoice → queryTransactionStatus ✔ ✔
SHA3-512 request signatures and SHA-512 password hash as the NAV specification describes, matched against its test examples ✔ ✔
The invoice is checked against the official NAV XSD and blocking rules before a number is used ✔ ✔
Processing status in the order and the register: "Reported to NAV" with WARN warnings or "Rejected by NAV" with the error list ✔ ✔
"Rebuild and send" with the same number after you fix the order, "Discard", "Mark as reported" for INVOICE_NUMBER_NOT_UNIQUE ✔ ✔
Retry queue: network, NAV maintenance, a lost answer (looked up with queryTransactionList, never reported twice) ✔ ✔
VAT from the WooCommerce taxes (27/18/5/0%), several rates, lines without VAT as TAM, ATK or 0%, alanyi adómentes (AAM), pénzforgalmi elszámolás ✔ ✔
"Tax number" field with the adószám check digit test on the classic and block checkout, "Company name" when WooCommerce hides its own ✔ ✔
Printable invoice (Hungarian and English labels) for the customer in My Account and by e-mail — only after NAV has processed it ✔ ✔
Your own number series with a yearly or monthly counter, separate registers for TEST and PRODUCTION ✔ ✔
Tax audit export (Decree 23/2014 NGM § 11/A): ZIP with InvoiceData XML by date or number range + index.csv ✔ ✔
Technical user credentials: the password only as a SHA-512 hash, keys encrypted or in wp-config.php ✔ ✔
Plugin languages: English, magyar ✔ ✔
Modifying invoices (MODIFY) from WooCommerce refunds — by item or by amount — ✔
Cancelling invoices (STORNO) when an invoiced order is cancelled, or with a button — ✔
Foreign buyers: EU companies with a VAT number (KBAET, EUFAD37), buyers outside the EU (EAM, HO) — ✔
Orders in EUR and other currencies with the HUF exchange rate from the settings or a filter — ✔
Live adószám check at NAV (queryTaxpayer) at checkout and in the order — ✔
Bulk action "Report to NAV (invoice)", CSV register, e-mails on rejected invoices, NAV warnings and delivery problems — ✔

What it looks like

NAV Online Számla invoice register in the WooCommerce admin in Hungarian
Invoice register (admin in Hungarian): invoices to private persons and companies, a modifying and a cancelling invoice, an Austrian buyer in EUR, a NAV warning under an invoice, two documents in the queue. Test environment; answers and transaction IDs come from the built-in NAV simulator.
Hungarian tax number (adószám) and company name fields at the WooCommerce checkout
The “Tax number” and “Company name” fields on the block checkout, and the same fields on the classic checkout with the Hungarian interface.
Printable invoice Számla / Invoice with Hungarian and English labels
The printable invoice for the customer: seller and buyer with their adószám, a line at 5% VAT, totals by rate. The customer gets it only after NAV has processed it.

The trial starts when you ask

A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — one site

Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. If our server is unreachable, Pro keeps working for 14 more days. For studios — keys for 5 or 25 sites, or unlimited.

Technical requirements

  • WooCommerce 8.0+ with the classic or block checkout, HPOS compatible
  • WordPress 6.2+ · PHP 7.4+ with hash (SHA3-512), OpenSSL and DOM
  • Registration in Online Számla and a technical user with a signature key and an exchange key; separate ones for the NAV test system
  • Currency — HUF in the free version; other currencies with the HUF exchange rate in Pro
  • WooCommerce taxes with Hungarian rates (27/18/5/0%), or prices including VAT at one rate from the settings
  • Not supported: OSS sales to private persons in other EU countries (orders with a non-Hungarian VAT rate are stopped with an explanation)
  • Plugin languages: English and Hungarian.

Version history

v1.0.0 Current September 2026

NAV Online Számla API 3.0 (tokenExchange, manageInvoice, queryTransactionStatus, queryTransactionList), checks against the official XSD and the NAV blocking rules, retry queue with…

Frequently bought with NAV Online Számla for WooCommerce

4 modules in one order — 40% cheaper than separately

“Store starter” bundle NAV Online Számla Nova Poshta Premium LiqPay Telegram notifications and Viber/SMS for customers Need more — all 144 modules in All Access for 4 990 ₴.
3 590 ₴ / year instead of 5 960 UAH bought separately
Buy the bundle →

Full module description

NAV Online Számla for WooCommerce is a plugin for shops in Hungary that sell on WooCommerce and have to report every invoice they issue to the Online Számla system of the Hungarian tax authority NAV. The plugin issues an invoice from the order and reports its data to the NAV Online Számla API 3.0 on behalf of your own technical user — the way invoicing programs do it, but without a paid service in between and without a monthly subscription. The invoice number, the transaction ID, the processing status and the NAV warnings are kept with the order.

What you need. A company registered in Online Számla; a technical user, created by the primary user in the Online Számla web interface, with the right to report invoices; and its two keys — the signature key (XML aláírókulcs) and the exchange key (XML cserekulcs). The NAV test system (onlineszamla-test.nav.gov.hu) needs a separate registration and a separate technical user. Without them the plugin reports nothing: invoices wait in the queue and a reminder stays at the top of the admin.

Honestly about testing. The plugin has been tested on a local WooCommerce shop with the built-in NAV simulator, which reproduces the answers described in the official API 3.0 specification: DONE with warnings, ABORTED with errors, maintenance, NAV unreachable, a lost answer, a duplicate number. The request signatures, the password hash and the token decryption match the test examples of the NAV specification, and every generated document — invoices to private persons and companies, modifying and cancelling invoices, EU buyers — passed the official NAV XSD. We have not yet run it against the live NAV, test or production: that takes a registered Hungarian company. Start with the NAV test system for your company during the 7-day Pro trial — if NAV answers differently from the specification, we fix it promptly.

Responsibility for the content of the invoice and the report stays with the shop. The plugin builds the invoice from the WooCommerce order data and from the VAT settings you choose: the cases for lines without VAT (TAM, ATK, AAM), foreign buyers (KBAET, EUFAD37, EAM, HO), paper or electronic invoice. An online shop that issues its own invoices effectively becomes an invoicing program, and Decree 23/2014 NGM sets rules for such programs — notifying NAV about the program, keeping documentation, providing an export for audits. Of these the plugin covers only the document export; check the rest with your accountant before switching to PRODUCTION.

What the admin gets

  • WooCommerce → NAV Online Számla: the “Invoices”, “Tax authority export”, “Settings” and “Licence” tabs.
  • Invoice register: number and document type (invoice, modifying, cancelling), order, buyer with the adószám or “private person”, total, NAV status, transaction ID, warnings or the refusal text; a status filter and search by number, transaction, adószám or order. Links to the details, the printable invoice and the XML.
  • “Send / check now” sends the queue and checks the statuses right away, without waiting for cron.
  • Notices at the top of the admin: rejected or undelivered documents, technical user not set up, NAV currently unreachable.

Every order has a “NAV Online Számla” box: the invoice number, the buyer type (“Private person”, “Hungarian company”, “Other / foreign”), the status (“Queued”, “Processing at NAV”, “Reported to NAV”, “Rejected by NAV”) and the transaction. An order without an invoice gets an “Issue and report” button, and if an invoice cannot be built, the box says what is missing. The order notes record every step.

A rejected invoice shows up right away: in the register, in the order and in the notice at the top of the admin, next to the NAV error codes and texts. Once the order is fixed, “Rebuild and send” rebuilds the invoice with the same number: the customer only sees an invoice after NAV has processed it, so the rejected document never reached them. A document you don’t need — “Discard”. If NAV answered INVOICE_NUMBER_NOT_UNIQUE because it already has this invoice — “Mark as reported”.

What the buyer sees

The checkout gets a “Tax number (for a company invoice)” field (“Adószám (céges számlához)” in Hungarian) and, while WooCommerce hides its own “Company” field, “Company name (for the invoice)”. Without a number the order is placed as a private person. When a number is entered, the plugin checks the check digit and the format (8 or 11 digits, spaces removed) and does not accept a number without a company name. The field can be made required for a B2B shop, hidden, or read from the order meta of another plugin. It works on the classic and the block checkout.

Once NAV has processed the invoice, the customer gets an e-mail in the standard WooCommerce template with a link to it, and an “Invoice” block appears in My Account and on the order page. The printable page carries Hungarian and English labels: Számla, Eladó / Seller, Vevő / Buyer, adószám, delivery date, payment method, ÁFA by rate and totals. A guest opens the invoice with the order key; another user cannot.

How it works — step by step

  1. Technical user. In the Online Számla web interface the primary user creates a technical user with the right to report invoices (and the query right — for the adószám check in Pro) and generates the signature key and the exchange key.
  2. Connection. WooCommerce → NAV Online Számla → Settings: login, password, both keys, save, then “Check the connection” — the plugin asks NAV for a token (tokenExchange) and for the seller data by adószám, reporting nothing.
  3. Seller. Adószám, name, address, bank account, VAT status, number series, invoice appearance (ELECTRONIC or PAPER).
  4. Checkout. A company buyer enters the adószám; a wrong number or a number without a company name won’t pass.
  5. Order status. The order becomes “Completed” (or “Processing” — your choice) — the plugin checks the data against the NAV blocking rules (VAT rates, buyer data, adószám, postcode, bank account, number of 1–50 characters) and the XSD, and only then takes the next number. An invoice that cannot be built uses no number.
  6. Reporting. tokenExchange → manageInvoice (up to 50 documents per request) → queryTransactionStatus with a growing pause.
  7. Answer. DONE — “Reported to NAV”, WARN warnings are kept in the register and the order, the customer gets the invoice. ABORTED — “Rejected by NAV” with the error list.
  8. Failures. Network, NAV server errors, MAINTENANCE_MODE, an expired token — retried with a growing pause. Wrong technical user credentials — the queue waits and the settings show the last error. A lost answer — after 5 minutes the plugin looks the transaction up with queryTransactionList and either picks it up or sends again, so an invoice is never reported twice.

VAT comes from the WooCommerce taxes of each order: 27%, 18%, 5% and 0%, several rates on one invoice. For domestic lines without VAT you choose the case once — TAM (exempt activity), ATK (outside the scope of VAT) or the 0% rate; until you do, such invoices are not created. A seller under alanyi adómentes reports every line as AAM, and pénzforgalmi elszámolás has its own switch.

Tax audit export (Decree 23/2014 NGM § 11/A): the “Tax authority export” tab gives a ZIP with every document of a date or number range — each as the InvoiceData XML NAV received — plus index.csv.

Pro. A WooCommerce refund — by item or by amount — gives a modifying invoice (MODIFY), cancelling an invoiced order gives a cancelling invoice (STORNO). A document of the chain is built when it is sent, after NAV has processed the original and the earlier changes: with the right modification index and continued line numbering. EU companies with a VAT number get their lines without VAT as KBAET or EUFAD37, buyers outside the EU as EAM or HO; orders in EUR and other currencies use the HUF exchange rate from the settings. The bulk action “Report to NAV (invoice)” in the orders list issues invoices for past orders.

Under the hood

  • NAV Online Számla API 3.0: tokenExchange (the token is decrypted with AES-128 and your exchange key), manageInvoice, queryTransactionStatus, queryTransactionList for lost answers, queryTaxpayer for the connection check and the adószám check in Pro.
  • Signatures: requestSignature SHA3-512 (for manageInvoice with the hash of every document), passwordHash SHA-512 — matched against the test examples of the NAV specification.
  • Official NAV schemas (invoiceData, invoiceApi, invoiceBase, common — MIT, from github.com/nav-gov-hu) ship with the plugin; every document is validated against them locally, without the network.
  • Credentials: the password is stored only as a SHA-512 hash, the signature key and the exchange key encrypted (AES-256 with the site keys) or as the constants CCNAV_LOGIN, CCNAV_PASSWORD, CCNAV_SIGN_KEY, CCNAV_EXCHANGE_KEY in wp-config.php.
  • Numbering with a lock: two orders in the same second never get the same number; separate counters for TEST and PRODUCTION. Switching to PRODUCTION asks for confirmation.
  • NAV simulator: the CCNAV_NAV_MOCK constant in wp-config.php simulates NAV answers in the test environment only — to try the shop without a registration.
  • Deleting the plugin removes the technical user credentials, cron jobs and the queue; the invoice register stays as an accounting record. The CCNAV_DELETE_DATA constant removes everything.

Installation

  1. Plugins → Add New → Upload Plugin: choose nav-online-szamla-for-woocommerce-1.0.0.zip and activate it.
  2. WooCommerce → NAV Online Számla → Settings: the seller data (adószám, name, address, bank account) and the number series — a separate one if another program issues invoices too.
  3. In “Technical user (NAV)” — the login, the password and both keys, “Save settings”, then “Check the connection”.
  4. In “VAT” choose the case for lines without VAT if you sell such products.
  5. Keep the TEST environment (with the technical user of the NAV test system), place a test order and set it to “Completed” — the order gets its number and NAV status.
  6. Show the settings to your accountant and switch the environment to PRODUCTION with the technical user of the live system.
  7. For Pro: paste the licence key from the e-mail after payment, or start the 7-day trial.

Questions
about the module

Didn't find the answer? Message us on Telegram and we'll reply within a business day.

@catcode_support Setup, compatibility, activation
What do I need to start?

Your company registered in the Online Számla system and a technical user created by the primary user, with its signature key (XML aláírókulcs) and exchange key (XML cserekulcs). The login, the password and both keys go into the plugin settings. The NAV test system (onlineszamla-test) needs a separate registration and a separate technical user.

What has the plugin been tested on?

On a local WooCommerce shop with the built-in NAV simulator, which reproduces the answers described in the official API 3.0 specification. The request signatures match the test examples of the NAV specification, and every generated XML passed the official NAV XSD. It has not yet run against the live NAV — neither the test nor the production system: that takes a registered Hungarian company. Try it with your company in the NAV test system during the 7-day Pro trial.

Does it work in currencies other than HUF?

The free version issues invoices in HUF only. Pro adds EUR and other currencies with the HUF exchange rate from the settings or from the ccnav_exchange_rate filter; there is no automatic rate download.

Are OSS sales to private persons in other EU countries supported?

No. An order with a non-Hungarian VAT rate is stopped before reporting, with an explanation; the OSS scenario is not implemented in this version.

Who is responsible for the content of the invoice?

The shop. The plugin builds the invoice from the order data and the VAT settings you choose. The cases without VAT (AAM, TAM, ATK, KBAET, EAM…), how the invoice reaches the customer and the rules for invoicing programs (Decree 23/2014 NGM) are questions for your accountant; show them the settings before switching to PRODUCTION.

Where are the keys stored?

The password only as its SHA-512 hash (that is all NAV needs). The signature key and the exchange key are stored encrypted with the secret keys of your site, or defined as constants in wp-config.php.

Not quite what you are looking for?

We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.

Order a custom module