SAF-T D406 din Saga — cum generezi fișierul XML fără erori (ghid 2026)
ANAF respinge SAF-T-ul tău cu «schema validation error»? Iată cele 5 erori frecvente la generarea D406 din Saga și fix-ul pentru fiecare.
Ionut Mihaescu — Full Stack Developer Azuvio · 2026-05-21 · 7 min · ERP & Integrări
Contextul D406 în 2026
SAF-T D406 e obligatoriu lunar/trimestrial pentru toate firmele cu CA > limita ANAF (extins gradual din 2022). Saga generează XML-ul direct, dar fișierul trebuie să treacă validarea schemă XSD ANAF — orice eroare = respingere automată + risc amendă (până la 5.000 RON).
Eroare 1 — «Schema validation error: element X is required»
ANAF cere câmpuri obligatorii pe care Saga nu le populează implicit pentru toate înregistrările vechi.
Cauze frecvente:
Conturile de TVA fără cod fiscal asociat (`TaxCode`)
Furnizori/clienți fără țară (`Country = RO`) — implicit la import vechi
Articole fără cod (`ProductCode`) — la firme care lucrează cu «articol generic»
Fix: în Saga, Service → Verificare nomenclator SAF-T rulează validatorul. Lista articolelor / partenerilor cu probleme apare; le completezi unul câte unul. Pentru volume mari, exportă în Excel, completează, re-importă.
Eroare 2 — «Invalid value for TaxCode»
Codul fiscal de TVA folosit nu e în nomenclatorul ANAF (lista valorilor permise pentru SAF-T).
Fix: ANAF publică [nomenclatoarele SAF-T oficiale](https://static.anaf.ro/static/10/Anaf/AsistentaContribuabili_r/D406/D406.html). Verifică că folosești coduri din lista oficială (`100`, `101`, `110`, `120`, etc.), nu coduri inventate intern. Saga ar trebui să le aibă pre-populate dacă ai update-ul la zi.
Eroare 3 — «Date format invalid»
Datele apar ca `21/05/2026` în loc de `2026-05-21` (format ISO 8601 cerut de SAF-T).
Fix: în Saga, Setări → Regional → Format dată = ISO 8601 (YYYY-MM-DD). Regenerează XML-ul după.
Eroare 4 — Suma totală nu se potrivește cu balanța
ANAF compară totalurile SAF-T cu D300/D394. Dacă diferă cu >1 RON → respingere.
Cauze frecvente:
Note contabile manuale neînregistrate în jurnale (doar în registru-jurnal direct)
Facturi storno înregistrate greșit (cu semn pozitiv în loc de negativ)
Diferențe de rotunjire pe TVA mixt (5% / 9% / 19%)
Fix: rulează Verificare consistență D300 ↔ SAF-T în Saga (meniu Liste → Verificări). Identifică diferențele, le corectezi în registrele aferente, regenerezi SAF-T-ul.
Eroare 5 — «File size exceeds limit»
SAF-T are limită ANAF de ~150MB per fișier. Pentru firmele mari (5.000+ facturi/lună), un singur XML lunar poate depăși.
Fix: în Saga, opțiunea «Generare SAF-T pe pachete» — împarte în mai multe fișiere XML (max 100MB fiecare). Le încarci pe SPV unul câte unul.
Alternativă mai elegantă: Azuvio agregă datele zilnic, le validează în timp real, iar la sfârșit de lună livrează SAF-T în pachete pre-validate. Zero erori la submit. Vezi [conectorul Saga ↔ Azuvio](/software/conectori-erp/saga).
Checklist înainte să trimiți SAF-T la ANAF
1. Rulează validator XSD local — descarcă schema de pe ANAF, validează cu un tool gratuit (XMLSpy free, Notepad++ cu plugin XML Tools).
2. Verifică totaluri vs. D300 / D394 / balanță sintetică — diferență max 1 RON.
3. Spot-check 10 facturi random — taxă corectă, dată corectă, CIF valid client.
4. Encoding UTF-8 fără BOM — verifică în Notepad++.
5. Salvare backup XML înainte de upload SPV — dacă pică submit-ul, ai versiunea ta de referință.
Concluzie
SAF-T D406 din Saga merge dacă: ai update-ul la zi, validezi nomenclatorul, folosești coduri ANAF oficiale, verifici totalurile cu D300. Pentru volume mari sau erori recurente, layer-ul de validare automată (Azuvio) elimină 95% din respingerile ANAF. Vezi articolul detaliat «[SAF-T D406: Saga + Azuvio, zero erori ANAF](/blog/saf-t-d406-saga-azuvio-fara-anaf-erori)».