CovaSyn
All Articles
Guide8 min readJuly 15, 2026

Mass Balance in Forced Degradation, and Why It Fails

Mass balance in forced degradation rarely closes. The four real causes - non-chromophoric and volatile degradants, adsorption, response factors - and how.

OK

Oliver Kraft

CovaSyn

Mass Balance in Forced Degradation, and Why It Fails

You stressed the API, ran the gradient, integrated everything above the reporting threshold, and the assay plus total degradants came to 91%. Nine percent of the drug substance is unaccounted for. Reviewers will ask where it went, and "the method is stability-indicating" is not an answer until you can say what happened to the missing mass.

This is the normal case, not a failure of technique. Mass balance in forced degradation fails for a small number of specific, diagnosable reasons. This article walks each one and shows how to close the gap, using live output from covams_mass_balance, covams_degradation_predict and covams_forced_degradation.

What mass balance actually means

Mass balance is the sum of the assay value and the total measured degradants, expressed against the initial content of the unstressed control. It is a consistency check on the analytical picture, not a measurement of anything physical.

ICH Q1A(R2) asks that stress studies support the stability-indicating power of the method and explicitly notes that mass balance is not achieved in all circumstances. It sets no numeric limit. Most companies apply an internal window - 95% to 105% is the common one - and treat anything outside it as an investigation trigger rather than a rejection.

CovaSyn's covams_mass_balance uses 95.0% as its flag threshold. We probed it directly:

Input (assay % + degradant %)total_percentstatus
79.6 + [15.4]95.0pass
79.6 + [15.3]94.9flag

Verbatim output from two covams_mass_balance calls. The boundary is inclusive at 95.0. That is a fixed arithmetic rule with no uncertainty propagation - it does not know your assay precision, so treat "pass" at 95.1% as a coin flip, not a clearance.

A worked example: acid stress on an ester API

Take aspirin (acetylsalicylic acid) under 0.1 M HCl. This is a useful teaching case because the dominant degradation route produces one degradant you will see easily and one you will not see at all.

First, what to expect. covams_degradation_predict on the API SMILES CC(=O)Oc1ccccc1C(=O)O returned four candidate products. Two matter:

ProductFormulaExact mass (Da)Pathway
Salicylic acidC7H6O3138.03169hydrolysis_ester
Acetic acidC2H4O260.02113hydrolysis_ester

Verbatim from covams_degradation_predict. There is the problem in one table. Ester hydrolysis splits the molecule into two fragments. One carries the chromophore and appears in your chromatogram. The other, acetic acid, is small, volatile, essentially transparent at your detection wavelength and unretained on a reversed-phase column. Every mole of API that hydrolyses removes mass from your accounting whether or not the reaction produced anything you would call an impurity.

Now the arithmetic. Assume a stressed sample with 79.6% assay remaining and three integrated degradant peaks at 5.9%, 4.3% and 1.2% area. Passing those to covams_mass_balance:

api_percent:       79.6
impurity_percent:  11.4
total_percent:     91.0
status:            "flag"
Threshold chart of mass balance in forced degradation: an assay of 79.6% plus 11.4% degradants totals 91.0%, flagged against the 95.0% threshold, leaving a 9.0% gap to explain.
ICH Q1A(R2) sets no numeric limit. The 95% rule here is fixed arithmetic with no uncertainty propagation, so a pass at 95.1% is a coin flip too. Source: Verbatim covams_mass_balance output. The assay and peak-area inputs are the constructed but realistic acid-stress scenario described in this article; the derived totals are tool output.

Verbatim tool output. A 9.0% gap. Note that the assay and peak-area figures here are a constructed but realistic scenario - the derived numbers are genuine tool output, the inputs are illustrative.

The four causes of a mass balance gap

Work them in this order. The first two explain most gaps.

1. Response factor mismatch

The default sin is area normalisation - reporting each degradant as its percentage of total peak area, as though every compound absorbs like the parent. It does not. A degradant that has lost conjugation, gained a hydroxyl, or opened a ring can have a relative response factor well under or over 1.0 at your monitoring wavelength.

Fix: quantify against an authentic standard where you have one, and determine the RRF experimentally. Where you do not have a standard, a diode-array purity spectrum plus a charged aerosol or CAD/ELSD channel will tell you quickly whether the UV response is misleading you.

In our worked case, re-quantifying the main degradant against a salicylic acid standard instead of by area normalisation, and integrating a fourth small peak that had sat under the reporting threshold, gives:

api_percent:       79.6
impurity_percent:  17.6
total_percent:     97.2
status:            "pass"
Grouped bar chart of forced degradation mass balance: the assay stays at 79.6% while degradants rise from 11.4% to 17.6%, moving the total from 91.0% flag to 97.2% pass.
The assay never moved. Correcting the relative response factor and integrating one sub-threshold peak took the balance from 91.0% to 97.2% without finding any new mass. Source: Two covams_mass_balance calls on the illustrative acid-stress scenario in this article. The RRF correction factor must come from your own authentic standard.

Verbatim from a second covams_mass_balance call. The RRF correction factor itself must come from your own standard - CovaSyn does not supply it.

2. Degradants you cannot see

Three sub-cases, all common:

  • No chromophore. Acetic acid, formaldehyde, formic acid, methanol, small aliphatic fragments. Invisible at 210-280 nm. Confirm with CAD, ELSD, RI, headspace GC or ion chromatography.
  • Volatile. Anything that leaves during sample prep, evaporation or a hot autosampler. Acetic acid again, plus CO2 from decarboxylation.
  • Not eluting. Highly polar fragments in the void, or a strongly retained polymer or dimer still on the column at the end of the gradient. Extend the gradient by ten minutes and look. This one is embarrassingly frequent.

3. Adsorption and precipitation

The degradant is formed, then removed from solution before it reaches the detector. Poorly soluble oxidation products crash out; basic or zwitterionic species adsorb to glass, filter membranes and PEEK. Test by comparing filtered and centrifuged aliquots, and by re-running a sample after a solvent-strength change.

4. Over-stressing

Push past roughly 20% degradation and you start generating secondary and tertiary products from the primary degradants. Each generation is smaller, more numerous and less detectable. Mass balance degrades with degradation extent. ICH does not require a target, but 5-20% loss is the practical window in which a gap is still interpretable.

Using structural prediction to name the missing mass

Once you have a gap, the useful question is which pathway it belongs to. covams_forced_degradation matches an observed peak list against the predicted degradant set across all stress arms. Running the five ICH Q1A/Q1B conditions on the same API, with the observed peaks supplied as protonated m/z:

ConditionPeaksIdentifiedNotes
Acid33salicylic acid, acetic acid, decarboxylation product
Base22salicylic acid, acetic acid
Oxidative10m/z 197.0444 unassigned
Thermal11salicylic acid
Photolytic21salicylic acid; 197.0444 unassigned

Verbatim counts from one covams_forced_degradation call. The pathway_summary came back as {"hydrolysis_ester": 6, "decarboxylation": 1}.

Two things to read from this. First, hydrolysis dominates across four of five arms - so the gap is a hydrolysis-accounting gap, and acetic acid is the first thing to go and measure. Second, the oxidative peak is unassigned. The prediction set did not contain an oxidation product, so that peak is real work: MS/MS, an authentic standard, or both.

Interface gotcha worth knowing:

covams_forced_degradation matches on protonated ions. Feeding neutral exact masses (138.0317, 60.0211) returned identified_count: 0; feeding the [M+H]+ values (139.039, 61.0284) identified both. Add 1.00728 before you call it.

Honest limits

What these tools do not do:

  • `covams_mass_balance` is arithmetic. Sum plus a fixed 95.0% threshold. No uncertainty propagation, no assay-precision awareness, no distinction between a 4% gap on a well-behaved method and a 4% gap on a noisy one.
  • `covams_degradation_predict` is a rule-based enumerator, and it over-generates. The same aspirin call that correctly returned salicylic acid and acetic acid also returned water as a "dehydration" product and a decarboxylation product of questionable chemistry. Read the list as hypotheses to test, not as a degradation profile.
  • A mass match is not an identification. Every hit in the covams_forced_degradation run came back with confidence: 0.5, which is the mass-only tier. Structural confirmation needs MS/MS, retention-time agreement with an authentic standard, and ideally NMR.
  • The `ich_threshold` field defaults to `below_reporting` when no `area_percent` is supplied. In our run every peak carried that label purely because we passed no areas. Do not read it as a regulatory classification.
  • None of this replaces the wet-lab work. It narrows what you go and measure. Your filing rests on the measurement.

Frequently asked questions

What is an acceptable mass balance in forced degradation?

ICH Q1A(R2) does not set a numeric limit and explicitly acknowledges that mass balance is not achieved in all circumstances. Most organisations apply an internal window of 95% to 105% as an investigation trigger. CovaSyn's covams_mass_balance flags anything below 95.0%; we verified that 95.0 returns "pass" and 94.9 returns "flag". A gap outside the window requires a documented rationale, not automatic rejection of the study.

Why does mass balance fail in forced degradation studies?

Four causes account for nearly all gaps. First, relative response factors: area normalisation assumes every degradant absorbs like the parent, which is rarely true. Second, degradants that are non-chromophoric, volatile, or that do not elute within the gradient. Third, adsorption or precipitation removing material before detection. Fourth, over-stressing beyond about 20% degradation, which generates secondary products too small and numerous to track.

How do I account for non-chromophoric degradants?

Use a detector that does not depend on a chromophore. Charged aerosol detection (CAD), evaporative light scattering (ELSD) and refractive index respond to mass rather than absorbance. For small volatile acids and alcohols, headspace GC or ion chromatography is more appropriate than any LC-UV method. Structural prediction helps you know what to look for: covams_degradation_predict flagged acetic acid (C2H4O2, 60.02113 Da) as an ester-hydrolysis product of aspirin before any experiment was run.

Do I need a relative response factor for every degradation product?

Not for every peak, but for anything at or above the ICH Q3A/Q3B identification threshold that materially affects the mass balance. Determine RRF against an authentic standard at the monitoring wavelength. Where no standard exists, an orthogonal mass-sensitive detector gives you a defensible estimate of whether the UV response is over- or under-reporting that peak.

How much degradation should a forced degradation study target?

Roughly 5% to 20% loss of the API. Below 5% the degradants are too close to the noise to characterise. Above 20% you begin generating secondary degradation products from primary degradants, and mass balance becomes progressively harder to close and harder to interpret. ICH Q1A(R2) sets no target; this range is common practice.

Can software identify my unknown degradation peaks?

It can rank hypotheses, which is usually the bottleneck. covams_forced_degradation matched observed protonated masses against a predicted degradant set across five stress arms and returned a pathway summary. But every match carried confidence: 0.5, the mass-only tier. That narrows your MS/MS and standards work; it does not close it.

Related reading

Every tool used here runs on the CovaSyn free tier, so you can put your own stress data through covams_mass_balance before your next investigation write-up.

Tools for this topic

Use these in your AI agent right away.

  • CovamsMass spectra, formula prediction, impurity profiling.
Mass Balance in Forced Degradation, and Why It Fails | CovaSyn