Online shops and companies that issue invoices from their own systems
- Laravel
- Inertia.js
- React
- Tailwind CSS
- Vite
- RO e-Factura
- Cloudflare
제품 소개
An invoice for RO e-Factura — Romania's national e-invoicing system — is not a PDF: it is an electronic document in UBL 2.1 / RO-CIUS form that has to pass the tax authority's rules before it is accepted. Alerte ANAF moves all of that behind one HTTP call: "your site sends the order", and the application allocates the number, builds the electronic document, generates the PDF, emails it to the buyer and files the invoice with e-Factura. Nothing is installed on the shop's server, and nothing about the ANAF format is left to remember.
Setup is four steps and happens once. You connect the Virtual Private Space account with your digital certificate, and ANAF returns the tax IDs the certificate holds rights for — the companies appear on their own, filled in from the public register. You then generate one token per site or shop, each with its own invoice series and its own settings, and from there every order is a single POST. The API is asynchronous: the call answers 202 with an identifier, and numbering, the XML, the PDF and the filing happen in the background, with the state visible in the account or delivered by webhook.
Where the product earns its keep is validation. The rules that most often get an invoice rejected are checked before it is sent — the Bucharest sector normalised, the county in ISO 3166-2:RO form, the VAT category-and-rate pair — plus a check of its own on the tax ID's check digit. Validation runs against a trial number and the real one is allocated only once the invoice passes, so the series stays free of gaps. The roles are drawn just as explicitly: the issuer remains the client's own company, filing happens under the authorisation granted from the tax portal and revocable at any time, and the footer says plainly that the service "has no institutional connection with ANAF".
상태Plans run from a free tier — one company, one site and a monthly invoice allowance — up to a corporate one with unlimited companies, sites and invoices. Sandbox is included on all of them, and test invoices do not count against the allowance. Current prices are on alerteanaf.ro.
주요 기능
The whole invoice in a single call
One POST carrying the buyer and the order lines returns 202 Accepted and an identifier. Numbering, the XML, the PDF, the email and the filing with ANAF then happen in the background, through queues.
RO-CIUS rules checked before sending
An invoice rejected by ANAF comes back to the issuer, not to the customer, and the reason surfaces only then. The rules are checked locally instead, and the request stops carrying the field and the rule that blocked it.
An invoice series without gaps
Validation runs against a trial number, and the real number is allocated only once the invoice passes. Allocation happens under a lock, so two simultaneous orders cannot be given the same number.
Sandbox on every plan, the free one included
A single field issues from a test series, marked visibly everywhere, with no fiscal value and without consuming the monthly allowance. Going live is a setting on the source, not a change to the code.
One token per site
Each shop has its own key, its own series and its own delivery settings, and revoking a token stops exactly that site. The token is shown once — the application keeps only an HMAC of it.
Idempotency on the order identifier
The same key with the same body returns the original response, so an HTTP client that timed out can retry without issuing a second invoice. The same key with a different body gets a 409 rather than a duplicate document.
Credit notes as documents in their own right
An issued invoice is neither deleted nor edited. A credit note is a new document on the same series, carrying a mandatory reference to the invoice it corrects — including for partial refunds, which accumulate up to the invoice total.
Signed webhooks and an exportable archive
ANAF's acceptance or rejection arrives by webhook, on the plans that include it, instead of by polling in a loop. The export is a ZIP organised by tax ID and then by location, with the PDFs and the XMLs together.
사례 연구는 루마니아어와 영어로 제공됩니다. 사이트의 나머지 부분은 모두 번역되어 있습니다.
