The Revenue Recognition tool calculates each contract's earned revenue and over/under billing position and posts the adjusting journals automatically — no manual math or journal entries required. For the underlying concepts, see Revenue Recognition and WIP.
Navigation: BlueCollar → Project Control Center → Revenue Recognition
When a single run needs more than 20 journals, BlueCollar batches them automatically to stay within NetSuite processing limits.
Save your preferred column layout as a custom View so the grid opens the way you like it every time. A view can be set as your default, kept private to you, or shared publicly with the team — so a controller and a project manager can each work from the columns that matter to them without reconfiguring the grid each visit.
When the Enable Period-Locked Revenue Recognition Workflow preference is turned on (see Prerequisites and Setup), the tool keeps revenue recognition tied to your accounting periods so journals always post to an explicit, controlled period rather than only by date:
This is an optional, opt-in workflow. With the preference off, the tool posts by Through Date exactly as before.
| Field | Meaning |
|---|---|
| Contract # / Project / Project Manager / Customer | Identifying details |
| Subsidiary / Department / Class / Location | Accounting segment values for the contract |
| Projected Contract | Total projected contract value at completion (drives earned revenue) |
| Projected Estimate | Total projected cost at completion |
| Current Contract | Current Contract value (Original + Change Orders) |
| Current Estimate | Current cost estimate |
| Actual Cost to Date | Costs incurred through the Through Date |
| Projected % Complete | Actual Cost to Date ÷ Projected Estimate (capped at 100%) |
| Revenue to Date | Cumulative revenue recognized in prior periods |
| Earned Revenue | Projected % Complete × Projected Contract |
| Revenue to Recognize | Earned Revenue − Revenue to Date |
| Billed to Date | Total invoiced to date |
| Unbilled Retentions | Retention withheld and not yet billed |
| (Over) Billing Balance | Billings in excess of earned revenue (contract liability) |
| Under Billing Balance | Earned revenue in excess of billings (contract asset) |
| (Over)/Under Billing | The net over/under billing position (Earned Revenue − Billed to Date − Unbilled Retentions) |
| Projected GP / Projected GP % | Projected Contract − Projected Estimate, and as a percentage of Projected Contract |
| Current GP / Current GP % | Current Contract − Current Estimate, and as a percentage of Current Contract |
| Actual GP / Actual GP % | Revenue to Date − Actual Cost to Date, and as a percentage of Revenue to Date |
| Grand Total | A summary row totaling the numeric columns |
Each run uses a clearing mechanism so the balance sheet always reflects the correct net position without stale entries piling up:
| Account (example) | Type | Purpose |
|---|---|---|
| Trade AR | Asset | Receivable from invoices |
| Sales | Income | Billed revenue (from invoices) |
| Over/Under Adjustment | Income | The revenue recognition adjustment |
| Direct Costs | Expense | Job cost (bills, JEs, card transactions) |
| Accounts Payable | Liability | Payable for cost transactions |
| Costs in Excess of Billings | Asset | Under billings (contract asset) |
| Billings in Excess of Costs | Liability | Over billings (contract liability) |
| Entry type | How it's created |
|---|---|
| Invoices (AR / revenue) | The BlueCollar Billing tab — posts directly to the GL |
| Cost entries (job cost / AP) | Bills, credit-card transactions, or journal entries tagged to the project |
| Revenue adjustments (over/under) | The Revenue Recognition tool — never enter these manually |
| Retainage invoices | Created inside the BlueCollar billing tool — never manually |
To see all of this play out period by period with real numbers, see the Full Lifecycle Example.
The Revenue Recognition tool is available in English and French, following your NetSuite language preference.