Converting foreign ERP data into SAF-T in Romania D406 XML file

SAF-T in Romania (D406): A Practical Guide for Non-Resident Companies

Last updated: August 2026  ·  Reading time: 12 minutes

If your company holds a Romanian VAT number but runs its accounting on SAP, NetSuite, Xero, QuickBooks or any other system configured outside Romania, SAF-T is probably the hardest compliance obligation you face here — and the one most likely to be discovered late.

The reason is structural rather than legal. SAF-T is not a tax return you complete from summary figures. It is a structured export of your accounting data, in a schema Romania defines down to the field level. Your accounting system holds the data. It simply cannot produce it in that shape.

This guide explains what the D406 actually requires, who has to file it, why standard ERP exports fail, and what the realistic options are — including the one most foreign subsidiaries end up choosing.

Converting foreign ERP data into SAF-T in Romania D406 XML file

SAF-T in Romania -D406 at a Glance

DeclarationD406 — Informative declaration (SAF-T)
FormatXML, validated against a published XSD schema
Based onOECD Standard Audit File for Tax, adapted by ANAF
Filing frequencyMonthly or quarterly — matching your VAT return period
DeadlineLast calendar day of the month following the reporting period
Non-resident VAT registrantsIn scope — verify the applicable start date for your category
Validation toolDUKIntegrator (published by ANAF)
Submitted viaSPV — ANAF’s Virtual Private Space

What This Guide Covers

  1. What SAF-T actually is
  2. Who must file, and from when
  3. What the D406 file contains
  4. Deadlines, grace periods and penalties
  5. Why foreign ERP exports fail
  6. Your three realistic options
  7. How our mapping process works
  8. Before your first submission
  9. Frequently asked questions

What SAF-T in Romania Actually Is

SAF-T in Romania is often described as “another declaration”. It is not, and the distinction matters. Most tax filings ask you to summarise. A VAT return asks for totals: output VAT, input VAT, the net position. You can produce those figures from almost any accounting system, because summarising is something every system does.

SAF-T inverts that. Instead of totals, ANAF asks for the underlying records themselves — your chart of accounts, your customer and supplier master data, your general ledger entries, your individual sales and purchase invoices — delivered in a prescribed XML structure with prescribed field names, prescribed code lists and prescribed relationships between elements.

The practical consequence: SAF-T in Romania does not test whether your tax calculations are right. It tests whether your accounting data is structured the way Romania expects. Those are very different tests, and a company can pass the first while failing the second comprehensively.

TaxOlia Insight: Clients often ask us to “review the SAF-T before submission,” expecting something like a tax review. In practice the work is almost entirely data engineering — checking that every counterparty has a valid identifier, every ledger account maps to the right nomenclature entry, and every invoice line carries a recognised tax code. The tax judgement was already made upstream, when the transaction was booked.

Who Must File D406 — and From When

SAF-T in Romania was phased in by taxpayer category rather than introduced all at once, which is why the obligation still catches companies by surprise.

CategoryObligation commenced
Large taxpayersJanuary 2022
Medium taxpayersJanuary 2023
Small taxpayersJanuary 2025
Non-resident companies registered for Romanian VATJanuary 2025 (OPANAF 1783/2021)

The category that causes most confusion is the last one. A foreign company with no Romanian establishment, no local accounting system and perhaps only a handful of transactions per month can still hold a Romanian VAT number — and a Romanian VAT number is what brings the reporting obligation. Low transaction volume reduces the work; it does not remove the requirement.

What the D406 File Contains

The Romanian SAF-T schema is organised in sections. Not all are reported at the same frequency, which is itself a common source of error.

SectionWhat it holdsReported
HeaderCompany identification, period, file metadataEvery submission
Master FilesChart of accounts, customers, suppliers, tax table, units of measure, productsEvery submission
General Ledger EntriesJournal entries with full double-entry detailEvery submission
Source DocumentsSales invoices, purchase invoices, payments, movement of goodsEvery submission
AssetsFixed asset register and depreciationAnnually
StocksInventory detailOn ANAF request

*Non-resident entities regitered for VAT in Romania will only report the sections marked in Orange above.

Two features of this structure deserve attention before you start.

First, master data is submitted every time. Your customer and supplier records are not a one-off registration — they travel with each filing. Inconsistent or incomplete master data therefore fails repeatedly, not once.

First-time filers often underestimate this. A customer record missing a valid tax identifier is a minor annoyance in your own ERP. In SAF-T it is a validation failure that blocks the entire submission.

Second, the file must be internally coherent. Every invoice references a customer that must exist in Master Files. Every ledger entry references an account that must exist in the chart of accounts. Every tax code must appear in the tax table. Break one of those links anywhere in the file and the whole submission is rejected — not the individual line.

Deadlines, Grace Periods and Penalties

The D406 follows your VAT reporting period: monthly filers submit monthly, quarterly filers quarterly. The deadline is the last calendar day of the month following the reporting period.

Romania granted grace periods when each taxpayer category entered scope, during which late submissions were not penalised provided they were eventually made correctly. Confirm whether any grace period still applies to your category before relying on it — these were transitional, and most have now expired.

FailureConsequence
Failure to submit, or late submissionFine — verify current range
Incomplete or incorrect submissionFine — verify current range
Persistent inconsistency with other filingsMaterially increased inspection risk

The fines are not, for most companies, the real exposure. The real exposure is that SAF-T gives ANAF transaction-level visibility of your Romanian activity. Discrepancies between your D406 and your VAT return are visible without an inspection being opened — and are among the most common reasons one is.

Not sure whether SAF-T applies to you?

We can assess your obligation and reporting period in a short review, before a deadline turns it into a problem. Request a SAF-T assessment →

Why Foreign ERP Exports Fail

This is where the obligation stops being administrative and becomes technical. Three distinct problems, usually encountered in this order.

1. The mapping problem

Your chart of accounts was designed for your group’s reporting, not for Romanian tax nomenclature. A single account in your ERP may correspond to several Romanian accounts, or to none cleanly. Somebody has to decide, account by account, how the two structures correspond — and document that decision so it can be applied consistently and defended later.

2. The master data problem

SAF-T requires specific identifiers for every counterparty, in specific formats, with country codes and VAT numbers structured correctly. Master data that has accumulated over years in a group ERP is rarely clean enough: missing tax IDs, inconsistent country coding, duplicate records, and names entered differently across records. All of it surfaces at once, on the first validation attempt.

3. The validation problem

ANAF publishes DUKIntegrator, which validates your XML against the schema. It is strict and unambiguous — the file passes or it does not. What it does not do is explain how to fix what it found. A validation error points at a location in the XML; translating that into “this supplier record is missing a country code” is work, and it is work that recurs every month until the underlying data is corrected at source.

TaxOlia Insight: The first D406 submission takes far longer than any subsequent one — typically by an order of magnitude. Almost all of that effort goes into mapping decisions and master data cleanup, which are one-time investments. Companies that treat the first filing as a project rather than a monthly task get through it far more comfortably.

Your Three Realistic Options

Every foreign company facing SAF-T in Romania arrives at the same three choices. They differ substantially in cost, timeline and who carries the risk.

OptionTimelineBest whenDrawback
Reconfigure the group ERPMonthsLarge Romanian operation, high volumes, long-term commitmentExpensive; requires group IT priority you may not command; disproportionate for a small subsidiary
Parallel Romanian bookkeepingOngoingYou want a local system regardless, for other reasonsDuplicates work; creates two versions of the truth that must be reconciled
Structured mapping layerWeeksForeign ERP stays as-is; moderate transaction volumesRequires disciplined export routine; mapping must be maintained as the business changes

For a subsidiary processing anywhere from tens to a few thousand transactions a month, the third option is usually the proportionate answer. It leaves your accounting where it is and solves the specific problem — the gap between your data and Romania’s required format — rather than rebuilding everything around it.

How Our Mapping Process Works

We built a structured template that sits between your existing export and the D406 schema. It encodes Romanian account nomenclature, tax codes and the schema’s internal validation rules, so the logic lives in the tool rather than in an individual’s memory.

The engagement runs in two phases.

Setup, once. We review your information and agree the mapping to Romanian nomenclature. We audit your master data and identify what needs correcting at source. We define the export format you will produce each month. We run a test submission through DUKIntegrator and resolve validation issues before any live deadline.

Monthly, thereafter. You export transactional data in the agreed format, once. We load it into the template, which applies the mapping and runs validation checks. We generate the D406 XML, validate it, and submit it — or hand it to you to submit through SPV.

Because the same mapping applies in month twelve as in month one, the process is auditable. When ANAF asks why a particular account was treated a particular way, the answer exists in documented form rather than being reconstructed.

TaxOlia Insight: The same underlying data can also produce your VAT return and recapitulative statement. That matters more than convenience: filings generated from one dataset reconcile with each other by construction. The mismatches ANAF looks for simply cannot arise.

Before Your First Submission

  • ✓ Confirm your obligation start date and reporting period
  • ✓ Register for SPV access, if you do not already have it
  • ✓ Extract a full chart of accounts from your ERP
  • ✓ Extract customer and supplier master data, including tax identifiers
  • ✓ Identify records missing valid identifiers or country codes
  • ✓ Agree the mapping between your accounts and Romanian nomenclature
  • ✓ Define and document your monthly export routine
  • ✓ Run a test file through DUKIntegrator well before the deadline
  • ✓ Reconcile the test file against your VAT return for the same period

The last item is the one most often skipped, and the one that prevents the most trouble. If your D406 and your VAT return disagree, it is better to discover it yourself than to have ANAF’s systems discover it for you.

Facing your first D406 — or struggling with rejections?

We handle SAF-T for foreign companies whose accounting lives outside Romania, from mapping through to monthly submission. Talk to us about your SAF-T obligation →

Frequently Asked Questions

Do non-resident companies have to file SAF-T in Romania?

A Romanian VAT registration is what triggers the reporting obligation, and non-resident registrants fall within scope. Confirm the applicable start date for your registration type, since Romania phased the requirement in by taxpayer category.

Can I produce a D406 file without a Romanian accounting system?

Yes. A structured mapping process converts data from most standard ERP or accounting exports into a compliant D406 XML, without changing your accounting software or maintaining parallel Romanian books.

How often do I have to submit SAF-T?

The D406 follows your VAT reporting period — monthly filers submit monthly, quarterly filers quarterly. Asset data is reported annually, and inventory data on request.

What is the SAF-T deadline in Romania?

The last calendar day of the month following the reporting period. Confirm the current position for your category, since transitional grace periods applied when each group entered scope.

What happens if my SAF-T file fails validation?

DUKIntegrator rejects the file entirely rather than accepting it partially. The submission is not made until a valid file is produced, so validation failures close to a deadline become deadline failures.

What are the penalties for not filing SAF-T?

Fines apply both for non-submission and for incorrect or incomplete submission. For most companies the greater exposure is the inspection risk created by inconsistencies between the D406 and other filings.

Does SAF-T replace the VAT return?

No. Both continue to be required, and they must reconcile. SAF-T provides transaction-level detail; the VAT return reports the summary position for the same period.

Do I need to file SAF-T for a period with no transactions?

Reporting obligations generally continue while the VAT registration is active. Confirm the treatment of nil periods for your specific registration type rather than assuming a filing can be skipped.

Can my group’s SAP or NetSuite system generate the D406 directly?

Not without Romania-specific configuration. Standard exports do not match the required schema, field names or code lists. Some groups build this configuration; for most subsidiaries a mapping layer is the proportionate alternative.

How long does it take to set up SAF-T reporting for the first time?

Setup is typically measured in weeks, driven mainly by chart of accounts mapping and master data cleanup. Subsequent monthly submissions take a fraction of that once the mapping is established.

What is DUKIntegrator?

ANAF’s validation tool. It checks your XML against the published schema and confirms whether the file is structurally valid before submission through SPV.

We already have a Romanian VAT number but have never filed SAF-T. What now?

Establish when the obligation began for your category, quantify the outstanding periods, and regularise them deliberately. Voluntary correction is consistently a better position than waiting for the gap to be identified.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top
Contact us!