oneapi
Autentificare
Anaf v1 / e-Transport

Construiește declarația

Trimiţi transportul în JSON şi primeşti XML-ul RO e-Transport (v2), trecut prin XSD şi prin regulile Schematron. Codurile de operaţiune, scop, vamă şi punct de trecere se verifică pe nomenclatoarele oficiale.

POST
https://oneapi.ro/api/anaf/v1/etransport/build

Corpul cererii

Se trimite ca JSON, în corpul cererii (Content-Type: application/json) — nu în şirul de interogare.

Transport naţional Corpul cererii
{
    "declarant": "990000005",
    "operatiune": "30",
    "ref_declarant": "AVZ-2026-0142",
    "bunuri": [
        {
            "scop": "101",
            "cod_tarifar": "84713000",
            "denumire": "Laptop 14 inch",
            "cantitate": 20,
            "unitate": "H87",
            "greutate_neta": 30,
            "greutate_bruta": 38,
            "valoare": 64000
        }
    ],
    "partener": {
        "tara": "RO",
        "cod": "990000072",
        "denumire": "Exemplu Client SRL"
    },
    "transport": {
        "tara_organizator": "RO",
        "cod_organizator": "990000005",
        "denumire_organizator": "Exemplu Furnizor SRL",
        "data": "2026-09-10",
        "nr_vehicul": "CJ10ABC"
    },
    "loc_start": {
        "locatie": {
            "judet": "12",
            "localitate": "Cluj-Napoca",
            "strada": "Str. Memorandumului",
            "numar": "28",
            "cod_postal": "400114"
        }
    },
    "loc_final": {
        "locatie": {
            "judet": "40",
            "localitate": "Sector 1",
            "strada": "Calea Victoriei",
            "numar": "1",
            "cod_postal": "010071"
        }
    },
    "documente": [
        {
            "tip": "30",
            "numar": "AVZ-2026-0142",
            "data": "2026-09-10"
        }
    ]
}
Livrare intracomunitară, ieşire prin PTF Corpul cererii
{
    "declarant": "990000005",
    "operatiune": "20",
    "ref_declarant": "LIC-2026-0007",
    "bunuri": [
        {
            "scop": "101",
            "cod_tarifar": "84713000",
            "denumire": "Laptop 14 inch",
            "cantitate": 50,
            "unitate": "H87",
            "greutate_neta": 75,
            "greutate_bruta": 95,
            "valoare": 160000
        }
    ],
    "partener": {
        "tara": "DE",
        "cod": "DE999000009",
        "denumire": "Exemplu Client GmbH"
    },
    "transport": {
        "tara_organizator": "RO",
        "cod_organizator": "990000005",
        "denumire_organizator": "Exemplu Furnizor SRL",
        "data": "2026-09-18",
        "nr_vehicul": "CJ10ABC"
    },
    "loc_start": {
        "locatie": {
            "judet": "12",
            "localitate": "Cluj-Napoca",
            "strada": "Str. Memorandumului",
            "numar": "28",
            "cod_postal": "400114"
        }
    },
    "loc_final": {
        "ptf": "1"
    },
    "documente": [
        {
            "tip": "30",
            "numar": "LIC-2026-0007",
            "data": "2026-09-18"
        }
    ]
}
Export către un stat terţ Corpul cererii
{
    "declarant": "990000005",
    "operatiune": "50",
    "ref_declarant": "EXP-2026-0011",
    "bunuri": [
        {
            "scop": "9999",
            "cod_tarifar": "94036010",
            "denumire": "Mobilier din lemn",
            "cantitate": 120,
            "unitate": "H87",
            "greutate_neta": 2400,
            "greutate_bruta": 2650,
            "valoare": 96000
        }
    ],
    "partener": {
        "tara": "RS",
        "cod": "RS100001111",
        "denumire": "Exemplu Partener DOO"
    },
    "transport": {
        "tara_organizator": "RO",
        "cod_organizator": "990000005",
        "denumire_organizator": "Exemplu Furnizor SRL",
        "data": "2026-09-22",
        "nr_vehicul": "TM20XYZ"
    },
    "loc_start": {
        "locatie": {
            "judet": "35",
            "localitate": "Timisoara",
            "strada": "Calea Aradului",
            "numar": "10",
            "cod_postal": "300636"
        }
    },
    "loc_final": {
        "birou_vamal": "22801"
    },
    "documente": [
        {
            "tip": "30",
            "numar": "EXP-2026-0011",
            "data": "2026-09-22"
        }
    ]
}

Parametri de interogare

NumeTipDescriereValori acceptate
validateopțional string Validarea aplicată: local (implicit, XSD + Schematron oficial rulate local) sau none (doar generare). ex. localex. anafex. none
strictopțional boolean true (implicit) întoarce 422 fără XML dacă validarea eșuează; false întoarce XML-ul oricum, cu valid:false și erorile. ex. false
formatopțional text Forma XML-ului: xml (implicit) sau base64. ex. base64

Cum se comportă

  • Primește un JSON de business — declarant, tip operațiune, bunuri (cu cod NC, cantitate, greutate, valoare), partener, transport (vehicul, organizator), locuri de plecare/sosire și documente — și întoarce declarația RO e-Transport ca XML v2 (mfp:anaf:dgti:eTransport:declaratie:v2), gata de depus în SPV.
  • Tipul operațiunii determină restul. Scopurile permise, câmpurile obligatorii și dacă un traseu are locație internă sau punct de frontieră depind de codTipOperatiune (AIC, LIC, TTN, IMP, EXP etc.). Motorul verifică coerența și avertizează unde ceva nu se leagă.
  • validate alege validarea: local (implicit) rulează XSD-ul oficial + Schematron-ul ANAF local; none doar generează XML-ul.
  • Un câmp necunoscut în corp e respins, nu ignorat. um în loc de unitate, valoare_lei în loc de valoare — primești 422 camp_necunoscut cu lista celor acceptate la acel nivel, nu o declarație căreia îi lipsește tăcut valoarea.
  • Fără submitere la SPV. Livrăm XML-ul valid; codul UIT se obține când clientul depune declarația în SPV (pas care cere autentificare — în afara acestui toolkit stateless).
  • Zero retenție. Payload-ul nu se scrie pe disc, nu se loghează și nu intră în chei de cache.

La ce folosește

  • Generarea XML-ului e-Transport dintr-un WMS/ERP, înainte de depunerea în SPV.
  • Validarea unei declarații contra XSD + Schematron oficial, fără a o trimite încă la ANAF.

Structura răspunsului

CâmpTipDescriere
data.valid boolean Rezultatul validării; null la validate=none.
data.standard string Standardul: ETRANSP-v2.
data.xml string XML-ul e-Transport generat; text sau base64 după format.
data.meta object Metadate: namespace, cod_tip_operatiune, nr_bunuri, nr_documente.
data.meta.namespace string
data.meta.cod_tip_operatiune string
data.meta.nr_bunuri integer
data.meta.nr_documente integer
data.errors array Erorile de validare, când strict=false (la strict=true vin în plicul de eroare).
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: {"declarant": "990000005", "operatiune": "30", "ref_declarant": "AVZ-2026-0142", "bunuri": [{"scop": "101", "cod_tarifar": "84713000", "denumire": "Laptop 14 inch", "cantitate": 20, "unitate": "H87", "greutate_neta": 30, "greutate_bruta": 38, "valoare": 64000}], "partener": {"tara": "RO", "cod": "990000072", "denumire": "Exemplu Client SRL"}, "transport": {"tara_organizator": "RO", "cod_organizator": "990000005", "denumire_organizator": "Exemplu Furnizor SRL", "data": "2026-09-10", "nr_vehicul": "CJ10ABC"}, "loc_start": {"locatie": {"judet": "12", "localitate": "Cluj-Napoca", "strada": "Str. Memorandumului", "numar": "28", "cod_postal": "400114"}}, "loc_final": {"locatie": {"judet": "40", "localitate": "Sector 1", "strada": "Calea Victoriei", "numar": "1", "cod_postal": "010071"}}, "documente": [{"tip": "30", "numar": "AVZ-2026-0142", "data": "2026-09-10"}]}

POSThttps://oneapi.ro/api/anaf/v1/etransport/build
{
    "data": {
        "valid": true,
        "standard": "ETRANSP-v2",
        "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<eTransport xmlns=\"mfp:anaf:dgti:eTransport:declaratie:v2\" codDeclarant=\"990000005\" refDeclarant=\"AVZ-2026-0142\">\n  <notificare codTipOperatiune=\"30\">\n    <bunuriTransportate codScopOperatiune=\"101\" codTarifar=\"84713000\" denumireMarfa=\"Laptop 14 inch\" cantitate=\"20.00\" codUnitateMasura=\"H87\" greutateNeta=\"30.00\" greutateBruta=\"38.00\" valoareLeiFaraTva=\"64000.00\"/>\n    <partenerComercial codTara=\"RO\" cod=\"990000072\" denumire=\"Exemplu Client SRL\"/>\n    <dateTransport nrVehicul=\"CJ10ABC\" codTaraOrgTransport=\"RO\" codOrgTransport=\"990000005\" denumireOrgTransport=\"Exemplu Furnizor SRL\" dataTransport=\"2026-09-10\"/>\n    <locStartTraseuRutier>\n      <locatie codJudet=\"12\" denumireLocalitate=\"Cluj-Napoca\" denumireStrada=\"Str. Memorandumului\" numar=\"28\" codPostal=\"400114\"/>\n    </locStartTraseuRutier>\n    <locFinalTraseuRutier>\n      <locatie codJudet=\"40\" denumireLocalitate=\"Sector 1\" denumireStrada=\"Calea Victoriei\" numar=\"1\" codPostal=\"010071\"/>\n    </locFinalTraseuRutier>\n    <documenteTransport tipDocument=\"30\" numarDocument=\"AVZ-2026-0142\" dataDocument=\"2026-09-10\"/>\n  </notificare>\n</eTransport>\n",
        "meta": {
            "namespace": "mfp:anaf:dgti:eTransport:declaratie:v2",
            "cod_tip_operatiune": "30",
            "nr_bunuri": 1,
            "nr_documente": 1
        },
        "errors": [],
        "warnings": []
    },
    "meta": {
        "generat_la": "2026-10-06T23: 59: 43+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_invalidJSON de business invalid (câmp lipsă/greșit) sau — la strict=true — declarație care nu trece validarea. Corpul poartă error + errors[]/warnings[].
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": "JSON de business invalid (câmp lipsă/greșit) sau — la strict=true — declarație care nu trece validarea. Corpul poartă error + errors[]/warnings[].",
        "camp": "validate",
        "request_id": "0199c1f0-6e1a-7c3d-9b2f-4a8e5d1c7b04"
    }
}