River
Y CombinatorBacked by Y Combinator

Free template

Revenue Recognition Policy Template

An ASC 606 revenue policy organized by the judgments your contracts raise, plus sheets that test it against every contract you have signed.

Free download · No account needed

What you get

Pack of 9 files: 4 documents, 5 spreadsheets

Revenue Recognition Policy Template
  • How a Policy Is TestedDocument
  • Deferred Revenue NoteDocument
  • Revenue PolicyDocument
  • Contract Review ChecklistDocument
  • Contract RegisterSpreadsheet
  • Performance Obligation MappingSpreadsheet
  • Policy CoverageSpreadsheet
  • Open DeterminationsSpreadsheet
  • Deferred Revenue RollforwardSpreadsheet
RiverRevenue Recognition Policy Template

Policy Coverage

[Company] — policy scored against [__] signed contracts

The join runs both ways. Down the rows, which determinations have a rule. Down the second block, which rules have contracts. Both directions produce deletions.

DeterminationContracts where it must be decidedDecided by the policyNot decidedRule that decides itWhere the gap sits
Number of performance obligations—————
Principal or agent—————
Over time or point in time—————
Measure of progress—————
Enforceable contract term—————
Material right—————
Coverage——— —

Three states, and only two of them are visible in a straight read

Decided by one ruleThe policy works here and the preparer needs nobody
Decided differently by two rulesFindable by reading the policy, because the two rules contradict
Not decided at allInvisible. Nothing in the document points at the hole

Only the contracts know about the third state, which is why they get read before the policy does.

Page 1 of 1184 words

How to write a revenue recognition policy

A revenue recognition policy is the written set of decisions your company uses to apply ASC 606, the US GAAP revenue standard, to the contracts it actually signs. A good one names each type of contract and decides the judgments it raises. Those include how many distinct promises a contract holds, whether revenue is gross or net, and when it is recognized. It records the evidence for each decision, so two accountants holding the same contract reach the same number.

Write it from your signed contracts outward, not from the standard downward. A policy that restates the five steps can read well and still say nothing about your largest judgment.

A man in glasses reading a page on a clipboard at his office desk, with a laptop beside him
Read each signed contract before you write the rule that governs it. Photo: Vitaly Gariev on Unsplash

Start with the contracts you've signed

Collect every customer agreement in force: master agreements, order forms, statements of work, amendments and side letters. Read the signed versions, not your standard form. An amendment that changed a termination clause can change the accounting, and you won't see it in a billing export.

Then set aside what the standard doesn't cover. ASC 606 applies to contracts with customers unless another standard governs them, such as insurance or lease contracts1. Leases follow ASC 842 and get their own lease schedule.

Give each remaining contract one row: the customer, what you sell, the revenue for the period, the stated term and the termination clause copied word for word. Add up the revenue and tie it to your income statement. If it doesn't tie, find out why before you write any policy.

Find the judgments your contracts raise

ASC 606 works in five steps: identify the contract, identify the performance obligations, determine the transaction price, allocate it, and recognize revenue when or as each obligation is satisfied. The FASB set them out in Accounting Standards Update 2014-091, and IFRS 15 uses the same five steps2.

For every contract, record the answer to each judgment below, or write "not determined" if the contract doesn't settle it. Never leave a cell blank, since a blank reads as decided. Then group contracts only where all six come out the same way.

Six judgments to check in every contract

JudgmentThe question your policy answersWhere it shows up
Performance obligationsIs each promise distinct, or part of one combined obligation?Setup or implementation sold with software
Principal or agentDo you control the good or service before the customer gets it?Resale, marketplaces, outside fulfillment
TimingOver time, or at a point in time?Licenses sold with support
Measure of progressWhich input or output method measures progress, and how?Services billed by project or milestone
Contract termHow long are both sides actually bound?Termination for convenience clauses
Material rightsDoes an option give a benefit the customer would not otherwise get?Renewal discounts, free months, credits

SEC staff have asked public companies about these same judgments. In September 2018, they asked eBay how it decided when it was a principal and when an agent3 in its revenue sharing arrangements. The same letter asked whether discounts on future services were a material right. That December, they asked MDC Partners how it determined it had more than one performance obligation4 and how it applied its input methods.

Read the termination clause and the options

Two judgments hide in clauses that never reach an invoice. The first is the contract term. ASC 606 applies to the period in which both parties have present enforceable rights and obligations1, and a cancellation right can cut that period short.

Deloitte's revenue recognition roadmap works through a contract priced for two years that the customer can cancel after six months without penalty. In Deloitte's view, it generally has a six-month term5, and the fixed pricing beyond six months has to be checked for a material right.

The second is customer options: a renewal priced below list, free months, or credits toward future purchases. Under the standard, an option is a separate obligation only if it gives the customer a material right it would not receive without entering into that contract1. If it does, part of today's price waits until the option is used or expires.

Copy the clause, not a summary

A note that says "three-year term" can hide a 90-day exit with no penalty, and that exit can set the term you account for.

Organize the policy by judgment, not by step

Write one section per judgment your contracts actually raise. Each section names the contract groups it governs, states the decision and cites the evidence behind it: the clause, the control indicators or the pricing data. A line saying revenue is recognized "in accordance with ASC 606" restates the question instead of answering it.

Some judgments won't be settled when you write. Mark them open, with an owner and a date, rather than covering them with a general principle. Then delete every rule that governs no contract you hold, such as bill-and-hold language in a software company. Leftover boilerplate teaches readers to skim.

ExampleOne judgment, written three waysAn illustrative example written for this guide. The contracts are made up.

Vague: Subscription revenue is recognized ratably over the contract term in accordance with ASC 606.

Decided: Standard order form, 45 contracts. Either party may cancel on 30 days' notice with no penalty, so the enforceable term is 30 days, whatever the stated term. Evidence: clause 12.2 of the form.

Open: Negotiated multi-year contracts, 23 contracts on 11 termination clauses. Enforceable term not yet decided. Owner: controller, with outside counsel. Decide by January 23.

  • Points to evidence. The decided rule cites the clause that settles the term.
  • Open, not hidden. The undecided group gets an owner and a date, not a vague principle.

Pricing needs a section too. If discounts, rebates, credits or penalties can change the price, ASC 606 says to estimate the amount you'll be entitled to1, so name your method. For bundles, it splits the price in proportion to standalone selling prices1, so say where each comes from.

So do sales commissions. ASC 340-40, added alongside ASC 606, says to capitalize the incremental costs of obtaining a contract1, such as a commission, if you expect to recover them. If the amortization period would be a year or less, you may expense them as incurred. A sales commission calculation template tracks what you pay.

Keep the revenue recognition policy current

Test the draft by counting. For each judgment, how many contracts need it, and how many does the policy decide? The gap is your to-do list, ranked by the revenue behind each item. Count again after any new contract form or product launch, since either can create a judgment no rule covers.

Roll deferred revenue forward by contract group, tied to the balance sheet at both ends, to show how much of it rests on open judgments. Reconcile it monthly with your other balance sheet accounts. Keep a short summary of the policy in your accounting policy manual, with the full version beside it.

US GAAP also requires you to disclose the judgments that significantly affect the amount and timing of revenue1, though private companies may leave out some of the detail. A policy organized by judgment gives you a head start on that note.

Before you adopt the policy

  • Every contract in force has a row, and revenue ties to the income statement
  • Each termination clause is copied word for word
  • Every rule names the contracts it governs
  • Every renewal discount, free period and credit is recorded, decided or not
  • Open judgments have an owner, a date and the revenue at stake
  • No rule covers an arrangement you never sign

Bring in your accountant

This guide and the template are not accounting advice. Take gross-versus-net, distinct services and other hard judgments to a CPA or your auditor before your financial statements rely on them.

The template on this page includes a sample policy written this way, plus the sheets to test yours. With Edit with AI, River builds the register from your contracts and scores your current policy against it.

How to use this template

Use the files as they are, or open them in River. River asks for your signed customer contracts, order forms, statements of work and amendments, plus your current policy and deferred revenue balances. It reads everything before it writes, builds the Contract Register, scores your existing policy against it and drafts a replacement organized by judgment. Open questions stay open, ranked by the revenue behind them, for you and your accountant to settle.

  1. Download it or open it in River

    Get the four Word documents and five CSV sheets free, or open the template in River to work through it with AI.

  2. Send your signed contracts

    Share order forms, agreements, statements of work, amendments and your current policy. Scanned PDFs work; a billing export alone does not.

  3. Get the score and a draft

    River fills in the Contract Register, scores your policy's coverage, ranks open judgments by revenue and drafts the rewritten policy.

  4. Settle the open questions

    Take each open judgment to your accountant, ask River for changes, and rescore the policy when you add a new contract form.

What's in the template

Four of the sheets, filled in for one populationContract Register, Policy Coverage, Performance Obligation Mapping and Deferred Revenue Rollforward.
Revenue Recognition Policy Template
RiverContract Register

Contract Register

Calderwood Systems, Inc., 68 active contracts at 31 December 2026. An illustrative population. Grouped only where all six determinations resolve the same way, which is why implementation bundles are their own group.

GroupContractsAnnual revenueTermination clauseEnforceable termObligationsPrincipal or agentMeasure of progressMaterial rightUncovered
Standard SaaS346,120,00030 days for convenience30 days1PrincipalRatable8 carry a renewal discount8
Multi-year SaaS with implementation145,460,000Mixed, 11 distinct formsNot determinedNot determinedPrincipalNot namedNone42
Usage based61,180,00030 days, one committed minimum5 of 61PrincipalConsumption4 carry a tier discount5
Marketplace resale62,140,00030 to 60 days30 to 60 days1Not determinedn/aNone6
Perpetual licence with support52,210,000Support cancellable annuallyNot determined2PrincipalNot namedNone15
Enterprise with acceptance31,290,000Cause onlyNot determinedNot determinedPrincipalNot namedNone9
TOTAL6818,400,000      85

Revenue ties to the income statement, which is the only thing proving the register is complete. The uncovered column is the output: 85 determinations across 40 of the 68 contracts, and none of them is findable by reading the policy.

RiverPolicy Coverage

Policy Coverage

The join, run in both directions. Fourteen numbered rules extracted from the policy dated 14 March 2022, scored against the register above.

DeterminationMust be decidedDecidedNot decidedRule that decides itWhere the gap sitsConsequence if left open
Number of performance obligations685117Rule 2, single subscription obligation14 multi-year, 3 enterpriseImplementation fee released on the wrong pattern across 6,750,000 of contract value
Principal or agent606NoneAll 6 resale arrangements2,140,000 billed gross against a net position of 312,000
Over time or point in time68635Rule 3, subscription over time5 perpetual licenceLicence may be point in time while support is over time
Measure of progress28622Rule 4, usage on consumption14 multi-year, 5 perpetual, 3 enterpriseNo input method named, so no two preparers reach the same number
Enforceable contract term684523Rule 6, standard form 30 day notice14 multi-year, 1 usage, 5 perpetual, 3 enterpriseA stated term that is not the enforceable one changes the transaction price
Material right12012None8 standard SaaS, 4 usageRenewal discounts never assessed and never allocated
TOTAL2501658566% coverage40 of 68 contracts13,352,000 of revenue behind at least one open determination
Rules with no contract behind themContracts governedRecommendation
Rule 9, percentage of completion on fixed price construction type contracts0Delete
Rule 11, bill and hold arrangements0Delete
Rule 12, consignment sales0Delete
Rule 14, sublicensing of third party intellectual property0Delete
4 of the 14 rules as written0Governs nothing and makes the rest read as boilerplate

Two determinations have no rule at all, and they are the two the population would have flagged on day one: gross versus net on a resale book, and whether a renewal priced below list is an option the customer paid for.

RiverObligation Mapping

Performance Obligation Mapping

The contracts carrying an open determination, promise by promise, including the promises nobody invoices. Allocation is relative standalone selling price.

ContractCustomerObligationDistinctInvoicedStandalone priceBasisAllocatedDifferenceStatus
CW-2024-002Rowntree IndustrialImplementation servicesNot determined180,000210,000Observed across 12 similar engagements191,578.95+11,578.95Open. Distinctness undecided
CW-2024-002Rowntree IndustrialSubscription, 36 monthsYes1,380,0001,500,000List price 500,000 a year1,368,421.05(11,578.95)Depends on the row above
CW-2024-002 Contract total 1,560,0001,710,000 1,560,000.000.00Allocation ties. The determination does not
CW-2024-018Grantham MarketplaceResold platform access, measured grossYes540,000540,000Amount billed to the end customer540,000.000.00Open. Gross or net undecided
CW-2024-018Grantham MarketplaceThe same obligation, measured netYes78,70078,700Commission retained78,700.00(461,300.00)One obligation, two answers, 461,300 apart
CW-2025-004Ashcombe LogisticsSubscription, 12 monthsYes180,000180,000List price175,324.68(4,675.32)Allocated after the renewal option
CW-2025-004Ashcombe LogisticsOption to renew 20 percent below listNot determined04,800Discount value on the expected renewal4,675.32+4,675.32Open. Material right undecided
CW-2023-044Stonebeck ManufacturingPerpetual software licenceYes1,850,0001,850,000Stated in the order form1,850,000.000.00Open. Functional or symbolic undecided
CW-2023-044Stonebeck ManufacturingAnnual support and updatesYes610,000610,000Renewal price observed for 3 years610,000.000.00Open. No input method named
CW-2025-012Ilsington Data CoPlatform access on consumptionYes203,000203,000Rate card203,000.000.00Closed. Every determination decided

The Ashcombe option is invoiced at nothing and still takes 4,675.32 of the transaction price if it is a material right. That is the row an invoice-driven schedule can never produce, because the promise has no line on the invoice to be produced from.

RiverDeferred Revenue

Deferred Revenue Rollforward

By the same contract groups, tied to the balance sheet at both ends, with the column that says how much of the closing balance moves on a question nobody has answered.

GroupOpeningBillingsRevenueClosingReleased from openingClosing behind an open determinationWhich determination moves it
Standard SaaS1,520,0006,340,0006,120,0001,740,0001,520,000424,000Material right on the 8 contracts with a renewal discount
Multi-year with implementation1,910,0005,880,0005,460,0002,330,0001,780,0002,330,000Distinctness. Either the fee releases on its own pattern or it merges into the subscription
Usage based62,0001,196,0001,180,00078,00062,00054,000Material right on the 4 with a tier discount or shortfall credit
Marketplace resale02,140,0002,140,000000Balance is nil. Gross or net moves revenue by 1,828,000 and leaves this column alone
Perpetual licence with support618,0002,690,0002,210,0001,098,000478,0001,098,000Whether the licence is functional and releases at a point in time
Enterprise with acceptance70,0001,394,0001,290,000174,00070,000174,000Whether acceptance is a substantive gate on transfer of control
TOTAL4,180,00019,640,00018,400,0005,420,0003,910,0004,080,00075.3% of the closing balance
Agrees to the balance sheet31 Dec 2025 Income statement31 Dec 202693.5% of opening 270,000 of the opening balance never released

Both ends tie, which is where most rollforwards stop and where this one starts. Three quarters of the closing balance depends on an answer nobody has given, and 270,000 of last year's deferral is still sitting there against a promise nobody can now identify.

  • Revenue PolicyA sample policy organized by judgment, each section naming the contracts it governs and the evidence behind it.
  • Contract Review ChecklistSix questions to answer before a new contract or amendment is signed, and when to escalate it.
  • How a Policy Is TestedHow to count which judgments your policy decides, with three SEC comment letters showing why it matters.
  • Deferred Revenue NoteHow to read the rollforward once it ties, and how much of the balance rests on open questions.
  • Contract Register sheetOne row per signed contract, with its termination clause word for word and all six judgments.
  • Performance Obligation Mapping sheetEvery promise in each contract under review, including unbilled ones, with standalone selling price, evidence and allocation.
  • Policy Coverage sheetFor each judgment, how many contracts need it, how many the policy decides, and rules that govern nothing.
  • Open Determinations sheetUndecided judgments ranked by the revenue behind them, with the evidence needed, an owner and a date.
  • Deferred Revenue Rollforward sheetOpening balance, billings, revenue and closing balance by contract group, tied to the balance sheet at both ends.

Common questions

What should a revenue recognition policy include?

A scope naming the contracts it covers, then one section per judgment your contracts raise: performance obligations, principal or agent, timing, measure of progress, contract term and material rights. Add how you estimate variable fees and set standalone selling prices. Each section names the contracts it governs, states the decision and cites the evidence. Unsettled judgments are marked open, with an owner and a date.

What are the five steps of revenue recognition?

Identify the contract, identify the performance obligations in it, determine the transaction price, allocate that price to the obligations, then recognize revenue when or as each is satisfied. ASC 606 and IFRS 15, both issued in May 2014, share these steps. What differs between companies is how the steps apply to the contracts they sign, and that is what a policy spells out.

How long should a revenue recognition policy be?

As long as your contracts require and no longer. Write one section for each judgment your contract types actually raise, so a company selling one subscription form needs far less than one with resale, licenses and services. If a draft runs longer than the policy it replaces, it is probably restating the standard rather than deciding anything.

How often should you update a revenue recognition policy?

Review it at least once a year, and again whenever you sign a new contract form, launch a product or change how you price. Each can bring a judgment your current rules don't decide. Check new and amended contracts against the policy before they are signed, so gaps surface while they are still cheap to fix.

What is a material right in revenue recognition?

A material right is an option that gives a customer a benefit they wouldn't get without the contract, such as a renewal discount deeper than you normally give. ASC 606 treats it as a separate performance obligation, so part of the price is deferred until the customer uses the option or it expires. Options cost nothing at signing, which makes them easy to miss.

Is this revenue recognition policy template free?

Yes. Download the four Word documents and five CSV sheets with no signup. They come filled in for a made-up software company, Calderwood Systems, so you can see how the register, coverage score and policy connect before you clear them. Edit with AI opens the same template in River.

What does Edit with AI do?

It opens the template in a free River workspace. River asks for your signed contracts, amendments, current policy and deferred revenue balances, then builds the Contract Register and scores your policy against it. It ranks the gaps by the revenue behind them and drafts a new policy organized by judgment. It won't decide open judgments for you; those stay with you and your accountant.

Sources

  1. FASB. “Accounting Standards Update No. 2014-09, Revenue from Contracts with Customers (Topic 606).” storage.fasb.org (opens in a new tab)

  2. IFRS Foundation. “IFRS 15 Revenue from Contracts with Customers.” ifrs.org (opens in a new tab)

  3. U.S. Securities and Exchange Commission. “Staff comment letter to eBay Inc., September 24, 2018.” sec.gov (opens in a new tab)

  4. U.S. Securities and Exchange Commission. “Staff comment letter to MDC Partners Inc., December 20, 2018.” sec.gov (opens in a new tab)

  5. DART – Deloitte Accounting Research Tool. “4.4 Contract Term.” dart.deloitte.com (opens in a new tab)

Written by

Chandler Supple

Co-founder & CEO, River

Chandler has spent the last six years working in AI, building tools for millions of users and Fortune 100 companies. In 2025, he co-founded River to build a new kind of operating system for AI agents.

Reviewed by

Brian Joseff, Co-founder, River