Stripe Contracts: What the New Contract Object Means for Renewal-Time Churn
Stripe Contracts moved to public preview in July 2026. Here's what the new contract object actually does, and why it matters for sales-led renewal churn.
Every subscription-billing feature Stripe ships eventually gets a self-serve use case and a sales-led one, and the two rarely need the same thing. Self-serve wants clean, fixed prices a customer can click through at checkout. Sales-led wants whatever the rep and the customer agreed to in a call three weeks ago — a custom discount, a seat count that changes twice a year, a twelve-month term with a built-in step-up in month seven. Stripe has historically forced that second case into subscription schedules, and subscription schedules were never built to survive years of ad hoc negotiation. Contracts, which moved to public preview in July 2026, is Stripe's answer to that gap.
That gap between what vendors are charging at renewal and what buyers have budgeted is exactly the pressure point where a negotiated contract either holds, shrinks, or walks. If your billing system can't tell you what changed on an account between one term and the next, you're negotiating that pressure point blind.
What Stripe Contracts actually is
A contract in Stripe is a first-class object that sits alongside subscriptions rather than replacing them. It references your existing products and prices — the same catalog a self-serve subscriber checks out with — but layers negotiated pricing overrides, custom service periods, and adjustable license quantities on top. You build it in draft status while sales and finance map the signed agreement onto Stripe's billing primitives, then activate it, which finalizes the terms and generates the first invoice.
The billing settings on a contract — invoicing cadence, payment terms — can differ from your standard subscription defaults, which matters more than it sounds like it should. A lot of enterprise deals fail to bill correctly not because the price was wrong, but because net-45 payment terms or a quarterly-in-advance schedule got bolted onto a subscription object that assumed monthly-in-arrears. Contracts make that a configuration on the deal itself instead of a workaround.
| Object | Built for | Handles renegotiation well? |
|---|---|---|
| Subscription | A single, standard-priced recurring charge | No — one price, upgrade/downgrade by swapping it |
| Subscription schedule | A known, fixed sequence of future phases | Partially — you must pre-model every future phase |
| Contract | A negotiated B2B deal with unpredictable amendments | Yes — amendments apply changes without rebuilding phases |
Why subscription schedules weren't enough
Subscription schedules let you define a sequence of phases in advance — three months at price A, then price B for the rest of the term. That works when the future is known. It breaks down the moment a customer calls six months into a two-year deal and asks for twenty more seats starting next quarter, because now you're inserting a new phase into a schedule that was never designed to be edited mid-flight, and every phase after the insertion point has to be recalculated by hand.
Stripe's own framing for Contracts is direct about this: the goal is to model custom pricing, defined service periods, and mid-deal seat changes while keeping the product catalog clean and avoiding the deeply nested subscription schedules teams were building to cope. If your billing engineering team has ever maintained a spreadsheet on the side just to track which schedule phase corresponds to which line in a signed order form, this is the problem Contracts is aimed at.
The contract lifecycle: draft, active, amend, renew
The lifecycle is deliberately explicit, which is the point:
- Draft — the contract exists but hasn't started billing. This is where you map a signed order form onto pricing lines, overrides, and license quantities before anything is charged.
- Active — activation finalizes the draft and generates the first invoice. From here, every invoice tied to this deal can be pulled by referencing the contract, so you're no longer reconstructing a customer's billing history from a pile of loosely related invoices.
- Amendment — a mid-term change, applied to the existing contract rather than requiring you to tear down and rebuild the underlying schedule. Seat increases, scope changes, and negotiated discounts all flow through here.
- End of term — treated the same way as an amendment or upsell: an explicit event that either renews the deal, renews it at different terms, or ends it. Nothing about a contract auto-renews silently in the background the way a subscription's next billing cycle does.
Stripe also supports test clocks against contracts, the same mechanism used to fast-forward subscriptions in a sandbox. That means you can simulate a renewal date arriving, inspect exactly what invoice and event notifications Stripe generates, and catch a broken amendment before it touches a real six-figure account.
Where this intersects with renewal churn
Every one of those lifecycle events — amendment, end of term — is a decision point for the buyer, and decision points are where accounts either recommit or contract. We've written before about how seat-based churn hides inside renewals that technically still count as retained: an account that renews at 25 seats instead of 40 isn't a cancellation on your dashboard, but it's a 37.5% revenue cut all the same. A contract's amendment history is the first place that kind of shrinkage becomes visible on the billing side, instead of only showing up three months later when someone reconciles ARR against the CRM.
Source: Gartner analyst commentary, via CIO.com (2026).
That gap is why the renewal conversation on a negotiated deal is rarely a clean yes or no. A buyer facing a double-digit price increase against roughly 3% budget growth doesn't cancel outright most of the time — they push back on scope, ask for fewer seats, or negotiate a flat renewal instead of the increase you modeled. Every one of those outcomes shows up as a contraction in your gross revenue retention, and none of them trip a "customer churned" flag anywhere in your product. A contract object that captures the before-and-after of every amendment gives you the raw material to actually measure how much of your GRR erosion is coming from renewal-time renegotiation specifically, instead of lumping it in with outright cancellations.
What to build so you don't lose that visibility
Contracts give you the data. Nothing forces you to act on it unless you build the plumbing:
- Pipe amendment and renewal events into your health scoring. If you're building a churn health score, a contract amendment that reduces seat count or scope should move that account's score immediately, not wait for the next quarterly business review to notice.
- Track renewals as their own event type, separate from new deals. A renewal at reduced terms and a brand-new logo signing at a discount look identical in raw MRR terms but mean completely different things about the health of your existing base.
- Give account owners the amendment history before the renewal call, not during it. A rep walking into a renewal conversation without knowing the account already cut seats twice this year is negotiating from a worse position than the buyer, who almost certainly does know.
- Model the revenue impact before you agree to a shrink. Our retention rate calculator will tell you exactly what a given seat or price reduction does to ARR before it's locked into a signed amendment, rather than after.
What's still rough around the edges
This is a July 2026 public preview, not a mature, load-bearing product yet, and Stripe is upfront about the gaps. You can view contracts in the Dashboard — list view and a detail page per contract — but you can't create one there; contracts have to be built through the API or a connected quoting tool, which means your revenue operations team can't just click through a deal the way they might set up a subscription manually. Contracts also don't support every subscription feature yet: there's no trial status on a contract-based deal, so any trial-to-paid motion has to happen on a subscription before the account converts onto contract terms. If your product runs a hybrid motion — self-serve trial, sales-assisted conversion to a negotiated annual deal — expect to stitch those two objects together yourself for now rather than finding a built-in handoff.
None of that is a reason to wait a year before looking at it. It's a reason to build your first integration against a sandbox account with test clocks, walk a full draft-to-amendment-to-renewal cycle before a real customer's contract depends on it, and treat the current API shape as something that will keep moving until Stripe calls it generally available.
The bigger point holds regardless of what changes between now and GA: renewal is a decision point, whether it happens on a self-serve cancel page or in a call between an account exec and a buyer's finance team. Everything CancelFlow does at the moment someone tries to cancel — surface the real reason, offer something more specific than a blanket discount, capture what happened for the next product decision — is the same instinct a contract's amendment history is trying to give sales-led teams at renewal. The mechanism is different; the failure mode it's guarding against, quiet revenue erosion nobody flagged until it was already gone, is exactly the same one.
Frequently asked questions
What is Stripe Contracts?+
Stripe Contracts is a Billing feature for managing the full lifecycle of a negotiated sales agreement — pricing overrides, seat or unit quantities, service periods, and invoicing terms — as a single object, rather than hand-building it with subscription schedules. Contracts draw on the same product and price catalog as regular subscriptions, but apply negotiated overrides on top instead of forcing every custom deal into a separate price.
Is Stripe Contracts generally available?+
No. Stripe previewed Contracts privately first, then opened it to public preview in July 2026. Public preview means any account can request access and build against it, but the API and Dashboard support are still evolving — Stripe explicitly documents gaps like the inability to create a contract directly in the Dashboard (API or a quoting tool only, for now) and no trial status on contract-based deals.
How is a Stripe contract different from a subscription schedule?+
A subscription schedule models a subscription's future phases in advance — useful for a known, fixed sequence of changes. A contract is built for negotiated B2B deals where the terms change unpredictably over the deal's life: a renewal at a different price, a mid-term seat increase, a scope change a sales rep negotiated last week. Stripe's own framing is that Contracts exist specifically to avoid the complex, deeply nested subscription schedules that sales-led billing teams were building by hand to cope with this.
What happens to a Stripe contract at renewal?+
Renewal isn't automatic in the way a subscription's next billing cycle is. Stripe treats end-of-term renewal as one of the lifecycle events — alongside upsells and mid-cycle changes — that gets applied through an amendment to the existing contract or by creating a new one. In practice that means your sales or revenue operations team makes an explicit decision at each term boundary, which is exactly the moment where a negotiated account either renews as-is, renews smaller, or doesn't renew at all.
Stop losing subscribers today
One script tag. One function call. A live cancellation flow in under 10 minutes.
Start free trial →