How to Calculate Net Dollar Retention for SaaS

August 16, 2026
7 min read
How to Calculate Net Dollar Retention for SaaS

Your SaaS growth hinges on one number: net dollar retention. It tells you whether existing customers are adding or taking away revenue. Follow these five steps to compute it accurately, validate the result, and use it to drive smarter decisions.

Table of Contents

  • Step 1: Define the Customer Cohort and Measurement Period
  • Step 2: Gather Starting MRR, Expansion, Contraction, and Churn
  • Step 3: Apply the Net Dollar Retention Formula
  • Step 4: Validate the Result Against Billing and Customer Data
  • Step 5: Interpret NDR and Turn the Result Into an Action
  • Frequently Asked Questions

Step 1: Define the Customer Cohort and Measurement Period

The first thing you need is a clear cohort , a group of customers that started paying in the same month or quarter. By keeping the cohort fixed, you isolate the revenue changes that belong to the same set of accounts. Pick a window that matches your reporting cadence; most SaaS teams use a trailing 12‑month period because it smooths seasonal spikes.

Pull the list of active subscriptions on day one of the window directly from your billing platform. Stripe and Paddle both expose afirst_payment_datefield you can filter on, so you only keep the original accounts. Anything that signed up later belongs in a separate “new MRR” bucket and must stay out of the NDR calculation.

Once you have the cohort, decide on the measurement cadence , monthly, quarterly, or annually. The metric works the same way at any frequency, but monthly granularity lets you spot early warning signs. For a quarterly view, simply sum the monthly numbers for each quarter.

How to Calculate Net Revenue Retention walks through the data‑export steps in Stripe and Paddle, making the pull process almost drag‑and‑drop.

NDR focuses exclusively on the existing customer base, ignoring any brand‑new sales. That narrow lens is why the cohort definition matters so much , you’re measuring the health of money you already have.

Key Takeaway: A well‑defined cohort and a consistent time window give you a clean baseline for every NDR run.

Step 2: Gather Starting MRR, Expansion, Contraction, and Churn

Now collect the four numbers the formula needs.

Starting MRR is the total recurring revenue from the cohort at the beginning of the period. Export themonthly_recurring_revenuecolumn for every account on day one and sum it up.

Expansion MRR captures every upsell, cross‑sell, or add‑on that the same customers added during the window. In Stripe, look forplan_changeevents that increase the invoice amount; in Paddle, check theupgradeline items.

Contraction MRR is the opposite , downgrades, seat reductions, or discount applications that lower the invoice total. Both Stripe and Paddle tag these asplan_changewith a negative delta.

Churned MRR is the revenue lost when a customer cancels completely. It shows up as asubscription_canceledevent in Stripe or acancellationrecord in Paddle.

When you pull the raw data, double‑check that you’re only counting events that belong to the original cohort. A common mistake is to include upgrades from customers who joined after day one , that inflates expansion and makes NDR look better than it really is.

“SaaS revenue components chart with Stripe and Paddle data”

After you have the four totals, keep them in a simple spreadsheet: one row for each month (or quarter) and columns for Starting, Expansion, Contraction, and Churn. This layout will feed directly into the next step.

Pro Tip: Export raw data to CSV first, then use a pivot table to aggregate by month. It removes manual summing errors.

Step 3: Apply the Net Dollar Retention Formula

The math itself is straightforward:

Component Symbol
Starting MRR S
Expansion MRR E
Contraction MRR C
Churned MRR Ch

Plug them into the equation below and multiply by 100 to get a percentage:

NDR = ((S + E - C - Ch) ÷ S) × 100

Here’s a quick example. Start with your cohort’s starting MRR. During the period, add expansion MRR, then subtract contraction MRR and churned MRR. The calculation looks like this:

((S + E - C - Ch) ÷ S) × 100 = resulting percentage

An NDR above 100% means the cohort grew revenue without any new customers, a healthy sign.

Stripe’s own guide spells out the same formula and adds a few edge‑case notes about refunds and credits. You can read the official description here: Stripe Net Dollar Retention explanation.

Make sure you use the same time unit for every input , don’t mix monthly expansion with annual starting MRR. Consistency keeps the percentage meaningful and comparable across periods.

Key Takeaway: The NDR formula is a single‑line calculation; the real work is gathering clean, cohort‑specific data.

Step 4: Validate the Result Against Billing and Customer Data

After you compute NDR, run a sanity check. Pull the same period’s invoice totals directly from Stripe or Paddle and compare them to the summed numbers you used in the formula. The two should match within a few dollars; any large gap signals a data‑mapping issue.

Look for mismatches such as:

  • Revenue from a discount that was recorded as a separate line item but not classified as contraction.
  • One‑time fees that slipped into the MRR column.
  • Refunds that were logged after the period ended.

If you spot a discrepancy, trace it back to the raw export. Most billing platforms let you filter bybilling_reasonortransaction_typeso you can isolate genuine recurring revenue from one‑off adjustments.

“Analyst validating NDR data in Stripe and Paddle dashboards”

Once the numbers line up, you can be confident the NDR figure reflects reality. This validation step also uncovers hidden revenue leaks , for example, a discount applied at renewal that never showed up in the expansion column.

Pro Tip: Automate the validation with a simple script that pulls the raw invoice total and compares it to the sum of your four components.

Step 5: Interpret NDR and Turn the Result Into an Action

With a verified NDR number in hand, ask three questions: What does the percentage say about our base? Where are the biggest gains or losses coming from? What can we do to move the needle?

If NDR is above 100%, expansion is outpacing churn and contraction. Drill down to see which product tiers or customer segments are driving the upsell. Those segments deserve extra attention , maybe a targeted success program or a premium add‑on launch.

If NDR hovers just below 100%, you’re holding steady but not growing. Look at the contraction column: high downgrade volume often points to pricing friction or feature gaps. Fixing those can push NDR over the 100% threshold.

When NDR falls well under 100%, churn is the dominant force. Identify the churn reasons , usage limits, support gaps, or onboarding failures , and prioritize quick wins like better onboarding docs or a proactive churn‑prevention email sequence.

Chartsy makes the drill‑down painless. Its AI‑powered query engine lets you ask, “Show me NDR by plan tier for the last quarter,” and you get an instant chart pulled straight from your Stripe and Paddle data. No manual spreadsheet gymnastics required.

What Is Net Revenue Retention (NRR)? The Metric That Predicts … expands on how to segment NDR and tie it back to other SaaS health metrics like LTV and CAC.

Key Takeaway: Use NDR as a decision engine , high NDR means double‑down on expansion tactics; low NDR means double‑down on retention fixes.

Frequently Asked Questions

What is the exact formula for net dollar retention?

The formula is ((Starting MRR + Expansion , Contraction , Churn) ÷ Starting MRR) × 100. It gives a percentage that shows how much revenue the existing cohort kept and grew.

Do I have to use MRR, or can I use ARR?

You can swap MRR for ARR as long as you keep the unit consistent across all four inputs. The result will be the same percentage, just expressed on an annual basis.

How often should I calculate NDR?

Most SaaS teams run it monthly and then roll the numbers into a quarterly board deck. Monthly tracking lets you spot trends early; quarterly reporting smooths out short‑term noise.

What NDR level is considered good?

Benchmarks vary by market, so use your own historical trend as the baseline. Enterprise‑grade products often aim for 120% +.

Can I include new customers in the NDR calculation?

No. New customers belong in the “new MRR” bucket. NDR is purposefully limited to the revenue you already have, so it isolates retention and expansion performance.

Is NDR the same as net revenue retention (NRR)?

Yes. The two terms are interchangeable; both measure the same percentage of retained and expanded revenue from an existing cohort.

Ready to see your own NDR numbers in a live dashboard? Explore Chartsy’s free trial and let the AI answer your retention questions in seconds.

Chartsy Team

Written by

Chartsy Team

The Chartsy Team writes guides, product updates, and resources to help SaaS and eCommerce founders make sense of their metrics, without SQL or spreadsheets.

Chartsy