# PZN

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

Specifications:
- [Encoding of PZN in Code 39 - IFA GmbH](https://www.ifaffm.de/en/ifa-codingsystem/encoding-pzn-code39.html)
- [PZN - BarTender Barcode Guide](https://barcodeguide.seagullscientific.com/Content/Symbologies/PZN.htm)
- [Pharmazentralnummer (PZN) Prüfziffer](https://kryptografie.de/kryptografie/chiffre/pzn.htm)

## Overview

The **Pharmazentralnummer (PZN)** is the German identification number for the distribution and marking of medicinal products, medical devices and other pharmacy-typical products <sup>[1][1]</sup> <sup>[2][2]</sup>. It is the German tag mandated under § 300 SGB V and affixed to medicine outer packaging per § 131 SGB V <sup>[1][1]</sup>. The PZN is encoded as a variant of **Code 39**, with the number printed in clear text beneath the bars <sup>[1][1]</sup> <sup>[2][2]</sup>. It is maintained by the **Informationsstelle für Arzneispezialitäten (IFA) GmbH** <sup>[1][1]</sup> <sup>[2][2]</sup>.

## History

The PZN is administered by IFA GmbH and published in IFA's "Technische Hinweise zur PZN-Codierung" <sup>[2][2]</sup>. The original seven-digit form (**PZN7** — six digits plus a check digit) was extended to an eight-digit form (**PZN8** — seven digits plus a check digit) effective **1 January 2013**, and from **1 January 2020** PZN7 numbers ceased to be valid, leaving PZN8 as the only form in use <sup>[2][2]</sup> <sup>[5][5]</sup>. Since **9 February 2019** the PZN may also be carried inside a machine-readable Data Matrix Code <sup>[1][1]</sup>.

## Technical specification

- **Encoding.** The PZN is based on **Code 39**; it uses the Code 39 encoding but carries only digits 0–9 <sup>[1][1]</sup> <sup>[5][5]</sup>.
- **Identifier and delimiters.** The Code 39 start character **`*`** in combination with a **minus sign `-`** acts as the PZN identifier; the character `*` alone is the stop character. The last digit is the check digit <sup>[2][2]</sup>.
- **Human-readable prefix.** The clear-text PZN is shown with the prefix **"PZN"** (or "PZN: " / "PZN -"); when Code 39 is omitted, the PZN must appear in clear print with the prefix "PZN: " <sup>[1][1]</sup> <sup>[2][2]</sup> <sup>[5][5]</sup>.
- **Formats.** **PZN7** = 6 data digits + 1 check digit; **PZN8** = 7 data digits + 1 check digit <sup>[6][6]</sup> <sup>[5][5]</sup>.
- **Check digit.** Computed with a **modulo-11** algorithm. For PZN8, the seven data digits are multiplied (left to right) by ascending weights **1, 2, 3, 4, 5, 6, 7**, the products are summed, and the sum is taken modulo 11 <sup>[3][3]</sup>. Worked example for PZN 00078597: (0×1)+(0×2)+(0×3)+(7×4)+(8×5)+(5×6)+(9×7) = 161; 161 mod 11 = 7, matching the trailing check digit <sup>[3][3]</sup>. If the modulo-11 result equals 10, that PZN is not issued <sup>[3][3]</sup>. (For PZN7, sources commonly describe weights 2–7 over the six data digits <sup>[5][5]</sup>.)

## Use cases

The PZN provides machine-readable identification of medicinal-product packs, medical devices and other pharmacy products throughout the German pharmacy and pharmaceutical-wholesale supply chain, supporting ordering, dispensing and reimbursement processing in pharmacies and wholesalers <sup>[1][1]</sup> <sup>[2][2]</sup>. Germany is the country that mandates the PZN, under §§ 300 and 131 SGB V <sup>[1][1]</sup>.

## Implementations

- **Zint** ([github.com/zint/zint](https://github.com/zint/zint)) — C, 771 stars, active 2026. Supports "Pharma Zentralnummer (PZN)" among 50+ symbologies.
- **bwip-js** ([github.com/metafloor/bwip-js](https://github.com/metafloor/bwip-js)) — JavaScript, 2,381 stars, active 2026. JavaScript port of BWIPP including a PZN encoder.
- **BWIPP** ([github.com/bwipp/postscriptbarcode](https://github.com/bwipp/postscriptbarcode)) — PostScript, 499 stars, active 2026. Barcode Writer in Pure PostScript.

## Comparison

PZN and Italy's Code 32 are both **Code 39-based** national pharmaceutical identifiers, but they take opposite approaches to compactness and integrity. PZN encodes its digits directly in Code 39 (no base conversion) and uses a **modulo-11** check digit, with a "PZN"/minus-sign prefix <sup>[1][1]</sup> <sup>[3][3]</sup>. Code 32 first converts a nine-digit AIC number to **base 32** before rendering it in Code 39, uses a **modulo-10** check digit, and shows a leading "A" <sup>[4][4]</sup>. Both are open, registry-backed identifiers (IFA vs. AIFA), in contrast to the Laetus Pharmacode family, which are closed-loop binary print-control codes with no national registry or human-readable digits.

## Fun facts

- The letters "PZN" printed in front of the number are an integral part of the human-readable PZN but are not encoded into the bars and do not need to be entered when generating the symbol <sup>[5][5]</sup>.
- The modulo-11 scheme deliberately leaves a gap: any candidate number whose check calculation yields 10 is simply never issued, so every valid PZN has a single-digit check character <sup>[3][3]</sup>.

## Status

PZN is in active mandatory use in Germany, now exclusively in its eight-digit PZN8 form since PZN7 was retired on 1 January 2020 <sup>[2][2]</sup> <sup>[5][5]</sup>. Alongside the Code 39 symbol, the PZN is also carried in Data Matrix codes (permitted since 9 February 2019) for EU FMD serialization <sup>[1][1]</sup>. PZN encoders remain supported in current tooling including Zint, bwip-js and BWIPP <sup>[2][2]</sup>.

## Sources

[1]: https://www.ifaffm.de/en/ifa-codingsystem/encoding-pzn-code39.html
[2]: https://barcodeguide.seagullscientific.com/Content/Symbologies/PZN.htm
[3]: https://kryptografie.de/kryptografie/chiffre/pzn.htm
[4]: https://barcodeguide.seagullscientific.com/Content/Symbologies/Code_32.htm
[5]: https://www.mobiliodevelopment.com/pzn-german-pharmacy-barcode/
[6]: https://www.neodynamic.com/barcodes/PZN-Barcode.aspx

[1] [Encoding of PZN in Code 39](https://www.ifaffm.de/en/ifa-codingsystem/encoding-pzn-code39.html) — IFA GmbH, accessed 2026
[2] [PZN - BarTender Barcode Guide](https://barcodeguide.seagullscientific.com/Content/Symbologies/PZN.htm) — Seagull Scientific, accessed 2026
[3] [Pharmazentralnummer (PZN) Prüfziffer](https://kryptografie.de/kryptografie/chiffre/pzn.htm) — kryptografie.de, accessed 2026
[4] [Code 32 (Italian Pharmacode) - BarTender Barcode Guide](https://barcodeguide.seagullscientific.com/Content/Symbologies/Code_32.htm) — Seagull Scientific, accessed 2026
[5] [PZN - German Pharmacy Barcode](https://www.mobiliodevelopment.com/pzn-german-pharmacy-barcode/) — Mobilio Development, accessed 2026
[6] [PZN Barcode (Pharma-Zentral-Nummer)](https://www.neodynamic.com/barcodes/PZN-Barcode.aspx) — Neodynamic, accessed 2026

## Deployments

_No country reports mention this standard by name._
