EXTERN=DA la e-Factura: ghid complet pentru cumparatori straini
Parametrul EXTERN=DA in API-ul ANAF e-Factura este necesar cand cumparatorul este o firma straina. Afla cand il folosesti, cand nu, si cum se implementeaza corect.
Cand trimiti o factura prin API-ul ANAF e-Factura, URL-ul de upload contine un parametru optional numit extern. Cand il setezi la valoarea DA, ii spui ANAF sa nu valideze CUI-ul cumparatorului impotriva bazei de date nationale. Aceasta setare este necesara pentru orice cumparator care nu este inregistrat fiscal in Romania.
Ce este EXTERN=DA
In mod normal, cand primeste o factura prin API, ANAF verifica daca CUI-ul cumparatorului din XML exista in propriile baze de date. Aceasta validare functioneaza pentru firmele romanesti. Dar o firma din Germania, Franta, Italia sau orice alta tara nu are CUI in registrul ANAF Romania.
Daca trimiti o factura catre o firma straina fara parametrul EXTERN=DA, ANAF incearca sa valideze numarul de inregistrare al cumparatorului, nu il gaseste si returneaza o eroare. Cel mai frecvent este eroarea BR-07, dar pot aparea si alte erori de validare.
Cand adaugi extern=DA la apelul API, ANAF sare peste validarea CUI-ului cumparatorului si accepta factura daca restul structurii XML este corect.
Parametrul se adauga in URL-ul de upload, nu in XML-ul facturii. In XML, trebuie sa te asiguri ca CountryIdentificationCode al cumparatorului este codul ISO corect al tarii respective (DE pentru Germania, FR pentru Franta, etc.), nu RO.
Cand il folosesti si cand nu
Foloseste EXTERN=DA cand:
Cumparatorul este o firma din UE (GmbH, SARL, SPA, Ltd., etc.) fara inregistrare fiscala in Romania. Cumparatorul este o firma din afara UE. Cumparatorul este o entitate diplomatica sau internationala fara CUI romanesc.
Nu folosesti EXTERN=DA cand:
Cumparatorul este o firma romaneasca, indiferent daca are si inregistrari in alte tari. In acest caz trebuie sa folosesti CUI-ul romanesc si sa trimiti fara EXTERN. Cumparatorul este o persoana fizica cu CNP romanesc. In acest caz folosesti conventia celor 13 zerouri in campul CompanyID, fara EXTERN. Nu confunda cele doua situatii.
O greseala frecventa este adaugarea EXTERN=DA pentru firme romanesti cu asociati straini. Nationalitatea asociatilor nu are relevanta. Conteaza unde este inregistrata firma cumparatoare.
Exemple API si XML
Mai jos sunt exemplele de URL de API si de XML pentru cumparatorul strain.
URL API cu EXTERN=DA (cumparator strain):
<!-- Apel API ANAF cu parametrul EXTERN=DA -->
https://api.anaf.ro/prod/FCTEL/rest/upload?standard=UBL&cif=12345678&extern=DAURL API fara EXTERN (cumparator roman):
<!-- Apel API ANAF fara EXTERN, pentru cumparator roman -->
https://api.anaf.ro/prod/FCTEL/rest/upload?standard=UBL&cif=12345678XML pentru cumparator strain (CountryCode DE):
<!-- XML cumparator strain: CountryCode DE, nu RO -->
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PostalAddress>
<cbc:CityName>Berlin</cbc:CityName>
<cac:Country>
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>DE123456789</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>German GmbH</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>Observa ca in CompanyID al cumparatorului strain poti pune numarul de inregistrare fiscal al firmei straine (de exemplu numarul de TVA intracomunitar). ANAF nu il valideaza cand EXTERN=DA este setat.
Cum implementezi corect
- Determina tara cumparatorului. Verifica in datele clientului daca firma este inregistrata in Romania sau in alta tara. Un indiciu rapid: daca CUI-ul incepe cu RO sau este un sir de cifre fara prefix de tara, firma este romana.
- Seteaza CountryIdentificationCode in XML. In sectiunea de adresa a cumparatorului, elementul
cbc:IdentificationCodedincac:Countrytrebuie sa fie codul ISO 3166-1 alpha-2 al tarii (DE, FR, IT, GB, etc.). Nu pune RO pentru firme straine. - Adauga extern=DA la URL-ul de upload. In apelul HTTP catre ANAF, adauga parametrul
extern=DAin URL. Cif-ul din URL este intotdeauna CUI-ul vanzatorului roman, nu al cumparatorului. - Verifica ca CUI-ul vanzatorului este corect. CUI-ul tau (al vanzatorului) trebuie sa fie valid si inregistrat la ANAF. EXTERN=DA scuteste validarea cumparatorului, nu a vanzatorului.
- Testeaza in sandbox. Inainte de a trimite in productie, testeaza in mediul sandbox ANAF sau in sandbox-ul Billyou pentru a confirma ca factura este acceptata.
Automat cu Billyou
Billyou detecteaza automat daca cumparatorul este o firma straina pe baza codului de tara setat in datele clientului. Cand codul de tara nu este RO, Billyou adauga automat parametrul extern=DA la apelul catre ANAF. Nu trebuie sa configurezi nimic suplimentar.
In acelasi timp, Billyou seteaza corect CountryIdentificationCode in XML pe baza tarii clientului. Cele doua aspecte sunt gestionate impreuna, automat.
Pentru dezvoltatori care folosesc Billyou API: seteaza campul buyerCountryCode cu codul ISO al tarii cumparatorului. Daca este diferit de RO, API-ul Billyou gestioneaza automat parametrul EXTERN=DA catre ANAF. Nu trebuie sa trimiti parametrul tu direct.
Citeste si articolul despre eroarea BR-07, care apare frecvent cand EXTERN=DA lipseste la facturile catre firme straine, si articolul despre CUI inexistent in ANAF.
Intrebari frecvente
Pot adauga EXTERN=DA pentru orice factura, chiar si pentru cele catre romani?
Nu este recomandat. EXTERN=DA dezactiveaza validarea CUI-ului cumparatorului. Daca il folosesti pentru firme romanesti, factura ar putea contine un CUI gresit si ANAF nu ar detecta eroarea. Pot aparea probleme la controale fiscale ulterioare. Foloseste EXTERN=DA doar cand cumparatorul este cu adevarat strain.
Ce pun in CompanyID pentru cumparatorul strain?
Poti pune numarul de inregistrare fiscal al firmei straine (echivalentul CUI-ului in tara respectiva) sau numarul de TVA intracomunitar. ANAF nu valideaza acest numar cand EXTERN=DA este setat, dar este bine sa pui un identificator real pentru evidenta proprie si pentru clientul tau.
Functioneaza EXTERN=DA si pentru persoane fizice straine?
Da. Daca emiti o factura catre o persoana fizica din alta tara, folosesti tot EXTERN=DA. Nu folosi conventia celor 13 zerouri (aceea este pentru persoane fizice din Romania). Seteaza tara corecta a cumparatorului in XML.
Unde in URL-ul de API se adauga parametrul EXTERN?
Parametrul se adauga in query string-ul URL-ului de upload ANAF, alaturi de standard=UBL si cif=[CUI_vanzator]. Forma exacta este extern=DA (cu litere mari, desi in practica ANAF accepta si variante cu litere mici). Verifica documentatia tehnica ANAF pentru formatul exact acceptat in momentul integrarii.