SummaryGerman drug pricing data is article-level, multi-layered and released on a fixed twice-monthly cadence, which means an international team cannot treat it as a simple product-to-price table. Every marketed pack carries its own eight-digit Pharmazentralnummer (PZN), a single pack can carry four or five different legitimate prices depending on who is asking and who is paying, and a price that was correct yesterday may not be the price that gets reimbursed today.
This article is written for the person who does not sit in Germany. You are in London, Boston, Basel or Singapore, you have been handed responsibility for a German data feed or a German market analysis, and you are trying to work out why the data does not behave like the data you already know. The mechanics of how German pharmacy margins are calculated are covered elsewhere. What follows is the practitioner's list of things that surprise foreign teams, in the order they usually cause damage.
This is the single most common modelling failure and it is worth stating flatly: the PZN identifies one sales presentation, not one product. According to IFA GmbH, which assigns the numbers, a PZN uniquely identifies a product by designation, pharmaceutical form, active ingredient strength and pack size, from a specific supplier. Since 1 January 2013 it has been eight digits, with older seven-digit numbers carrying a leading zero.
The practical consequence: one brand available as 20, 50 and 100 tablets is three PZNs. Add a second strength and you have six. Add a parallel-imported version from a different supplier and you have more again, with different numbers, sometimes different prices, and a different marketing authorisation holder in the record.
International product masters are very often modelled one level up, at product or at substance. If your schema has a single row for "Atorvastatin 20mg, Manufacturer X" and a separate pack-size attribute that is descriptive text rather than a key, German data will not load into it cleanly. You will either collapse distinct articles into one row and lose the price differences, or you will explode rows and lose your product-level joins.
Decide this before you procure data, not after. The question to answer internally is: what is the grain of our price table? If the answer is anything other than "one row per marketed pack per validity period", German data will force a schema change.
Foreign teams frequently ask for "the German price" and are surprised that the question does not have one answer. Germany operates several price layers at once, all valid, all in use, and all answering different questions.
| Layer | What it is | The question it answers |
|---|---|---|
| Manufacturer's price (Herstellerabgabepreis) | The price at which the marketing authorisation holder sells into the trade | What does the manufacturer realise? |
| Pharmacy purchase price (Apothekeneinkaufspreis) | The manufacturer's price plus the wholesale margin | What does a pharmacy pay? |
| Pharmacy retail price (Apothekenverkaufspreis) | The regulated list price shown in the article master | What is the official list price? |
| Festbetrag (reference price) | A statutory reimbursement ceiling for a group of comparable products | How much will the sickness fund pay at most? |
| Erstattungsbetrag (negotiated reimbursement amount) | The amount negotiated under the AMNOG process for new active substances | What is the price after benefit assessment? |
| Rebate-contract price | A confidential price agreed between a manufacturer and an individual sickness fund | What does this particular payer actually pay? |
Two of these deserve special attention because they have no clean equivalent in most markets.
The Festbetrag is a reimbursement ceiling, not a price. A product can legally carry a list price above its Festbetrag. The difference is then paid by the patient. So a product with a list price and a Festbetrag has, in effect, two numbers that both matter, and reporting only one of them misstates both the patient burden and the payer cost.
The Erstattungsbetrag arises from the AMNOG procedure. The Federal Joint Committee assesses the added benefit of a new active substance under section 35a SGB V, and a reimbursement amount is then negotiated. The G-BA publishes the benefit assessment decisions, and the GKV-Spitzenverband handles the negotiations. The negotiated amount then becomes the applicable price. If you are building a launch-price benchmark for Germany and you are reading the free-pricing figure from the first months on market, you are reading a number that is about to be replaced.
The rebate-contract layer is the hardest of all, because those prices are confidential. What is knowable from data is which products are under contract with which fund, which is what determines dispensing behaviour. The actual discount is not public. Teams that assume a European-style single published net price will look for a field that does not exist.
"I have to pull all the articles and then use a lookup to check whether one of my PZNs is affected by a price change." (Employee at a pharmaceutical services provider, translated from German)
German article and price data is not a live stream. IFA publishes its information services for pharmacies and wholesalers on the 1st and the 15th of each month, and manufacturers must submit changes ahead of published editorial deadlines to make a given publication date. The IFA editorial calendar sets out those deadlines.
This changes what the word "current" means. In a continuously updated system, current means "as of now". In German article data, current means "as of the active publication window". Three consequences follow.
If your organisation has an existing habit of nightly full refreshes, that habit is not wrong here, but it will mostly move zeroes. What matters is capturing the change events and their effective dates, not the refresh frequency.
This is the concept that most often has no equivalent in a non-German team's mental model, and it is the reason German customers care about data accuracy far more intensely than a foreign colleague may expect.
Retaxation is the refusal by a sickness fund to reimburse a prescription that a pharmacy has already dispensed. In its most severe form, the Nullretaxation, the fund rejects the claim entirely and the full cost of the medicine stays with the pharmacy. Reviews typically happen months after dispensing. Common grounds include breaches of rebate-contract obligations, dispensing the wrong standard pack size, and formal defects on the prescription.
Read that through a data lens. If a pharmacy system holds an out-of-date rebate-contract assignment, or the wrong pack-size classification, the pharmacist dispenses in good faith and discovers half a year later that the claim will not be paid. The error does not surface as a margin variance. It surfaces as an unpaid invoice with no recourse.
For an international vendor or integrator this reframes the requirement. German customers are not asking for accurate data because they like accuracy. They are asking because inaccurate data transfers a financial loss onto them. Service levels, update latency and version traceability are therefore commercial terms in Germany, not technical footnotes.
German pharmaceutical data is German. Product names, dosage form terms (Darreichungsform), package leaflet text and regulatory status fields arrive in German, and several of the most important terms have no reliable one-word English equivalent.
Machine translation is actively dangerous in this domain for three reasons.
The workable pattern is to keep German source fields verbatim as the system of record, add English labels as a presentation layer, and never join on the translated value. Where you need cross-language matching, join on codes: PZN at article level, ATC at substance level.
The instinct after mastering Germany is to extend the same model to Austria and Switzerland, since all three are German-speaking. The language is shared. The data is not.
| Aspect | Germany | Austria | Switzerland |
|---|---|---|---|
| Article identifier | PZN, 8 digits, assigned by IFA | Its own Pharmazentralnummer, a separate number space | Pharmacode, 7 digits, plus GTIN |
| Reference article listing | German article master data | Warenverzeichnis | Spezialitätenliste and the industry article index |
| Reimbursement instrument | Festbetrag, Erstattungsbetrag, rebate contracts | Erstattungskodex with its box system | Spezialitätenliste maximum prices |
| EU member | Yes | Yes | No |
A German PZN means nothing in Austria or Switzerland. The identifiers are structurally similar because they descend from the same 1970s ordering protocols, and that similarity is a trap: an eight-digit German number and a seven-digit Austrian number will both pass a naive numeric validation and will both silently fail to resolve.
The same substance also appears under different brand names, in different pack sizes and under different suppliers per country. There is no public pan-European key that maps an article in one country to the equivalent article in another. Cross-border work therefore requires an explicit mapping layer, usually built on active substance, strength and form, with pack size normalised to a comparable unit. Anyone who tells you it can be done on a single identifier is describing a market that does not exist.
The questions below separate a usable German feed from one that will cost you a rebuild. Ask them in writing.
A pattern that works, in order:
Teams that do this once find that Germany stops being a special case and becomes simply the most granular country in their model. Teams that skip it tend to rediscover the same six problems every quarter.
DACON GmbH has maintained pharmaceutical reference data since 1989, and pharmazie.com brings 25+ databases into a single searchable platform covering more than 50,000 German products and more than 120,000 international products across 50+ countries. For an international team the relevant point is narrow and specific: the layers described above, article master, price history, reimbursement status, supply shortage information and the corresponding data for Austria and Switzerland, are queryable in one place and through one REST interface, rather than assembled from separate national sources with separate contracts and separate update rhythms. For cross-layer and cross-border questions across the DACH region, that consolidation is the point.
This content is intended for healthcare professionals and does not constitute medical advice. Last reviewed: July 2026.
A PZN (Pharmazentralnummer) is an eight-digit number assigned by IFA GmbH that uniquely identifies a single marketed pack by name, pharmaceutical form, strength, pack size and supplier. It is an article identifier, not a product identifier, so one product sold in three pack sizes has three PZNs. Data models built at product or substance level cannot represent German data without adding an article layer beneath the product layer.
Retaxation is the refusal by a statutory sickness fund to reimburse a prescription that a pharmacy has already dispensed, often reviewed months after the event. In a Nullretaxation the claim is rejected entirely and the pharmacy bears the full cost of the medicine. Because outdated rebate-contract or pack-size data can trigger this, inaccurate data in Germany produces an unpaid claim rather than a reporting variance.
No. Germany has several valid prices for the same pack at the same time: the manufacturer's price, the pharmacy purchase price, the regulated pharmacy retail list price, the Festbetrag reimbursement ceiling, the Erstattungsbetrag negotiated under AMNOG for new active substances, and confidential rebate-contract prices agreed between individual manufacturers and individual sickness funds. Which one is "the price" depends entirely on the question being asked.
No. Austria maintains its own Pharmazentralnummer in a separate number space, and Switzerland uses the seven-digit Pharmacode alongside GTIN. The formats are similar enough that a German PZN can pass a naive numeric validation and then silently fail to resolve. Cross-border matching requires an explicit mapping layer built on active substance, strength, pharmaceutical form and normalised pack size.
IFA publishes its information services for pharmacies and wholesalers on the 1st and the 15th of each month, with manufacturers submitting changes ahead of published editorial deadlines. Data therefore moves on a fixed calendar rather than continuously, so every extract must be stored with the publication window it belongs to. Supply shortage information changes on its own faster rhythm.
Ask for the grain of the price table (one row per PZN per validity period is the workable answer), which price layers are included by name, how far price history reaches back, whether records carry valid-from and valid-to dates, whether you receive change sets or only full snapshots, which fields are controlled vocabularies rather than German free text, whether shortage status is included, and what the licence permits in terms of internal use, redistribution and embedding.