Bring structure, visibility, and compliance to your transport operations

Book a demo

Summary

Every road shipment covered by e-Transport needs a UIT code before the truck moves. The code itself is easy. The hard part is the spreadsheet behind it: CN codes, weights and RON values scattered across suppliers, ERP screens and inboxes, copy-pasted by the one person who holds the certificate. Here's how the manual route works step by step, where it breaks, and when generating the UIT straight from the transport order starts paying for itself.

Every road shipment covered by Romania's e-Transport rules needs a UIT code before the truck moves. Getting one is not difficult. A person with a qualified digital certificate logs into the ANAF portal, fills in a declaration, and gets a code back in a couple of minutes.

The question logistics teams are actually asking is a different one. It is whether one person doing that 200 times a month is a sensible way to run an operation, and what happens when they are on holiday, when a supplier sends a CN code that does not match the goods, or when a load changes at the dock at six in the evening.

This piece compares the two routes. Generating UIT codes by hand in the ANAF portal, and generating them from data your systems already hold. It covers what the law asks for, the manual path step by step, where it breaks, and how to tell which approach fits your volume.

TL;DR

  • A UIT code is issued by the RO e-Transport system and identifies the goods in one commercial relationship inside a road transport. It has to reach the carrier before the vehicle moves and be written on the transport document.
  • The obligation sits with the shipper side. Depending on the operation that means the Romanian supplier, the Romanian beneficiary, the import consignee, the export consignor, or the warehouse keeper. The carrier holds and presents the code, and does not create it.
  • You can declare up to 3 calendar days ahead. The code is valid 5 calendar days from the declared start date, and 15 for intra-community acquisitions.
  • Manual generation through the ANAF portal is free and works. The submission is quick. Assembling the data is where the time goes, because CN codes, net and gross weights and RON values usually sit with a supplier or inside an ERP.
  • Automated generation moves code creation to where the transport data already lives, so the declaration becomes a by-product of the transport order.
  • Below roughly 50 declarations a month, manual is usually the right answer. Above that the failure points start compounding.
  • Penalties are live again. The suspension of certain e-Transport sanctions ran out on 31 December 2025, and fines apply from 1 January 2026.

See it on your own flows. Deliwell runs a 45- to 60-minute demo on your actual lanes and partner data, plus a structured 3-week POC on a defined scope. Book a demo.

Manual vs Automated UIT Generation at a Glance

SIDE-BY-SIDE COMPARISON 2026

Manual vs automated UIT generation at a glance

Manual (ANAF portal) ERP export or middleware TMS with native ANAF integrationHow Deliwell works
How the declaration is created A person fills the RO e-Transport form or uploads an XML to SPV A file is generated from the ERP, mapped, then submitted The declaration is built from the transport order already in the system
Where the data comes from Emails, PDFs, phone calls, ERP screens, the supplier ERP master data, plus manual patching for anything the ERP does not hold Order, partner and carrier records held once and reused
Who can do it Named people holding a qualified digital certificate registered in SPV An IT-supported process, usually with one or two owners Any authorised user, under role-based permissions
Effort per code Minutes to submit, longer to gather the data Lower per code, higher to build and maintain the mapping The transport order is the work, the code falls out of it
Multi-line consignments Every product line keyed by hand into the form Depends on what the export covers Bulk import from an Excel template, up to 1,000 lines per UIT
Most common failure point Missing or wrong supplier data, expired code, certificate holder unavailable Mapping drift when ANAF changes a field or a validation rule Bad source data, which is why a validation step before submission matters
Audit trail Whatever the team saved to a shared folder Split between the ERP and the middleware log Full declaration history against the transport, exportable
Cost No licence cost. Certificate cost, plus the time Licence plus integration project plus maintenance Subscription, with compliance updates included
Fits Under ~50 declarations a month, stable goods, one or two people ERP-centric operations with in-house IT capacity 50 to 500 declarations a month across several sites and departments


What Is a UIT Code and Who Has to Generate One?

A UIT code is the unique identifier the RO e-Transport system generates for the goods in one commercial relationship inside a road transport. The system was created by Emergency Ordinance 41/2022 and is run by ANAF together with the Romanian Customs Authority.

Article 8 puts the obligation on the shipper side. For domestic transactions and intra-community deliveries, the Romanian supplier declares. For intra-community acquisitions, the Romanian beneficiary declares. For import and export, the consignee or consignor named in the customs declaration. For intra-community goods in transit that get unloaded and reloaded here, the warehouse keeper. The carrier's job is to hold the code during the journey and present it on request, so a shipper assuming the transporter will take care of it has already missed the obligation.

Two scopes apply. Domestically, the rules cover goods on the high fiscal risk list set by OPANAF 802/2022, where the vehicle has a maximum authorised mass of at least 2.5 tonnes and the consignment exceeds 500 kg or 10,000 RON without VAT. Internationally, since 15 December 2023, all goods moving by road on Romanian territory have to be declared, whether or not they sit on the risk list.

Mixed loads catch people out. Article 12 says that if a vehicle carries both high-risk goods and other goods, everything on board gets declared, not only the risk-listed part.

What Data Do You Need Before You Can Generate a UIT Code?

This is the part that decides whether manual generation is comfortable or painful. The declaration needs the sender and the recipient, the loading and unloading places, the vehicle details and the transport document number, plus a line for every product covering the CN tariff code, the unit of measure, the cargo name, the quantity, the net weight, the gross weight, and the value without VAT in RON.

Very little of that lives in one place. The CN code belongs to the product master. Net and gross weights come from the warehouse or from the supplier's packing list. The RON value depends on the invoice and, for a foreign-currency invoice, on the BNR exchange rate for the right day. On inbound flows the person declaring often holds none of it, because the goods have not arrived and the supplier has not sent the paperwork.

So the honest way to compare the two approaches is to ask where that data comes from, and how many people get chased before somebody can press submit.

How Deliwell handles the supplier side. Rather than emailing a supplier for a packing list and retyping it, Deliwell sends them a collaboration invitation from notifications@deliwell.eu with the subject "eTransport #xxxxx Commercial Data Collaboration Invitation". The supplier clicks Collaborate, accepts the terms and GDPR agreements, then fills in the commercial data directly: currency, with the BNR exchange rate pulled automatically by clicking the arrows next to the Exchange Rate field, then per product the operations purpose, the CN code at 4, 6 or 8 digits, the unit of measure (XPP for piece, XPX for pallet), cargo name, quantity, net weight, gross weight, and value without VAT in RON. Multiple products go in through + Add Product. They click Save and the data is available for UIT issuance. The supplier fills in only what they have, since not every field is mandatory.

That single change removes most of the manual work on inbound flows, because the person who owns the data is the person entering it.

How Do You Generate a UIT Code Manually?

Six steps, assuming you are starting from nothing.

1. Get access. You need a qualified digital certificate issued to a named person and registered in ANAF's Spațiul Privat Virtual against a company right as legal, appointed or authorised representative. The certificate belongs to a human being, which is why access concentrates in one or two people and why holidays turn into a compliance risk.

2. Collect the data. Product lines, weights, values, partner details, loading and unloading addresses, vehicle registration, transport document number. For inbound flows this usually means emailing the supplier and waiting.

3. Build the declaration. Either fill the form directly in the RO e-Transport application, or produce an XML that validates against ANAF's published schema and upload it through SPV. Larger consignments make the form route slow, since every product line goes in by hand.

4. Submit and collect the code. ANAF validates and returns the UIT inside a signed XML. Timing matters. You can declare up to 3 calendar days before the declared start date, and it has to be done before the vehicle presents at the border or is actually set in motion.

5. Get the code onto the transport document. Article 8(2) requires the UIT to reach the road transport operator before movement and to appear on the transport document legibly, with no erasures or additions.

6. Stay inside the window. The code is valid for 5 calendar days from the declared start date, 15 for intra-community acquisitions. Using it after that is prohibited, and data recorded in the system cannot be changed once the vehicle has moved. GEO 129/2024 opened a route to amend recorded data after the code has expired, under conditions, but nothing lets you edit mid-journey.

A seventh step belongs to the carrier. Vehicles have to transmit position data to ANAF throughout a monitored transport. Sanctions for that obligation were suspended twice, most recently to 1 January 2026 by OUG 29/2025, and that suspension has now expired.

Where the automated path diverges. Steps 1 to 4 collapse into the transport order. In Deliwell the order already carries the sender, the recipient, the carrier, the loading and unloading locations and the vehicle, because those were entered when the transport was planned. The declaration is generated from that record and submitted over ANAF's API, so nobody logs into the portal with a personal token and nobody retypes an address that already exists. For consignments with long product lists, Deliwell imports the transported items from an Excel template instead of keying them one by one, and handles up to 1,000 product lines per UIT on every subscription tier. Steps 5 and 6 stay your responsibility either way, though the validity window is tracked against the order rather than in somebody's head.

What Happens When a UIT Declaration Goes Wrong?

Article 13 sets the fine bands. Failing to declare, or declaring quantities different from what is actually on the truck, carries 10,000 to 50,000 RON for individuals and 20,000 to 100,000 RON for legal entities, together with confiscation of the value of the undeclared goods. Breaches such as leaving the code off the transport document, changing declared data after movement, or not declaring the full mixed load carry the same fine bands without the confiscation element. A driver who cannot present the documents faces 5,000 to 10,000 RON.

GEO 129/2024 added a graduated regime for repeat offences and a central register of applied sanctions shared between ANAF, Customs and the Police, so a pattern of small errors now leaves a trace across authorities.

Worth being clear about the state of play. UNTRR, the Romanian road hauliers' union, has documented persistent technical faults in the system, including an unstable GPS API, incorrect UIT association in the mobile application, and data loss during journeys, and asked the Finance Ministry in December 2025 to extend the sanction-free period to 1 July 2026. The extension was not granted. A shipper therefore carries the declaration obligation inside a system its own users describe as unreliable, which raises the value of holding a clean, timestamped record of what you declared and when.

Which Errors Are Worth Designing Out?

Most UIT problems are not exotic. The recurring ones are a wrong or outdated CN code, the wrong unit of measure, a net weight that does not reconcile with the gross, a RON value converted at the wrong day's rate, a code that expired while the truck waited for a slot, and a load that changed after the declaration went in.

Some of those are judgement calls that no system fixes for you. Others are structural, and structure is where automation earns its money.

What the platform catches. In Deliwell, partner records for sender, recipient and carrier are held once and reused, so the same customer address is not retyped forty times a month in three different spellings. The unit of measure is a constrained choice rather than free text. The BNR rate is retrieved for the currency and date instead of being looked up manually. Deliwell collects and validates data from your own systems and from your partners' before it builds the code, and where information arrives as a PDF, an Excel file, an image or a forwarded email, an extraction layer pre-populates the fields and a person confirms them before anything goes to ANAF. The declaration status comes back against the transport order, so a rejection surfaces next to the shipment it belongs to rather than in somebody's inbox.

How Do You Prove What You Declared Six Months Later?

Audits and internal disputes rarely arrive the week of the shipment. They arrive later, and the question is always the same: what was declared for this transport, when, and by whom.

Manually, the answer lives wherever the team decided to save it. That is usually a shared drive, sometimes an inbox, occasionally nowhere.

In Deliwell, the history sits with the transport. From the Delivery section you go to Orders → Sent, open the order with View order, and see the current status plus the full detail. History status gives the status timeline for the order, and clicking the shipment status gives the transport status history underneath it. The e-Transport record travels with that, and the full declaration history exports for ANAF inspections. e-CMR belongs to the same file, generated in-platform, signed by sender, carrier and recipient, and archived alongside the declaration, so a single transport has one complete evidence trail rather than three partial ones.

When Does Manual UIT Generation Still Make Sense?

Often, and it is worth saying plainly. The ANAF modules are free by law under article 7, the portal does the job, and for a company issuing a handful of declarations a month against a stable product list, building an integration would be an odd use of money.

Manual generation holds up when volume is low, the goods are consistent so CN codes rarely change, the flows are mostly outbound where you already own the data, and more than one person holds a certificate. Take away any one of those and the arithmetic starts moving.

The break points are recognisable. Volume climbing past about 50 declarations a month. Inbound flows where suppliers hold the commercial data. Multiple sites declaring separately with no shared partner list. A single certificate holder. And an audit request asking you to reconstruct what was declared for a shipment last March.

Where Deliwell Fits

Deliwell is a road-freight TMS for mid-market European shippers, covering planning, allocation, dispatch, tracking, documents, compliance, invoice validation and KPIs. e-Transport sits inside that rather than beside it, which is the whole point. The UIT comes out of the transport order data you already entered, so nobody opens a second system to declare a shipment they have already planned.

Strengths:

  • Direct ANAF API integration, with UIT codes generated from existing transport order data and real-time validation status against the order.
  • Supplier collaboration for inbound flows, so the party holding the commercial data enters it directly.
  • Excel template import for transported items, and up to 1,000 product lines per UIT on every subscription tier.
  • Extraction from PDFs, Excel files, images and forwarded emails, with a structured human check before submission.
  • Full e-Transport history held against the transport and exportable for inspections.
  • e-CMR generated, signed by all three parties, and archived in the same platform.
  • Compliance updates ship as part of the subscription, so when ANAF changes a field or a validation rule the update arrives without a change request.
  • First transport request inside 30 minutes of account creation, with standard go-live measured in days. ERP integration adds time to that, and any vendor claiming otherwise is selling.

Shortcomings:

  • Under 50 shipments a month, the platform is more than the operation needs.
  • Five or more GPS providers makes integration disproportionately complex.
  • Complex air and sea costing is supported on an all-in basis only, since Deliwell is road-first and handles the road leg and last mile of intermodal flows.
  • Specialised freight such as liquid, gas, petroleum, dairy and live animals is outside scope.

Across its customer base Deliwell reports roughly 30 to 50% less manual work in planning and validation from automated compliance and finance workflows. About 30 mid-market shippers run on the platform today, including Stihl, Sonepar and Frigoglass.

Pricing: Starting at €250/month. Contact Deliwell for a custom pricing proposal tailored to your needs.

Bring one real shipment to the call. Deliwell will walk it through from transport order to UIT to e-CMR on your own data, then scope a 3-week POC measuring declaration time, error rate and compliance rate against your current baseline. Talk to the team.

Which Approach Is Right for Your Operation?

Work it out from volume, data ownership and continuity rather than from a feature list.

Stay manual if you issue fewer than about 50 declarations a month, your goods list is stable, your flows are mostly outbound, and at least two people hold a valid certificate. Put some shared-folder discipline around it so an audit request in eight months does not become an archaeology project.

Look at an ERP or middleware route if nearly all the data you need already exists in one ERP, you have in-house IT capacity to own the mapping, and transport coordination itself is not the bottleneck. The maintenance is real, because ANAF changes fields and validation rules and somebody has to keep pace.

Look at a TMS with native ANAF integration if you are in the 50 to 500 declarations a month range, you have inbound flows where suppliers hold the commercial data, you run more than one site, or your problem is wider than compliance. That last one is the common case. Most teams researching UIT automation are also planning in Excel, chasing status in WhatsApp, and reconciling carrier invoices by hand. Nobody buys a TMS to generate codes. They buy it to stop running the operation across fifteen spreadsheets and a group chat, and the codes come with it.

Not sure which band you are in? Bring your monthly UIT count and your inbound-outbound split to a demo, and Deliwell will tell you plainly whether automation pays for itself at your volume. Book a demo.

FAQ

Who generates the UIT code, the shipper or the carrier?

The shipper side. Article 8(1) of OUG 41/2022 puts the obligation on the Romanian supplier for domestic transactions and intra-community deliveries, the Romanian beneficiary for intra-community acquisitions, the consignee or consignor named in the customs declaration for import and export, and the warehouse keeper for transit goods unloaded in Romania. The carrier holds the code during the journey and presents it on request.

How long is a UIT code valid?

Five calendar days from the declared start date of the transport, and 15 calendar days for intra-community acquisitions and certain intra-community movements. Using a code past its validity is prohibited under article 11(2), and it is one of the breaches that carries a fine.

Can I change a declaration after the truck has left?

No. Article 11(3) prohibits changing recorded data once the vehicle has been set in motion or has presented at the border. GEO 129/2024 introduced a route to modify recorded data after the UIT validity has expired, under specific conditions, but there is no mid-journey edit.

Do I need a UIT code for goods that are not on the high fiscal risk list?

For domestic transport, no. For international transport on Romanian territory, yes. GEO 115/2023 extended the obligation to all goods in international road transport from 15 December 2023, regardless of the risk list. Mixed loads are also caught, so a vehicle carrying listed and non-listed goods together needs everything on board declared.

What does it cost to generate UIT codes manually?

There is no licence fee. Article 7 of OUG 41/2022 requires the state to provide the modules free of charge. The real costs are the qualified digital certificate, the coordinator time spent collecting supplier data, and the exposure of having one or two named people holding the only access.

Are e-Transport fines actually being applied in 2026?

Yes. Sanctions covering vehicle position data transmission and providing the UIT code to drivers were suspended to 31 March 2025 by GEO 129/2024, then to 1 January 2026 by OUG 29/2025. That suspension expired at the end of 2025. Hauliers asked for a further extension to 1 July 2026 and did not get one, so the full regime under article 13 applies. Confirm the current position before relying on this, since the ordinance history here has changed repeatedly.

Can a company outside Romania declare in RO e-Transport?

Yes, where it holds the obligation. A foreign importer or exporter with a Romanian tax or customs obligation can enrol and declare. The duty follows whoever is legally responsible for the transport under article 8, not nationality.

Case studies

Check out what our customers are saying about us!
Sonepar Romania electrical materials distribution warehouse
Sonepar logo

Sonepar Romania centralises transport reporting and cost control with Deliwell

How a 15-location electrical distributor replaced Excel, email, and WhatsApp with one platform — and gained branch-level cost visibility without adding IT complexity.
Melinda S.
Logistics Manager & Stock Controller, Sonepar Romania
Case Study
Inteva Products automotive components manufacturing facility
Inteva Products logo

Inteva gains full transport visibility and eliminates manual work with Deliwell

How Inteva replaced scattered spreadsheets, emails, and WhatsApp threads with one source of truth for every shipment, cost, and invoice.
Adriana H.
PC&L Manager, Inteva Closure
Case Study
Hamilton Central Europe laboratory equipment manufacturing facility
Hamilton logo

Hamilton Central Europe reduced transports costs by 15% by replacing their old TMS with Deliwell

How Hamilton replaced four disconnected tools, went live with UIT compliance in days, and cut shipping workload by 15%.
Roxana C.
Supply Chain Manager - Hamilton Central Europe
Case Study