Every number on a certificate of analysis is a result against a limit, and every limit has a stated basis
A botanical certificate of analysis (COA), read the way a quality reviewer reads it: the ICH and USP rules behind each contaminant line, and the measurement uncertainty that decides a result near a limit.
The same element can be 3,667 times more restricted by inhalation than by mouth, so a limit is only meaningful with its route
Data table: PDEs by route
| Element | Class | Oral | Parenteral | Inhalation | Oral ÷ inhalation |
|---|---|---|---|---|---|
| Cd | 1 | 5 | 2 | 3 | 2 |
| Pb | 1 | 5 | 5 | 5 | 1 |
| As | 1 | 15 | 15 | 2 | 8 |
| Hg | 1 | 30 | 3 | 1 | 30 |
| Co | 2A | 50 | 5 | 3 | 17 |
| V | 2A | 100 | 10 | 1 | 100 |
| Ni | 2A | 200 | 20 | 6 | 33 |
| Tl | 2B | 8 | 8 | 8 | 1 |
| Au | 2B | 300 | 300 | 3 | 100 |
| Pd | 2B | 100 | 10 | 1 | 100 |
| Ir | 2B | 100 | 10 | 1 | 100 |
| Os | 2B | 100 | 10 | 1 | 100 |
| Rh | 2B | 100 | 10 | 1 | 100 |
| Ru | 2B | 100 | 10 | 1 | 100 |
| Se | 2B | 150 | 80 | 130 | 1 |
| Ag | 2B | 150 | 15 | 7 | 21 |
| Pt | 2B | 100 | 10 | 1 | 100 |
| Li | 3 | 550 | 250 | 25 | 22 |
| Sb | 3 | 1,200 | 90 | 20 | 60 |
| Ba | 3 | 1,400 | 700 | 300 | 5 |
| Mo | 3 | 3,000 | 1,500 | 10 | 300 |
| Cu | 3 | 3,000 | 300 | 30 | 100 |
| Sn | 3 | 6,000 | 600 | 60 | 100 |
| Cr | 3 | 11,000 | 1,100 | 3 | 3,667 |
Chromium is 11,000 µg/day orally but 3 µg/day by inhalation; lead is 5 µg/day by every route.
You will learn
- Which COA lines answer 21 CFR 111.70, and what makes a COA usable under § 111.75.
- How ICH Q3D sets element PDEs and how USP ⟨2232⟩ applies them to supplements.
- How ICH Q3C classes and options set residual-solvent limits.
- How USP ⟨561⟩ sets pesticide limits, including unlisted pesticides.
- Which aflatoxin and ochratoxin A limits apply in the U.S. and the EU.
- How uncertainty and a decision rule change a pass near the limit.
Every line of a COA serves one of three specification categories in 21 CFR 111.70(b)
Text version of the COA anatomy
- Header. The testing laboratory and the original manufacturer, the Latin binomial and plant part, the extract type and solvent, and the lot with manufacture and retest dates.
- Identity serves § 111.70(b)(1). The buyer must still "conduct at least one appropriate test or examination to verify the identity" of each dietary-ingredient lot, § 111.75(a)(1)(i).
- Strength, composition, purity (marker assay, loss on drying, ash) serve § 111.70(b)(2).
- Contaminants serve § 111.70(b)(3): elements (USP ⟨2232⟩, ⟨233⟩), residual solvents (ICH Q3C, USP ⟨467⟩), pesticides (USP ⟨561⟩, EPA tolerances), mycotoxins (USP ⟨561⟩, EU 2023/915) and microbial counts (USP ⟨2021⟩–⟨2023⟩).
- Sign-off. A conformity statement names the decision rule applied (ISO/IEC 17025:2017, 7.8.6.2), and a named person approves the certificate.
Columns: among other conditions, a COA may be relied on if it "includes a description of the test or examination method(s) used, limits of the test or examinations, and actual results" (§ 111.75(a)(2)(ii)(B)).
Text version of the method matrix
- Total elements: ICP-OES (⟨233⟩ Procedure 1) or ICP-MS (Procedure 2).
- Inorganic arsenic: distillation, then ICP-MS (⟨2232⟩), when total arsenic exceeds the limit.
- Methylmercury: HPLC separation with ICP-MS detection at m/z 202 (⟨2232⟩), when total mercury exceeds the methylmercury limit.
- Residual solvents: headspace gas chromatography with flame-ionization detection (⟨467⟩).
- Pesticides: gas chromatography with selective detectors in the ⟨561⟩ text; contract laboratories use GC-MS/MS and LC-MS/MS for most listed pesticides.
- Aflatoxins: thin-layer or high-performance thin-layer chromatography, or HPLC with fluorescence after immunoaffinity clean-up (⟨561⟩).
Related courses: where metals come from (Course 5) · microbial counts and specified organisms (Course 7) · identity tests (Course 3)
Explanation, details and sources
A dietary-supplement manufacturer must set, for each component, an identity specification; specifications for purity, strength and composition; and "limits on those types of contamination that may adulterate" the finished batch (21 CFR 111.70(b)(1)–(3)). A COA reports results against those specifications.
Reliance on a supplier COA also requires a qualified supplier and periodic re-confirmation; the regulatory course on USP, ICH and COA walks through those five conditions and an annotated specimen with red flags. This course goes one level down, to the science behind each contaminant line.
ICH Q3D derives a daily limit for 24 elements from toxicology; the oral limits span more than three orders of magnitude
Worked example, vanadium, oral: 0.12 mg/kg/day × 50 kg1 × 10 × 5 × 1 × 1 = 120 µg/day → 100 µg/day in Table A.2.1
Show data: ICH Q3D(R2) PDEs and Option 1 concentrations for all 24 elements
| Element | Class | Oral PDE, µg/day | Parenteral PDE, µg/day | Inhalation PDE, µg/day | Oral Option 1, µg/g |
|---|---|---|---|---|---|
| Cadmium (Cd) | 1 | 5 | 2 | 3 | 0.5 |
| Lead (Pb) | 1 | 5 | 5 | 5 | 0.5 |
| Arsenic (As) | 1 | 15 | 15 | 2 | 1.5 |
| Mercury (Hg) | 1 | 30 | 3 | 1 | 3 |
| Cobalt (Co) | 2A | 50 | 5 | 3 | 5 |
| Vanadium (V) | 2A | 100 | 10 | 1 | 10 |
| Nickel (Ni) | 2A | 200 | 20 | 6 | 20 |
| Thallium (Tl) | 2B | 8 | 8 | 8 | 0.8 |
| Gold (Au) | 2B | 300 | 300 | 3 | 30 |
| Palladium (Pd) | 2B | 100 | 10 | 1 | 10 |
| Iridium (Ir) | 2B | 100 | 10 | 1 | 10 |
| Osmium (Os) | 2B | 100 | 10 | 1 | 10 |
| Rhodium (Rh) | 2B | 100 | 10 | 1 | 10 |
| Ruthenium (Ru) | 2B | 100 | 10 | 1 | 10 |
| Selenium (Se) | 2B | 150 | 80 | 130 | 15 |
| Silver (Ag) | 2B | 150 | 15 | 7 | 15 |
| Platinum (Pt) | 2B | 100 | 10 | 1 | 10 |
| Lithium (Li) | 3 | 550 | 250 | 25 | 55 |
| Antimony (Sb) | 3 | 1,200 | 90 | 20 | 120 |
| Barium (Ba) | 3 | 1,400 | 700 | 300 | 140 |
| Molybdenum (Mo) | 3 | 3,000 | 1,500 | 10 | 300 |
| Copper (Cu) | 3 | 3,000 | 300 | 30 | 300 |
| Tin (Sn) | 3 | 6,000 | 600 | 60 | 600 |
| Chromium (Cr) | 3 | 11,000 | 1,100 | 3 | 1,100 |
ICH Q3D(R2), Tables A.2.1 and A.2.2 (database.ich.org, read October 23, 2026). Option 1 concentrations assume a maximum daily intake of 10 g.
Scope. Q3D states: "This guideline does not apply to herbal products". USP ⟨232⟩, its drug counterpart, says "Dietary supplements and their ingredients are addressed in" ⟨2232⟩. Q3D is used here as a technical reference for how a PDE becomes a concentration limit, as on USP, ICH and COA.
Explanation, details and sources
Q3D defines the permitted daily exposure (PDE) as "the maximum acceptable intake of elemental impurity in pharmaceutical products per day". It derives each PDE from the no-observed-adverse-effect level (NOAEL) of a key study, scaled to a 50 kg person and divided by modifying factors.
F1 covers species extrapolation (5 for rat), F2 = 10 covers variability between people, F3 study duration, F4 severe toxicity, F5 the absence of a NOEL. Table values are rounded to one or two significant figures, so vanadium's computed 120 µg/day appears as 100.
USP ⟨2232⟩ caps four elements per day; a concentration limit equals that cap at one stated intake
Show data: lead intake at each limit, µg/day
| Daily amount, g/day | USP ⟨561⟩ 5 µg/g | EU 2023/915 3.0 mg/kg | USP ⟨2232⟩ component 0.5 µg/g | USP ⟨2232⟩ PDE | Prop 65 MADL |
|---|---|---|---|---|---|
| 0.5 | 2.5 | 1.5 | 0.25 | 5 | 0.5 |
| 1 | 5 | 3 | 0.5 | 5 | 0.5 |
| 2 | 10 | 6 | 1 | 5 | 0.5 |
| 5 | 25 | 15 | 2.5 | 5 | 0.5 |
| 10 | 50 | 30 | 5 | 5 | 0.5 |
Products of the limits above and the daily amount. The ⟨2232⟩ component option applies to products taken at no more than 10 g/day.
Within the PDE and below the Q3D control threshold.
| Component | g per serving, W | µg/g, C | µg/day |
|---|---|---|---|
| Drug substance | 0 | ||
| Microcrystalline cellulose | 0.11 | ||
| Lactose | 0.045 | ||
| Calcium phosphate | 0.35 | ||
| Crospovidone | 0.0265 | ||
| Magnesium stearate | 0.0175 | ||
| HPMC | 0.006 | ||
| Titanium dioxide | 0.5 | ||
| Iron oxide | 0.15 |
Method, assumptions and limits
- What it calculates
- The daily intake of one element from a multi-component product, its share of the PDE, the common concentration limits under Q3D Options 1 and 2a, and 30% of the PDE (the Q3D control threshold).
- Equations
- Intake (µg/day) = N × Σ Ck Wk. Option 2a limit = PDE / (N × Σ Wk). Option 1 limit = PDE / 10 g.
- Variables and units
- Wk: grams of component k per serving (0–100). Ck: µg/g (= mg/kg = ppm by mass). N: servings per day (1–6). PDE: µg/day from USP ⟨2232⟩ Table 1 or ICH Q3D(R2) Table A.2.1 (oral).
- Assumptions
- Concentrations are the maximum expected in each component. Results below the limit of quantitation are entered as zero, as in Q3D Table A.4.8. Negative or non-numeric entries are treated as zero.
- Valid range
- The ⟨2232⟩ individual component option and Q3D Option 1 assume no more than 10 g/day; the summation option has no such limit.
- What it does not establish
- Compliance with state law (e.g., Proposition 65), food-law limits in other markets, or the adequacy of the analytical method. Q3D does not apply to herbal products; its PDEs are shown for comparison.
- References
- ICH Q3D(R2), Section 7 and Appendix 4 (Tables A.4.1, A.4.5, A.4.8); USP ⟨2232⟩ (USP 38–NF 33 text).
- Verification
- Unit tests reproduce the Q3D Table A.4.8 totals (lead 1.2, vanadium 9.5, nickel 12.5 µg); an independent Python reference checks the page (tests/numerics/ref/academy_coa-science.py).
USP ⟨233⟩ Elemental Impurities—Procedures, Validation (USP 38–NF 33 Second Supplement text). J is the target-limit concentration diluted to the instrument's working range. Wide acceptance windows matter for decision rules.
Explanation, details and sources
USP ⟨2232⟩ sets PDEs for inorganic arsenic (15 µg/day), cadmium (5), lead (5), total mercury (15) and methylmercury (2). Its individual component limits (1.5, 0.5, 0.5, 1.5 and 0.2 µg/g) "are based on a maximum daily intake of 10 g". USP ⟨561⟩ sets separate limits for articles of botanical origin, including lead at 5 µg/g.
⟨2232⟩ offers three routes to compliance: analyze the finished product (result per serving × servings per day), show that every component meets the Table 2 limits, or sum the components. The summation option is the same arithmetic as Q3D Option 2b. A daily-exposure calculator for one measured concentration is on the regulatory page; the tool below handles a multi-component formula.
| Procedure type | Criterion | Requirement |
|---|---|---|
| Limit procedure | Detectability, spike at the target concentration | Within ±15% of the standard (instrumental) |
| Limit procedure | Repeatability, 6 spiked samples | RSD ≤ 20% |
| Quantitative procedure | Accuracy, spikes at 50–150% of J | Mean recovery 70–150% |
| Quantitative procedure | Repeatability, 6 samples | RSD ≤ 20% |
| Quantitative procedure | Intermediate precision, 12 results | RSD ≤ 25% |
ICH Q3C sorts solvents into three classes; a Class 2 limit in ppm is the PDE spread over 10 g of product
Option 1: dose = 10 g/day Option 2: Σ (mass × ppm) / 1000 ≤ PDE
Show data: ICH Q3C(R9) Class 2 PDEs and Option 1 limits
| Solvent | PDE, mg/day | Option 1 limit, ppm |
|---|---|---|
| Acetonitrile | 4.1 | 410 |
| Chlorobenzene | 3.6 | 360 |
| Chloroform | 0.6 | 60 |
| Cumene | 0.7 | 70 |
| Cyclohexane | 38.8 | 3,880 |
| Cyclopentyl methyl ether | 15.0 | 1,500 |
| 1,2-Dichloroethene | 18.7 | 1,870 |
| Dichloromethane | 6.0 | 600 |
| 1,2-Dimethoxyethane | 1.0 | 100 |
| N,N-Dimethylacetamide | 10.9 | 1,090 |
| N,N-Dimethylformamide | 8.8 | 880 |
| 1,4-Dioxane | 3.8 | 380 |
| 2-Ethoxyethanol | 1.6 | 160 |
| Ethylene glycol | 6.2 | 620 |
| Formamide | 2.2 | 220 |
| Hexane | 2.9 | 290 |
| Methanol | 30.0 | 3,000 |
| 2-Methoxyethanol | 0.5 | 50 |
| Methylbutyl ketone | 0.5 | 50 |
| Methylcyclohexane | 11.8 | 1,180 |
| Methylisobutylketone | 45 | 4,500 |
| N-Methylpyrrolidone | 5.3 | 530 |
| Nitromethane | 0.5 | 50 |
| Pyridine | 2.0 | 200 |
| Sulfolane | 1.6 | 160 |
| Tertiary-butyl alcohol | 35 | 3,500 |
| Tetrahydrofuran | 7.2 | 720 |
| Tetralin | 1.0 | 100 |
| Toluene | 8.9 | 890 |
| 1,1,2-Trichloroethene | 0.8 | 80 |
| Xylene | 21.7 | 2,170 |
ICH Q3C(R9), Table 2. Class 1 (Table 1): benzene 2 ppm, carbon tetrachloride 4, 1,2-dichloroethane 5, 1,1-dichloroethene 8, 1,1,1-trichloroethane 1,500. Class 3 (Table 3): 27 solvents, 50 mg/day or 0.5% under Option 1.
Text version of the residual-solvent ladder
- Water, ethanol or water–ethanol extract: USP ⟨565⟩ does not call for ⟨467⟩. Ethanol is a Class 3 solvent, and a buyer may still specify a limit.
- Class 1 solvent used: avoid; if unavoidable, Table 1 limits of 2, 4, 5, 8 and 1,500 ppm.
- Class 2 solvent used: Option 1 (ppm, 10 g/day basis) or Option 2 (sum in mg/day below the PDE).
- All solvents Class 3: up to 50 mg/day (0.5%) without justification; loss on drying may be used if the method is validated.
- Solvent with no adequate toxicological data (Q3C Table 4, e.g., petroleum ether): the residual level must be justified.
Meets Option 2 although two components exceed the Option 1 limit.
| Component | g/day | ppm | mg/day | Option 1 |
|---|---|---|---|---|
| Drug substance | 0.24 | above | ||
| Excipient 1 | 0.36 | meets | ||
| Excipient 2 | 3.04 | above |
Method, assumptions and limits
- What it calculates
- Daily intake of one residual solvent summed over up to three components, the product concentration, and the Q3C Option 1 and Option 2 limits.
- Equations
- ppm = 1000 × PDE / dose (Q3C Equation 1). Option 1 uses dose = 10 g/day. Intake (mg/day) = Σ mk × ppmk / 1000; product ppm = 1000 × intake / Σ mk.
- Variables and units
- m: grams of component per day (0–100). ppm: mg of solvent per kg of component. PDE: mg/day, ICH Q3C(R9) Table 2; Class 3, 50 mg/day; Class 1, Table 1 ppm.
- Assumptions
- No solvent is lost during formulation. Q3C notes that a product failing the summation may be tested, because formulation can reduce the level.
- Valid range
- Option 1 assumes a daily dose of no more than 10 g. Class 1 has no Option 2.
- What it does not establish
- That a solvent was removed "to the practical minimum", which Option 2 also requires, or the validity of the GC method.
- References
- ICH Q3C(R9), Sections 3.3 and 4; USP ⟨467⟩; USP ⟨565⟩.
- Verification
- Reproduces both ICH acetonitrile examples (3.64 mg/day and 728 ppm; 5.08 mg/day and 1,016 ppm); independent Python reference cases.
Explanation, details and sources
Class 1 solvents are to be avoided. Class 2 solvents have PDEs and are to be limited. Class 3 solvents have "low toxic potential"; up to 50 mg/day is acceptable without justification.
Editions matter. The USP 38–NF 33 text of ⟨467⟩ still listed methylisobutylketone in Class 3; ICH moved it to Class 2 (PDE 45 mg/day) in a revision that reached Step 4 in November 2016. A COA should name the edition its limit comes from.
USP ⟨561⟩ lists 70 pesticide limits and gives a formula for the rest; for U.S. food-labeled botanicals, EPA tolerances govern
Text version of the pesticide-limit ladder
- The individual monograph sets a limit: use it.
- The pesticide is in ⟨561⟩ Table 4: use that limit (mg/kg).
- Otherwise, comply with EPA regulations (40 CFR Part 180) or an FDA action level. "For pesticide chemicals without EPA-established tolerance levels or FDA action levels, the residues should be below the detection limit of the specified method."
- Extracts (⟨565⟩): if the plant-to-extract ratio E ≤ 10, Limit = L × E; if E > 10, Limit = AM/(100B), with B the daily dose of the extract.
- Not listed and no EPA regulation: Limit (mg/kg) = AM/(100B), with A the FAO-WHO acceptable daily intake (mg/kg body weight), M = 60 kg and B the daily dose of the article in kg.
Show data: all 70 entries of USP ⟨561⟩ Table 4, mg/kg
| Substance | Limit, mg/kg |
|---|---|
| Acephate | 0.1 |
| Alachlor | 0.05 |
| Aldrin and dieldrin (sum of) | 0.05 |
| Azinphos-ethyl | 0.1 |
| Azinphos-methyl | 1 |
| Bromide, inorganic (as bromide ion) | 125 |
| Bromophos-ethyl | 0.05 |
| Bromophos-methyl | 0.05 |
| Bromopropylate | 3 |
| Chlordane (sum of cis-, trans- and oxychlordane) | 0.05 |
| Chlorfenvinphos | 0.5 |
| Chlorpyriphos-ethyl | 0.2 |
| Chlorpyriphos-methyl | 0.1 |
| Chlorthal-dimethyl | 0.01 |
| Cyfluthrin (sum of) | 0.1 |
| λ-Cyhalothrin | 1 |
| Cypermethrin and isomers (sum of) | 1 |
| DDT (sum of o,p′- and p,p′-DDE, -DDT and -TDE) | 1 |
| Deltamethrin | 0.5 |
| Diazinon | 0.5 |
| Dichlofluanid | 0.1 |
| Dichlorvos | 1 |
| Dicofol | 0.5 |
| Dimethoate and omethoate (sum of) | 0.1 |
| Dithiocarbamates (as CS₂) | 2 |
| Endosulfan (sum of isomers and endosulfan sulphate) | 3 |
| Endrin | 0.05 |
| Ethion | 2 |
| Etrimphos | 0.05 |
| Fenchlorophos (sum with fenchlorophos-oxon) | 0.1 |
| Fenitrothion | 0.5 |
| Fenpropathrin | 0.03 |
| Fensulfothion (sum with oxon and sulfones) | 0.05 |
| Fenthion (sum with oxon, sulfones and sulfoxides) | 0.05 |
| Fenvalerate | 1.5 |
| Flucythrinate | 0.05 |
| τ-Fluvalinate | 0.05 |
| Fonophos | 0.05 |
| Heptachlor (sum with cis- and trans-heptachlorepoxide) | 0.05 |
| Hexachlorbenzene | 0.1 |
| Hexachlorocyclohexane (sum of isomers) | 0.3 |
| Lindane (γ-hexachlorocyclohexane) | 0.6 |
| Malathion and malaoxon (sum of) | 1 |
| Mecarbam | 0.05 |
| Methacriphos | 0.05 |
| Methamidophos | 0.05 |
| Methidathion | 0.2 |
| Methoxychlor | 0.05 |
| Mirex | 0.01 |
| Monocrotophos | 0.1 |
| Parathion-ethyl and paraoxon-ethyl (sum of) | 0.5 |
| Parathion-methyl and paraoxon-methyl (sum of) | 0.2 |
| Pendimethalin | 0.1 |
| Pentachloranisole | 0.01 |
| Permethrin and isomers (sum of) | 1 |
| Phosalone | 0.1 |
| Phosmet | 0.05 |
| Piperonyl butoxide | 3 |
| Pirimiphos-ethyl | 0.05 |
| Pirimiphos-methyl (sum with N-desethyl-pirimiphos-methyl) | 4 |
| Procymidone | 0.1 |
| Profenophos | 0.1 |
| Prothiophos | 0.05 |
| Pyrethrum (sum of six pyrethrins) | 3 |
| Quinalphos | 0.05 |
| Quintozene (sum with pentachloraniline and methyl pentachlorphenyl sulfide) | 1 |
| S-421 | 0.02 |
| Tecnazene | 0.05 |
| Tetradifon | 0.3 |
| Vinclozolin | 0.4 |
USP ⟨561⟩ Table 4, USP 38–NF 33 Second Supplement text (as mirrored by drugfuture.com; Greek letters restored from the substance names). A revision of ⟨561⟩ appeared for comment in Pharmacopeial Forum 51(4); confirm values against the official USP–NF.
Unlisted pesticide in a plant article.
Method, assumptions and limits
- What it calculates
- A residue limit for a pesticide that is not in ⟨561⟩ Table 4 or EPA regulations, the residue intake that limit allows, and its share of the ADI for a 60 kg adult.
- Equations
- ⟨561⟩: Limit = AM/(100B); preparations: AME/(100B). ⟨565⟩ extracts: E ≤ 10, Limit = L × E; E > 10, Limit = AM/(100B). Intake (µg/day) = Limit (mg/kg) × daily dose (g).
- Variables and units
- A: ADI, mg/kg body weight (0.0001–1). M: 60 kg (fixed by USP). B: daily dose, kg (entered in g, 0.1–30). E: ⟨561⟩ extraction factor or ⟨565⟩ plant-to-extract ratio (1–50). L: the plant article's limit, mg/kg.
- Assumptions
- The ADI applies to the residue as measured. No other source of the residue is counted.
- What it does not establish
- Compliance in the United States for a food-labeled botanical, where EPA tolerances govern and residues without a tolerance "should be below the detection limit". It does not give ADIs.
- References
- USP ⟨561⟩ and ⟨565⟩ (USP 38–NF 33 Second Supplement); 40 CFR Part 180.
- Verification
- No published numerical example was found. Unit tests and independent Python cases check the algebra, including that AM/(100B) × B always equals 1% of the 60 kg ADI.
Explanation, details and sources
⟨561⟩ defines a pesticide as any substance meant to control "any pest, unwanted species of plants, fungus, or animals", so herbicides and fungicides are included. It also states that its limits "are not applicable in the United States when articles of botanical origin are labeled for food purposes", where EPA tolerances (40 CFR Part 180) and FDA action levels apply.
Multiplying the limit by the daily dose shows what the formula allows: A × M / 100, one hundredth of the ADI for a 60 kg adult, from this one article. ⟨561⟩ and ⟨565⟩ use E differently. In ⟨561⟩ it is an experimental extraction factor for the pesticide; in ⟨565⟩ it is the plant-to-extract ratio.
Aflatoxin limits are in micrograms per kilogram, and the EU sets them lower for spices than USP sets for botanicals
Show data: mycotoxin limits, µg/kg
| Framework | Toxin | Commodity | Limit, µg/kg |
|---|---|---|---|
| USP ⟨561⟩ | Aflatoxin B1 | Articles whose monograph calls for the test | 5 |
| USP ⟨561⟩ | Sum of B1, B2, G1, G2 | Same | 20 |
| EU 2023/915, 1.1.14–1.1.15 | Aflatoxin B1 | Dried Capsicum, pepper, nutmeg, turmeric, their mixtures; dried ginger | 5.0 |
| EU 2023/915, 1.1.14–1.1.15 | Sum of four aflatoxins | Same | 10.0 |
| FDA action level | Aflatoxins | Foods | 20 |
| EU 2023/915, 1.2.17 | Ochratoxin A | Dried spices except Capsicum, and mixtures | 15 |
| EU 2023/915, 1.2.18 | Ochratoxin A | Capsicum spp. | 20 |
| EU 2023/915, 1.2.19.1 | Ochratoxin A | Liquorice root, including in herbal infusions | 20 |
| EU 2023/915, 1.2.19.2 | Ochratoxin A | Liquorice extract for food | 80 |
Regulation (EU) 2023/915 of April 25, 2023, Annex I (EUR-Lex, read October 23, 2026); 40 CFR 180.151 (eCFR, current as of October 2026). The EU sets ethylene-oxide residue limits for the sum of ethylene oxide and 2-chloroethanol under Regulation (EC) No 396/2005 (Finnish Food Authority summary); values are not reproduced here.
Explanation, details and sources
Where a monograph calls for the test, USP ⟨561⟩ limits aflatoxin B1 to 5 ppb and the sum of B1, B2, G1 and G2 to 20 ppb. The EU sets 5.0 and 10.0 µg/kg for dried spices and ginger, and limits ochratoxin A in spices and liquorice.
Other botanical contaminants with published limits
| Contaminant | Limit | Applies to | Source |
|---|---|---|---|
| Pyrrolizidine alkaloids, lower-bound sum of 21 (plus 14 co-eluting) | 400 µg/kg; 200 µg/kg; 150 µg/kg | EU food supplements with botanical preparations; dried herbal infusions; dried tea | EU 2023/915, entries 2.4.10, 2.4.7, 2.4.4 |
| Polycyclic aromatic hydrocarbons | Benzo(a)pyrene 10.0 µg/kg; sum of four 50.0 µg/kg | EU food supplements containing botanicals and their preparations | EU 2023/915, entry 5.1.16 |
| Lead, cadmium, mercury | 3.0, 1.0 and 0.10 mg/kg | EU food supplements (cadmium 3.0 mg/kg if ≥ 80% dried seaweed) | EU 2023/915, entries 3.1.28, 3.2.21, 3.3.2 |
| Ethylene oxide; 2-chloroethanol | 7 ppm; 940 ppm | U.S. tolerances when used as a postharvest fumigant: dried herbs and spices (except basil), licorice roots, dried peppermint and spearmint tops, sesame seed | 40 CFR 180.151 |
A result just under the limit has up to a 50% chance of being over it; a stated guard band sets that risk
Show data: guard band and largest false-acceptance probability
| Rule (ILAC-G8 Table 1) | Guard band w | ILAC bound | 1 − Φ(2r), % |
|---|---|---|---|
| Simple acceptance | 0 | < 50% PFA | 50 |
| ISO 14253-1:2017 | 0.83U | < 5% PFA | 4.85 |
| ILAC G8:2009 rule | 1U | < 2.5% PFA | 2.28 |
| 3 sigma | 1.5U | < 0.16% PFA | 0.135 |
| 6 sigma | 3U | < 1 ppm PFA | 0.0000001 |
PFA: probability of false acceptance. Computed values assume a result exactly at the acceptance limit, k = 2 and a normal distribution.
Below the limit, inside the guard band.
Method, assumptions and limits
- What it calculates
- For one result against an upper limit: the acceptance limit under a chosen guard band, the probability that the true value conforms, the ILAC-G8 statement and the EU official-control rejection test.
- Equations
- u = U/k with k = 2. pc = Φ((TL − y)/u) (JCGM 106, expression 9). AL = TL − rU. Statement: pass if y ≤ AL; conditional pass if AL < y ≤ TL; conditional fail if TL < y ≤ TL + w; fail above. With w = 0: pass or fail. EU test: reject if y − U > TL.
- Variables and units
- TL, y and U in the same unit (µg/g, µg/kg or ppm). r from ILAC-G8 Table 1.
- Assumptions
- Normal distribution; U evaluated near the limit; results corrected for recovery where the method requires it; specific (single-result) risk.
- What it does not establish
- The size of U for a real method, which needs validation and uncertainty data, or global (population) risk.
- References
- ILAC-G8:09/2019; JCGM 106:2012; Regulation (EU) 2023/2782.
- Verification
- Reproduces JCGM 106 Example 1 (z = 1.40, pc = 0.92) after a shift of +6 units, and the ILAC-G8 Table 1 bounds; independent Python reference cases.
Explanation, details and sources
Every result carries an expanded uncertainty U, usually at about 95% coverage (k = 2). ISO/IEC 17025:2017 requires a laboratory that states conformity to document "the decision rule employed" and report it. ILAC-G8:09/2019 describes the rules.
Buyers and regulators often choose opposite rules. A buyer protecting its customers accepts a lot when the result is below TL − U. EU official control of mycotoxins rejects a lot when the result minus the expanded uncertainty is above the maximum level, "beyond reasonable doubt" (Regulation (EU) 2023/2782). Between those two lines, the decision depends on the rule agreed in advance.
Twelve terms carry most of the arithmetic on a COA, across limits that span seven orders of magnitude
Show the 12 key terms
- Certificate of analysis (COA)
- A lot-specific report of tests, methods, limits and results, issued and approved by the testing party.
- Permitted daily exposure (PDE)
- The maximum acceptable daily intake of an impurity from a product, in µg/day for elements (Q3D) or mg/day for solvents (Q3C).
- Modifying factors F1–F5
- Divisors applied to a NOAEL for species, human variability, study length, severity and the lack of a NOEL.
- Option 1, 2a, 2b, 3 (Q3D)
- Ways to turn a PDE into concentration limits: a common limit at 10 g/day, at the real intake, per component, or on the finished product.
- Control threshold
- 30% of the PDE; below it, Q3D expects no further elemental controls if variability is acceptable.
- Summation option
- USP ⟨2232⟩ route that adds each component's contribution per serving and multiplies by servings per day.
- Class 1, 2, 3 solvents
- ICH Q3C groups: avoid, limit by PDE, or accept up to 50 mg/day.
- Acceptable daily intake (ADI)
- The FAO-WHO published intake value for a pesticide, in mg per kg body weight per day; USP ⟨561⟩ uses it as A.
- Tolerance
- The EPA's maximum residue level for a pesticide in or on a food commodity, set in 40 CFR Part 180.
- Expanded uncertainty (U)
- The half-width of an interval expected to hold about 95% of plausible values (k = 2).
- Guard band (w)
- The distance between the tolerance limit and the acceptance limit, often a multiple of U.
- Decision rule
- The stated rule for how uncertainty is used when declaring a result conforming or not (ISO/IEC 17025:2017).
Five questions to test the arithmetic and the scope rules
A COA for an ashwagandha extract reports "lead complies with ICH Q3D". What should a reviewer ask?
Q3D "does not apply to herbal products", and a supplement's elemental limits are in USP ⟨2232⟩ or the monograph. Ask for the numerical lead result, the method (e.g., ICP-MS per ⟨233⟩), the limit used and its basis (daily intake, component limit at 10 g, or summation).
An ingredient contains 2 µg/g lead and is used at 2 g per day. Does it meet USP ⟨2232⟩?
It fails the individual component limit (0.5 µg/g), but that is one of three options. Its daily contribution is 4 µg, below the 5 µg PDE, so it can pass the summation option if the other components add less than 1 µg/day. It would still exceed the Proposition 65 MADL of 0.5 µg/day.
Why can a product pass Q3C Option 2 when two of its components fail Option 1?
Option 1 assumes 10 g of every component per day. In the ICH example, 5.0 g of product contains 3.64 mg of acetonitrile, below the 4.1 mg/day PDE, although the drug substance and one excipient hold 800 ppm against a 410 ppm Option 1 limit.
For an unlisted pesticide with an ADI of 0.01 mg/kg bw and a 3 g/day dose, what is the ⟨561⟩ limit, and what share of the ADI does it allow?
0.01 × 60 / (100 × 0.003) = 2 mg/kg. At 3 g/day that is 6 µg/day, which is 1% of the 600 µg/day ADI for 60 kg. In the U.S., EPA tolerances govern a food-labeled botanical instead.
A lab reports 0.48 µg/g lead with U = 0.10 µg/g (k = 2) against 0.5 µg/g. Is the lot conforming?
It depends on the agreed rule. With simple acceptance it passes. The probability that the true value exceeds 0.5 is 1 − Φ(0.4) ≈ 34%. With w = U the acceptance limit is 0.40, so the ILAC statement is "conditional pass".
Next: microbiology of botanicals
Course 7 covers the microbial lines of the COA: counts, specified organisms, spore formers and kill steps.