All Posts
AnalysisRemaining Performance Obligation APIRPO and Backlog DataASC 606 Disclosure API

Remaining Performance Obligation (RPO) API

Get a company's remaining performance obligation via API: SEC-sourced backlog and bookings data, cited to the accession number, not a press release.

Published September 1, 202611 min readStockFit Engineering
Remaining Performance Obligation (RPO) API

Microsoft's disclosed remaining performance obligation grew from $375B to $684B in fiscal 2026, an 82.4% jump against 17.8% revenue growth the same year. That figure comes from one line in Microsoft's own FY2026 10-K, tagged under ASC 606 as us-gaap:RevenueRemainingPerformanceObligation, and it is not the same $678B figure Microsoft's own earnings materials call "commercial remaining performance obligation." Two different numbers, two different sources, one filing.

/api/footnotes/backlog turns this disclosure into structured JSON for any filer that tags it, one row per fiscal year, cited to the exact SEC accession number behind it. This post walks through what the figure actually discloses, how to pull it via API, and a worked comparison across three real companies, Microsoft, Salesforce, and CrowdStrike, whose remaining performance obligation is growing at three very different speeds relative to their own revenue.

What remaining performance obligation discloses under ASC 606

ASC 606-10-50-13 requires a public company to disclose the aggregate transaction price allocated to performance obligations that are unsatisfied, or partially satisfied, as of the end of a reporting period, plus when it expects to recognize that amount as revenue. In plain terms: remaining performance obligation (RPO) is the total contracted revenue a company has not yet earned. Unlike revenue, which reports what already happened, RPO is forward-looking: it is the closest thing GAAP has to a bookings number.

The disclosure is audited. It sits in the footnotes of a 10-K or 10-Q, gets tagged in the filing's XBRL, and is subject to the same scrutiny as the income statement, unlike a bookings figure a company might mention only in an earnings call or investor slide. That distinction matters more than it sounds: later in this post, Microsoft's own FY2026 numbers show why.

How backlog, deferred revenue, and RPO differ

These three terms get used interchangeably in SaaS metrics writing, but they are not the same thing:

  • Deferred revenue is a balance sheet liability: cash already invoiced (or received) for work not yet performed. It is backward-looking in the sense that the billing has already happened.
  • Backlog is contracted revenue that has not yet been invoiced or recognized, the part of a signed contract still ahead of the billing cycle.
  • Remaining performance obligation is the sum of both: everything contracted and not yet recognized as revenue, whether it has been billed yet or not. It is the complete forward-looking figure, which is why it is the one ASC 606 actually requires filers to disclose.

A related, narrower cut some filers also disclose is current RPO (cRPO): the slice of total RPO expected to convert to revenue within the next twelve months. It is a different, tighter revenue-recognition question from the segment and product mix a filer discloses through revenue segmentation, RPO is about timing of recognition, not where the revenue comes from.

Getting remaining performance obligation data via API

Call /api/footnotes/backlog with a ticker, CIK, CUSIP, or FIGI. period is annual or quarter, and limit controls how many periods come back. Microsoft's real FY2026 response looks like this:

json
// GET /api/footnotes/backlog?symbol=MSFT&period=annual&limit=1
[
  {
    "period": "2026-06-30",
    "fiscalYear": 2026,
    "fiscalPeriod": "FY",
    "currency": "USD",
    "remainingPerformanceObligation": 684000000000,
    "dateFiled": "2026-07-29"
  }
]

/api/footnotes/backlog requires the Professional plan. Revenue for the same period, needed to compute a growth comparison, comes from /api/financials/income-statement, free tier, no paid plan required:

json
// GET /api/financials/income-statement?symbol=MSFT&period=annual&limit=1
{
  "period": "2026-06-30",
  "fiscalYear": 2026,
  "facts": {
    "revenue": 331839000000
  }
}

Some filers tag a second field, expectedShareInWindow, the fraction of RPO expected to convert within the filer's disclosed near-term window. Microsoft, Salesforce, and CrowdStrike do not tag it, but Adobe does: its FY2025 filing shows expectedShareInWindow of 65% on $22.5B of RPO, filed 2026-01-15. Coverage for this whole disclosure is thin by design: roughly 15% of active filers tag it at all, concentrated in subscription and long-contract businesses that have something worth disclosing. Always check that the response is non-empty for a given ticker before building on it.

RPO growth vs revenue growth: the bookings momentum signal

Comparing a company's RPO growth rate to its revenue growth rate over the same stretch is the classic bookings-momentum read: if RPO is growing faster than revenue, the contracted pipeline is filling up faster than the company is recognizing it, a forward signal revenue alone cannot show. Three companies with clean six-year histories illustrate three different shapes of that signal.

RPO growth trajectory, indexed to FY2021
Fiscal years align by label (FY2021 to FY2026), not calendar date: Microsoft's fiscal year ends June 30, Salesforce and CrowdStrike's end January 31.

Indexed to their own FY2021 starting point, the divergence is visible immediately. Microsoft's RPO is 4.7x its FY2021 level; CrowdStrike's is 6.4x; Salesforce's, the steadiest of the three, is 2.0x.

RPO is outgrowing revenue at two of three companies
5-year compound annual growth rate, FY2021 to FY2026. Microsoft's RPO CAGR runs 2.5x its revenue CAGR.

The five-year compound annual growth rates make the same point in a different shape. Microsoft's RPO grew at a 36.2% CAGR against 14.6% revenue growth, a gap wide enough that RPO went from 86.9% of annual revenue in FY2021 to 206.1% by FY2026, more than two years of current revenue sitting in contracted backlog. The size and timing of that jump lines up with the large, multi-year Azure and AI infrastructure commitments Microsoft has been reporting through fiscal 2026.

CrowdStrike shows a different pattern: both metrics are growing fast (40.6% revenue CAGR, 45.1% RPO CAGR), with RPO consistently a step ahead, 160.1% of revenue in FY2021 climbing to 187.0% by FY2026. Salesforce is the control case: RPO and revenue have grown in near lockstep, 14.9% and 14.3% CAGR respectively, holding RPO at a stable 169.9% to 174.4% of revenue for six straight years. Stable is not a weaker signal here, it is what a maturely forecastable subscription book looks like next to two companies still re-rating their own growth curve.

This is disclosure data, not investment advice: none of the above is a recommendation to buy, sell, or hold any of these companies, only a read on what each one has actually filed.

Why filing-sourced RPO beats a press-release metric

Go back to the number this post opened with. Microsoft's FY2026 earnings materials headline an 84% increase in "commercial remaining performance obligation" to $678B, a company-defined figure that excludes some consumer commitments. The audited, XBRL-tagged total under us-gaap:RevenueRemainingPerformanceObligation, the one /api/footnotes/backlog returns, is $684B, filed in accession 0001193125-26-323660. Both numbers are real. Only one of them is independently checkable against a specific tagged fact in a specific filing rather than a company's own curated presentation.

/api/filings/search-by-accession-number resolves any accession number returned by this endpoint straight back to the source filing, free tier, so a claim never has to be taken on faith. It is the same point-in-time discipline covered in point-in-time fundamentals data, and the same extraction pipeline, SEC filings run through Arelle, the open-source XBRL processor, that backs the sibling Debt Tranche Structure API and Operating vs Finance Lease API. Every figure in this post traces back to a filing on SEC EDGAR the same way, which is also the standard StockFit's broader fundamentals API for quant research holds every other dataset to.

FAQ

Q.What is remaining performance obligation (RPO) and how is it different from backlog?
RPO is the sum of two things: backlog (contracted revenue not yet billed) and deferred revenue (billed but not yet recognized). Backlog alone is only part of the picture; RPO is the complete forward-looking figure ASC 606-10-50-13 requires public companies to disclose, the total transaction price allocated to performance obligations that are unsatisfied or partially satisfied as of period end.
Q.How do I get a company's remaining performance obligation data via API?
Call /api/footnotes/backlog with a ticker, CIK, CUSIP, or FIGI, and period=annual or period=quarter. The response returns one entry per period with remainingPerformanceObligation in US dollars (or the original filing currency with currency=original), plus dateFiled. Pair it with /api/financials/income-statement for the matching period's revenue to compute a growth comparison.
Q.What is the difference between RPO and deferred revenue?
Deferred revenue only covers amounts already invoiced or collected for work not yet performed, a balance sheet liability. RPO is broader: it includes deferred revenue plus backlog, contracted amounts not yet billed at all. Every dollar of deferred revenue is part of RPO, but RPO includes contracted dollars deferred revenue does not capture yet.
Q.Why did Microsoft's remaining performance obligation grow 82% in fiscal 2026?
Microsoft's audited RPO grew from $375B to $684B in fiscal 2026 (accession 0001193125-26-323660), far outpacing 17.8% revenue growth the same year. The size and timing lines up with the large, multi-year Azure and AI infrastructure commitments Microsoft has reported through fiscal 2026. Note this GAAP total differs from the $678B "commercial RPO" figure in Microsoft's own earnings materials, a narrower, company-defined non-GAAP subset.
Q.Does every public company disclose remaining performance obligation?
No. Coverage is roughly 15% of active filers, concentrated in subscription and long-term-contract businesses that have a meaningful forward book to disclose. A company without long-term contracts, a retailer selling at point of sale, for instance, typically has nothing to tag here. Always check for a non-empty response before treating a ticker as covered.
Q.How can I tell if a company's bookings are accelerating faster than its revenue?
Compare RPO growth to revenue growth over the same periods. If RPO's growth rate exceeds revenue's, the contracted pipeline is filling faster than revenue is being recognized from it, a forward-looking signal. Microsoft's five-year RPO CAGR (36.2%) running well ahead of its revenue CAGR (14.6%) is the clearest example in this post; Salesforce's two rates staying close together (14.9% versus 14.3%) is the opposite case.
Q.What is current remaining performance obligation (cRPO)?
cRPO is the slice of total RPO a filer expects to recognize as revenue within the next twelve months, a nearer-term cut of the same disclosure. Not every filer that discloses total RPO also breaks out cRPO separately; where a filer tags a near-term share, /api/footnotes/backlog surfaces it as expectedShareInWindow, a fraction of 1.
Q.Which StockFit plan includes remaining performance obligation data?
/api/footnotes/backlog requires the Professional plan ($99/mo, $69/mo billed annually), the same tier as the rest of the footnotes family (debt structure, stock compensation, REIT property schedules). /api/financials/income-statement and /api/filings/search-by-accession-number, both used in this post for revenue and source verification, are free tier.

Ready to build?

Free API key, no credit card.