You catch the differences before ANAF notifies you.
ANAF sends you a pre-filled VAT return (D300 format), built from e-Invoice, e-Transport and SAF-T. When your return differs from the pre-filled one, you get a compliance notice and have 20 days to respond. We reconcile the two returns and show you exactly where they differ — before the notice.
We do not generate the pre-filled return and we do not file it — ANAF produces it, you respond through SPV. We do the useful part: you put the two returns side by side and get the differences line by line, exactly what the compliance notice would flag. Processing happens in memory; the content never touches a disk of ours.
// JSON: { precompletat, propriu }
// → { are_diferente: true, nr_diferente: 2,
// total_precompletat: 48210.00, total_propriu: 47960.00,
// diferente: [ { camp, precompletat, propriu, diferenta } ] }
POST /etva/v1/parse // the pre-filled return, as JSON
{
"are_diferente": true, "nr_diferente": 2,
"total_precompletat": 48210.00, "total_propriu": 47960.00,
"diferente": [
{ "camp": "tva_colectata", "precompletat": 61200.00, "propriu": 60950.00, "diferenta": 250.00 }
]
}
- System
- RO e-VAT
- Legal basis
- OPANAF 6234/2024
- Return format
- D300
- Operations
- reconcile · parse
- Notice deadline
- 20 days
- Retention
- none
The compliance notice comes with a 20-day clock.
ANAF compares your VAT return against the one pre-filled from the data it already holds. When they do not match, you get a compliance notice — and a short deadline to explain each difference.
The pre-filled return
ANAF builds you a pre-filled VAT return (D300) from what you already report: e-Invoice, e-Transport and SAF-T. You do not generate it — you receive it, already drawn up, from the tax authority’s data.
Your return
In parallel, you file your own VAT return, drawn up by your accounting team or your ERP. The two should say the same thing — but they rarely match to the decimal.
The compliance notice
When your return differs significantly from the pre-filled one, ANAF issues a compliance notice (OPANAF 6234/2024) listing exactly the lines that do not match.
The 20-day deadline
From the notice you have 20 days to respond: either you correct the return or you explain the differences. The clock runs whether or not you have found where the problem is.
The difference hidden in the lines
A return has dozens of lines — supplies, acquisitions, output VAT, input VAT, adjustments. The difference may be on a single line, and finding it by hand, under deadline pressure, is slow and error-prone.
Compliance risk
A notice ignored or handled badly raises the risk of an inspection and your tax risk indicator. The best answer is to have no surprise differences — to see them before ANAF notifies you.
Reconcile and read. No generation, no filing.
Each is an independent POST call. We do not build the pre-filled return and we do not file it — we read it and compare it with yours. You use the one you need.
/reconciliere
Reconcile
You send the pre-filled return from ANAF and your own, and get the differences line by line: which field, the pre-filled value, your value and the difference. Exactly what the compliance notice would flag — but before it arrives.
/parse
Read
The pre-filled return (XML) becomes clean JSON: the D300 lines with their values, ready to read from code. You understand it without touching the XML and without writing a parser of your own.
Your VAT data goes nowhere. Not to us, not to ANAF.
This is the answer to “why would I send my VAT returns to a third party”. Because, in practice, you are not sending them anywhere — we reconcile and forget.
Processed in memory
The two returns are never written to disk. They arrive in the request, are compared in memory and are gone when the response leaves. There is no return of yours at our end.
Local comparison
The reconciliation runs on our side, on the server holding your response. We do not send the returns to ANAF to find the differences — the comparison is here, the result is local.
Logs without content
What we keep is a result code and a duration — that is all. The VAT number, the VAT amounts, the return lines go into no log, neither ours nor an observability service’s.
The differences only
The response returns only the differences and the totals you need in order to correct. Nothing is kept once the response leaves — neither the pre-filled return nor yours.
We do not just say “they do not match”. We say exactly on which line.
We put the pre-filled return and yours side by side and give you the differences line by line — the same ones the compliance notice would list, but before you receive it.
A difference on every field
For every line that does not match you get the field involved, the value ANAF pre-filled, your value and the difference between them. The difference between knowing there is a problem and knowing exactly where it is.
Verdict and totals
The response tells you whether there are differences, how many, plus the pre-filled total and your total. One glance and you know whether your return is aligned.
Before the notice
You run the reconciliation when it suits you — at month end, before filing — and correct the differences in time. The compliance notice becomes a non-event, not a 20-day scramble.
No filing in SPV
The reconciliation is entirely local: by default, nothing leaves us for ANAF. The response to the compliance notice you file yourself through SPV, with your own credentials — we give you the differences before that step.
The D300 lines, compared one by one.
Not just the VAT payable total. Every relevant line of the return, put side by side and counted.
We reconcile the lines of the pre-filled D300 against yours, with the difference calculated on each. If you hit a line we do not handle correctly, write to us — real cases take priority in what we build.
Two returns in. The differences out.
You send the pre-filled return and yours in one JSON and get the list of differences line by line. No mandatory SDK — the HTTP client you already have.
# reconcile: the pre-filled return from ANAF + yours → the differences line by line
curl "https://oneapi.ro/api/anaf/v1/etva/reconciliere" \
-H "Authorization: Bearer $ONEAPI_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "precompletat": "<Decont…/>", "propriu": "<Decont…/>" }'
# → 200 OK
{
"are_diferente": true,
"nr_diferente": 2,
"total_precompletat": 48210.00,
"total_propriu": 47960.00,
"diferente": [
{ "camp": "tva_colectata", "precompletat": 61200.00, "propriu": 60950.00, "diferenta": 250.00 },
{ "camp": "tva_deductibila", "precompletat": 12990.00, "propriu": 12990.00, "diferenta": 0.00 }
]
}
The field, the values and the difference
A reconciliation does not just say “they do not match”. It tells you whether there are differences, how many, the totals, plus each field with the pre-filled value, your value and the difference. Enough to fix it first time instead of hunting through the return by hand.
# returns aligned → no difference
{ "are_diferente": false,
"nr_diferente": 0,
"total_precompletat": 47960.00,
"total_propriu": 47960.00,
"diferente": [] }
Before the first notice arrives.
The rest, in the frequently asked questions and in the documentation.