All documentation

Professional services

Revenue recognition

A fixed fee is earned as it is delivered, not when it is invoiced — and the adjustment posts to a real ledger rather than a report.

Invoice £30,000 up front for a three-month project and you have not earned £30,000 in month one. You have earned a third of it and you owe the client the rest of the work. Recognition moves income to match what has actually been delivered, with the difference sitting in deferred revenue — a liability — or accrued income, an asset, where delivery has run ahead of billing.

Most tools stop at a report

They compute a figure and tell you to give it to your accountant. Here the adjustment is an ordinary journal entry in the double-entry ledger — it appears on the journal, reverses like anything else, and passes the same constraints, including the one that refuses a posting into a closed month.

Nothing recognises itself

There is no schedule, no cron and no automatic posting

A schedule reports what should have been earned by a date; posting it is a separate act by a person. This is the one part of the product with a tax and audit consequence attached, and a job quietly moving income between periods is indefensible whatever it computes — the figure it moves is one somebody signs a return against.

Three methods

MethodEarnsNeeds
Evenly over the periodA share of the fee per day elapsedAn end date
As the work is deliveredIn proportion to delivery against an expectationAn expected total
When each milestone is reachedThe milestone's share of the feeMilestones, and somebody marking them reached

Two refusals, and both are the same mistake in mirror

Delivering against an expectation with no expected total is circular — deriving one from progress-to-date would report every project as exactly complete, always. And spreading a fee evenly with no end date has nothing to spread it over, and the alternative recognises a whole fee on day one.

An overrun does not earn more

Every method caps at the contract value. Delivering 130% of what was expected means the work cost more than planned, which is a margin problem — it does not earn revenue the client never agreed to pay. A percentage above 100% quietly recognising more is how a fixed-fee project reports income nobody will ever invoice.

What actually posts

The difference between what should have been earned and what the ledger already says was — never the cumulative figure, which would recognise the same revenue again and again and leave the books internally consistent and wildly wrong. Asking twice in one period therefore posts nothing at all.

Defer
More was invoiced than earned. Revenue moves out of income into a liability.
Release
An earlier deferral unwinding as the work is delivered.
Accrue
More was earned than invoiced. Revenue moves in from an asset.

Named rather than left to a sign

The accounts differ between them, and a column of signed numbers is reliably misread by whoever is skimming — which is everybody.

By the end of the arrangement the deferred revenue account is back to exactly nothing. That is the property an auditor looks for, and it is what the figures are checked against.

What a schedule needs

  • A project. Without one, the only available answer to “what has been invoiced against this” is every invoice the client has ever had — so a company with two arrangements would defer the second's fee against the first, and the deferral would never unwind.
  • A deferred revenue account that is a liability, and a revenue account that is income. Posting a deferral into an expense account balances perfectly and puts a liability where nobody will ever find it.
  • An accrued income account, if the schedule can run ahead of its invoicing.

A schedule with entries behind it is frozen

Every input decides a figure already in the ledger, so changing one restates an entry somebody has reported on. Reverse the entries first — the same rule a fixed asset's depreciation schedule keeps.

Who can do what

ActionNeeds
See a schedule and what it would postfinance:view
Create a schedule, or post a recognition entryfinance:configure