Eroare 'fisierul transmis nu este valid' la e-Factura: cauze si solutii
Eroarea 'fisierul transmis nu este valid' la e-Factura inseamna ca XML-ul nu trece validarea de schema. Cauze frecvente: encoding, caractere speciale, namespace gresit. Solutii pas cu pas.
Aceasta eroare este mesajul generic al ANAF pentru orice fisier XML care nu trece validarea de schema XSD. Spre deosebire de erorile de tip BR (reguli de business), aceasta eroare apare inainte ca ANAF sa verifice datele din factura. Structura fisierului este invalida.
Ce inseamna aceasta eroare
ANAF valideaza fisierul trimis in doua etape. Prima etapa este validarea de schema: XML-ul trebuie sa respecte structura definita in fisierul XSD al standardului CIUS-RO. A doua etapa este validarea regulilor de business (regulile BR).
Eroarea "fisierul transmis nu este valid" apare la prima etapa. Inseamna ca fisierul XML are probleme structurale fundamentale care il fac ilizibil sau incompatibil cu schema CIUS-RO. Pana nu rezolvi aceste probleme, nu vei vedea niciodata erorile de tip BR.
Fisierul trebuie transmis ca ZIP care contine XML-ul. Daca ZIP-ul insusi este corupt sau nu contine ce trebuie, ANAF returneaza aceasta eroare.
Cauze frecvente
1. Encoding gresit (nu UTF-8). Fisierul XML trebuie sa fie encoded in UTF-8, fara BOM (Byte Order Mark). Un fisier salvat in Windows-1252, ISO-8859-2 sau cu BOM va fi respins. Aceasta este una dintre cele mai frecvente cauze.
2. Caractere speciale neescapate. In XML, caracterele &, <, >, " si ' au semnificatie speciala si trebuie escapate cand apar in text. De exemplu, ampersand-ul din denumirea unei firme trebuie scris ca &, nu ca &.
3. Root element gresit. Root element-ul XML trebuie sa fie exact <Invoice> cu I majuscula. <invoice> cu i mic este invalid. XML este case-sensitive.
4. Namespace URI gresit. Namespace-ul principal trebuie sa fie exact urn:oasis:names:specification:ubl:schema:xsd:Invoice-2. Orice variatie, inclusiv majuscule gresite sau cratime lipsa, face fisierul invalid.
5. Problema cu fisierul ZIP. ANAF cere ca XML-ul sa fie intr-un fisier ZIP. Daca ZIP-ul este corupt, are parola, sau nu contine un fisier XML valid, apare eroarea. Numele fisierului XML din ZIP trebuie sa respecte conventia ANAF.
6. Fisier prea mare. ANAF impune limite de dimensiune pentru fisierele trimise. Daca fisierul depaseste limita, este respins. Verifica limitele curente in documentatia tehnica ANAF.
7. Declaratii de namespace lipsa sau gresite. XML-ul CIUS-RO foloseste mai multe prefixe de namespace (cbc, cac, etc.) care trebuie declarate corect in root element.
Exemple XML
Mai jos sunt exemple pentru cateva dintre cauzele frecvente.
Caracter special neescapat (incorect):
<!-- INCORECT: caracter special neescapat -->
<cbc:Name>Firma & Fiul SRL</cbc:Name>Caracter special escapat corect:
<!-- CORECT: caracter special escapat -->
<cbc:Name>Firma & Fiul SRL</cbc:Name>Root element gresit (incorect):
<!-- INCORECT: root element cu litere mici -->
<invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">Root element corect:
<!-- CORECT: root element cu prima litera mare -->
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">Namespace URI gresit (incorect):
<!-- INCORECT: namespace URI gresit -->
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:invoice-2">Namespace URI corect:
<!-- CORECT: namespace URI exact -->
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">Cum depanezi pas cu pas
- Valideaza XML-ul impotriva schemei XSD. Descarca schema XSD a CIUS-RO de pe site-ul ANAF sau din depozitul oficial. Foloseste
xmllint --schema cius-ro.xsd factura.xmlpentru a obtine o lista exacta a erorilor de schema. Aceasta este cea mai rapida metoda de diagnosticare. - Verifica encoding-ul. Deschide fisierul intr-un editor de text (Notepad++, VS Code) si verifica encoding-ul afisat in bara de stare. Trebuie sa fie UTF-8 fara BOM. Salveaza explicit cu aceasta setare daca este altfel.
- Cauta caractere speciale in campurile text. Verifica campurile cu denumiri de firme, adrese si descrieri de produse. Cauta
&,<,>neescapate. Unele programe nu escapeaza automat aceste caractere. - Verifica root element-ul si namespace-urile. Primul tag al fisierului XML trebuie sa fie
<Invoicesi trebuie sa contina declaratiile corecte de namespace. Compara cu un exemplu valid din documentatia CIUS-RO. - Verifica fisierul ZIP. Dezarhiveaza manual ZIP-ul trimis si verifica ca contine exact un fisier XML cu numele corect. Asigura-te ca ZIP-ul nu este protejat cu parola.
- Testeaza in mediul sandbox ANAF. Mediul de test de pe anaf.ro returneaza aceleasi erori de validare ca productia, fara consecinte legale. Testeaza acolo inainte de productie.
- Retrimite dupa corectare. Dupa ce ai rezolvat toate erorile de schema, retrimite fisierul.
Rezolva cu Billyou
Billyou genereaza XML pentru CIUS-RO intern, pe baza datelor din factura. Encoding-ul, namespace-urile, root element-ul si escaparea caracterelor sunt gestionate automat. Nu interactionezi niciodata cu XML brut.
Inainte de a trimite catre ANAF, Billyou valideaza XML-ul intern. Erorile de schema sunt detectate si raportate inainte de trimitere, nu dupa.
Mediul sandbox Billyou returneaza aceleasi erori de validare ca mediul de productie ANAF. Poti testa orice scenariu de facturare fara consecinte. Documentatia pentru dezvoltatori este la billyou.ro/dev.
Citeste si articolul despre eroarea de atribut gol, o alta eroare frecventa de structura XML.
Intrebari frecvente
Unde gasesc schema XSD a CIUS-RO pentru validare locala?
Schema XSD este publicata de ANAF pe site-ul oficial si in depozitul CIUS-RO de pe GitHub (github.com/mfin-ro/). Descarca versiunea curenta si foloseste-o cu xmllint sau cu un validator XML din IDE-ul tau.
Cum verific daca fisierul meu XML este UTF-8 fara BOM?
In Notepad++ (Windows), deschide fisierul si mergi la meniu Encoding. Trebuie sa scrie "UTF-8" fara "UTF-8 BOM". In VS Code, encoding-ul este afisat in bara de stare din dreapta jos. Poti schimba si salva de acolo. Pe Linux/macOS, foloseste comanda file factura.xml sau hexdump -C factura.xml | head -1 pentru a verifica daca exista BOM (primii 3 bytes ar fi EF BB BF).
Ce limite de dimensiune are ANAF pentru fisierele XML?
Limitele de dimensiune sunt specificate in documentatia tehnica ANAF si pot fi actualizate. Verifica documentatia curenta pe anaf.ro sau contacteaza helpdesk-ul ANAF pentru valoarea exacta. In general, facturile obisnuite nu ating aceste limite.
Pot trimite XML-ul direct fara ZIP?
Nu. ANAF impune ca XML-ul sa fie trimis intr-un fisier ZIP. Trimiterea XML-ului direct fara arhivare va genera aceasta eroare sau alta eroare de format.