What RO e-Transport is
RO e-Transport is the system through which Romania monitors the road movement of goods. Before a shipment in scope starts, the operation is declared electronically to ANAF: who ships, who receives, what goods, in what quantity and at what value, in which vehicle, on which route, with which loading and unloading points. The system returns a UIT code — a unique identifier for that transport — which has to accompany the goods and be shown on request during a roadside check.
The logic is the same as behind SAF-T and e-Factura. Romania is closing the gap between what is declared for tax purposes and what physically happens, and it is doing it by requiring the data before the event rather than after it. For a foreign company that means one more thing to arrange before goods move, and a hard stop if it is not arranged: an unloaded truck at the border is not a paperwork problem, it is a delivery failure.
Which shipments need a UIT code
Two separate scopes exist, and mixing them up is the usual source of trouble.
| Type of movement | In scope | Conditions |
|---|---|---|
| Domestic movement of high fiscal risk goods | Yes | Vehicle of at least 2.5 tonnes, consignment over 500 kg or over RON 10,000 in value |
| Domestic movement of other goods | No | — |
| Intra-Community arrival into Romania | Yes | Any goods, regardless of category |
| Intra-Community dispatch from Romania | Yes | Any goods, regardless of category |
| Transit through Romania | Yes | Any goods, regardless of category |
| Import and export by road | Yes | Any goods, regardless of category |
The point worth repeating: for international transport the high fiscal risk filter does not apply. If goods cross the Romanian border by road, the movement is declarable whatever it contains. Domestic movements, by contrast, are only caught when the goods are on the risk list and the size thresholds are met.
High fiscal risk goods are defined by ANAF order, by customs nomenclature code. The categories have historically included vegetables and fruit, alcoholic beverages, mineral products, clothing and footwear, and construction materials. Because the list is amended by order, the correct method is to check the tariff codes on the invoice against the version in force on the day of the shipment, rather than relying on a category name.
- 01Before departureThe shipment is declared no more than 3 calendar days before it starts (art. 11 of GEO no. 41/2022).
- 02UITThe code is issuedValid for 5 calendar days, or 15 days for intra-Community acquisitions of goods.
- 03During the transportThe code travels with the goods and is shown at a check, together with the transport document.
- 04If it is missingA fine of RON 10,000–50,000 for individuals and RON 20,000–100,000 for legal entities, plus progressive confiscation of the value of the undeclared goods.
From 1 January 2026 the penalty regime applies in full. Confiscation follows GEO no. 129/2024: the first breach in a 12-month window carries only the fine, then 15%, 50% and 100% of the value of the goods.
The UIT code: timing that leaves no slack
The declaration may be submitted at most three calendar days before the transport starts. The UIT code is valid for five calendar days from the declared start date on domestic transport, and for fifteen calendar days on intra-EU acquisitions and supplies, imports and exports (art. 11 para. (2) GEO 41/2022). Inside that window, the code must be available for the whole journey.
Three practical consequences follow. A code obtained too early expires; a shipment delayed by a few days needs a new declaration. A code obtained after loading, or after departure, does not cure the breach — the requirement is that the code exists before the vehicle moves. And the declared data has to match reality: a change of vehicle, a materially different quantity or a different unloading point requires the declaration to be updated, not ignored.
Where the transport carries several consignments, each one is declared. Where a vehicle is changed mid-route, the transport data is updated under the same UIT code.
Who declares
The obligation follows the commercial interest in the operation rather than the physical possession of the goods:
- the consignor for domestic supplies and for dispatches out of Romania;
- the consignee or beneficiary for arrivals into Romania;
- the importer or exporter for customs operations;
- the warehouse keeper for stock movements between locations of the same taxpayer.
The carrier is not usually the declaring party, but it carries two duties that matter in practice: providing and updating the vehicle data, and having the UIT code available during the journey. A foreign carrier working for a Romanian shipper is therefore exposed to a check even though it did not make the declaration — which is why the code should reach the driver, not sit in an inbox at head office.
Penalties
Moving goods in scope without a valid UIT code, or with declared data that does not match the actual shipment, is a contravention. Under article 13^1 of GEO 41/2022, as amended by GEO 129/2024, the fine is RON 10,000 – 50,000 for individuals and RON 20,000 – 100,000 for legal persons, and confiscation is graduated over the twelve months preceding the breach:
| Breach within 12 months | Sanction |
|---|---|
| First | Fine only |
| Second | Fine plus confiscation of 15% of the value of the undeclared goods |
| Third | Fine plus confiscation of 50% of that value |
| Fourth and onwards | Fine plus confiscation of the full value of the undeclared goods |
The confiscation is measured against the consignment rather than against a fixed amount, which is what makes this obligation different in weight from a missed declaration: a process that does not generate codes reliably produces a repeated breach, and the fourth one costs the goods. The suspension of certain sanctions ran to 31 December 2025; the regime applies in full from 1 January 2026.
An expired code, a code declared for a different vehicle, or quantities that do not match the load are all treated as breaches, not as clerical slips.
How we handle e-Transport, and where UITdesk fits
We built our own generator for this, UITdesk, because the standard route — filling in the declaration form by hand in the Virtual Private Space for every shipment — does not survive contact with real logistics volumes. UITdesk takes the data you already have, from a dispatch note, an invoice or a warehouse export, and produces the declaration without re-keying, then returns the UIT code ready to send to the driver.
Three ways of working, depending on how you are set up:
- We declare for you. You send the shipment data; we file the declaration and return the UIT code, usually within minutes during working hours. Suitable for occasional or seasonal flows.
- You use the tool, we supervise. Your logistics team works directly in UITdesk with our digital certificate behind it. You control the timing, which matters when loading schedules move.
- Connected to your system. For steady volumes we map the export from your ERP or warehouse system once, so the declaration is generated from the dispatch data with no manual step.
In all three cases the declarations are reconciled at period end against your invoices, your RO e-Factura traffic and, where relevant, your Intrastat figures — the same cross-check ANAF is able to run.
Specific situations
Foreign carriers. A carrier established abroad and driving into Romania is subject to the control even where it is not the declaring party. The workable arrangement is contractual: the shipper commits to providing the UIT code before loading, and the carrier verifies its existence and validity at the moment of departure.
Marketplace sellers restocking a Romanian warehouse. A transfer of your own goods from another member state into a Romanian fulfilment centre is an intra-Community arrival, so it is declarable regardless of what the goods are. This runs alongside the VAT treatment covered in the guide to e-commerce VAT in Romania.
Groups moving stock between their own locations. Transfers between warehouses of the same company are caught by the same rules as sales when the goods are on the risk list and the thresholds are met.
Returns and refused deliveries. A return journey is a new transport and needs its own declaration; the original UIT code does not cover the movement back.
The errors we see most often
- Assuming international shipments need to contain risk goods. They do not — any goods crossing the border by road are in scope.
- Declaring too early, so the five day validity expires before loading.
- The code stays at head office instead of reaching the driver, and cannot be shown at a check.
- Vehicle changed after the declaration without updating the transport data.
- Checking category names instead of tariff codes against the current high fiscal risk list.
- Treating internal stock transfers as out of scope because no sale takes place.

