Valid EU Certificates of Suitability by holder country
Holders of a valid CEP and the number of valid CEPs they hold, by the holder country recorded by EDQM. Recount behind the EU CEP supplier geography report.
Revision 2026-10-23.3, published 23 Oct 2026, 15:33 UTC · SHA-256 e8433a3bc618dc7b8aa43e5e2e63560dc921435dfae567d765e8f58d3806c69d
- Population
- The latest revision of each certificate number in the EDQM Certification Online Database export ingested on 23 Oct 2026, where that revision has status Valid (7,584 of 9,522 certificates). All certificate types are included: 6,997 Chemical, 435 TSE, 88 Chemical and TSE, 64 Herbal; the type columns allow a Chemical-only analysis.
- Method
- Latest revision only (a transferred or renewed CEP keeps its number, and an older revision can remain marked Valid). Grouped by EDQM holder country; holders counted by EDQM's holder string, so one company with several holder entries may count more than once.
- Limitations
- A CEP holder is not necessarily the manufacturer of the substance. The September 2026 edition counted every revision marked valid (7,646 valid CEPs, 1,592 holders).
- Licence
- Derived counts under CC BY 4.0 (credit “PharmaTek Intelligence”). Underlying EDQM data reproduced with permission.
Columns
| Column | Meaning |
|---|---|
| holder_country | ISO country code of the certificate holder as recorded by EDQM |
| holders_with_valid_cep | Distinct holders (EDQM holder string) with at least one valid CEP |
| valid_ceps | Valid certificates held |
| chemical | Of those, Chemical CEPs: the substance's quality can be controlled by its European Pharmacopoeia monograph (from revision 2026-10-23.3) |
| tse | TSE CEPs: compliance with the Ph. Eur. TSE-risk requirements (often animal-derived materials such as gelatin), not a monograph-purity certificate |
| chemical_and_tse | Certificates covering both |
| herbal | Herbal drugs and herbal drug preparations |
| holders_with_valid_chemical_cep | Holders with at least one valid Chemical or Chemical and TSE certificate |
Query used for this release
with latest as ( -- latest revision of each certificate number
select distinct on (base) * from (
select c.*, regexp_replace(regexp_replace(cep_number, '^R[0-9]+-', ''), '\s*-\s*Rev\s*[0-9]+\s*$', '') as base,
coalesce((regexp_match(cep_number, '^R([0-9]+)-'))[1]::int, 0) * 1000
+ coalesce((regexp_match(cep_number, 'Rev\s*([0-9]+)\s*$'))[1]::int, 0) as rk
from core2.cep_certificates c) v
order by base, rk desc, issue_date desc nulls last
)
select coalesce(holder_country, 'unknown') as holder_country,
count(distinct holder_normalized) as holders_with_valid_cep,
count(*) as valid_ceps,
count(*) filter (where cep_type = 'Chemical') as chemical,
count(*) filter (where cep_type = 'TSE') as tse,
count(*) filter (where cep_type = 'Chemical and TSE') as chemical_and_tse,
count(*) filter (where cep_type = 'Herbal') as herbal,
count(distinct holder_normalized) filter (where cep_type in ('Chemical', 'Chemical and TSE')) as holders_with_valid_chemical_cep
from latest
where status = 'Valid'
group by 1
order by holders_with_valid_cep desc, holder_country;Revisions
Every published revision stays downloadable. Cite the revision you used; a later revision supersedes it but does not replace it.
| Revision | Published | Rows | SHA-256 |
|---|---|---|---|
| 2026-10-23.3current | 23 Oct 2026, 15:33 UTC | 53 | e8433a3bc618dc7b… |
| 2026-10-23.2 | 23 Oct 2026, 12:23 UTC | 53 | 6850f4e3f3c2f1b6… |
| 2026-10-23.1 | 23 Oct 2026, 02:35 UTC | 53 | 4a94d5c76801d28f… |
Earlier revisions were published at a dated path that was overwritten when a correction was made; they are restored here from version control, timed by the change that published each one.
Sources
Certification Online Database. European Directorate for the Quality of Medicines & HealthCare (EDQM), Council of Europe, (2026), URL: https://extranet.edqm.eu/publications/recherches_CEP.shtml. Accessed 19 October 2026. Reproduced with permission; the EDQM and the Council of Europe accept no liability for any consequence arising from its use.