Anaf v1 / Interop (CII / Factur-X)
CII → UBL
Converteşte o factură CII primită din afară în CIUS-RO (UBL 2.1), reconstruind-o prin acelaşi constructor ca la build — deci ce iese e validabil, nu doar tradus.
POST
https://oneapi.ro/api/anaf/v1/interop/cii-to-ubl
Corpul cererii
Corpul cererii e documentul întreg, trimis brut (Content-Type: application/xml) — nu un obiect cu câmpuri.
Factură în CII
Notă de credit în CII
Factură corectată, în CII
Parametri de interogare
NumeTipDescriereValori acceptate
formatopțional
text
Forma XML-ului întors:
xml (implicit) sau base64.
ex. base64
Cum se comportă
- Documentul se poate trimite şi ca fişier:
multipart/form-datacu câmpulfisier(curl -F fisier=@document.xml), în locul corpului brut. Conţinutul fişierului devine corpul cererii, deci rezultatul e identic; opţiunile rămân în query string, iar alt câmp de formular lângăfisierdă422 camp_necunoscut. - Primește o factură UN/CEFACT CII (rădăcină
CrossIndustryInvoice) și o convertește într-o factură CIUS-RO (UBL 2.1) — folosind exact același motor de emisie ca e-Factura, deci rezultatul respectă regulile CIUS-RO (categorii de TVA derivate, totaluri calculate, nomenclatoare). - Se mapează numărul, datele, părțile, liniile (cu cota și categoria de TVA) și modalitatea de plată; totalurile sunt recalculate de motor din liniile primite.
- Conversia poate întoarce
warnings— mențiuni neblocante (de ex. un județ nerecunoscut) — dar nu validează CIUS-RO. Pentru verdict rulează rezultatul prine-Factura /validate. - Zero retenție: conversia e stateless, in-memory.
La ce folosește
- Preluarea unei facturi CII / Factur-X primite de la un partener european și transformarea ei în e-Factura CIUS-RO.
- Pornirea de la un format european ca să emiți mai departe în România.
Structura răspunsului
CâmpTipDescriere
data.standard
string
Standardul rezultat:
CIUS-RO.
data.schema
string
Namespace-ul rădăcinii UBL.
data.xml
string
XML-ul UBL CIUS-RO generat; text sau base64 după
format.
data.meta
object
Metadate de la motorul de emisie: totaluri și defalcarea TVA pe categorii.
data.meta.customization_id
string
Identificatorul CIUS-RO al specificaţiei aplicate.
data.meta.document_type_code
string
Codul tipului de document (ex.
380 factură, 381 notă de credit).
data.meta.totals.lines_net
integer
data.meta.totals.allowance_total
integer
data.meta.totals.charge_total
integer
data.meta.totals.taxable_base
integer
data.meta.totals.vat
integer
data.meta.totals.gross
integer
data.meta.totals.prepaid
integer
data.meta.totals.rounding
integer
data.meta.totals.payable
integer
data.meta.vat_breakdown[].category
string
data.meta.vat_breakdown[].rate
integer
data.meta.vat_breakdown[].base
integer
data.meta.vat_breakdown[].amount
integer
data.warnings
array
Avertismente neblocante
{cod,mesaj,camp}.
meta.generat_la
string
Momentul la care s-a construit răspunsul (ISO 8601).
Exemple de răspuns
body: @efactura-cii.xml
POSThttps://oneapi.ro/api/anaf/v1/interop/cii-to-ubl
{
"data": {
"standard": "CIUS-RO",
"schema": "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Invoice xmlns=\"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2\" xmlns:cac=\"urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2\" xmlns:cbc=\"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2\">\n <cbc:CustomizationID>urn:cen.eu:en16931: 2017#compliant#urn:efactura.mfinante.ro:CIUS-RO: 1.0.1</cbc:CustomizationID>\n <cbc:ID>FCT-2026-0142</cbc:ID>\n <cbc:IssueDate>2026-09-10</cbc:IssueDate>\n <cbc:DueDate>2026-10-10</cbc:DueDate>\n <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>\n <cbc:DocumentCurrencyCode>RON</cbc:DocumentCurrencyCode>\n <cac:AccountingSupplierParty>\n <cac:Party>\n <cac:PostalAddress>\n <cbc:StreetName>Str. Memorandumului 28</cbc:StreetName>\n <cbc:CityName>Cluj-Napoca</cbc:CityName>\n <cbc:CountrySubentity>RO-CJ</cbc:CountrySubentity>\n <cac:Country>\n <cbc:IdentificationCode>RO</cbc:IdentificationCode>\n </cac:Country>\n </cac:PostalAddress>\n <cac:PartyTaxScheme>\n <cbc:CompanyID>RO990000005</cbc:CompanyID>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:PartyTaxScheme>\n <cac:PartyLegalEntity>\n <cbc:RegistrationName>Exemplu Furnizor SRL</cbc:RegistrationName>\n </cac:PartyLegalEntity>\n </cac:Party>\n </cac:AccountingSupplierParty>\n <cac:AccountingCustomerParty>\n <cac:Party>\n <cac:PostalAddress>\n <cbc:StreetName>Calea Victoriei 1</cbc:StreetName>\n <cbc:CityName>SECTOR1</cbc:CityName>\n <cbc:CountrySubentity>RO-B</cbc:CountrySubentity>\n <cac:Country>\n <cbc:IdentificationCode>RO</cbc:IdentificationCode>\n </cac:Country>\n </cac:PostalAddress>\n <cac:PartyTaxScheme>\n <cbc:CompanyID>RO990000072</cbc:CompanyID>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:PartyTaxScheme>\n <cac:PartyLegalEntity>\n <cbc:RegistrationName>Exemplu Client SRL</cbc:RegistrationName>\n </cac:PartyLegalEntity>\n </cac:Party>\n </cac:AccountingCustomerParty>\n <cac:TaxTotal>\n <cbc:TaxAmount currencyID=\"RON\">147.00</cbc:TaxAmount>\n <cac:TaxSubtotal>\n <cbc:TaxableAmount currencyID=\"RON\">700.00</cbc:TaxableAmount>\n <cbc:TaxAmount currencyID=\"RON\">147.00</cbc:TaxAmount>\n <cac:TaxCategory>\n <cbc:ID>S</cbc:ID>\n <cbc:Percent>21</cbc:Percent>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:TaxCategory>\n </cac:TaxSubtotal>\n </cac:TaxTotal>\n <cac:LegalMonetaryTotal>\n <cbc:LineExtensionAmount currencyID=\"RON\">700.00</cbc:LineExtensionAmount>\n <cbc:TaxExclusiveAmount currencyID=\"RON\">700.00</cbc:TaxExclusiveAmount>\n <cbc:TaxInclusiveAmount currencyID=\"RON\">847.00</cbc:TaxInclusiveAmount>\n <cbc:PayableAmount currencyID=\"RON\">847.00</cbc:PayableAmount>\n </cac:LegalMonetaryTotal>\n <cac:InvoiceLine>\n <cbc:ID>1</cbc:ID>\n <cbc:InvoicedQuantity unitCode=\"H87\">2</cbc:InvoicedQuantity>\n <cbc:LineExtensionAmount currencyID=\"RON\">200.00</cbc:LineExtensionAmount>\n <cac:Item>\n <cbc:Name>Servicii de consultanţă</cbc:Name>\n <cac:ClassifiedTaxCategory>\n <cbc:ID>S</cbc:ID>\n <cbc:Percent>21</cbc:Percent>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:ClassifiedTaxCategory>\n </cac:Item>\n <cac:Price>\n <cbc:PriceAmount currencyID=\"RON\">100.00</cbc:PriceAmount>\n </cac:Price>\n </cac:InvoiceLine>\n <cac:InvoiceLine>\n <cbc:ID>2</cbc:ID>\n <cbc:InvoicedQuantity unitCode=\"H87\">1</cbc:InvoicedQuantity>\n <cbc:LineExtensionAmount currencyID=\"RON\">500.00</cbc:LineExtensionAmount>\n <cac:Item>\n <cbc:Name>Licenţă software anuală</cbc:Name>\n <cac:ClassifiedTaxCategory>\n <cbc:ID>S</cbc:ID>\n <cbc:Percent>21</cbc:Percent>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:ClassifiedTaxCategory>\n </cac:Item>\n <cac:Price>\n <cbc:PriceAmount currencyID=\"RON\">500.00</cbc:PriceAmount>\n </cac:Price>\n </cac:InvoiceLine>\n</Invoice>\n",
"meta": {
"customization_id": "urn:cen.eu:en16931: 2017#compliant#urn:efactura.mfinante.ro:CIUS-RO: 1.0.1",
"document_type_code": "380",
"totals": {
"lines_net": 700,
"allowance_total": 0,
"charge_total": 0,
"taxable_base": 700,
"vat": 147,
"gross": 847,
"prepaid": 0,
"rounding": 0,
"payable": 847
},
"vat_breakdown": [
{
"category": "S",
"rate": 21,
"base": 700,
"amount": 147
}
]
},
"warnings": []
},
"meta": {
"generat_la": "2026-10-06T23: 59: 44+03: 00"
}
}
body: @efactura-stornare-cii.xml
POSThttps://oneapi.ro/api/anaf/v1/interop/cii-to-ubl
{
"data": {
"standard": "CIUS-RO",
"schema": "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CreditNote xmlns=\"urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2\" xmlns:cac=\"urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2\" xmlns:cbc=\"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2\">\n <cbc:CustomizationID>urn:cen.eu:en16931: 2017#compliant#urn:efactura.mfinante.ro:CIUS-RO: 1.0.1</cbc:CustomizationID>\n <cbc:ID>STN-2026-0007</cbc:ID>\n <cbc:IssueDate>2026-09-20</cbc:IssueDate>\n <cbc:CreditNoteTypeCode>381</cbc:CreditNoteTypeCode>\n <cbc:DocumentCurrencyCode>RON</cbc:DocumentCurrencyCode>\n <cac:BillingReference>\n <cac:InvoiceDocumentReference>\n <cbc:ID>FCT-2026-0142</cbc:ID>\n <cbc:IssueDate>2026-09-10</cbc:IssueDate>\n </cac:InvoiceDocumentReference>\n </cac:BillingReference>\n <cac:AccountingSupplierParty>\n <cac:Party>\n <cac:PostalAddress>\n <cbc:StreetName>Str. Memorandumului 28</cbc:StreetName>\n <cbc:CityName>Cluj-Napoca</cbc:CityName>\n <cbc:CountrySubentity>RO-CJ</cbc:CountrySubentity>\n <cac:Country>\n <cbc:IdentificationCode>RO</cbc:IdentificationCode>\n </cac:Country>\n </cac:PostalAddress>\n <cac:PartyTaxScheme>\n <cbc:CompanyID>RO990000005</cbc:CompanyID>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:PartyTaxScheme>\n <cac:PartyLegalEntity>\n <cbc:RegistrationName>Exemplu Furnizor SRL</cbc:RegistrationName>\n </cac:PartyLegalEntity>\n </cac:Party>\n </cac:AccountingSupplierParty>\n <cac:AccountingCustomerParty>\n <cac:Party>\n <cac:PostalAddress>\n <cbc:StreetName>Calea Victoriei 1</cbc:StreetName>\n <cbc:CityName>SECTOR1</cbc:CityName>\n <cbc:CountrySubentity>RO-B</cbc:CountrySubentity>\n <cac:Country>\n <cbc:IdentificationCode>RO</cbc:IdentificationCode>\n </cac:Country>\n </cac:PostalAddress>\n <cac:PartyTaxScheme>\n <cbc:CompanyID>RO990000072</cbc:CompanyID>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:PartyTaxScheme>\n <cac:PartyLegalEntity>\n <cbc:RegistrationName>Exemplu Client SRL</cbc:RegistrationName>\n </cac:PartyLegalEntity>\n </cac:Party>\n </cac:AccountingCustomerParty>\n <cac:TaxTotal>\n <cbc:TaxAmount currencyID=\"RON\">42.00</cbc:TaxAmount>\n <cac:TaxSubtotal>\n <cbc:TaxableAmount currencyID=\"RON\">200.00</cbc:TaxableAmount>\n <cbc:TaxAmount currencyID=\"RON\">42.00</cbc:TaxAmount>\n <cac:TaxCategory>\n <cbc:ID>S</cbc:ID>\n <cbc:Percent>21</cbc:Percent>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:TaxCategory>\n </cac:TaxSubtotal>\n </cac:TaxTotal>\n <cac:LegalMonetaryTotal>\n <cbc:LineExtensionAmount currencyID=\"RON\">200.00</cbc:LineExtensionAmount>\n <cbc:TaxExclusiveAmount currencyID=\"RON\">200.00</cbc:TaxExclusiveAmount>\n <cbc:TaxInclusiveAmount currencyID=\"RON\">242.00</cbc:TaxInclusiveAmount>\n <cbc:PayableAmount currencyID=\"RON\">242.00</cbc:PayableAmount>\n </cac:LegalMonetaryTotal>\n <cac:CreditNoteLine>\n <cbc:ID>1</cbc:ID>\n <cbc:CreditedQuantity unitCode=\"H87\">1</cbc:CreditedQuantity>\n <cbc:LineExtensionAmount currencyID=\"RON\">200.00</cbc:LineExtensionAmount>\n <cac:Item>\n <cbc:Name>Stornare servicii de consultanta</cbc:Name>\n <cac:ClassifiedTaxCategory>\n <cbc:ID>S</cbc:ID>\n <cbc:Percent>21</cbc:Percent>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:ClassifiedTaxCategory>\n </cac:Item>\n <cac:Price>\n <cbc:PriceAmount currencyID=\"RON\">200.00</cbc:PriceAmount>\n </cac:Price>\n </cac:CreditNoteLine>\n</CreditNote>\n",
"meta": {
"customization_id": "urn:cen.eu:en16931: 2017#compliant#urn:efactura.mfinante.ro:CIUS-RO: 1.0.1",
"document_type_code": "381",
"totals": {
"lines_net": 200,
"allowance_total": 0,
"charge_total": 0,
"taxable_base": 200,
"vat": 42,
"gross": 242,
"prepaid": 0,
"rounding": 0,
"payable": 242
},
"vat_breakdown": [
{
"category": "S",
"rate": 21,
"base": 200,
"amount": 42
}
]
},
"warnings": [
{
"cod": "atentie",
"mesaj": "Sumă de plată pozitivă fără „due_date\" și fără „payment_terms\" — ANAF cere una dintre ele (BR-CO-25).",
"camp": "due_date"
}
]
},
"meta": {
"generat_la": "2026-10-06T23: 59: 44+03: 00"
}
}
body: @efactura-corectata-cii.xml
POSThttps://oneapi.ro/api/anaf/v1/interop/cii-to-ubl
{
"data": {
"standard": "CIUS-RO",
"schema": "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Invoice xmlns=\"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2\" xmlns:cac=\"urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2\" xmlns:cbc=\"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2\">\n <cbc:CustomizationID>urn:cen.eu:en16931: 2017#compliant#urn:efactura.mfinante.ro:CIUS-RO: 1.0.1</cbc:CustomizationID>\n <cbc:ID>FCT-2026-0142</cbc:ID>\n <cbc:IssueDate>2026-09-10</cbc:IssueDate>\n <cbc:DueDate>2026-10-10</cbc:DueDate>\n <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>\n <cbc:DocumentCurrencyCode>RON</cbc:DocumentCurrencyCode>\n <cac:AccountingSupplierParty>\n <cac:Party>\n <cac:PostalAddress>\n <cbc:StreetName>Str. Memorandumului 28</cbc:StreetName>\n <cbc:CityName>Cluj-Napoca</cbc:CityName>\n <cbc:CountrySubentity>RO-CJ</cbc:CountrySubentity>\n <cac:Country>\n <cbc:IdentificationCode>RO</cbc:IdentificationCode>\n </cac:Country>\n </cac:PostalAddress>\n <cac:PartyTaxScheme>\n <cbc:CompanyID>RO990000005</cbc:CompanyID>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:PartyTaxScheme>\n <cac:PartyLegalEntity>\n <cbc:RegistrationName>Exemplu Furnizor SRL</cbc:RegistrationName>\n </cac:PartyLegalEntity>\n </cac:Party>\n </cac:AccountingSupplierParty>\n <cac:AccountingCustomerParty>\n <cac:Party>\n <cac:PostalAddress>\n <cbc:StreetName>Calea Victoriei 1</cbc:StreetName>\n <cbc:CityName>SECTOR1</cbc:CityName>\n <cbc:CountrySubentity>RO-B</cbc:CountrySubentity>\n <cac:Country>\n <cbc:IdentificationCode>RO</cbc:IdentificationCode>\n </cac:Country>\n </cac:PostalAddress>\n <cac:PartyTaxScheme>\n <cbc:CompanyID>RO990000072</cbc:CompanyID>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:PartyTaxScheme>\n <cac:PartyLegalEntity>\n <cbc:RegistrationName>Exemplu Client SRL</cbc:RegistrationName>\n </cac:PartyLegalEntity>\n </cac:Party>\n </cac:AccountingCustomerParty>\n <cac:TaxTotal>\n <cbc:TaxAmount currencyID=\"RON\">168.00</cbc:TaxAmount>\n <cac:TaxSubtotal>\n <cbc:TaxableAmount currencyID=\"RON\">800.00</cbc:TaxableAmount>\n <cbc:TaxAmount currencyID=\"RON\">168.00</cbc:TaxAmount>\n <cac:TaxCategory>\n <cbc:ID>S</cbc:ID>\n <cbc:Percent>21</cbc:Percent>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:TaxCategory>\n </cac:TaxSubtotal>\n </cac:TaxTotal>\n <cac:LegalMonetaryTotal>\n <cbc:LineExtensionAmount currencyID=\"RON\">800.00</cbc:LineExtensionAmount>\n <cbc:TaxExclusiveAmount currencyID=\"RON\">800.00</cbc:TaxExclusiveAmount>\n <cbc:TaxInclusiveAmount currencyID=\"RON\">968.00</cbc:TaxInclusiveAmount>\n <cbc:PayableAmount currencyID=\"RON\">968.00</cbc:PayableAmount>\n </cac:LegalMonetaryTotal>\n <cac:InvoiceLine>\n <cbc:ID>1</cbc:ID>\n <cbc:InvoicedQuantity unitCode=\"H87\">3</cbc:InvoicedQuantity>\n <cbc:LineExtensionAmount currencyID=\"RON\">300.00</cbc:LineExtensionAmount>\n <cac:Item>\n <cbc:Name>Servicii de consultanţă</cbc:Name>\n <cac:ClassifiedTaxCategory>\n <cbc:ID>S</cbc:ID>\n <cbc:Percent>21</cbc:Percent>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:ClassifiedTaxCategory>\n </cac:Item>\n <cac:Price>\n <cbc:PriceAmount currencyID=\"RON\">100.00</cbc:PriceAmount>\n </cac:Price>\n </cac:InvoiceLine>\n <cac:InvoiceLine>\n <cbc:ID>2</cbc:ID>\n <cbc:InvoicedQuantity unitCode=\"H87\">1</cbc:InvoicedQuantity>\n <cbc:LineExtensionAmount currencyID=\"RON\">500.00</cbc:LineExtensionAmount>\n <cac:Item>\n <cbc:Name>Licenţă software anuală</cbc:Name>\n <cac:ClassifiedTaxCategory>\n <cbc:ID>S</cbc:ID>\n <cbc:Percent>21</cbc:Percent>\n <cac:TaxScheme>\n <cbc:ID>VAT</cbc:ID>\n </cac:TaxScheme>\n </cac:ClassifiedTaxCategory>\n </cac:Item>\n <cac:Price>\n <cbc:PriceAmount currencyID=\"RON\">500.00</cbc:PriceAmount>\n </cac:Price>\n </cac:InvoiceLine>\n</Invoice>\n",
"meta": {
"customization_id": "urn:cen.eu:en16931: 2017#compliant#urn:efactura.mfinante.ro:CIUS-RO: 1.0.1",
"document_type_code": "380",
"totals": {
"lines_net": 800,
"allowance_total": 0,
"charge_total": 0,
"taxable_base": 800,
"vat": 168,
"gross": 968,
"prepaid": 0,
"rounding": 0,
"payable": 968
},
"vat_breakdown": [
{
"category": "S",
"rate": 21,
"base": 800,
"amount": 168
}
]
},
"warnings": []
},
"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 | Corpul nu e o factură CII (rădăcina CrossIndustryInvoice lipsește), nu are linii, sau XML invalid. |
| 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": "Corpul nu e o factură CII (rădăcina CrossIndustryInvoice lipsește), nu are linii, sau XML invalid.",
"camp": "format",
"request_id": "0199c1f0-6e1a-7c3d-9b2f-4a8e5d1c7b04"
}
}