Answers · B2B SaaS
How Do You Bill B2B Customers Using More Seats Than They Pay For?
You bill a B2B customer for seats beyond what it pays for in three steps: count the seats in use on that account against the quantity in billing, read what its contract says about seats added mid-term, and bill the difference the way the contract allows, whether that is prorated from the day each seat was added, at a scheduled true-up, or from the next renewal. The gap opens because two records never meet. The product lets the customer’s admin invite users, and the billing system charges whatever quantity was last set on the subscription. Every user past that number is service delivered and not invoiced. This guide covers where the gap comes from, the contract, the count, the limits on back-billing, the conversation and the calendar.
By Tamara Stepanyan, founder of Lumina Business Advisory · Updated · Sources checked · Editorial standards
Why seats in use and seats billed drift apart
Free self-check · two taps · no email
Hand-off 4 of 6 · Delivery → Invoice
Choose the answer that sounds like your business.
That was one of six hand-offs where money changes hands, from first inquiry to collected cash. The other five take about three minutes and end in a dated sheet that names where to start.
Stripe’s documentation describes per-seat pricing from the billing side: customers “pick how many seats they’ll use,” and the company “charges based on that amount.” The quantity is a number on the subscription. Nothing in that setup reads the product’s own list of users. If the product lets an admin invite a sixth person on a five-seat plan, billing keeps charging for five until someone, or some code, changes the quantity.
Even when the quantity is changed, the default timing can surprise a founder with annual contracts. Changing a quantity creates a proration, and Stripe says “positive prorations aren’t immediately billed.” Under the default setting, create_prorations, they are invoiced right away only “under certain conditions.” Otherwise they wait as pending invoice items for what Stripe calls “the regularly scheduled invoice.” On an annual subscription, that can be the renewal: a seat added in month two is billed most of a year later, on the invoice that asks the customer to renew.
With prorations turned off, Stripe says “customers are billed the full amount at the new price when the next invoice is generated,” and the months in between are never charged. That may be what the contract says. It should be a decision, not a default nobody looked at. Other billing systems name these settings differently; the questions are the same.
Each user past the billed count is finished work not yet billed, and in a subscription it repeats every month the user stays.
What the contract says about seats added mid-term
Read the order form and the master agreement for each account with more users than seats. The contract, not the billing setting, decides what the company can charge for an added seat and from when. An order form can handle an added seat in one of four ways:
- Prorated as added: each added seat is billed at the contract rate for the rest of the current term, from the date it was added.
- Billed at a true-up: seats are counted on set dates, quarterly or on the contract anniversary, and billed from that date or for the period since the last count, as the clause says.
- Not billed until renewal: added seats carry no charge until the term ends, and the renewal order form resets the quantity to the count.
- Capped in the product: the customer buys seats before it can add users, so there is nothing to true up, only a sale to make.
Write down five more facts per contract, because each one changes the number: how a seat is defined (a named user, a user active during the period, or a login at the same moment); the rate for added seats, contract or current list; whether seats can come down mid-term; any cap on price changes; and any window for disputing or correcting an invoice. If the contract says nothing about added seats, what the company can charge for past months is a question for its attorney, and the change going forward is a conversation for the renewal.
How to count seats in use against seats billed, account by account
The count is one spreadsheet built from three exports: the product’s user list, with each user’s account, created date, status and last login; the billing system’s subscription list, with quantity, unit price, interval and next invoice date; and the signed order forms. One row per paying account:
- Account name, and the person who owns the relationship.
- Seats bought, from the order form, and the quantity in billing today. If those two differ, that is a finding of its own.
- Seats in use on the count date, by the contract’s own definition of a seat.
- The created date of each user past the billed quantity.
- The difference, the rate per added seat, and the monthly value of the difference.
- What the contract allows for added seats: prorated, true-up, renewal only, or silent.
- Renewal date, and the last day the customer can give notice of non-renewal.
- Collection method, and the proration setting used the last time the quantity changed.
Sort by monthly value. Illustrative example: a hypothetical company bills one customer $40 per seat per month on an annual contract for 50 seats, invoiced up front at $24,000. The product shows 68 active users: 10 added at the start of month three and 8 at the start of month seven, and billing still says 50. That is 148 unbilled seat-months this term, $5,920 at the contract rate, and $720 a month from the next renewal if all 18 stay. Had someone raised the quantity to 60 in month three on default settings, the prorated charge for those ten seats, about $4,000, would have waited as a pending item for the renewal invoice.
Can you back-bill a customer for your own billing mistake?
Sometimes. The limits are the contract, the invoices already sent, the law of the state that governs the contract, and the relationship. What follows is a plain explanation, not legal advice, and a back-bill that reaches past the current term deserves an attorney’s read before it goes out.
If the contract says added seats are billed as added, or at a true-up the company never ran, the fees may already be owed under its terms; the mistake was in the billing, not the deal. If it bills seats purchased, or says nothing, the past may not be billable at all. Invoices issued at the lower count and paid without objection are facts an attorney will want to see before saying whether those periods can be reopened.
The outer limit is a state statute of limitations, and the periods differ. Which state’s period applies is not always settled by the governing-law clause alone; where a suit would be filed can matter too, and that is a question for counsel. Four examples, from the texts:
- Delaware, 10 Del. C. §8106: “no action based on a promise” shall be brought “after the expiration of 3 years from the accruing of the cause of such action.” The same section lets a written contract “involving at least $100,000” set its own period, up to 20 years.
- California, Code of Civil Procedure §337: “Within four years” for “an action upon any contract, obligation or liability founded upon an instrument in writing.”
- Florida, Statutes §95.11(2)(b): five years for “a legal or equitable action on a contract, obligation, or liability founded on a written instrument.”
- New York, CPLR §213: six years for “an action upon a contractual obligation or liability, express or implied,” with exceptions the section lists.
Take the count and the order form to counsel with four questions. Does our clause on added seats entitle us to bill past periods, and from what date? Do invoices the customer already paid at the lower count close those periods? Which state’s statute of limitations applies, given our governing-law clause and where a suit would be filed, and when does it start for each month of unbilled seats? If we waive the past, how is the waiver worded so it does not waive the true-up clause going forward? A statute of limitations measures how long a lawsuit can be filed, which is a different question from whether a customer will pay an invoice for last year.
How to raise the true-up without hurting the renewal
Raise it well before the renewal, not on the renewal invoice. A true-up that arrives with the renewal asks the customer to accept a new quantity on the one date it can walk away. Put the conversation on the calendar a full quarter before the customer’s deadline to decline, so the quantity is settled before renewal is on the table.
Send the list before the bill. Give the customer’s admin the users on the account, with created dates and last logins, and ask which ones should be removed. Some may be people who left. Removing them before the number is set takes the argument out of it, and it shows the count is a record, not a guess.
Then show the clause, the count after cleanup, the rate, and what the next invoice will say. Stripe can preview the change; its documentation says to “use this information to confirm the changes with the customer before modifying the subscription.” Make the forward change from a stated date the default, and treat the past as a separate decision the founder makes account by account:
- Forward only: the new quantity from the next billing date, and the past waived in writing.
- Current term only: added seats prorated from the dates they were added, back to the start of this term.
- The full period the contract supports, after counsel has read it.
- A trade: the past waived in exchange for the corrected quantity on a renewal signed early.
Whichever is chosen, write the mechanism into the next order form: how a seat is defined, when seats are counted, the rate for added seats, and whether seats can come down mid-term. In the product, an admin page that shows seats in use against seats bought, with the price shown when an invite goes past the bought number, makes the next true-up one the customer saw coming.
Who owns the true-up calendar
One person owns the count and one owns the conversation, both by name. On a founder-led team, the count can sit with whoever runs billing and the conversation with whoever owns the account. The founder decides any back-bill, because each one is a pricing decision. The calendar:
- Weekly: new users created that week on accounts already at or over their billed quantity, one short list to each account owner.
- Monthly, first business day: the full count refreshed, with the total monthly value of the difference at the top.
- Quarterly, for annual contracts: the true-up conversation for any account over its count, or the count date the contract names.
- A full quarter before each customer’s last day to give notice of non-renewal: the renewal quantity agreed, so the renewal order form carries it.
- Once, then whenever billing changes: the settings decided on purpose, including which proration behavior quantity changes use and, for annual plans, whether pending items wait for the renewal.
Stripe has a setting for each choice. Setting proration_behavior to always_invoice “calculates the proration, then immediately generates an invoice.” A pending_invoice_item_interval bills pending items on a schedule, which Stripe calls “equivalent to having Stripe create a one-off invoice for the subscription on a recurring basis.” If the customer portal’s Update quantities option is on, customers can “increase or decrease the quantity of a subscription,” and a separate setting can hold a reduction to the end of the billing period. Which fits depends on what the contracts say, so the contract column of the count comes first.
When this is not worth chasing, and where the Review fits
If the product will not let an admin add users past the seats bought, and buying a seat updates billing at once, there is no gap to count. If the difference across every account adds up to a few seats, the monthly count may be all it needs. And if a customer disputes a true-up already sent, the next call is to counsel, not to a consultant.
For a founder-led B2B SaaS company, the Revenue Review counts this under the Delivery → Invoice hand-off. From read-only exports of the billing system, the product’s user list and the signed order forms, it lists every account where seats in use exceed seats billed, since when, at what rate, and the seat clause each contract carries, in monthly dollars. It does not interpret contracts or give legal advice. It takes two weeks, and the report is the company’s to keep.
The count above can be built in-house from three exports, and for a small customer base that may be all it takes. If the seat count turns out to be the gap, the next step is a free 20-minute call, where we say whether the Review adds anything to the spreadsheet, including when it does not.
Before any next step
What should you do next?
- Fix it yourselves.
- If the cause is clear, it lives inside one process, and one person can own it — take the play from this page and run it. That outcome is fine with us; it is why the play is published in full.
- Order one bounded build.
- If the fix is known but needs configuration or integration inside your stack — a cadence wired into your own system, an alert, a handoff — scope that one build, with us or with anyone you trust. The six systems we build show what bounded looks like.
- Start with the Review.
- If the causes are debatable, the problem crosses departments or systems, or the economics are unclear — diagnose before anyone builds. The Revenue Review: $4,500 fixed, two weeks, computed from your own records. Read a sample finding before you decide — free, no email.
Asked right after
- How do we bill customers using more seats than they pay for?
- Count the seats in use on each account against the quantity in billing, read what the contract says about seats added mid-term, and bill the difference the way it allows: prorated from when each seat was added, at a scheduled true-up, or from the next renewal. Send the customer’s admin the user list first, so anyone who has left can be removed before the number is set.
- What is a SaaS true-up?
- A true-up is a scheduled count that brings the billed quantity up to the quantity in use, on dates and at a rate the contract sets. It can fall quarterly, on the contract anniversary, or at renewal, and it bills seats added since the last count from the count date or from when each seat was added, depending on the clause.
- Can we back-bill a customer for our own billing mistake?
- Sometimes. If the contract says added seats are billed as added or at a true-up, the fees may be owed even though the invoices were wrong; if it bills seats purchased, or says nothing, the past may not be billable. Paid invoices, dispute windows and the applicable state statute of limitations all limit it. Have an attorney read the contract before a back-bill that reaches past the current term.
- Does Stripe bill added seats right away?
- Not by default. Stripe’s documentation says positive prorations “aren’t immediately billed”; under the default create_prorations setting they wait for the regularly scheduled invoice, which on an annual subscription can be the renewal. Setting proration_behavior to always_invoice invoices the change immediately, and pending_invoice_item_interval bills pending items on a schedule.
- How far back can a SaaS company bill for unbilled seats?
- As far back as the contract supports, and a lawsuit to collect is limited by a state statute of limitations that differs by state: Delaware’s §8106 sets 3 years for an action based on a promise, California’s §337 four years on a written contract, Florida’s §95.11 five years on a written instrument, and New York’s CPLR §213 six years on a contractual obligation. Which state’s period applies, when it starts, and whether paid invoices close earlier periods is for an attorney.
Keep reading
Related answers
Where this shows up
Sources
- Set up per-seat pricing · Stripe Documentation, 2026
- Set product or subscription quantities · Stripe Documentation, 2026
- Prorations — default behavior, immediate prorations, disabling prorations, preview · Stripe Documentation, 2026
- Subscription invoices — pending invoice items and pending_invoice_item_interval · Stripe Documentation, 2026
- Configure the customer portal — update quantities, manage downgrades · Stripe Documentation, 2026
- Del. Code tit. 10, § 8106 — Actions subject to 3-year limitation · Delaware Code Online, Delaware General Assembly, 2026
- Cal. Code of Civil Procedure § 337 — Within four years · California Legislature text, via Public.Law, 2025
- Fla. Stat. § 95.11 — Limitations other than for the recovery of real property · The Florida Legislature, 2026
- N.Y. Civil Practice Law and Rules § 213 — Actions to be commenced within six years · New York State Senate text, via Public.Law, 2026
The next step
Bring us the process that keeps getting stuck.
A 20-minute conversation about the workflow, the teams and the systems involved — and a straight answer on whether The Revenue Review is the right next step. If it is not, we say that on the call.
A real person answers or calls you back the same business day.