SaaS Billing & Recurring Revenue Management3 min readUpdated September 2026

The Only Recurring Line on the Books Is the Inspection Retainer

Design phases on a structural engineering project bill against milestones set two years earlier in the original proposal, tied to construction progress that rarely moves on schedule. The inspection retainer that follows project completion is often the only line on the firm's books that actually recurs month to month. Treating milestone billing like a subscription, or the retainer like a project fee, is where firms run into trouble.

Here's a checklist of the mistakes that actually cost engineering firms time and money once they've picked a billing setup.

Vendors Covered in this Article

Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.

Why Not Force Milestone Payments Into a Subscription Schedule?

A design phase milestone, say, payment due on submission of construction documents, doesn't happen on a predictable monthly cycle; it happens whenever the project actually reaches that point, which could slip by months if permitting stalls or a client changes scope. Neither Stripe Billing nor Chargebee should treat this as a subscription with a billing interval. Set each milestone up as its own one-time invoice, triggered manually or through your project management system when the milestone is actually reached, rather than trying to force it onto a recurring schedule that has nothing to do with when the money is actually owed.

Pitfall: Letting the Inspection Retainer Drift From What's Actually Being Inspected

A post-construction inspection retainer, billed monthly for ongoing structural or code-compliance oversight, is genuinely recurring and fits a true subscription well in either platform. The risk isn't the billing mechanism, it's scope drift: a retainer priced for quarterly site visits that quietly becomes monthly visits because a client kept asking for more without the fee being revisited. Review retainer scope against actual inspection frequency at least twice a year, and treat a scope increase as a price conversation, not something the recurring invoice should just absorb.

Pitfall: One Client Record Hiding Two Unrelated Fee Structures

A client with an active design project and a separate ongoing inspection retainer for a different, already-completed building needs those two fee structures kept genuinely separate, even though they're the same client and the same relationship manager. Chargebee handles multiple distinct subscription and one-time billing objects under one customer record without custom development, which matters if your firm doesn't have an engineer free to build that separation in Stripe Billing's API. Either way, resist the shortcut of combining both fee types into one invoice just because it's the same client; a delayed milestone payment shouldn't be able to make an unrelated inspection retainer look unpaid in your records.

How Do You Track Retainage Held Back Until Project Closeout?

Many engineering contracts include a retainage clause, a percentage of each milestone payment held back until the project closes out and final approvals clear. Neither billing platform has native retainage logic, since both are built around either a full one-time charge or a recurring subscription, not a partial holdback released later against a separate condition. Track retainage owed in your own project accounting system, and when it's time to release it, bill it as its own one-time invoice tied explicitly to that project's closeout, not folded into whatever the next milestone or retainer invoice happens to be.

Pitfall: Underpricing the Retainer Because It Started as a Favor

Post-project inspection retainers often start informally, a client asks for occasional oversight after handoff, and the firm quotes a low monthly number without much analysis because the relationship already exists. That number tends to stick for years even as the actual scope of work grows, because there's rarely a natural trigger to revisit it once it's set up as a recurring subscription that just renews quietly. Set a calendar reminder tied to the retainer's start date to review its price against current scope and current billing rates at least annually, since neither platform will flag an underpriced retainer for you.

A Worked Example: Splitting a Combined Client Statement

Say a client has a structural project in construction administration, billing incrementally as work continues, and a separate monthly inspection retainer on a building the firm designed five years earlier. A combined monthly statement can show both for the client's convenience, but each should trace back to its own invoice number, its own project code, and its own approval history. If the CA phase runs into a dispute over scope, that shouldn't put the unrelated inspection retainer's payment status in question, and keeping the two as genuinely separate billing objects from the start is what makes that separation hold up if a client ever disputes one and not the other. That same separation also makes year-end revenue recognition simpler, since project-based fee revenue and true recurring retainer revenue follow different accounting treatment and shouldn't be tangled together in one billing record.

Avoid the common billing mistakes with this checklist:

  • Set up each design milestone as its own one-time invoice, triggered when the milestone is reached instead of on a calendar interval.
  • Price the inspection retainer against the visits it actually covers, and revisit the fee whenever the scope quietly grows.
  • Keep design project fees and the inspection retainer as separate billing objects, even with one client record and one relationship manager.
  • Bill milestones net of retainage, and track the held-back amount in project accounting until closeout.
  • Trace each item on a combined statement back to its own invoice number, project code, and approval history.
Executive Capability Standard

What Good Looks Like

A well-run engineering firm can show, for any client, exactly which milestone payments are outstanding against the original proposal schedule and what the current inspection retainer covers, without either figure drifting from what the project actually requires.

Building The Capability (5-Stage Skill Ladder)

1. Learn:Pull the milestone schedule from five active projects and confirm each payment trigger is still tied to the actual construction milestone defined in the original proposal, not a calendar date.
2. Do Manually:Track retainage held back on each milestone in a spreadsheet by project until the pattern of how much accumulates before closeout is clear.
3. Delegate:Give a project accountant ownership of triggering milestone invoices and reviewing retainer scope, rather than leaving both to the project engineer.
4. Automate:Connect your project management system to Stripe Billing or Chargebee so a milestone reaching completion triggers its invoice without a manual entry.
5. Buy:Run inspection retainers as true subscriptions in either platform, with milestone and retainage billing handled as separate one-time invoices tied to project status.

How to Get Started

Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.

Frequently Asked Questions

Should design milestone payments and the inspection retainer share one invoice?

Only if the timing happens to align, and even then keep them as clearly separated line items or invoice numbers. A delayed milestone shouldn't complicate collection on an unrelated recurring retainer, so most firms find it cleaner to keep the two as entirely separate billing objects, even on the same client account.

How do we handle retainage held back on a milestone payment?

Bill the milestone net of the retainage percentage, and track the held-back amount separately in your project accounting. When the project closes out, generate a separate one-time invoice for the retainage release, tied explicitly to that project rather than blended into any other billing on the account.

Is it worth paying for Chargebee if design milestones are most of our revenue?

Probably not on their own, since milestone billing is one-time invoicing either platform handles similarly well. Chargebee's cost is easier to justify once inspection retainers, or other genuinely recurring revenue, make up enough of your book that a billing coordinator needs to manage multiple ongoing subscriptions without pulling in an engineer for every change.

About the numbers

This guide doesn't quote a sourced benchmark. Figures in it are estimates or general guidance, so check them against your own numbers.

Related Guides