SAF-T Compliant ERP in Romania

Mirena Rumenova
Mirena Rumenova
October 20, 2026
SAF-T Compliant ERP in Romania

What Is a SAF-T Compliant ERP in Romania?

TL;DR

  • In Romania, SAF-T compliance comes from your setup. Your accounting software files the D406, and your ERP decides whether the data feeding it is clean.
  • In a Prim.io setup, SAGA keeps the ledger and exports the D406. Prim.io runs orders, stock and shipping, and handles e-Factura and e-Transport natively.
  • Every taxpayer group now files. Small taxpayers and non-resident VAT-registered businesses joined on 1 January 2025.
  • You file D406 monthly or quarterly, in line with your VAT period, by the last calendar day of the following month.
  • Fines start at 500 lei. Late filing costs 1,000 to 5,000 lei, and an incorrect or incomplete filing costs 500 to 1,500 lei.
  • When all your channels feed one shared dataset, transactions reach your accounting software already matched, and the D406 is far easier to get right.

How SAF-T Compliance Works in Romania

Anyone selling in Romania has probably heard someone in finance mention "D406" with a small sigh. It's less complicated than that sigh suggests.

A SAF-T compliant ERP is business software that fits into a setup able to produce a valid D406 file for ANAF. Some ERPs export the D406 themselves. Others pass clean transaction data to the accounting software that files it, such as SAGA. Either way, the file is only as accurate as the data behind it.

SAF-T is short for Standard Audit File for Tax, the standard format tax authorities use to review a company's books. D406 (Declarația informativă D406) is the Romanian declaration that delivers that file to ANAF, the National Agency for Fiscal Administration.

The ERP part matters because it decides the quality of that data. An ERP runs your operation from a single platform (what an ERP system does), so sales, stock, purchasing and shipping all work from the same numbers. When those numbers reach your accounting software already matched, an accurate D406 becomes much easier.

To be clear about our part: Prim.io doesn't file the D406. In Romania, SAGA keeps the ledger and exports the file. Prim.io runs the operations behind each entry, where brands process more than 3.1 million orders every month, and handles e-Factura and e-Transport natively.

Below, we'll cover who has to file, when the D406 is due, what happens if it's late or wrong, and how the work splits between an ERP and your accounting software.

What Is SAF-T and the D406 Declaration?

SAF-T itself is a standardized file holding your accounting and tax data. ANAF uses it to audit businesses digitally, so inspectors don't have to request boxes of paper records. In Romania, you submit it as the D406 informative declaration, which is generated as an XML file (a structured text format software can read without anyone retyping it).

The file is divided into five sections. According to Sovos, the five sections of the D406 are General Ledger, Accounts Receivable, Accounts Payable, Fixed Assets, and Inventory.

What Data Does the D406 Contain?

Where people tend to get caught out is assuming all five sections go to ANAF together. They don't, and the difference matters for your filing calendar.

Your regular monthly or quarterly D406 only covers the general ledger, receivables, and payables. Fixed Assets and Inventory are filed separately, each on its own schedule.

The Assets file is due once a year, by the same deadline as your annual financial statements. Stocks, on the other hand, only has to be filed if ANAF requests it, and even then you get at least 30 days to respond (Sovos).

As for how much data is involved, PwC Romania notes the Romanian SAF-T structure contains more than 390 mandatory elements that taxpayers have to report.

Assembling all of that by hand from a few spreadsheets every month would be slow, and the odds of a typo slipping through are high. When your operations and accounting are connected, your accounting software fills those fields from transactions that were recorded correctly in the first place, which is a far safer way to do it.

Who Must File SAF-T in Romania, and Since When?

Romania didn't switch SAF-T on for everyone at once. It phased the requirement in by taxpayer size between 2022 and 2025, and Sovos maps the phased SAF-T rollout in Romania like this:

Taxpayer typeSAF-T obligation start
Large taxpayers (on ANAF's 2021 list) 1 January 2022
Large taxpayers not in that category on 1 January 2022 1 July 2022
Medium-sized taxpayers 1 January 2023
Financial institutions and insurers classified as large taxpayers 1 January 2023
Small taxpayers 1 January 2025
Non-resident VAT-registered businesses 1 January 2025

The last row is the one foreign sellers most often overlook. Even if your company is based outside Romania, holding a Romanian VAT number means filing a simplified D406, limited to the purchases and sales made through that VAT ID (Sovos). Many multi-channel sellers on eMAG, Amazon, or their own webshop are in exactly this position.

Something else has changed since the rollout began, and it concerns the grace period. PwC explains that first-time filers were given a grace period of six months for their first monthly statement and three months for their first quarterly one. By now every group has used it up, 2025 entrants included, so the fines covered below apply.

When Is the D406 Due, and What Are the Penalties?

Working out your deadline is fairly simple, because the D406 follows the same rhythm as your VAT return. PwC Romania explains that the declaration is filed on monthly or quarterly filing deadlines in line with your VAT period, while companies not registered for VAT file quarterly. In both cases, the deadline is the last calendar day of the month after the reporting period.

So if you file VAT monthly, your March D406 is due by 30 April.

Missing that date is where it starts to cost money. Under the Fiscal Procedure Code, late submission costs between 1,000 and 5,000 lei, and an incorrect or incomplete declaration costs between 500 and 1,500 lei (Accace, PwC). There's one important exception: if you correct an incorrect declaration before the next reporting deadline, no fine applies (TPA).

How Does ANAF Catch Late or Incorrect Filings?

Enforcement has picked up alongside those fines. Since August 2024, ANAF has been sending automatic notices to taxpayers who didn't file a D406 or filed one with errors, and companies that received them had 30 days to put things right (Accace).

For everyone else, the useful part is knowing what ANAF was actually checking. Accace reports that its consistency tests on the General Ledger Entries section flagged four kinds of problem:

  • Tax amount that doesn't match its tax code
  • Tax amount with no tax code attached
  • A wrong tax amount on accounts 4426, 4427, or 4428 (deductible VAT, collected VAT, and VAT not yet due)
  • A missing or incomplete General Ledger Entries section

Each of these goes back to how a transaction was recorded in the first place. Fixing the data at the point of entry, before it reaches your accounting software, is therefore the most reliable way to keep your D406 out of ANAF's error reports.

How Is a SAF-T File Produced?

Turning daily transactions into the file is fairly mechanical. Each transaction is mapped to the SAF-T structure when it's posted to the ledger. When the filing date comes around, the software that keeps the ledger exports the D406 as an XML file.

In a Prim.io setup, that software is SAGA. Prim.io's job comes earlier: making sure the orders, returns and shipments behind each entry are recorded correctly before they reach SAGA.

How Do You Validate and Submit the D406?

Before submitting, you run the file through ANAF's DUKIntegrator, the free tool that checks your XML against ANAF's rules. ANAF updates it from time to time (the latest validator and schema were republished in February 2026), so use the current version. Once the file passes, you submit it as a PDF with the XML attached and an electronic signature (Sovos).

There are two practical limits to keep in mind as well. A single D406 can't be larger than 500 MB, so bigger files have to be split into several declarations for the same period. If you spot a mistake after filing, you can correct it with a rectifying statement (PwC).

For brands shipping thousands of orders a month, that size limit can arrive sooner than expected, so check that your accounting software can split large files correctly.

Who Does What in a SAF-T Compliant Setup

There are two common ways to set this up. Some ERPs keep the ledger and export the D406 themselves. Others split the work: the ERP runs operations, and accounting software keeps the books and files. Both can be compliant, as long as every transaction reaches the ledger correctly.

Prim.io uses the second model. Here's how the work divides between Prim.io and SAGA:

TaskPrim.ioSAGA
Orders from eMAG, Amazon and your webshop ✓
Stock, returns and courier shipments ✓
Issuing e-Factura invoices ✓
Receiving supplier e-Factura invoices ✓[[a]](#cmnt1) ✓[[b]](#cmnt2)
e-Transport declarations ✓
General ledger and VAT accounts (4426, 4427, 4428) ✓
D406 export and DUKIntegrator validation ✓
Annual Assets file and on-request Stocks file ✓

Do You Need Separate Accounting Software?

Yes. In Romania, Prim.io doesn't keep the general ledger or export the D406, so you'll need accounting software that does.

If your accountants already use SAGA, they keep working in it. Prim.io exports your sales and purchase invoices to SAGA in one click, so nobody re-types them.

When founders ask whether they should replace their accounting software, we usually suggest keeping it. The bigger gains come from fixing where data enters the business, and our customers go live in six weeks on average.

Why Clean Data at the Source Matters for Multi-Channel Brands

The brands we talk to often describe the same month-end. eMAG orders sit in one export and Amazon orders in another, the webshop has its own report, and returns are tracked in a spreadsheet called something like "FINAL_v3." Then, late in the evening, the D406 fails DUKIntegrator validation because of a tax code on account 4427.

Usually each person involved did their part correctly. The trouble is that the data came from five places in five different formats, and the D406 is the first document that requires all of it to agree.

The fix is to stop the data from scattering in the first place. Prim.io connects your channels through native integrations with eMAG, Amazon, WooCommerce and Shopify, plus Romanian couriers such as Fan Courier, Sameday and Cargus.

Our platform also cuts down the manual work around each order, with brands spending 60% less time on order processing. With fewer hands touching each order, there are fewer chances for a wrong tax code to reach SAGA. The data arrives already matched, so your accountants spend month-end checking figures instead of reconciling them.

How SAF-T, e-Factura and e-Transport Fit Together

All three obligations go through ANAF and use XML, but they do different jobs. In a Prim.io setup, Prim.io handles e-Factura and e-Transport natively, and SAGA files the D406 from the same transaction data.

How Has e-Factura Expanded?

RO e-Factura has widened in three steps since 2024:

DateWhat changed
1 January 2024 Resident and non-resident businesses must report invoices within five working days
1 July 2024 Resident businesses must issue, transmit, and receive invoices exclusively through RO e-Factura
1 January 2025 The requirement extends to B2C sales

Where Does e-Transport Fit?

e-Transport is the third obligation, and a good system should cover it too. It's Romania's monitoring system for road freight, covering domestic transport of high-fiscal-risk goods as well as international road transport.

For domestic moves, the thresholds decide whether you declare at all. According to Accace's e-Transport guide , a declaration is needed when the vehicle is at least 2.5 tons, and the goods exceed 500 kg or 10,000 lei.

How Does ANAF Connect These Filings?

Even though these are separate obligations, the data ends up with the same authority, and ANAF is starting to connect it. Its SAF-T page lists an app, currently in testing, that evaluates D406 data within the D300 VAT return template, last updated in September 2026 (ANAF).

In practice, a mismatch between your invoices, your SAF-T file, and your VAT return is becoming easier for ANAF to notice. That's why e-Factura, e-Transport and your ledger should all draw on the same transaction data, even when different systems file them.

What to Look for in a SAF-T Compliant ERP

All of this gives you a practical way to compare setups. Most vendors will say their product "supports SAF-T," so the more useful question is how the whole setup, ERP plus accounting software, produces a clean D406. We've turned each filing requirement into something you can check with any vendor, ourselves included.

What to checkWhy it matters
It's clear which system keeps the ledger and which files the D406 One system owns the file, so nothing falls between tools
The D406 export passes DUKIntegrator validation ANAF only accepts validated files, and updates the validator and schema from time to time
Assets and Stocks files are covered by the system that files the D406 Both follow different deadlines from the main D406
Files over 500 MB can be split correctly High-volume sellers can reach the size limit sooner than expected
Sales, stock and shipping share one live dataset that feeds the ledger Mismatched tax codes and amounts are what ANAF's consistency tests look for
Invoices move to the accounting software without re-keying Re-keying data between tools is where tax codes and amounts drift
Native links to eMAG, Amazon and Romanian couriers Manual exports between channels are where multi-channel data usually goes wrong
e-Factura and e-Transport run on the same data that reaches the ledger ANAF receives data from all three, so the figures should match
Time to go live A long implementation means more periods of manual reconciliation before data flows cleanly

If you'd like to see how this works for real businesses, you can look at brands that run on Prim.io and the results they've had across channels.

Frequently Asked Questions

Is SAF-T Mandatory for All Businesses in Romania?

For most companies, it is. Large taxpayers have filed since 2022, medium-sized taxpayers since 2023, and small and non-resident VAT-registered businesses since 2025. There are exceptions, though. Companies whose activity is temporarily suspended at the trade register don't file for the suspension period, and entities keeping single-entry books generally fall outside the obligation, according to CECCAR Business Magazine [add link].

What Is the Difference Between SAF-T and D406?

SAF-T is the format, and D406 is the form. SAF-T defines how your accounting data is structured, and D406 is the declaration you submit to ANAF with that file attached.

Does Prim.io File the D406?

No. In Romania, SAGA keeps the ledger and files the D406. Prim.io supplies the operational data behind each entry and handles e-Factura and e-Transport natively.

Can I File SAF-T Using Accounting Software Alone?

Yes. Accounting software is what files the D406, as long as it exports valid XML and holds all the required data. You would still validate the file with DUKIntegrator before submitting. For multi-channel sellers, an ERP helps upstream: sales, returns and stock movements reach the accounting software already matched, instead of being rebuilt from channel exports.

How Much Does a SAF-T Compliant ERP Cost?

It depends on how the work is split, because you may pay for an ERP and accounting software separately. Prim.io plans start at €180 per month for Prim Plus with three users, billed annually and excluding VAT. Prim Pro costs €540 per month, and Prim Enterprise €1,710 per month. e-Factura and e-Transport are included. Your SAGA licence is separate. Implementation is a one-off cost scoped to your setup. See the Prim.io pricing page for details.

Do Non-Resident Sellers Have to File D406?

Yes, if they hold a Romanian VAT number. Since 1 January 2025, non-resident VAT-registered businesses file a simplified D406 covering only the purchases and sales made through that VAT ID (Sovos).

Key Takeaways

  • SAF-T compliance depends on your setup: the accounting software files the D406, and the ERP decides whether the data feeding it is clean.
  • Start by confirming which taxpayer group you're in, because start dates and filing rules differ for large, medium, small, and non-resident taxpayers.
  • Your D406 is due on the last calendar day of the month after each VAT period, which makes it easy to track alongside your VAT return.
  • Late filing costs 1,000 to 5,000 lei and incorrect filing 500 to 1,500 lei (Accace), and the grace periods have ended.
  • ANAF's consistency tests look directly at tax codes and at accounts 4426, 4427, and 4428.
  • The annual Assets file and the on-request Stocks file sit outside the regular D406, each with its own deadline.
  • When e-Factura, e-Transport and your ledger draw on the same transaction data, the figures ANAF receives from each are far more likely to match.

Conclusion

With every taxpayer group now filing and the grace periods over, the D406 has become a regular part of doing business in Romania, much like the VAT return it's tied to.

The simplest way to keep it manageable is a setup where your accounting software files from data you already trust. Prim.io's part is making sure that data is right from the moment it's entered, so filing day in SAGA mostly comes down to an export and a validation check.

If you'd like to see how Prim.io feeds clean data into SAGA and handles e-Factura and e-Transport, open a free demo account and explore it at your own pace. No credit card is needed, and there's no sales script

Categorii

Sfaturi de afaceri
Noutăți
Publicații

Discută cu un expert

Evaluează-ți proiectul și obține o demonstrație personalizată

Preferi să vorbești? Sună direct echipa noastră.

Lun–Vin, 9:00–18:00 EET

Ești gata să vezi singur?

Cel mai bun mod de a înțelege Prim.io este să-l încerci. Începe cu un cont demo gratuit și explorează în ritmul tău.