Drug Pricing
July 21, 2026
11 minutes

German Drug Pricing Data: A Guide for International Teams

German drug pricing data is article-level, multi-layered and published on a fixed twice-monthly cadence. Every marketed pack has its own eight-digit PZN, a single pack can carry a list price, a Festbetrag, a negotiated reimbursement amount and a confidential rebate-contract price at the same time, and dispensing against wrong data triggers retax, an unpaid claim.

Blog Image
Table of contents
    Summary
    • The PZN identifies one pack, not one product: three pack sizes are three PZNs, and product-level data models cannot express this.
    • There is no single German price. List price, Festbetrag, negotiated Erstattungsbetrag, pharmacy purchase price and confidential rebate-contract prices coexist.
    • Article and price data publishes on the 1st and 15th of the month, so "current" means "as of the active publication window".
    • Retax means a sickness fund refuses to pay an already dispensed prescription. Wrong price data is an unpaid claim, not a reporting error.
    • Never machine-translate dosage forms, reimbursement terms or product names. Keep German source fields and join on codes.
    • A German PZN does not resolve in Austria or Switzerland. Austria uses its own Pharmazentralnummer, Switzerland uses Pharmacode and GTIN.
    • Ask a provider for grain, named price layers, history depth, effective dates, change sets and licence scope before signing.

    German 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.

    The PZN is an article identifier, not a product identifier

    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.

    There is no single national price, there are several simultaneous ones

    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.

    LayerWhat it isThe question it answers
    Manufacturer's price (Herstellerabgabepreis)The price at which the marketing authorisation holder sells into the tradeWhat does the manufacturer realise?
    Pharmacy purchase price (Apothekeneinkaufspreis)The manufacturer's price plus the wholesale marginWhat does a pharmacy pay?
    Pharmacy retail price (Apothekenverkaufspreis)The regulated list price shown in the article masterWhat is the official list price?
    Festbetrag (reference price)A statutory reimbursement ceiling for a group of comparable productsHow much will the sickness fund pay at most?
    Erstattungsbetrag (negotiated reimbursement amount)The amount negotiated under the AMNOG process for new active substancesWhat is the price after benefit assessment?
    Rebate-contract priceA confidential price agreed between a manufacturer and an individual sickness fundWhat 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)

    Data changes on a calendar, not continuously

    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.

    • Your snapshot has a validity date, and you must store it. A price without the window it belonged to is not reproducible and cannot be defended in an audit.
    • Comparisons across time must align windows. Comparing a 3rd-of-the-month extract against a 20th-of-the-month extract compares two different states, and the delta you see is partly an artefact of when you pulled.
    • Some things move faster than the article master. Supply shortage status in particular changes on its own rhythm, so a system that refreshes everything only twice a month will carry stale availability information even when its prices are correct.

    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.

    Retax: why wrong price data is not just a reporting error

    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.

    Language, naming and the specific danger of machine translation

    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.

    1. Dosage forms are a controlled vocabulary, not free text. Terms such as Retardtabletten, Filmtabletten, Hartkapseln or Trockensubstanz map onto standard term lists. A translation engine will produce plausible English prose that no longer joins to anything.
    2. Legal and reimbursement terms are false friends. Festbetrag renders as "fixed amount", which loses the fact that it is a reimbursement ceiling rather than a price. Erstattungsbetrag renders as "reimbursement amount" and is then indistinguishable from Festbetrag in an English-only report, even though the two arise from entirely different procedures.
    3. Product names are legally fixed strings. The authorised name of a medicine is part of its marketing authorisation. Translating it produces a name that does not exist.

    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.

    Cross-border comparison: there is no shared identifier

    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.

    AspectGermanyAustriaSwitzerland
    Article identifierPZN, 8 digits, assigned by IFAIts own Pharmazentralnummer, a separate number spacePharmacode, 7 digits, plus GTIN
    Reference article listingGerman article master dataWarenverzeichnisSpezialitätenliste and the industry article index
    Reimbursement instrumentFestbetrag, Erstattungsbetrag, rebate contractsErstattungskodex with its box systemSpezialitätenliste maximum prices
    EU memberYesYesNo

    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.

    What to ask a data provider before you sign

    The questions below separate a usable German feed from one that will cost you a rebuild. Ask them in writing.

    • What is the grain? One row per PZN per validity period, or something coarser?
    • Which price layers are included? Name them individually. "Prices included" is not an answer.
    • Is there history, and how far back? Price history is required for any trend, tender or adjustment calculation, and history depth is the field most often quietly missing.
    • How are effective dates represented? You need valid-from and valid-to per record, not just a file timestamp.
    • What is the delivery cadence relative to the 1st and 15th? And do you receive the change set or only a full snapshot?
    • Which fields are German-language free text and which are controlled vocabularies? This determines what you can safely join on.
    • Is shortage and availability status included, and on what rhythm? It moves faster than the article master.
    • What does the licence permit? Internal analysis, redistribution to clients and embedding in a commercial product are three different rights.

    Joining German data to an existing international product master

    A pattern that works, in order:

    1. Add an article layer beneath your product layer rather than trying to force PZNs into a product key. One product, many articles.
    2. Anchor cross-country matching on ATC plus active substance plus strength plus form, and treat that composite as a candidate match rather than a certainty.
    3. Normalise pack size to a countable unit so that 3x10 tablets and 30 tablets compare.
    4. Keep every price as a typed field with its own layer name, never as a single generic price column. The moment you flatten them you cannot answer which number you reported.
    5. Store the source window with every record so any figure can be traced back to the publication it came from.
    6. Review the mapping when a package changes, because a new pack size is a new PZN and will otherwise appear as a missing product.

    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.

    Where pharmazie.com fits

    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.

    Author Image
    Ursula Tschorn
    Ursula Tschorn is CEO of DACON Datenbank Consulting GmbH and has been building pharmaceutical information infrastructure since 1989. She writes on drug data standards, pricing regulation and market access in the DACH region.

    FAQ

    What is a PZN and why does it matter for international data models?
    What is a retax and why do German customers care so much about data accuracy?
    Is there a single official drug price in Germany?
    Can I use a German PZN in Austria or Switzerland?
    How often does German drug price data update?
    What should I ask a German drug data provider before signing a contract?
    Since 1989, over 1,000 customers have placed their trust in our data.

    The most comprehensive drug database for pharma professionals.