A build-to-order Frappe app that reports ERPNext Sales Invoices to Hungary's NAV Online Invoice (RTIR) system in real time, handles NAV's asynchronous responses, and keeps a queryable audit trail. ECOSIRE scopes, builds, installs and supports it on your bench. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $499.00 USD; request a quote for a scoped proposal.
Illustrative previewA build-to-order Frappe app that reports ERPNext Sales Invoices to Hungary's NAV Online Invoice (RTIR) system in
real time, handles NAV's asynchronous responses, and keeps a queryable audit trail.
ECOSIRE scopes, builds, installs and supports it on your bench.
No DIY setup — a working app, built, installed and supported by ECOSIRE.
Start with a one-time build price. We scope it with you at kickoff.
ECOSIRE builds, configures and installs it on your ERPNext.
You go live in about 2–4 weeks, with a post-launch support window.
Hungarian invoicing law does not care that your accounting is correct — it cares that NAV received the invoice data within the statutory window after issue, in the exact XML schema NAV publishes, signed with your technical user's request signature. ERPNext will happily let you submit a Sales Invoice with a customer whose EU VAT number sits in a free-text field, a tax template that nets two rates into one line, and a company tax number that never made it into the right place. None of that matters until NAV returns a warning or an aborted transaction and your finance team discovers, at month end, that a batch of invoices was never accepted. ERPNext core has no NAV client, no manageInvoice call, no transaction-status polling, and no concept of an invoice that is legally posted but not yet reported.
What we build is a proper Frappe app — its own module, its own DocTypes, installed on your bench alongside erpnext — not a pile of Server Scripts glued onto stock forms. A NAV Settings single DocType holds the technical user login, the password and signature keys (stored in Password fieldtype fields, never plain columns), the software identifier, and the environment switch between the NAV test service and production. A NAV Invoice Report DocType is created per Sales Invoice submission and carries the full lifecycle: the generated invoice XML, the base64 payload, the transactionId returned by manageInvoice, every queryTransactionStatus poll result, the NAV validation messages, and the final state. A NAV Tax Mapping child table maps your ERPNext Item Tax Templates and Tax Categories onto NAV's line VAT rate structures — standard rates, domestic reverse charge, intra-Community supply, margin scheme, out of scope — so the classification comes from master data you can audit, not from code someone has to redeploy.
Technically, the flow hangs off hooks.py doc events. on_submit of Sales Invoice validates that everything NAV needs is present — company tax number in the correct 8-3-2 form, customer tax number and address for domestic B2B above the itemised-VAT threshold, currency and exchange rate for non-HUF invoices, a line-level VAT rate on every row — and fails the submit with a specific field-level message rather than letting a bad invoice reach NAV. It then enqueues the report through Frappe's background queue with frappe.enqueue, so submission never blocks the user's browser. The client builds the XML for the current NAV Online Invoice schema version, computes the request signature, and posts to manageInvoice. Because NAV is asynchronous, a scheduler_events cron polls queryTransactionStatus for every pending report with backoff, parses the per-invoice result blocks, and writes warnings and errors back onto the NAV Invoice Report as a child table you can read without opening a log file.
Rejections raise a Frappe Notification to the finance role, and the correction workflow issues the NAV modify or storno operation with the correct modification-index chain when the accountant cancels and amends the invoice in ERPNext. Whitelisted methods (@frappe.whitelist()) expose submit, re-poll and status-read over the Frappe REST API, so middleware or a BI refresh can read reporting state without screen-scraping the desk. A Client Script adds a live NAV status indicator and a "View NAV Response" dialog directly on the Sales Invoice form, and a Role Profile keeps credentials and the manual re-submit action away from ordinary invoice clerks. The same posting produces both the machine payload for NAV and the human-readable PDF your customer receives, from one Print Format, so the two can never drift. Every request and response is retained with timestamp and submitting user for the statutory retention period, filterable in a list view and exportable for audit.
This is build-to-order. You are not downloading a marketplace app and hoping it fits — we build it against your Frappe/ERPNext version (v15 or v16), your chart of accounts, your tax templates, your naming series and your actual invoice mix. Scoping starts with a short call where we look at real invoices: domestic B2B, B2C, EU intra-Community, non-HUF, credit notes, and anything downstream of a POS or subscription flow. Typical delivery is 2-4 weeks from confirmed scope. We build on a staging bench, run UAT against NAV's test service with your own data so you see a real transactionId come back before anything touches production, then install on your production bench with a documented rollback. You receive the source in a git repository you own, so nothing here is a lock-in.
Signs off the VAT return and is personally exposed if invoices were never accepted by NAV. Wants a single list view showing every invoice's reporting state, and an alert the day a rejection happens rather than at month end.
Works inside ERPNext all day and does not want a second portal. Needs the NAV status visible on the Sales Invoice itself, a readable explanation when NAV complains, and a correction path that matches how they already raise credit notes.
Will maintain this after go-live. Cares that it is a real app with DocTypes, hooks and scheduler jobs rather than Server Scripts, that credentials use `Password` fields, and that the git repository is handed over so the next version upgrade is not a rewrite.
Runs several entities on one ERPNext instance and needs the Hungarian company compliant without forking the group's chart of accounts or invoice process. Wants per-company NAV credentials and clean separation between entities.
| Criterion | ECOSIRE | Custom Build | Competitor | ERPNext Native |
|---|---|---|---|---|
| Fit to your ERPNext setup | Built against your version, tax templates, naming series and real invoice mix | Fits, but only what your team had time to model | Fits the author's reference setup; your tax cases may not be covered | No NAV concept at all — nothing to fit |
| NAV submission and status handling | `manageInvoice` plus scheduled `queryTransactionStatus` polling with backoff | Usually submission only; polling is the part that gets skipped | Varies widely; asynchronous status handling is often shallow | Not present |
| Rejection and correction workflow | Parsed NAV messages, notifications, and modify/storno with the correct modification chain | Typically manual re-submission from a log file | Often reports the error code without a correction path | Not present |
| Tax classification source | `NAV Tax Mapping` from Item Tax Templates and Tax Categories, auditable in the UI | Frequently hardcoded, needing a deploy for each new rate case | Fixed mapping you adapt your master data to | Standard ERPNext tax templates with no NAV rate concept |
| Architecture and maintainability | Proper Frappe app: DocTypes, `hooks.py` doc events, scheduler, whitelisted API | Often Server Scripts and Custom Fields that survive upgrades poorly | A real app, but a black box you cannot change | Nothing to maintain |
| Credential handling | `Password` fieldtype in NAV Settings, restricted by Role Profile | Depends on the developer; site config files are common | Usually reasonable, but not tuned to your role structure | Not applicable |
| Source ownership | Private git repository handed over to you at delivery | You own it, with whatever documentation was written | Licensed; source access depends on the vendor | Frappe and ERPNext core only |
| Delivery and risk | 2-4 weeks from confirmed scope, staging UAT on the NAV test service, rollback plan | Open-ended; NAV edge cases surface late | Installs in minutes, then the gaps appear in production | Immediate, but non-compliant for Hungarian invoicing |
No. It is build-to-order. ECOSIRE builds the app against your Frappe/ERPNext version, your tax templates and your invoice mix after you request a quotation. There is no instant download, and it is not a ready-made Frappe Cloud Marketplace package.
Typical delivery is 2-4 weeks from confirmed scope. Scope is confirmed after a short call where we review real invoice examples — domestic B2B, B2C, EU intra-Community, non-HUF and credit notes. Unusual flows such as POS, subscriptions, or middleware already sending to NAV can extend that, and we tell you before you commit.
A post-go-live support window is included for defect fixes and NAV response questions on the delivered scope. Beyond that we offer a support and maintenance agreement covering NAV schema version changes, Frappe/ERPNext upgrades (v15 to v16 and onward) and new requirements. Because you receive the git repository, your own developer can also maintain it.
Frappe/ERPNext v15 and v16. We build and test against the specific version running on your bench, including any customisations you already have on Sales Invoice — those are exactly what breaks a generic app.
A scheduled job polls `queryTransactionStatus` until NAV returns a final state. Errors and warnings are parsed into a child table on the `NAV Invoice Report` and surfaced on the Sales Invoice with a plain-language explanation, plus a Frappe Notification to the finance role. The correction workflow then issues the appropriate modify or storno operation with the correct modification-index chain when the accountant amends or cancels in ERPNext.
We test against the NAV test service using your own invoice data on a staging bench during UAT, so you see a real `transactionId` and a real acceptance before production credentials are configured. The production installation then follows a documented rollback plan.
In a `NAV Settings` single DocType using Frappe `Password` fieldtype fields, which are encrypted at rest rather than sitting in a plain column or in code. Access is restricted by a Role Profile, so invoice clerks can see reporting status but not the technical user credentials.

A build-to-order 2Checkout (Verifone) payment integration for ERPNext, giving global digital-goods sellers card acceptance, 45+ local payment methods, multi-currency checkout, and reconciled invoices. ECOSIRE scopes, builds, installs, and supports it on your ERPNext v15/v16 instance.

A build-to-order ERPNext application for anonymous 360-degree reviews — configurable peer, manager, report and self rater groups, weighted competency scoring, and aggregated gap-analysis and heatmap reports. ECOSIRE scopes, builds, installs and supports it on your Frappe/ERPNext v15/v16 instance.

A build-to-order ERPNext app that detects abandoned webshop and POS carts, then runs multi-channel WhatsApp, email, and SMS recovery and win-back sequences with dynamic cart content and coupon injection. ECOSIRE scopes, builds, installs, and supports it for your v15/v16 instance.

A build-to-order ERPNext app for running B2B account-based campaigns: define target-account lists, sequence outreach calls, auto-distribute them to agents, and score account engagement across every contact. ECOSIRE designs, builds, installs and supports it after you confirm scope.
A build-to-order Frappe app that reports ERPNext Sales Invoices to Hungary's NAV Online Invoice (RTIR) system in real time, handles NAV's asynchronous responses, and keeps a queryable audit trail. ECOSIRE scopes, builds, installs and supports it on your bench.