Reconciliază e-TVA
Compară decontul precompletat de ANAF cu decontul tău şi arată rândurile care nu se potrivesc, cu diferenţa pe fiecare. Cu prag se ascund diferenţele mici.
Corpul cererii
Se trimite ca JSON, în corpul cererii (Content-Type: application/json) — nu în şirul de interogare.
{
"precompletat": "@etva-precompletat.xml",
"propriu": "@etva-propriu.xml"
}
În exemplu, @etva-precompletat.xml, @etva-propriu.xml ţin locul unor documente întregi: trimiţi conţinutul fişierului — XML-ul ca text sau base64, un PDF ca base64 — nu numele lui.
{
"precompletat": "@etva-precompletat.xml",
"propriu": "@etva-propriu.xml"
}
În exemplu, @etva-precompletat.xml, @etva-propriu.xml ţin locul unor documente întregi: trimiţi conţinutul fişierului — XML-ul ca text sau base64, un PDF ca base64 — nu numele lui.
{
"precompletat": "@etva-precompletat.xml",
"propriu": "@etva-propriu.xml"
}
În exemplu, @etva-precompletat.xml, @etva-propriu.xml ţin locul unor documente întregi: trimiţi conţinutul fişierului — XML-ul ca text sau base64, un PDF ca base64 — nu numele lui.
Parametri de interogare
Cum se comportă
- Primește două deconturi de TVA (format D300) — cel precompletat de ANAF (RO e-TVA) și cel propriu al contribuabilului — și întoarce diferențele pe rânduri. E fix ce semnalează „Notificarea de conformare RO e-TVA" (OPANAF 6234/2024), dar rulat local, preventiv, înainte ca ANAF s-o trimită.
- Body JSON:
{"precompletat": "<xml>", "propriu": "<xml>"}(XML direct sau base64).?prag(lei) filtrează diferențele mici — implicit 0 (toate). - Comparația e pe rândurile numerice ale decontului (R*) + totalul de plată; antetul textual se ignoră.
- Fără depunere la SPV. Decontul precompletat și notificarea le generează ANAF; răspunsul la notificare se depune de contribuabil prin SPV, cu credențialele lui — în afara acestui toolkit stateless.
- Zero retenție: deconturile primite nu se scriu și nu se loghează.
La ce folosește
- Verifici, înainte de depunerea D300, dacă decontul tău se abate de la cel precompletat de ANAF — ca să eviți notificarea de conformare.
- Prioritizezi verificarea manuală pe rândurile cu cele mai mari diferențe.
Structura răspunsului
true dacă există cel puțin o diferență peste prag.
{camp, precompletat, propriu, diferenta} per rând.
Exemple de răspuns
body: {"precompletat": "@etva-precompletat.xml", "propriu": "@etva-propriu.xml"}
{
"data": {
"are_diferente": true,
"nr_diferente": 4,
"total_precompletat": 357,
"total_propriu": 147,
"diferente": [
{
"camp": "R9_1",
"precompletat": 1700,
"propriu": 700,
"diferenta": -1000
}
]
},
"meta": {
"generat_la": "2026-10-06T23: 59: 44+03: 00"
}
}
body: {"precompletat": "@etva-precompletat.xml", "propriu": "@etva-propriu.xml"}
{
"data": {
"are_diferente": true,
"nr_diferente": 1,
"total_precompletat": 357,
"total_propriu": 147,
"diferente": [
{
"camp": "R9_1",
"precompletat": 1700,
"propriu": 700,
"diferenta": -1000
}
]
},
"meta": {
"generat_la": "2026-10-06T23: 59: 44+03: 00"
}
}
body: {"precompletat": "@etva-precompletat.xml", "propriu": "@etva-propriu.xml"}
{
"data": {
"are_diferente": true,
"nr_diferente": 4,
"total_precompletat": 357,
"total_propriu": 147,
"diferente": [
{
"camp": "R9_1",
"precompletat": 1700,
"propriu": 700,
"diferenta": -1000
}
]
},
"meta": {
"generat_la": "2026-10-06T23: 59: 44+03: 00"
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 422 | xml_invalid | Lipsesc cele două deconturi, sau un decont nu e XML D300 valid. |
| 429 | cota_depasita | Cota lunară a planului a fost depăşită (vezi Retry-After). |
Erorile modulului Anaf au acelaşi plic ca restul platformei, cu două câmpuri în plus: {eroare: {cod, mesaj, camp, request_id}}. eroare.cod e stabil şi e cel după care ramifici în cod; la validare (422) codul e specific cazului: xml_invalid, xml_nu_e_factura, unitate_necunoscuta, luna_invalida ş.a. camp arată câmpul vinovat, când se poate identifica.
{
"eroare": {
"cod": "xml_invalid",
"mesaj": "Lipsesc cele două deconturi, sau un decont nu e XML D300 valid.",
"camp": "prag",
"request_id": "0199c1f0-6e1a-7c3d-9b2f-4a8e5d1c7b04"
}
}