Skip to main content

Address codes

The full grammar lives in the ADAS Address Specification; this page covers what integrators need.

Anatomy

Canonical form: two ISO country letters + 9 or 10 digits, no separators.

KindDigitsStructureDisplay
standard9ZZZZ UUUU CUG-4715-82038
extended10ZZZZ UUUUU CNG-4715-820367
legacy8pre-2026 codesUG-1234-5678
  • Zone (4 digits) — geographic. Nearby zones have nearby numbers.
  • Unit — random within the zone; carries no meaning.
  • Check digitDamm algorithm over the digits. Detects 100% of single-digit errors and adjacent transpositions — the two most common human mistakes.
  • Extended format serves the four highest-population countries (NG, ET, EG, CD); everything else is standard. GET /v1/countries tells you which.

Normalize, then validate — client-side

Codes arrive messy: zm 2992 24388, ZM-2992-24388, zm299224388. Strip all non-alphanumerics, uppercase, then verify the check digit before any network call. Your form can reject a typo while the user is still looking at it.

Reference implementations (Python, TypeScript, Dart) with a shared conformance test-vector file live in the platform repository under packages/.

Display rules

Always exactly two hyphens: country, zone block, rest. Never visually separate the check digit — users must perceive it as part of the code, not an optional suffix.

Legacy codes and aliases

8-digit codes from the pre-2026 ADAS systems resolve through the registry's alias layer — same endpoints, kind: legacy, no offline validation (they carry no check digit). The alias layer is also how identifiers from national addressing systems map onto ADAS canonical codes.