You signed a fixed-price contract in January. By October, your costs have climbed 30 percent and the price is locked. Every month you keep performing digs the hole deeper — and walking away triggers a penalty clause. Here is the question your books have to answer before the contract ends: how much of that future loss do you recognize right now?
Under international accounting rules, the answer can be "all of it, today." A contract whose unavoidable costs exceed its expected benefits is called an onerous contract, and IFRS requires you to book the expected loss as a liability immediately — not gradually as you perform the work. US GAAP is narrower and reaches a different answer for most small businesses. Either way, the test behind the rule doubles as the most useful decision tool you have when a deal turns against you: it prices your cheapest exit.
What Makes a Contract "Onerous"?
Strip away the Latin-sounding label and the definition is arithmetic. A contract is onerous when the unavoidable costs of meeting your obligations exceed the economic benefits you expect to receive. You are contractually bound to a deal that loses money, and there is no cost-free way out.
Two features of that definition matter more than they first appear.
First, the contract does not need to have been a bad deal from day one. Many onerous contracts start out profitable and turn loss-making when circumstances change: material prices spike, a key subcontractor raises rates, new regulation adds compliance costs, or the customer's fixed price turns out to cover less scope than you estimated. A contract can also be onerous from inception — an underbid fixed-price job you signed to win a foothold client, for example. The accounting test does not care how you got here. It only asks what the remaining obligations will cost versus what they will pay.
Second, "unavoidable" does real work. Routine purchase orders you can cancel without penalty are not onerous, because you can simply avoid the cost by cancelling. A contract only becomes onerous when you are stuck: perform at a loss, or pay to get out. If neither branch costs you anything beyond what you will receive, there is no onerous contract and no liability — just a thin-margin job.
The Two Numbers That Matter: Fulfill vs. Exit
The heart of the rule is a comparison between your two ways out. Standard-setters describe the unavoidable cost as the least net cost of exiting the contract, which is the lower of:
- The net cost of fulfilling it — what it will cost to finish the work, minus what you will be paid.
- The compensation or penalties from failing to fulfill it — the exit fee, damages, or penalty clause you would owe for walking away.
The provision you book is the lower number. Walk through a concrete case. You run a small commercial cleaning company and signed a one-year, fixed-price contract: $60,000 for twelve months of nightly service, or $5,000 a month. Six months in, wage increases push your monthly cost to $6,500. Six months remain.
- Fulfill: 6 months × ($6,500 − $5,000) = $9,000 loss.
- Exit: the contract's termination clause demands two months' fees, 2 × $5,000 = $10,000 penalty.
The lower number is $9,000, so the provision is $9,000. Finishing the job is — barely — cheaper than walking away.
Now change one fact: suppose the termination clause demands only one month's fee, $5,000. The lower number is now $5,000. You would book a $5,000 provision even though fulfilling costs you $9,000, because a rational business would exit rather than perform. The liability reflects your cheapest way out, not your most likely one.
That comparison is the whole game. Notice what it implies: if you forget to run the exit side of the test, you overstate the liability. If the penalty is smaller than the performance loss and you provision the full performance loss anyway, your balance sheet carries a liability you would never actually incur.
What Counts as the "Cost of Fulfilling"?
For years, accountants argued about which costs belong in the fulfill side. Does it include only the extra labor and materials the contract consumes, or also a share of the equipment and supervision the job uses? The IASB settled the question with an amendment to IAS 37 effective January 1, 2022: the cost of fulfilling comprises all costs that relate directly to the contract, in two buckets:
- Incremental costs — spending you would avoid entirely without this contract. Direct labor on the job, materials consumed, subcontractor fees, travel to the site.
- An allocation of other directly related costs — a share of costs that serve many jobs but partly serve this one. The classic example is depreciation on equipment used to perform the contract, or allocated supervision time for the crew doing the work.
What stays out: general and administrative overhead that would exist with or without the contract, unless the contract explicitly lets you charge it to the customer. Selling costs already incurred are out too — only future costs count, because only future costs are unavoidable. Money already spent is sunk, and a provision measures a present obligation to spend more, not regret about what is gone.
One more sequencing rule catches people out. Before you recognize a separate provision for an onerous contract, you first write down any assets dedicated to that contract — specialized equipment, capitalized setup costs, inventory bought for the job — to their recoverable amount. Only the remaining loss becomes a provision. The logic is that part of the loss may already be sitting on your balance sheet as an overstated asset, and double-counting it as a provision too would state the loss twice.
How US GAAP Handles the Same Problem
Here is where American small businesses need to pay attention, because US GAAP deliberately has no general onerous-contract rule. The FASB and IASB both considered putting one in the revenue standard (ASC 606 / IFRS 15) and both decided against it. Under GAAP, liabilities for expected future operating losses are generally not accrued — the loss hits your books as you perform the work and incur the costs, month by month, not up front.
GAAP does require up-front loss recognition in specific pockets:
- Construction-type and production-type contracts (ASC 605-35, retained after the ASC 606 transition). When current estimates of consideration and contract costs indicate a loss — on a single performance obligation or the whole contract — the entire anticipated loss is recognized as soon as it becomes evident. A contractor on percentage-of-completion who realizes a job will lose $40,000 books the full $40,000 now, even if the job is 20 percent complete.
- Separately priced extended warranties and product maintenance contracts have their own loss guidance under the same topic.
- Leases go a different route: a lease that has turned uneconomic does not get an onerous-contract provision. Instead, the right-of-use asset is tested for impairment.
Everything else — the outsourced services agreement, the fixed-fee client engagement, the loss-making supply deal — generally generates no up-front provision under GAAP. The gap is sharpest for ordinary service contracts where the work and the payments are still ahead on both sides: the same cleaning contract from the example above produces an immediate $9,000 provision under IAS 37 and nothing under ASC 450 until each month's loss is actually incurred.
For a small business reporting under GAAP (or on the tax basis, or cash basis), this means the onerous-contract test is a management tool rather than a booking rule. You still want to run the fulfill-vs.-exit math the moment a contract turns — it tells you whether to renegotiate, perform, or pay the exit fee. You just do not book the answer as a liability unless one of the specific GAAP pockets applies. And if you ever present IFRS financials — for a foreign investor, a cross-border acquisition, or a lender that asks for them — the provision appears, so knowing the number in advance avoids surprises.
Spotting One Early: The Warning Signs
Onerous contracts rarely announce themselves. They surface as margin erosion you explain away for a quarter or two. Watch for the pattern:
- Fixed price, floating costs. Any fixed-fee or fixed-price agreement in an inflationary cost environment is a candidate. Your revenue is capped; your inputs are not.
- Scope creep on a capped fee. The client keeps adding "small" requests. Each one is cheap; together they move the job underwater while the price stays put.
- Penalty clauses you have never priced. Many owners sign termination provisions without computing them. Until you run the exit side of the test, you do not know whether the penalty is a deterrent or a bargain.
- Dedicated capacity. A contract consuming equipment, staff, or space you could deploy profitably elsewhere has an opportunity cost that belongs in your decision — even though opportunity cost is not part of the accounting provision, it is part of whether to exit.
The discipline is simple: re-estimate every fixed-price job quarterly. Remaining revenue minus remaining direct cost, compared against the exit penalty. Ten minutes per contract, and no loss-making deal gets more than one quarter old before you see it.
Booking the Provision in a Plain-Text Ledger
Where a provision is required, the entry is straightforward: recognize an expense and a liability for the unavoidable loss. Say your fulfill-vs.-exit test lands on a $5,000 cheapest exit. In Beancount:
2026-10-29 * "Recognize provision for onerous service contract"
Expenses:Contract-Losses:Onerous-Provision 5000.00 USD
Liabilities:Provisions:Onerous-Contracts -5000.00 USDAs you then incur the monthly losses (or pay the exit penalty), you charge them against the provision rather than expensing them again:
2026-11-30 * "November loss on onerous contract charged to provision"
Liabilities:Provisions:Onerous-Contracts 1500.00 USD
Expenses:Contract-Losses:Onerous-Provision -1500.00 USDTwo bookkeeping habits keep this honest. First, revisit the estimate every month-end: if costs move again, adjust the provision up or down through the same expense account, so the balance always reflects the current cheapest exit. Second, keep the provision account separate from general accruals — when the contract ends, the account should clear to exactly zero, which proves the total loss you booked up front matches what you actually spent. You can watch that balance drain on your balance sheet over the contract's remaining life in Fava, which makes the monthly true-up hard to forget.
Under GAAP, where most service contracts get no up-front provision, the same account structure still works as a tracking device: book each month's loss to Expenses:Contract-Losses as incurred and compare the running total against your original estimate. The discipline is identical; only the timing of recognition differs.
Common Mistakes
- Provisioning future operating losses. Neither framework allows it. IAS 37 requires a present obligation from a past event (the signed contract); GAAP's contingencies guidance likewise bars accruing losses you have not yet incurred. A forecast that next year will be unprofitable is not a liability.
- Using only incremental costs. Since the 2022 amendment, the fulfill side includes allocated directly related costs like equipment depreciation. Omitting them understates the provision — and, worse, can flip a contract from onerous to apparently fine.
- Skipping the exit comparison. Provisioning the full fulfillment loss when the penalty is cheaper overstates the liability and hides the fact that walking away is the better deal.
- Counting sunk costs. Money already spent cannot be avoided, so it cannot be part of unavoidable costs. Only the remaining cost to finish counts.
- Forgetting dedicated assets. Writing the provision before impairing contract-specific assets double-counts the loss. Impair first, then provide for the rest.
What to Do When You Spot One
Run the numbers, then act in this order. First, compute both branches — net cost to finish and cost to exit — with current cost data, not the estimates from when you signed. Second, take the fulfill number to the customer and renegotiate: a price adjustment, a scope reduction, or a cost pass-through clause. Most clients prefer a revised deal to a vendor performing resentfully at a loss. Third, if renegotiation fails, take the cheaper branch without sentiment — including the exit penalty if that is what the math says. Fourth, document the estimate and revisit it monthly until the contract ends. The businesses that get hurt by onerous contracts are not the ones that sign them; they are the ones that notice them six months late.





