Description
The Price per Unit Currency Table (PUCT) is a fundamental management data structure defined in 3GPP specifications, most notably in TS 21.905 (Vocabulary for 3GPP Specifications). It is not an active protocol or interface, but a reference table that standardizes the representation of global currencies within the context of 3GPP systems. Its primary role is to provide a unambiguous mapping between a numeric currency code, a currency identifier (like 'USD'), and the associated formatting rules, specifically the number of minor units (e.g., cents) per major unit.
The table is architected as a simple, static reference. Each entry in the PUCT contains key fields: a numeric currency code (e.g., 840 for USD), an alphabetic currency code (e.g., USD, EUR, JPY), the currency's exponent (defining how many decimal places are used), and often the currency's name. The exponent is critical; for example, USD has an exponent of 2, meaning there are 100 minor units (cents) to the major unit (dollar). The Japanese Yen (JPY) has an exponent of 0, as it typically does not use a minor unit in standard transactions. This data is essential for any network function that processes charging information.
PUCT works by being the canonical source that all other 3GPP charging and billing specifications refer to. When a Charging Data Record (CDR) is generated by a network node like a GGSN, PGW, or SMF, it includes a currency code for any monetary fields. The downstream billing system, mediation device, or roaming settlement platform consults the PUCT (or an internal database built from it) to correctly interpret that code. It determines how to format the amount for invoices and how to convert between currencies if necessary. Its role is to eliminate ambiguity, ensuring that a value of '100' in currency code 840 is universally understood as 1.00 US Dollars, not 100 Dollars or 100 Cents. This consistency is vital for automated processing, financial auditing, and interoperability between operators during roaming.
Purpose & Motivation
The PUCT exists to solve a fundamental problem in telecommunications billing: the need for a standardized, machine-readable representation of world currencies. In the early days of mobile networks, especially with the advent of digital roaming in GSM, operators needed to exchange billing records (CDRs) for calls made on visited networks. Without a standard way to denote currency, one operator's '100' could be misinterpreted by another's system, leading to massive billing errors and complex financial disputes.
The creation of the PUCT was motivated by the necessity for global interoperability in charging. Prior to its standardization, operators might have used proprietary codes or different interpretations of international standards like ISO 4217. The 3GPP PUCT provided a single, authoritative table that all 3GPP-compliant network elements and billing systems could use, ensuring consistency across the entire ecosystem. It addressed the limitation of ad-hoc implementations by baking currency definition directly into the network's operational language.
Furthermore, as mobile services evolved to include data, content billing, and eventually IMS services, the need for precise financial transactions only grew. The PUCT provides the foundational data integrity for all monetary values flowing through the network, from real-time charging interactions with the Online Charging System (OCS) to offline billing and inter-operator settlements. Its purpose is to be the immutable reference point that prevents financial chaos in a multi-vendor, multi-operator global network.
Key Features
- Defines numeric and alphabetic codes for global currencies
- Specifies the exponent (decimal places) for each currency
- Provides a standardized reference for all 3GPP charging specifications
- Ensures unambiguous interpretation of monetary values in CDRs
- Essential for accurate roaming billing and financial settlement
- Static table updated periodically to reflect new currencies
Evolution Across Releases
Defining Specifications
| Specification | Title |
|---|---|
| TS 21.905 | 3GPP TS 21.905 |