What a UIT code is
A UIT code in Romania is the unique identifier the RO e-Transport system issues for one specific movement of goods. It is not a licence, not a permit and not a document you renew annually. It is generated per journey, before the journey starts, and it ties together the consignment, the vehicle, the route and the time window in which the movement is expected to take place.
The purpose is straightforward. The tax authority wanted a way to see goods moving in real time rather than reading about them in a filing weeks later, so that a lorry crossing the country and an invoice reported later can be compared. From the operator’s side, the effect is that a missing code turns into a roadside problem rather than an accounting problem.
The complete obligation, including the reporting fields and how it fits with the rest of the compliance cycle, is described on our page about RO e-Transport.
When the code is mandatory
There are two separate triggers, and confusing them is the most common reason companies think they are outside the system when they are not.
Domestic movements of high fiscal risk goods. Under GEO 41/2022, the obligation applies when all of the following are present:
- the goods belong to the categories designated as high fiscal risk — broadly vegetables and fruit, alcoholic drinks, mineral products, clothing and footwear, and construction materials, as set out in the applicable ANAF order;
- the vehicle has a maximum authorised mass of at least 2.5 tonnes;
- the consignment exceeds 500 kilograms in total gross weight, or RON 10,000 in total value.
The thresholds are read per consignment and either of the two is enough. A light, expensive load is inside the system just as a heavy, cheap one is.
International transports of goods. Here the logic is different: the obligation applies to movements with a Romanian leg regardless of the type of goods. Intra-Community acquisitions and supplies, imports, exports, transit and movements of a company’s own stock between member states are all covered. A company that never touches the high-risk list can still be squarely inside the system because it buys from a supplier in another member state.
The list of high fiscal risk goods is maintained by order and has been revised more than once. Check the version in force rather than a list saved a year ago, because product categories have been both added and removed.
Deadlines and validity
Three numbers govern the timing.
| Element | Rule |
|---|---|
| Earliest declaration | No more than 3 days before the transport starts |
| Validity of the code | 5 calendar days from the declared start date; 15 days for intra-Community acquisitions of goods |
| Availability during the journey | The code must be presentable at any roadside check |
The five-day validity — fifteen days for intra-Community acquisitions — is where operations most often break down. A code obtained for a Monday departure that slips to the following week has expired, and an expired code is treated like no code at all. Changes to the vehicle, the route or the quantities have to be updated in the system while the transport is still live, not reconstructed afterwards.
The three-day window in the other direction matters for planners: a code cannot be generated far in advance for a movement scheduled next month, so the declaration has to be part of the dispatch process rather than of the sales process.
How to obtain the code
The declaration is made in the RO e-Transport system, accessed through the Virtual Private Space with a qualified digital certificate, and the information required covers the consignor and consignee, the goods with their commodity codes, quantities and values, the vehicle registration and the route with its planned start.
Three practical routes exist:
- Manual entry in the ANAF interface. Workable for a handful of transports a month, unmanageable above that, and the source of most typing errors in commodity codes.
- Direct integration between your ERP or transport management system and the API, which is the right answer for a company with steady volume.
- A generator that sits between the two, taking the data you already hold and producing the declaration without manual retyping.
We built and operate the third option ourselves: UITdesk generates UIT codes from the data in a delivery note or an invoice, so that dispatch does not depend on someone being available to fill in a web form. Where a client wants the process inside its own systems instead, our automation work covers the integration.
Whichever route you choose, the two controls that matter are the same: the commodity codes have to be correct, because they determine whether the high-risk trigger applies at all, and the declared values have to match the commercial documents, because a difference between the two is precisely what a check is looking for.
Penalties
Article 13^1 of GEO 41/2022, as amended by GEO 129/2024, sets the fine at RON 10,000 – 50,000 for individuals and RON 20,000 – 100,000 for legal persons. Confiscation is graduated, counted over the twelve months preceding the breach on a register kept centrally by the anti-fraud directorate:
| 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 application of certain sanctions was suspended repeatedly while operators adapted, most recently until 31 December 2025. From 1 January 2026 the regime applies in full, graduated confiscation included, which removes the last practical reason companies had for treating the obligation as provisional. Consolidated texts are on legislatie.just.ro; operational guidance is published by ANAF.
What repetition costs
A distributor moves building materials on four separate consignments, each worth RON 120,000, without a valid UIT code, all within the same twelve months. Taking the minimum fine of RON 20,000 each time:
- first consignment: RON 20,000
- second: RON 20,000 + 15% of 120,000 = RON 38,000
- third: RON 20,000 + 50% of 120,000 = RON 80,000
- fourth: RON 20,000 + 120,000 = RON 140,000
Total: RON 278,000 on RON 480,000 of goods — from a process gap, not from an intention. That is the shape of the exposure: the sanction attaches to the individual transport, so a process that does not generate codes reliably produces a repeated breach rather than a single one. And because the check happens on the road, the consequence is immediate: the goods are stopped, the delivery is late, and the commercial cost lands on top of the fine.
What to put in place
- Decide once, in writing, who declares. Consignor, beneficiary, importer or exporter, per type of movement, recorded in the contract with your logistics partners.
- Make the code part of dispatch. Not a separate task, not a step someone remembers.
- Build the commodity code mapping into the item master, so the high-risk classification is a property of the product rather than a judgement made per journey.
- Track validity. A short daily check of codes issued against transports actually started catches slipped departures before they expire.
- Keep the evidence. Code, declaration and vehicle data stored with the delivery documents, so that a later question can be answered from the file.
For foreign companies, e-Transport is often the first Romanian obligation that touches operations rather than accounting, and it is frequently discovered late. If you are registered for Romanian VAT and buy or sell goods that physically move here, assume you are in scope and verify the detail, rather than the other way round. The wider set of obligations that follow a Romanian VAT number is mapped in the guide on VAT in Romania for foreign companies.

