FinchContext
Run with

Build a Road Shipment into a RO e-Transport Declaration XML

Skill: Convert a high-fiscal-risk goods shipment into the RO e-Transport XML

Region: Romania (România) Category: Logistics — RO e-Transport (Sistemul RO e-Transport, ANAF SPV) Does: Takes a road shipment of high-fiscal-risk (or international) goods and produces the RO e-Transport declaration XML uploaded to ANAF SPV to obtain the UIT code (codul UIT) that must accompany the transport. Standard: ANAF RO e-Transport schema eTransport (OPANAF 2545/1190 + OUG 41/2022, OUG 115/2023)

This XML is the declaration payload uploaded to ANAF SPV (/eTransport/upload); ANAF validates and returns a sealed response containing the UIT code, valid for a defined window (5 days domestic, longer for international). The UIT must be presented to authorities (ANAF/Vamă) during transport. The declaration is due before the vehicle moves. The AI produces the XML; the user validates and uploads. Verify the current high-fiscal-risk CN/NC code list and weight/value thresholds before use.


When this applies


Conversion procedure

  1. Read the source. Accept a transport order / CMR text (pdftotext), CSV/JSON shipment export, or pasted dispatch data. Parse declaration type, parties, goods lines, vehicle, and route.
  2. Extract fields. Identify: declaration type and operation code; sender (CUI/name/address), recipient (CUI or foreign id/name/address); each goods line (CN/NC code, description, gross/net weight, quantity, value, tariff); vehicle plate(s); transporter CUI; loading and unloading places + dates; estimated transport date. If a CN code, CUI, or vehicle plate is missing, stop and ask — never invent identifiers.
  3. Normalize. Dates → YYYY-MM-DD. CUI → digits (with RO only where the schema's cuiOperator/VAT field requires it). Plates → uppercase, no spaces. County → SIRUTA/ISO RO-XX where required. Amounts → dot decimal, 2 decimals; weights in kg.
  4. Compute. Sum line gross weights and values to the declaration totals; reconcile against any stated total. Validity window = issue date + statutory days.
  5. Emit the declaration. Build per the Document structure section using the worked example. Set the codTipOperatiune and codScopOperatiune.
  6. Validate. Work through the Validation checklist; upload to ANAF SPV and capture the returned UIT.

Source → e-Transport field map

From the source → Target element / field
Declarant CUI eTransport/@codDeclarant
Reference / internal no eTransport/@refDeclarant
Operation type code declaratie/@codTipOperatiune
Operation scope/purpose code declaratie/@codScopOperatiune
Sender CUI + name partiImplicate/expeditor/@cui, @denumire
Sender address (county/locality/street) expeditor/locStart/...
Recipient CUI/foreign id + name partiImplicate/beneficiar/@cui, @denumire
Recipient address beneficiar/locFinal/...
Goods line CN/NC code bunuriTransportate/bun/@codTarifar
Goods description bun/@denumireMarfa
Gross weight (kg) bun/@greutateBruta
Net weight (kg) bun/@greutateNeta
Quantity + unit bun/@cantitate, @codUnitateMasura
Goods value (RON) bun/@valoareLeiFaraTva
Vehicle plate dateTransport/@nrVehicul
Trailer plate dateTransport/@nrRemorca1
Transporter CUI dateTransport/@codTaraOrgTransport, @codOrgTransport
Transport country code dateTransport/@codTaraOrgTransport
Loading place + date locStart/..., dateTransport/@dataTransport
Unloading place locFinal/...

Repeat bun once per goods line.


Document structure

eTransport  (xmlns mfp:anaf:dgti:eTransport:declaratie:v2; @codDeclarant, @refDeclarant)
└── declaratie  (@codTipOperatiune, @codScopOperatiune)
    ├── partiImplicate
    │   ├── expeditor   (@codTara, @cui, @denumire; address attrs)
    │   └── beneficiar  (@codTara, @cui, @denumire; address attrs)
    ├── locStart        (loading: codJudet, codLocalitate, denumireLocalitate, strada, ...)
    ├── locFinal        (unloading: same shape)
    ├── bunuriTransportate
    │   └── bun  (1..n)  (@codScopOperatiune, @codTarifar, @denumireMarfa,
    │                     @cantitate, @codUnitateMasura, @greutateNeta,
    │                     @greutateBruta, @valoareLeiFaraTva)
    └── dateTransport   (@dataTransport, @nrVehicul, @nrRemorca1,
                         @codTaraOrgTransport, @codOrgTransport, @denumireOrgTransport)

declaratie, partiImplicate, bunuriTransportate, and dateTransport are mandatory. locStart/locFinal carry county (codJudet SIRUTA) and locality codes. The returned UIT is not part of the upload — it is issued by ANAF in the response.


Code tables

codTipOperatiune (operation type)

Code Meaning
10 Achiziție intracomunitară (intra-EU acquisition)
12 Operațiuni în sistem lohn — intrare (inward processing in)
14 Stocuri la dispoziția clientului — intrare (call-off stock in)
20 Livrare intracomunitară (intra-EU supply)
22 Operațiuni în sistem lohn — ieșire (processing out)
30 Transport pe teritoriul național (domestic transport)
40 Import
50 Export
60 Tranzacție intracomunitară — tranzit (intra-EU transit)
70 Tranzacție în afara UE — tranzit (non-EU transit)

codScopOperatiune (operation purpose, selected)

Code Meaning
101 Comercializare (sale)
201 Producție (production)
301 Gratuități (free of charge)
401 Aport active (contribution of assets)
501 Bunuri puse la dispoziția clientului (goods at client's disposal)
601 Transfer între gestiuni (transfer between warehouses)
703 Comercializare cu amănuntul (retail)
9999 Altele (other)

codUnitateMasura (UN/ECE units, selected)

Code Meaning
KGM Kilogram
TNE Tonne
LTR Litre
MTQ Cubic metre
NIU Piece / unit (bucată)

codJudet (county, SIRUTA — selected)

Code County
40 București
12 Cluj
22 Iași
35 Timiș
8 Brașov
13 Constanța

Calculation rules


Worked example (end-to-end)

Input — pasted transport order

Declarant CUI: RO12345678
Tip operatiune: transport national (30), scop: comercializare (101)
Expeditor: Exemplu Distributie SRL, CUI RO12345678, Bucuresti
Beneficiar: Client Beta SRL, CUI RO87654321, Cluj-Napoca, jud. Cluj
Marfa: zahar, cod tarifar 1701, cantitate 800 kg, greutate bruta 850 kg,
       greutate neta 800 kg, valoare fara TVA 6.400,00 lei
Vehicul: B123ABC, transportator CUI RO55667788
Data transport: 2026-06-15, incarcare Bucuresti, descarcare Cluj-Napoca

After extraction + normalization (intermediate)

{
  "codDeclarant": "12345678",
  "refDeclarant": "ORD-2026-0015",
  "codTipOperatiune": "30",
  "codScopOperatiune": "101",
  "expeditor": { "cui": "RO12345678", "denumire": "Exemplu Distributie SRL", "judet": "40" },
  "beneficiar": { "cui": "RO87654321", "denumire": "Client Beta SRL", "judet": "12" },
  "bunuri": [ { "codTarifar": "1701", "denumire": "Zahar", "cantitate": 800,
                "um": "KGM", "greutateNeta": 800.00, "greutateBruta": 850.00,
                "valoareLeiFaraTva": 6400.00 } ],
  "transport": { "dataTransport": "2026-06-15", "nrVehicul": "B123ABC",
                 "codTaraOrgTransport": "RO", "codOrgTransport": "55667788" },
  "totals": { "greutateBruta": 850.00, "valoare": 6400.00 }
}

Output — RO e-Transport declaration

<?xml version="1.0" encoding="UTF-8"?>
<eTransport xmlns="mfp:anaf:dgti:eTransport:declaratie:v2" codDeclarant="12345678" refDeclarant="ORD-2026-0015">
  <declaratie codTipOperatiune="30" codScopOperatiune="101">
    <partiImplicate>
      <expeditor codTara="RO" cui="RO12345678" denumire="Exemplu Distributie SRL"/>
      <beneficiar codTara="RO" cui="RO87654321" denumire="Client Beta SRL"/>
    </partiImplicate>
    <locStart>
      <locatie codJudet="40" denumireLocalitate="Bucuresti" strada="Str. Victoriei" numar="10"/>
    </locStart>
    <locFinal>
      <locatie codJudet="12" denumireLocalitate="Cluj-Napoca" strada="Calea Mosilor" numar="5"/>
    </locFinal>
    <bunuriTransportate>
      <bun codScopOperatiune="101" codTarifar="1701" denumireMarfa="Zahar" cantitate="800" codUnitateMasura="KGM" greutateNeta="800.00" greutateBruta="850.00" valoareLeiFaraTva="6400.00"/>
    </bunuriTransportate>
    <dateTransport dataTransport="2026-06-15" nrVehicul="B123ABC" codTaraOrgTransport="RO" codOrgTransport="55667788" denumireOrgTransport="Exemplu Distributie SRL"/>
  </declaratie>
</eTransport>

Normalisations shown: declarant CUI RO1234567812345678 on @codDeclarant (bare digits), RO-prefixed on party @cui; county BucuresticodJudet 40, jud. Cluj12; plate B123ABC uppercased no spaces; quantity unit kg → KGM; value 6.400,006400.00; net 800.00 ≤ gross 850.00 (valid); totals recomputed gross 850.00, value 6400.00. Uploaded to ANAF SPV (/eTransport/upload), which returns the sealed response with the UIT code to carry during transport.


Validation checklist


Last updated: 2026-06-13 — verify the active RO e-Transport schema version, high-fiscal-risk CN/NC list, weight/value thresholds, and UIT validity rules before use.