oneapi
Autentificare
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

efactura-cii.xml application/xml · 5,5 KB — se trimite ca atare, în corpul cererii.

Notă de credit în CII

efactura-stornare-cii.xml application/xml · 4,4 KB — se trimite ca atare, în corpul cererii.

Factură corectată, în CII

efactura-corectata-cii.xml application/xml · 5,5 KB — se trimite ca atare, în corpul cererii.

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-data cu câmpul fisier (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ă fisier dă 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 prin e-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"
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422xml_invalidCorpul nu e o factură CII (rădăcina CrossIndustryInvoice lipsește), nu are linii, sau XML invalid.
429cota_depasitaCota 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"
    }
}