Revenue recognition has a reputation. It sits in the accounting corner, surrounded by standards, technical language, and audit checklists. Many service firms quietly hope finance will “just handle it.” Here is the reality. Revenue recognition is not only an accounting topic. It is operational. It lives inside your projects. It depends on how you define scope, track time, approve milestones, and manage change orders.
If you work under IFRS 15 or ASC 606, you already know this. If you do not, you still feel the impact. Margins swing. Forecasts shift. Auditors ask uncomfortable questions.
Let‘s unpack this in plain language. Then we will look at the practical steps you can take inside your PSA system, using Birdview as a concrete example.
Why revenue recognition feels complicated and why it matters
The billing-based trap is easy to fall into. A project hits a milestone, the team sends an invoice, and finance records revenue. It feels clean and intuitive. It‘s also wrong under IFRS 15 and ASC 606.
Both standards require you to recognize revenue when (or as) performance obligations are satisfied, not when you bill.
This isn‘t just a compliance exercise. A peer-reviewed study on ASC 606 adoption concluded that it has generally increased the value relevance and informativeness of reported revenues. That‘s a fancy way of saying revenue numbers became more decision-useful.
For many service firms, billing and performance happen at different times. Invoice dates and revenue recognition dates don‘t match. Mixing them leads to distorted margins, unreliable forecasts, and uncomfortable audit conversations.
The billing-based trap is easy to fall into. A project hits a milestone, the team sends an invoice, and finance records revenue. It feels clean and intuitive. It‘s also wrong under IFRS 15 and ASC 606.
Why auditors focus on project documentation
Auditors do not start with your invoices. They start with your contracts and project records.
They look for:
- Defined performance obligations
- Evidence of completion
- Approved time entries
- Documented change orders
- Clear linkage between milestones and revenue
If your documentation is scattered across email threads and spreadsheets, audits become stressful. If your PSA system holds structured, consistent data, the conversation changes.
Revenue recognition explained: The five-step model
IFRS 15 and ASC 606 share the same framework. Here is what that means in practical terms for service firms.
Step 1: Identify the contract.
A signed agreement with your client. Seems obvious, but it matters that the scope, price, and payment terms are clearly defined. Verbal agreements and loose emails don’t hold up well.
Step 2: Identify performance obligations.
These are the distinct deliverables you’ve promised. A strategy engagement might have one obligation; a software implementation might have several (discovery, configuration, training, go-live support). The key question is whether each deliverable has standalone value for the client.
Step 3: Determine the transaction price.
How much will you be paid? For fixed-fee projects, this is the contract value. For time and materials, it’s more variable. If there are bonuses, penalties, or variable fee components, those need to be estimated and included.
Step 4: Allocate the price to each obligation.
If your contract has multiple performance obligations, the revenue needs to be split across them based on their relative standalone selling prices. You can’t just dump it all into one bucket.
Step 5: Recognize revenue as obligations are satisfied.
This is the crux. Revenue gets recognized either over time (as the work happens) or at a point in time (when the deliverable is complete). Most service work is recognized over time, using something like a percentage of completion based on effort or progress.
The difference between billing and revenue
Billing is a commercial event. Revenue is an accounting event.
You can bill in advance and recognize revenue later. You can recognize revenue before billing if performance has occurred.
This distinction is uncomfortable at first. Then it becomes powerful. It gives you a truer view of project performance.
Example: fixed-fee project with upfront billing
Imagine a fixed-fee project worth $120,000 with a 600-hour budget. In month one, the team logs 200 hours, but only 180 are approved. That puts progress at 30 percent, so you recognize $36,000 in revenue.
However, the client was billed $60,000 upfront. The $24,000 difference becomes a contract liability, or deferred revenue. As more work is approved, recognized revenue increases and the liability gradually declines.
This is why approved time, locked periods, and documented milestones in your PSA system matter during an audit.
You can bill before revenue is earned, or recognize revenue before you bill. Once you separate those two, you get a much clearer view of project performance.
📚 Read more: Project revenue and project-based billing methods
How the standard applies across different contract types
Time and materials
Generally, the most straightforward. Revenue is recognized as work is performed and billed, since each billing period’s deliverable is distinct. The main risk here is unapproved time sitting in your system. If time hasn’t been reviewed and approved, it’s harder to defend as a basis for recognition.
Fixed fee
Revenue is typically recognized over time using the percentage of completion. This means your completion estimate needs to be grounded in something real, usually budget versus actual effort, milestone progress, or both. Gut feel doesn’t hold up to scrutiny.

Milestone-based contracts
You recognize revenue as milestones are completed, but only if each milestone represents genuine progress toward a performance obligation. If the milestone is purely contractual (tied to billing convenience rather than value delivery), you may still need to use percentage-of-completion logic between milestones.
Retainers
These often involve a recurring payment for a defined scope of services. If the scope is consistent month to month, recognition is typically straight-line. If the scope varies, you need to think about whether you’re actually delivering equal value each period.
Change orders
Every time the scope changes, you potentially have a contract modification. Depending on whether the new scope is distinct, it might be a separate contract or an update to the existing one. Either way, the revenue allocation and recognition logic needs to be updated. Changes that aren’t formally tracked create recognition errors.
📚 Read more: Profit margins in time-and-material vs fixed-fee contracts
The data you actually need in your PSA system
At this point, the theory is clear. The real question is this: where does all of this live? In service firms, revenue recognition does not sit in a spreadsheet. It lives in your PSA system.
- A clear contract structure. Projects in Birdview should reflect how the contract is structured: phases, milestones, or deliverables that map to your performance obligations. Vague project names and generic task lists make it impossible to tie recognized revenue to specific obligations.
- Defined milestones with completion criteria. A milestone shouldn’t just be a date on a Gantt chart. It should represent a specific output, with a clear definition of what “done” looks like. In Birdview, you can structure projects with phases and milestones, and tie completion to actual deliverable sign-off rather than just a task checkbox.
- Approved time entries. For percentage-of-completion calculations, your time data needs to be clean and approved. If a team member logs 20 hours but the project manager hasn’t reviewed and approved them, you’re recognizing revenue based on unverified data. Birdview’s time approval workflows ensure time entries go through a proper review before they influence financial reporting.
- Budget versus actual tracking. Completion percentage is usually calculated as actual approved hours divided by budgeted hours. For this to work, your budget needs to be current and accurate. Stale budgets produce garbage completion estimates. Birdview’s budget vs. actual views give finance a real-time picture of where each project stands, which feeds directly into recognition calculations.
- Change order documentation. Every scope change needs to be tracked as a formal modification. In Birdview, change orders can be logged within the project record, with a history of what changed, when, and by whom. That audit trail is exactly what you need to justify any adjustments to the contract value or recognition schedule.
- Client acceptance records. When a milestone is complete, you need evidence that the client accepted the deliverable. This might be a formal sign-off, an email, or a completed client review in your system. Without it, recognizing revenue at that milestone is hard to defend. Birdview lets you record milestone approvals and link them to project phases, keeping acceptance documentation attached to the relevant project record.
Step-by-step: setting up clean revenue recognition workflows
Step 1: Define performance obligations clearly at project setup
Start at project creation.
Break projects into measurable deliverables. Use phases or milestones. Avoid vague labels such as “ongoing support” without a timeframe or scope.
If a deliverable can be clearly described and assessed as complete, it is easier to link to revenue recognition.
In Birdview, structure the project using phases and milestones. Tie each milestone to a defined outcome. Make sure project managers and finance agree on what “complete” means before work begins.
Align milestones with revenue triggers. If revenue will be recognized at milestone completion, make that explicit in your internal documentation.
Step 2: Align budgets and transaction price allocation
Once performance obligations are defined, connect the contract value to them.
Allocate revenue proportionally. This can be based on estimated effort or standalone pricing logic. Document your rationale.
Inside your PSA, assign budgets per phase or milestone. Ensure total allocated revenue matches the contract value.
Avoid manual reallocations later. Those are hard to explain during audits.

Step 3: Connect time tracking to progress measurement
For over-time recognition, progress measurement is critical.
Approved time entries often serve as the percentage-of-completion indicator. But only if:
- Time is entered consistently
- Time is reviewed and approved
- Periods are locked after close
In Birdview, time tracking workflows allow managers to approve entries. Locking past periods prevents retroactive changes that would alter recognized revenue.
Separate billable and non-billable effort. This keeps your margin analysis clean and ensures progress measures reflect contractual work.
Step 4: Track and document change orders formally
Scope changes happen. That is normal.
Treat each change order as a contract modification. Document it. Get approval. Update contract value in your PSA. Adjust budgets and revenue allocation accordingly.
In Birdview, you can track scope changes within the project, adjust financial values, and maintain a history of modifications. This audit trail becomes invaluable.
Do not rely on email agreements. They are easily lost and difficult to reconcile months later.
Step 5: Document client acceptance and milestone completion
When revenue depends on milestone completion, you need evidence.
Record approval events. That could be a signed acceptance document, a formal confirmation, or a system-based milestone completion with approval.
Link milestone completion to revenue triggers. Make sure project managers understand that marking a milestone complete has financial consequences.
Avoid recognizing revenue without documented evidence. It may feel harmless in the moment. It becomes painful later.
How Birdview supports revenue recognition discipline
Revenue recognition is not a single feature. It is a combination of structured data and controlled workflows.
In Birdview, you can:
- Structure projects with phases and milestones
- Assign budgets and track budget versus actual effort
- Use time tracking and approval workflows as evidence of progress
- Track change orders within the project record
- Align project progress with billing schedules
- Use financial reports such as project profit, expected revenue, and budget versus actual
- Maintain an audit-ready trail of approvals and adjustments
For example, project profit reports provide visibility into recognized revenue versus actual costs. Expected revenue views help compare forecasted recognition with operational progress.
The goal is not to impress auditors with complexity. It is to show consistency and traceability.
Practical reporting controls that reduce audit stress
A strong setup is important. Regular review is equally important.
Monthly revenue recognition review process
Establish a monthly review between finance and project managers.
Review:
- Percentage of completion
- Recognized revenue to date
- Remaining performance obligations
- Change orders in progress
Make this a habit. Short meetings prevent big surprises.
Comparing expected revenue versus recognized revenue
Use PSA reports to compare expected revenue with what has been recognized. If there is a gap, ask why. Is progress overstated? Is the scope delayed? Is billing misaligned? Address discrepancies early.
Monitoring percentage-of-completion alignment
If you use time-based measures, monitor whether actual hours align with revenue recognition. If a project is 80 percent complete operationally but only 50 percent recognized, investigate.
Using dashboard views to identify anomalies
Dashboards help surface anomalies. In Birdview, portfolio-level dashboards can highlight projects with unusual margin swings or unexpected revenue spikes. These are early warning signals.
Ensuring locked periods and historical visibility
After the month-end, lock periods. Preserve historical data. Ensure that any adjustments are documented and traceable. Auditors appreciate consistency. They become concerned when past numbers shift without explanation.
Final thoughts: revenue recognition is operational, not just financial
Revenue recognition starts with project structure. Not with journal entries. It depends on clean time tracking, well-defined milestones, and disciplined change management.
When your PSA system holds structured, reliable data, revenue recognition becomes a reflection of reality. Not a guessing exercise.
Transparency reduces audit risk. Discipline improves margin predictability. And over time, trust in your numbers grows. That is not just good accounting. It is good management.
FAQ
Q: Can we recognize revenue when we invoice?
A: Only if the invoice corresponds exactly to the completion of a performance obligation and you can demonstrate that. In most cases, billing and recognition happen at different times and need to be tracked separately.
Q: What counts as sufficient documentation for a milestone?
A: At minimum: a record of what was delivered, when, and evidence that the client accepted it (formal sign-off, email confirmation, or a documented client review). The more complex the project, the more thorough this documentation should be.
Q: How do we handle a project where the scope keeps expanding?
A: Each change should be treated as a formal contract modification and logged as a change order. Update the transaction price and revenue allocation accordingly. If you let scope drift without formalizing it, your recognition schedule will be disconnected from your actual contract value.
Q: What if our percentage-of-completion calculation produces a different result than our billing schedule?
A: That’s normal. The billing schedule reflects cash flow arrangements. Revenue recognition reflects actual progress. The difference is tracked as either contract assets (recognized but not yet billed) or contract liabilities (billed but not yet earned). Your PSA system should give you the data to calculate both accurately.