# Deutsche Post Identcode

> Source: https://docs.barcoder.ai/docs/standards/deutsche-post-identcode
> research date 2026-06-03 · extracted at 2026-10-03
> Publisher: Barcoder — encyclopedia of QR, barcode and payment-code standards

Specifications:
- [Deutsche Post Identcode — BWIPP wiki](https://github.com/bwipp/postscriptbarcode/wiki/Deutsche-Post-Identcode)
- [Identcode (Deutsche Post, DHL) — ActiveBarcode](https://www.activebarcode.com/codes/identcode)
- [Identcode Deutsche Post — IDEAL Software](https://www.idealsoftware.com/manuals/progman/identcodedeutschepost.html)

## Overview

**Deutsche Post Identcode** (German *Identcode*, "identification code") is a numeric barcode used by **Deutsche Post AG** and its logistics division **DHL** to **uniquely identify a postal package and enable Track & Trace from acceptance to delivery** <sup>[2][2], [3][3]</sup>. Like its sibling the **Leitcode**, it is not a separate symbology but an **application of the Interleaved 2 of 5 (ITF) barcode**: the bar/space encoding is standard ITF, but the data layout is fixed and the check digit uses a Deutsche-Post-specific algorithm rather than the ordinary ITF checksum <sup>[1][1], [2][2], [3][3]</sup>.

Where the Leitcode encodes *where a shipment is going* (routing), the Identcode encodes *which shipment it is* (tracking) — a sender identity plus a unique mail-piece number. The two codes are typically printed together and used jointly during automatic distribution in mail centers <sup>[2][2]</sup>. An Identcode carries a fixed **12 digits** (11 data digits plus one check digit) <sup>[1][1], [2][2], [3][3]</sup>.

## History

The Identcode and Leitcode are the two postal applications of Interleaved 2 of 5 adopted by Deutsche Post AG for domestic German freight automation, later carried into the DHL logistics brand <sup>[2][2], [6][6]</sup>. The base ITF symbology was created by David Allais (also the designer of Code 39, Code 93, and Code 11) <sup>[7][7]</sup>. Precise dating of the Identcode's introduction is not established by the sources consulted here; what is documented is its present role as one of "two variations of the Interleaved 2 of 5 (ITF) barcode" Deutsche Post and DHL use — Identcode for fulfilment/identification, Leitcode for routing/destination <sup>[6][6]</sup>.

## Technical specification

**Symbology basis.** The Identcode is "an implementation of the Interleaved 2 of 5 barcode symbology" <sup>[1][1]</sup> / "an application of Code 2 from 5 interleaved" with a modified checksum <sup>[3][3]</sup>. As in all ITF codes, digits are encoded in pairs — the first digit of a pair in five bars, the second in the five interleaved spaces, two of every five elements wide <sup>[7][7]</sup>. ITF requires an even digit count, which the 12-digit Identcode satisfies <sup>[7][7]</sup>.

**Digit layout (12 digits).** <sup>[1][1], [2][2], [3][3]</sup>

| Positions | Field | German term | Example |
|-----------|-------|-------------|---------|
| 1–2 | Departure/originating mail center | Abgangsfrachtpostzentrum | `56` |
| 3–5 | Customer ID | Kundenkennung | `310` |
| 6–11 | Mailing / delivery number | Einlieferungsnummer | `243031` |
| 12 | Check digit | Prüfziffer | `3` |

The customer ID is assigned by Deutsche Post; the allocation scheme trades digits between the customer ID and the mailing number according to volume (a larger customer ID leaves fewer digits for the mailing number, and vice versa) <sup>[3][3]</sup>. The combination of sender identity and unique mailing number is what makes each Identcode unique to one mail piece, enabling tracking <sup>[2][2]</sup>.

**Check digit (Modulo 10, weights 4 and 9).** The Identcode check digit "deviates from the standard 2 of 5 interleaved weighting": instead of the ordinary ITF weights 3 and 1, the 11 data digits are weighted **alternately 4 and 9 beginning from the left**, the products are summed, the sum is reduced modulo 10, and the check digit is the **complement to 10** of that remainder <sup>[3][3], [4][4], [5][5]</sup>. Equivalently, it is the amount needed to **round the weighted sum up to the next multiple of 10**, which naturally yields 0 when the sum is already a multiple of 10 <sup>[5][5]</sup>.

Worked example for data `56310243031` <sup>[3][3]</sup>:

```
Digits:    5  6  3  1  0  2  4  3  0  3  1
Weights:   4  9  4  9  4  9  4  9  4  9  4
Products: 20 54 12  9  0 18 16 27  0 27  4   -> sum = 187
187 mod 10 = 7   ->   check digit = 10 - 7 = 3
Full Identcode: 563102430313
```

This 4/9 weighting is identical to the algorithm used by the Deutsche Post **Leitcode**; the two differ only in data length (11 vs 13 data digits) and field meaning <sup>[3][3], [4][4]</sup>.

**Tracking vs routing.** The Identcode is a *tracking* code: it uniquely identifies one mail piece (sender + mailing number) for Track & Trace from acceptance to delivery. The Leitcode is a *routing* code: it tells the sorting machinery the destination. The two are complementary and used together for automatic distribution <sup>[1][1], [2][2]</sup>.

## Use cases

- **Track & Trace** of postal packages across the Deutsche Post / DHL network, from acceptance to delivery, via the unique sender-plus-mailing-number identifier <sup>[2][2]</sup>.
- **Automatic freight distribution** in mail centers, paired with the Leitcode for routing <sup>[1][1], [2][2]</sup>.
- Supported as a labelling option across commercial reporting/label tools (DevExpress, FastReport, BarTender, Neodynamic, IDEAL, Aspose) for German postal compliance <sup>[3][3]</sup>.

## Implementations

Identcode, like Leitcode, is almost always a **preset** in general barcode libraries that apply the fixed 11+1 digit layout and the 4/9 check digit on top of an Interleaved 2 of 5 engine.

- **[zint/zint](https://github.com/zint/zint)** — C, ~771★, active 2026. Broad encoding library (50+ symbologies) supporting Deutsche Post Identcode and Leitcode [[2][2] context; repo metadata].
- **[woo-j/OkapiBarcode](https://github.com/woo-j/OkapiBarcode)** — Java, ~394★, active 2026. Open-source generator covering 50+ standards including Deutsche Post Identcode/Leitcode.
- **[bwipp/postscriptbarcode](https://github.com/bwipp/postscriptbarcode)** (BWIPP, *Barcode Writer in Pure PostScript*) — PostScript, ~360★, active 2026. Implements Identcode as an ITF application; auto-computes the check digit when 11 digits are supplied, otherwise verifies the supplied check digit <sup>[1][1]</sup>.
- **[rafsalvioni/zeus-barcode-dhl](https://github.com/rafsalvioni/zeus-barcode-dhl)** — PHP, ~1★, active 2025. Object-oriented API for creating/drawing/manipulating barcodes using DHL (Deutsche Post) standards.
- **ActiveBarcode** (commercial) auto-calculates the modulo-10 check digit for Identcode input <sup>[2][2]</sup>; the Perl module **Algorithm::CheckDigits::M10_005** implements the shared Identcode/Leitcode 4/9 check digit <sup>[4][4]</sup>.

## Comparison

**Identcode vs Leitcode.** Both are Deutsche Post ITF applications sharing the identical 4/9 modulo-10 check digit, but they answer different questions <sup>[1][1], [2][2], [3][3]</sup>:

| Property | Identcode | Leitcode |
|----------|-----------|----------|
| Role | Identification / tracking | Routing / destination |
| Total length | 12 digits | 14 digits |
| Data digits | 11 | 13 |
| Field layout | mail center + customer ID + mailing number | PLZ + street + house + product |
| Question answered | *Which item is it?* | *Where is it going?* |

**Both vs plain ITF-14.** All three are Interleaved 2 of 5 codes but diverge on length and checksum <sup>[3][3], [7][7]</sup>:

- **ITF-14** is the GS1 application of ITF carrying a 14-digit GTIN (SCC-14) on shipping cartons, using the **standard mod-10 check digit (weights 3 and 1)** and typically framed by a **bearer bar** <sup>[7][7]</sup>.
- **Identcode** is 12 digits and uses the **Deutsche Post 4/9 check digit**, not the GS1 3/1 check digit, and encodes sender/identification data rather than a GTIN <sup>[3][3]</sup>.
- **Leitcode** is 14 digits with the same 4/9 check digit but carries address-routing data.

Although Leitcode and ITF-14 share the 14-digit length, neither is interchangeable with the Identcode or with each other: the field semantics and check-digit weighting all differ, so a generic ITF reader would mis-validate these postal codes <sup>[3][3], [7][7]</sup>.

## Status

The Identcode is **in active production use** by Deutsche Post / DHL for package identification and Track & Trace, and remains a standard preset across mainstream barcode libraries and commercial label tooling as of 2026 <sup>[1][1], [2][2], [6][6]</sup>. It coexists with 2D codes — Deutsche Post and DHL also make heavy use of Data Matrix for newer applications — but the 1D Identcode/Leitcode pair remains the documented tracking/routing format for the freight network <sup>[6][6]</sup>.

## Sources

[1]: https://github.com/bwipp/postscriptbarcode/wiki/Deutsche-Post-Identcode
[2]: https://www.activebarcode.com/codes/identcode
[3]: https://www.idealsoftware.com/manuals/progman/identcodedeutschepost.html
[4]: https://metacpan.org/pod/Algorithm::CheckDigits::M10_005
[5]: https://www.activebarcode.com/codes/checkdigit/modulo10
[6]: https://scanbot.io/blog/postal-barcodes-and-how-to-read-them/
[7]: https://en.wikipedia.org/wiki/Interleaved_2_of_5
[8]: https://barcodeguide.seagullscientific.com/Content/Symbologies/Identcode.htm

1. [Deutsche Post Identcode — BWIPP wiki](https://github.com/bwipp/postscriptbarcode/wiki/Deutsche-Post-Identcode) — Barcode Writer in Pure PostScript, 2026
2. [Identcode (Deutsche Post, DHL) barcode symbology](https://www.activebarcode.com/codes/identcode) — ActiveBarcode
3. [Identcode Deutsche Post](https://www.idealsoftware.com/manuals/progman/identcodedeutschepost.html) — IDEAL Software Programming Manual
4. [Algorithm::CheckDigits::M10_005 — Deutsche Post Identcode/Leitcode (DE)](https://metacpan.org/pod/Algorithm::CheckDigits::M10_005) — MetaCPAN
5. [Modulo 10 check-digit calculation for barcodes](https://www.activebarcode.com/codes/checkdigit/modulo10) — ActiveBarcode
6. [Postal barcodes and how to read them](https://scanbot.io/blog/postal-barcodes-and-how-to-read-them/) — Scanbot SDK
7. [Interleaved 2 of 5](https://en.wikipedia.org/wiki/Interleaved_2_of_5) — Wikipedia
8. [Deutsche Post Identcode — Barcode Guide](https://barcodeguide.seagullscientific.com/Content/Symbologies/Identcode.htm) — Seagull Scientific (BarTender)

## Deployments

_No country reports mention this standard by name._
