How to find work you did but never billed
Find unbilled work by matching approved time and completed project records to invoice lines, not by comparing total hours with total revenue. Separate genuine omissions from fixed-fee work, approved write-offs, and billing delays. Then give each exception an owner who can confirm whether it should become an invoice.
What is covered?
- What is covered?
- Why does completed work escape billing?
- Which records reveal unbilled work?
- How do you match work to invoice lines?
- Which exceptions need a human review?
- Which teams leak the most unbilled time?
- How can SIGNLD help organize the investigation?
- FAQ
- Related reading
- Try SIGNLD free
Why does completed work escape billing?
Work can be finished, approved by the customer, and still absent from the next invoice. A consultant logs time against the wrong project. An agency completes an extra revision without recording a change request. An MSP resolves an out-of-scope ticket but leaves it inside a covered support category.
These are different failures, even when they produce the same result: work that finance cannot confidently bill. Comparing total logged hours with monthly revenue does not isolate them. Revenue may include retainers, milestone billing, or work completed in an earlier period.
Treat the search for unbilled work across time tracking and invoicing as a matching problem. Ask which approved work records lack a valid billing destination, then ask whether the contract permits a charge. Missing invoice coverage is a reason to investigate, not automatic permission to send a bill.
This also affects cash expectations. Why profit and cash do not match explains the broader distinction between reported performance and money received. Unbilled work adds another step: the business may not yet have requested payment at all.
Which records reveal unbilled work?
Start with time entries or project completion records from a current file. Include work date, person, customer identifier, project identifier, activity, approval status, billable status, quantity, and any billing reference. Keep the original entry identifier so a reviewer can trace each exception back to its source.
Next, collect invoice lines and credits from QuickBooks or Xero. Useful fields include invoice identifier, customer, project reference, service period, item description, quantity, amount, and status. Draft invoices should remain distinguishable from issued invoices, because they represent different points in the billing process.
Bring in contract terms and approved changes. These determine whether work is hourly, fixed-fee, included in a retainer, or outside scope. CRM records from HubSpot or Salesforce can help identify the commercial owner, but the signed agreement should govern the billing decision.
Choose one cutoff date and preserve the source timestamps. A time export taken after an invoice export can create false omissions if the invoice data has not caught up. Record that limitation before circulating an exception list.
How do you match work to invoice lines?
Begin with stable identifiers rather than descriptions alone. Match customer and project references, then compare service period, work category, and billing arrangement. One invoice line may cover many time entries, so the method must allow grouped matches instead of expecting a separate line for every entry.
Use a review table that makes the next step explicit:
| Work record | Billing evidence | Review outcome |
|---|---|---|
| Approved hourly work | Matching issued line | Covered |
| Approved hourly work | Draft invoice only | Pending issue |
| Fixed-fee project work | Contract milestone coverage | Check milestone status |
| Approved extra work | No matching line | Investigate omission |
| Internal administration | No matching line | Not customer billable |
For an illustrative example, suppose a service team records 40 approved hourly units for a project and finds invoice coverage for 32. The remaining eight units are candidates for review, not confirmed recoverable revenue. Some could belong to an agreed write-off or a later billing period.
Retain the match logic with the result. If a reviewer cannot explain why an entry is covered, the match is not reliable enough to close the exception. Uncertain matches should stay visible rather than being hidden by a broad customer-level total.
Which exceptions need a human review?
Prioritize approved, contractually billable work that is old enough to have passed its normal billing cycle. Then review high-value omissions, repeated project exceptions, and work nearing a contractual billing deadline. Age and contract terms often matter more than the raw count of unmatched entries.
Separate four outcomes: bill now, await an agreed milestone, correct the source record, or accept an authorized write-off. Each outcome needs an owner and a reason. Without those categories, the same entries can return every month and make the backlog look larger than it is.
Check customer expectations before issuing a late invoice. The work may be valid, but an unexplained charge months later can still trigger a dispute. Give the account owner the service evidence, approval trail, and relevant contract language so the conversation starts with facts.
Do not quietly change billable flags to clear the report. Preserve the original record and the approval for any correction. The purpose is to improve billing completeness, not to make an exception count disappear.
Which teams leak the most unbilled time?
There is no universal ranking. Look for operating patterns that create gaps between delivery and billing. Service firms with frequent handoffs, agencies handling repeated scope changes, and MSPs mixing covered support with extra work all have reasons to inspect the boundary closely.
Compare teams on eligible work, not total logged time. A team delivering fixed-fee projects may record many hours that should never become separate invoice lines. An hourly service team needs a different denominator. Mixing those models can make a well-managed team appear to have the largest problem.
Review missing coverage by project type, approval stage, and handoff owner. Repeated exceptions at the same stage suggest a process issue, such as incomplete project setup or delayed approval, rather than individual carelessness. Fix the handoff and then check whether new exceptions decline.
How can SIGNLD help organize the investigation?
Stripe, QuickBooks, Xero, HubSpot, and Salesforce are listed in SIGNLD's connector directory. For time tracking, project tools, and contract records without verified connectors, use files and confirm what they contain. A named time-tool connection should not be assumed from the availability of accounting or CRM connections.
The Knowledge Graph builds automatically from connected sources, with no data engineering required. It provides a foundation for relating records, but source quality still matters. Missing project identifiers and inconsistent customer names need explicit review rather than an assumed match.
Set a Decision Topic around a defined billing period. Use a Decision Brief to organize exceptions, evidence, responsible people, and approved next steps. Keep the Topic focused on billing eligibility and coverage, rather than treating every unmatched hour as lost revenue. Use Risk Alerts to prompt investigation where relevant, while checking what the available records actually support.
Your data stays yours: read-only connections, a private LLM powered by AWS Bedrock on a single-tenant instance, and we never train on it.
Key takeaways
- Match work records to invoice lines using stable customer, project, and billing-period identifiers.
- Separate missing invoices from fixed-fee coverage, billing delays, and approved write-offs.
- Review exceptions with delivery and finance before issuing customer charges.
- Track resolved exceptions to prevent the same billing gaps from returning.
FAQ
Is all unbilled time lost revenue?
No. Unbilled time can include work covered by a fixed fee, internal administration, approved write-offs, or activity waiting for a contractual milestone. Lost billing is only one possible explanation. Compare the work with its contract and billing status before estimating any recoverable amount, and distinguish an eligible charge from money the customer will actually pay.
Can fixed-fee work be checked for billing gaps?
Yes, but match completed work to contractual milestones or fee coverage rather than converting every hour into an invoice line. Time records can show that a milestone is complete or that extra scope needs review. They do not independently establish a right to charge beyond the agreed fee. Use approved changes and the signed agreement to decide what is billable.
What if time entries have no project identifier?
Use customer references, service dates, descriptions, and employee context to create a provisional match for review. Do not treat a similar customer name as conclusive evidence. Ask the delivery owner to confirm uncertain entries, record the decision, and improve project setup for future work. Keeping uncertain records separate is safer than quietly assigning them to a convenient invoice.
Who should approve an invoice for older work?
Finance should verify billing completeness and amounts, while the delivery or account owner confirms the work, customer approval, and contract terms. The person authorized under your billing policy should approve the final invoice. Older work may require additional customer communication, especially when normal billing deadlines have passed or the customer reasonably believed the project was already settled.
Related reading
- Which customers pay late, and what it costs you
- Which sales rep's customers pay the slowest?
- Connecting Stripe and QuickBooks for one financial picture
- Private LLM vs ChatGPT for business data
- Which deals actually made money
Try SIGNLD free
See how SIGNLD works to connect the billing question with its supporting records. Try SIGNLD free with the Free Forever plan or a 14-day Growth trial, no credit card required.