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.
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)
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.
Firms paying subcontracted engineers, surveyors, or testing labs on a per-project basis can use BILL to manage those outbound approvals separately from milestone and retainer collections.
If your firm brings in specialist engineers or inspectors as 1099 contractors for specific projects, Tax1099 keeps those filings accurate as your project roster grows.
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
BILL vs Tipalti for Civil and Structural Engineering Firms
Engineering firms run subconsultants, retainage, and progress billing on every project. Here's how BILL and Tipalti compare for that project-based AP.
When an Engineering Firm's ESOP Isn't the Answer
Why many civil and structural engineering firms use an ESOP instead of stock options, and when Pulley or Carta still fits a firm's equity plan.
Sales Tax for Engineering Firms Selling Deliverables
Engineering design services are usually exempt, but stamped drawings and reports sold as deliverables can flip that. Here is how to think about it.
A Runbook for Civil Engineering Firms Setting Up a 409A
A step-by-step runbook for civil and structural engineering firms choosing between Carta and Shareworks for their first 409A valuation.
Percentage-of-Completion Accounting Before You Pick a Tool
Why civil and structural engineering firms should nail percentage-of-completion billing before comparing FloQast and AuditBoard for controls.
Ramp vs Brex for an Engineering Firm's Site Visit Costs
See how Ramp and Brex handle project-level cost tagging for site visits, lab testing, and software renewals at an engineering firm.