What Is UNECE Recommendation 20?

UNECE Recommendation 20 (commonly written as UNECE Rec 20 or UN/ECE Rec 20) is a standard published by the United Nations Economic Commission for Europe that defines codes for units of measure used in international trade. It covers physical units — weight, volume, length, time, area — as well as commercial units such as pieces, sets, and containers. The Recommendation is maintained by the UN/CEFACT (United Nations Centre for Trade Facilitation and Electronic Business).

In PINT-AE electronic invoicing, UNECE Rec 20 unit codes are the mandatory format for the invoiced quantity unit (cbc:InvoicedQuantity/@unitCode) on every invoice line. An invoice line that omits the unit code or uses a value not in the UNECE Rec 20 code list will fail ASP schematron validation.

Scope of the Code List

The PINT-AE schematron code list file (UNECERec20.gc) contains 2,162 unit codes. This is a comprehensive set covering everything from standard commercial units (pieces, kilograms, litres, hours) to highly technical engineering and scientific units. In practice, the vast majority of UAE B2B invoices will use a small subset of these codes.

Most Commonly Used Units in UAE Commercial Invoicing

UnitUNECE Rec 20 Code
Piece / each (unit)EA
HourHUR
DayDAY
MonthMON
KilogramKGM
GramGRM
Tonne (metric ton)TNE
LitreLTR
Cubic metreMTQ
Square metreMTK
MetreMTR
SetSET
Lump sum (flat fee)LS
PackPK
BoxBX

The Most Common Error: Services Billed Without a Unit Code

Professional services firms — consultants, law firms, accounting practices, IT service providers — commonly issue invoices with no unit of measure because the billing software does not require one for fee-based engagements. In PINT-AE, the unit code on every invoice line is mandatory. Service invoices billed as a lump sum should use LS (lump sum). Time-based billing should use HUR (hour), DAY (day), or MON (month) as appropriate. Leaving the field blank is a fatal validation error.

Where the Code Appears in PINT-AE XML

The unit code is an XML attribute on the invoiced quantity element at line level: <cbc:InvoicedQuantity unitCode="EA">5</cbc:InvoicedQuantity>. Both the attribute and the quantity value are required. The unit code must exactly match a value in the UNECE Rec 20 code list — it is case-sensitive.

Goods Type and HS Code Relationship

For goods-based invoice lines, the unit code should be consistent with the HS code declared for the item. A line describing a liquid product with an HS code in Chapter 22 (beverages) should not carry a unit code of EA (each) if the transaction is measured by volume — it should carry LTR (litre) or MTQ (cubic metre). Inconsistency between unit codes and commodity classifications can create audit risk even if it does not cause a schematron failure.

ERP Configuration Steps

  • Audit the unit of measure codes currently used in the ERP item master and map each to its UNECE Rec 20 equivalent
  • Ensure service items carry a unit code — typically LS for fixed fees, HUR for hourly rates
  • Confirm the PINT-AE XML output writes the unit code as an attribute of cbc:InvoicedQuantity, not as a separate element
  • Validate the full list of unit codes in use against the UNECERec20.gc code list file before go-live
  • Establish a governance process so new item types added after go-live are assigned a UNECE Rec 20 unit code at creation