Net-vs-Gross Reconciliation
Net-vs-Gross Reconciliation is the discipline of accounting for every gram between the balance reading (gross), the formula-relevant charge (net), and the inventory issued (issued). The three quantities almost never agree on their own — gross includes tare + container + scoop + lid; net is what the formula needs; issued is what came out of the warehouse and must close back to genealogy. The gap between them is real material (residue in the container, dust on the bench, scoop carry-over, spill in the chute) that 21 CFR 211.103 + 211.188(b)(11) + 111.260(g) + EU GMP Ch.5 §5.40–§5.43 + Annex 15 §6 require to be explicitly accounted for at each charge — not aggregated end-of-batch, not 'reconciled in spreadsheet later', and not 'within tolerance' as a substitute for actual numbers. The §211.192 production-record review reads the per-charge reconciliation, the per-component running totals, the authorised-loss category for every gap, and the close-out e-signatures that confirm the residual against the validated envelope. A BMR that reports only net charges without the gross + tare provenance is a §211.188 + ALCOA+ accuracy deficiency the first time an inspector asks 'how do you know the operator weighed the actual material and not a phantom number'. A defensible program enforces gross → tare → net → issued reconciliation at every weighment, locks the per-component running issued vs charged delta inside the validated envelope, and surfaces gaps as live signals before the batch closes — not as forensic exercises after a yield-investigation opens.
01The three quantities that almost never agree
Every weighment on the floor produces three legitimate quantities that must be reconciled: GROSS (what the balance saw on the pan, including container + scoop + lid + any tooling left on the pan), TARE (the certified non-product mass — container with lid, or empty boat — established under the tare-verified weighing chain), and NET (gross − tare, the formula-relevant mass that goes into the batch). The fourth quantity, ISSUED (mass picked from the warehouse against the WO pick list), must close back to the sum of nets + the documented residual returned to inventory or written off.
The §211.188(b)(11) batch record requirement is unambiguous: 'a statement of the actual yield and a statement of the percentage of theoretical yield' AND 'a complete record of all stages of processing'. The 'all stages' phrase carries the audit hook: a BMR cell that records only the net (e.g. '125.0 g charged') without the gross + tare context cannot be reconstructed, cannot be challenged, and cannot be verified. The first inspector question on any low-yield investigation is 'show me the gross reading and the tare for charge 7 on this batch' — if the answer is 'we only logged the net', the §211.188 finding writes itself.
02The six authorised loss categories — every gram lives in one
Every gram of the issued-vs-charged delta must map to one of six authorised loss categories. 'Unaccounted' is not a category; it is a §211.192 finding. The categories must be pre-validated during PPQ + characterised with an expected range during Stage-3 CPV.
| Category | What it covers | Captured how | Typical envelope |
|---|---|---|---|
| Container residue | Material clinging to weigh-boat, scoop, transfer container that does not enter the batch | Per-charge: container re-weighed empty after transfer; delta = residue | 0.05–0.5% per charge depending on cohesion + container type |
| Tooling carry-over | Material on shared scoops + spatulas + sieves that travels between charges | Per-tool: tool re-weighed before + after cleaning; delta = carry-over | 0.01–0.2% per shared tool per shift |
| Spill / dust loss | Material lost to ventilation, bench surface, floor, isolator gloves | Per-area: cleaning recovery weighed at line-clearance; lost-to-air estimated from validated study | 0.1–1.0% depending on powder cohesion + isolator vs open |
| Sample / IPC retention | Material drawn for in-process testing + retain-sample programs | Per-sample: sample mass logged separately; not part of batch charge | Fixed per SOP — known + planned |
| Returned to inventory | Issued mass not used; returned to original lot with chain-of-custody | Per-charge: residue weighed + returned via inventory transaction with destination lot + container + audit trail | Variable — must match inventory adjustment 1:1 |
| Scrap / quarantine | Rejected weighments (over-band, OOT, deviation); routed to scrap or quarantine | Per-event: rejected mass weighed + transferred to scrap bin / quarantine cage with audit trail | Should be rare; chronic = SPC investigation |
03Anatomy of a per-charge net-vs-gross reconciliation
- Operator scans the issued container (with lot + tare cert + remaining mass) at the balance; engine records the issued lot + the pre-charge container mass.
- Tare event: empty weigh-boat placed on pan; balance auto-tares; engine writes the tare event with mass + UTC + balance + sigma fingerprint per the tare-verified weighing chain.
- Charge event: operator transfers powder; engine captures gross when stability + dwell pass; computes net = gross − tare; compares to post-adjustment target + tolerance band.
- Container re-weigh: issued container placed on a second balance (or same balance with full re-tare); engine computes mass-removed = pre-charge − post-charge; reconciles mass-removed = net + container_residue + spill_estimate.
- Engine writes a single dispense_result row with eight fields (issued_lot, pre_charge_container_mass, tare, gross, net, post_charge_container_mass, residue_estimate, spill_estimate) + per-field e-sig + auto-flags any mass-removed vs net delta outside the authorised-loss envelope.
- Tooling reconciliation: shared scoops / spatulas auto-flagged for carry-over re-weigh at line-clearance + shift-end; carry-over written to a per-tool ledger that genealogy-links to the charges the tool touched.
- Per-component running ledger: engine maintains live issued-vs-charged delta per component per batch; in-batch breach of the envelope pages the QA-on-call BEFORE the next charge can start.
- Sample + IPC retention: any mass drawn for testing writes to a separate sample ledger; sample mass is not counted toward charge but IS counted toward issued reconciliation.
- Returned-to-inventory: residual mass returned to source lot requires a paired inventory transaction with destination + container + chain-of-custody + supervisor e-sig.
- End-of-charge close-out: operator e-signs the per-charge reconciliation; engine commits dispense_result + per-component delta + loss-category breakdown; BMR cell renders with full provenance.
04The per-component running ledger — live, not retrospective
Per-component reconciliation must be LIVE across the batch, not aggregated retrospectively. A 12-charge multi-component batch maintains a running ledger of issued + charged + residue + sample + returned + scrap per component, updated after each weighment, with hard-block triggers when any component's running delta breaches the validated envelope. The ledger is rendered on the BMR + queryable from the kiosk + visible to the supervisor at any time during the batch.
| Component | Issued (g) | Charged (g) | Residue (g) | Sample (g) | Returned (g) | Scrap (g) | Closure (g) | Status |
|---|---|---|---|---|---|---|---|---|
| API-A (Lot 2024-117) | 1250.0 | 1248.3 | 0.8 | 0.5 | 0.0 | 0.0 | 0.4 | in-envelope (0.03%) |
| Excipient-B (Lot 2024-204) | 8500.0 | 8485.0 | 5.5 | 0.0 | 0.0 | 8.0 | 1.5 | scrap-flagged: investigate |
| Excipient-C (Lot 2024-301) | 3200.0 | 3198.6 | 0.7 | 0.2 | 0.5 | 0.0 | 0.0 | closed |
| Lubricant-D (Lot 2024-088) | 85.0 | 84.5 | 0.3 | 0.0 | 0.2 | 0.0 | 0.0 | closed |
The 'Status' column carries the decision logic: in-envelope (green) + investigate (amber) + breach (red, batch hard-stops). The amber 'scrap-flagged: investigate' state allows the batch to continue while QA reviews the scrap event in parallel; a red 'breach' state hard-stops the next charge until QA dispositions the gap. The hard-stop is RLS-enforced at the database — no service-role-key bypass.
05Regulatory overlay across regimes
| Clause | Regime | What it requires that touches net-vs-gross reconciliation |
|---|---|---|
| 21 CFR 211.101(c) | US human drugs | Component charge under documented + verified conditions — gross + tare + net provenance required |
| 21 CFR 211.103 | US human drugs | Actual yield + percentage of theoretical yield calculated + recorded at appropriate stages |
| 21 CFR 211.110(a)(4) | US human drugs | In-process material control includes reconciliation against issued |
| 21 CFR 211.184 | US human drugs | Component issued vs returned records — must reconcile 1:1 |
| 21 CFR 211.188(b)(11) | US human drugs | Component reconciliation explicitly required in the batch record |
| 21 CFR 211.192 | US human drugs | Production record review must catch + investigate any unexplained discrepancy |
| 21 CFR 820.184(c) | US devices | DHR must include actual material identity + quantity used |
| 21 CFR 111.260(g) | US supplements | Component reconciliation in the BPR — issued vs used vs returned |
| 21 CFR 111.310 | US supplements | BPR must include reconciliation calculations + supervisor review |
| EU GMP Chapter 5 §5.40–§5.43 | EU human drugs | Production reconciliation; deviations from theoretical investigated + recorded |
| EU GMP Annex 15 §6 | EU qualification | Verification of materials + reconciliation as qualification activity |
| ICH Q7 §6.5 | API manufacturing | Material reconciliation at each significant stage of API production |
| ICH Q9(R1) | Global pharma | Authorised-loss envelopes are QRM-derived + change-controlled |
| ICH Q10 §3.2.5 | Global pharma | Quarterly product review aggregates per-component reconciliation trends |
| MHRA DI 2018 | UK pharma | Reconciliation data is ALCOA+ evidence — contemporaneous + complete + original |
| FDA DI Q&A 2018 | US pharma | Original raw weighments + reconciliation calculations preserved + immutable |
| PIC/S PI 041-1 | Global PIC/S | Reconciliation audit-trail + e-sig integrity is data-management baseline |
| FDA PV Guidance 2024 | US pharma | Stage-3 CPV requires reconciliation trending per-charge per-component, not batch-level only |
06Eight failure modes auditors hunt for first
- Only NET is logged — BMR cell shows '125.0 g of API-A charged'; no gross + tare provenance; reconstruction impossible; §211.188 + ALCOA+ accuracy deficiency on the first inspector question.
- End-of-batch aggregation only — per-charge data not retained; only batch-level 'issued vs charged' summary; over-charges + under-charges silently cancel; PV Stage-3 CPV trending impossible.
- 'Unaccounted' loss category in use — BMR shows 1.2% loss as 'unaccounted'; not mapped to a validated category; §211.192 finding because every gram must live in an authorised category.
- Authorised-loss envelope copied from a similar product — no PPQ derivation, no ICH Q9 QRM justification; envelope is folklore; first OOS yield investigation finds the envelope cannot be defended.
- Container residue estimated, not weighed — operator visually estimates 'about 0.5%' of residue per charge; no actual container re-weigh; estimate is systematic + invisible bias; cannot support root-cause investigation.
- Returned-to-inventory without paired transaction — residual mass returned to source container; no inventory transaction; warehouse-side genealogy breaks; next WO using same lot has incorrect issued-mass baseline.
- Shared tooling carry-over ignored — same scoop used for 5 different components across a shift; carry-over of 0.1% per charge accumulates to cross-contamination + 1% mass-balance error; not tracked because tool ledger doesn't exist.
- Mid-batch breach 'reviewed and accepted' without deviation — running ledger shows component-B at 1.5% over loss envelope after charge 8; operator + supervisor agree to 'continue and investigate at close'; no deviation opened; closure becomes retroactive; §211.192 + 211.100 finding identical to the 'continue and document' SOP gap.
07The KPI suite that proves reconciliation discipline holds
- Per-charge gross+tare+net capture rate — fraction of weighments with all three values logged + reconciled (target 100%); any gap is a §211.188 finding.
- Authorised-loss category coverage — fraction of issued-vs-charged delta mapped to an authorised category (target 100%); any 'unaccounted' is a §211.192 finding.
- In-envelope per-charge rate — fraction of charges where the mass-removed-vs-net delta is inside the validated envelope (target ≥95%); chronic breaches trigger SPC investigation.
- Live ledger breach response time — median time from running-ledger amber/red state to QA disposition (target ≤30 min for amber, ≤10 min for red).
- Tooling carry-over within envelope — fraction of shared-tool shifts with documented carry-over inside envelope (target ≥98%); chronic breaches trigger dedicated-tool revisit.
- Returned-to-inventory paired-transaction rate — fraction of residual returns with paired inventory transaction (target 100%); any unpaired return is genealogy breakage.
- Stage-3 CPV reconciliation trending coverage — fraction of products with per-charge per-component reconciliation trends visible on the quarterly review (target 100%); gaps are 2024 FDA PV finding-bait.
- Container-residue measured-vs-estimated ratio — fraction of charges where residue is measured by re-weigh (target ≥95%); chronic estimation is a data-integrity gap.
08How V5 enforces net-vs-gross reconciliation end-to-end
- MMR carries authorised_loss_categories[] per component with per-category envelope_min_pct + envelope_max_pct + ppq_source + qrm_doc_ref + change_control_id; envelopes are change-controlled and cannot be edited without two-person e-sig + QA approval.
- Dispense_result schema enforces NOT NULL on issued_lot + pre_charge_container_mass + tare + gross + net + post_charge_container_mass + residue_estimate + spill_estimate; RLS rejects writes missing any field — service-role-key not exempt.
- Engine computes mass-removed = pre_charge − post_charge; auto-reconciles mass-removed = net + residue + spill; flags any |delta| > 0.01 g or > validated tolerance whichever is tighter as an investigation candidate.
- Per-component running ledger updates after every charge; ledger state (green / amber / red) is denormalised on the batch row for fast kiosk + supervisor dashboard queries.
- Amber state surfaces a kiosk banner + emails QA-on-call; batch continues. Red state hard-blocks the next charge via RLS until a QA deviation_id is attached to the ledger row.
- Shared-tool ledger tracks every tool's per-charge association + carry-over re-weigh at line-clearance + shift-end; tool-level carry-over outside envelope auto-opens a deviation + flags affected charges in genealogy.
- Returned-to-inventory workflow requires a destination lot + container + supervisor e-sig + paired inventory_transaction row; orphan returns hard-blocked.
- BMR rendering: every charge cell renders gross + tare + net + container_before + container_after + residue + spill + sample + scrap + per-component running delta — full provenance, no aggregation hiding.
- §211.192 review template auto-attaches per-charge reconciliation breakdown + per-component running ledger + every amber/red event + every deviation; reviewer must explicitly disposition any out-of-envelope event before closing.
- Quarterly ICH Q10 §3.2.5 + FDA PV Stage-3 CPV review aggregates per-charge per-component reconciliation trends with control charts per-product per-component; sustained drift triggers envelope re-validation + PPQ rationale revisit + change-control update.
09Frequent inspector questions
- Q: Can we use a single 'process loss' category to cover container residue + spill + dust? A: No — each contributes a different root cause + remediation + risk profile. Container residue is a container-design + cleaning + powder-cohesion issue; spill is an operator-technique + isolator-design issue; dust is a ventilation + powder-particle-size issue. ICH Q9(R1) requires categories granular enough to drive distinct CAPA decisions.
- Q: How often must authorised-loss envelopes be re-validated? A: At least at quarterly product review (ICH Q10 §3.2.5) for trend assessment, and formally re-validated whenever PPQ-bracket conditions change: new container supplier, new powder grade, new operator group + training change, new isolator + ventilation system, new scoop / tooling material. Sustained Stage-3 CPV drift triggers ad-hoc re-validation.
- Q: Do we need container re-weigh for every charge or can we statistically sample? A: Statistical sampling is acceptable for low-risk + wide-envelope components where PPQ data supports the sampling plan + QRM documents the rationale. High-potency APIs + low-mass charges + tight tolerances require 100% container re-weigh. The decision is per-component + change-controlled, not an SOP-wide default.
- Q: What about liquids — gross / tare / net by volume vs mass? A: Always mass for reconciliation. Volume measurements have a density + temperature dependency that introduces uncontrolled error; mass-based reconciliation is the regulatory expectation. Convert to volume only for downstream process-specification purposes, not for §211.188(b)(11) reconciliation.
- Q: How do we handle reconciliation for continuous processes (continuous granulation, continuous tableting)? A: Continuous processes use loss-in-weight feeders + check-weighers + start/end mass-balance reconciliation per ICH Q13. The per-charge model is replaced by per-time-window reconciliation (e.g. per hour) with the same six-category loss breakdown + live-ledger discipline.
- Q: Can returned-to-inventory close a per-component running ledger amber state? A: Yes if (a) the return is performed with paired inventory transaction + supervisor e-sig, (b) the returned mass is traceable to a specific over-issue earlier in the batch, and (c) the post-return running delta is back inside envelope. The system writes the return event into the ledger; the amber state clears automatically; no separate deviation is required.
- Q: Do we need to reconcile retain samples + IPC samples against issued? A: Yes — the issued mass must close to: charged + container_residue + spill + sample + retained + returned + scrap. Sample mass is part of the reconciliation even though it is not part of the batch charge. Failing to count sample mass produces a 'phantom loss' equal to sample mass, often misdiagnosed as container residue.
Frequently asked questions
Q.Can we use a single 'process loss' category to cover container residue + spill + dust?+
No — each contributes a different root cause + remediation + risk profile. Container residue is a container-design + cleaning + powder-cohesion issue; spill is an operator-technique + isolator-design issue; dust is a ventilation + powder-particle-size issue. ICH Q9(R1) requires categories granular enough to drive distinct CAPA decisions.
Q.How often must authorised-loss envelopes be re-validated?+
At least at quarterly product review (ICH Q10 §3.2.5) for trend assessment, and formally re-validated whenever PPQ-bracket conditions change: new container supplier, new powder grade, new operator group + training change, new isolator + ventilation system, new scoop / tooling material. Sustained Stage-3 CPV drift triggers ad-hoc re-validation.
Q.Do we need container re-weigh for every charge or can we statistically sample?+
Statistical sampling is acceptable for low-risk + wide-envelope components where PPQ data supports the sampling plan + QRM documents the rationale. High-potency APIs + low-mass charges + tight tolerances require 100% container re-weigh. The decision is per-component + change-controlled, not an SOP-wide default.
Q.What about liquids — gross / tare / net by volume vs mass?+
Always mass for reconciliation. Volume measurements have a density + temperature dependency that introduces uncontrolled error; mass-based reconciliation is the regulatory expectation. Convert to volume only for downstream process-specification purposes, not for §211.188(b)(11) reconciliation.
Q.How do we handle reconciliation for continuous processes (continuous granulation, continuous tableting)?+
Continuous processes use loss-in-weight feeders + check-weighers + start/end mass-balance reconciliation per ICH Q13. The per-charge model is replaced by per-time-window reconciliation (e.g. per hour) with the same six-category loss breakdown + live-ledger discipline.
Q.Can returned-to-inventory close a per-component running ledger amber state?+
Yes if (a) the return is performed with paired inventory transaction + supervisor e-sig, (b) the returned mass is traceable to a specific over-issue earlier in the batch, and (c) the post-return running delta is back inside envelope. The system writes the return event into the ledger; the amber state clears automatically; no separate deviation is required.
Q.Do we need to reconcile retain samples + IPC samples against issued?+
Yes — the issued mass must close to: charged + container_residue + spill + sample + retained + returned + scrap. Sample mass is part of the reconciliation even though it is not part of the batch charge. Failing to count sample mass produces a 'phantom loss' equal to sample mass, often misdiagnosed as container residue.
Primary sources
- 21 CFR 211.103 — Calculation of yield
- 21 CFR 211.110 — Sampling and testing of in-process materials
- 21 CFR 211.184 — Component records (issued vs returned)
- 21 CFR 211.188(b)(11) — Component reconciliation in the batch record
- 21 CFR 211.192 — Production record review
- 21 CFR 211.101(c) — Charge-In of components
- 21 CFR 111.260(g) — Reconciliation of issued vs used (supplements)
- 21 CFR 111.310 — Batch production record (supplement reconciliation)
- 21 CFR 820.184(c) — DHR — actual material identity + quantity used
- EU GMP Chapter 5 §5.40–§5.43 — Production reconciliation
- EU GMP Annex 15 §6 — Verification of materials + reconciliation
- ICH Q7 §6.5 — Reconciliation (API)
- ICH Q9(R1) — Quality Risk Management (loss-category risk)
- ICH Q10 §3.2.5 — Quarterly product review (reconciliation aggregation)
- MHRA Data Integrity Guidance 2018 — Reconciliation as ALCOA+ evidence
- FDA Data Integrity Q&A 2018
- PIC/S PI 041-1 — Good Practices for Data Management + Integrity
- FDA Process Validation Guidance 2024 — Stage 3 CPV reconciliation trending
Further reading
- In-Process ReconciliationStage-gate closure aggregates the per-charge net-vs-gross deltas into the stage's mass-balance ledger.
- Theoretical vs Actual Yield %End-of-batch yield ratio is built from the per-charge net values — gross-as-net produces a falsely-high yield that hides loss.
- Tare-Verified WeighingThe five-event tare chain is the source-of-truth for the gross → tare → net derivation at every weighment.
- Yield-Adjusted Batch SizeScale-up recalculates target nets — reconciliation must reset its expected-loss envelope against the new scaled targets.
- Assay-Adjusted ChargeAssay adjustment shifts the per-weighment NET target; the reconciliation tracks the actual net charged against the assay-adjusted not the nominal.
- Recalculation E-SignatureAny restatement of net values after a mid-batch correction is a recalculation event requiring the dual-control + paired-deviation contract.
- DeviationNet-vs-gross gaps outside the authorised-loss envelope auto-open a deviation with the specific loss-category disposition.
- 21 CFR Part 11Per-charge gross + tare + net + issued provenance is GMP-record Part 11 evidence — operator + supervisor e-sigs are non-negotiable.
V5 Ultimate ships with the Net-vs-Gross Reconciliation controls already wired in — audit trail, e-signatures, validation evidence. Free trial, no credit card, onboard in days, not months.
