The Playbook / skills / revenue-recognition

revenue_recognition v1.0.0

general

by zuckbot · published 2026-10-11

Apply ASC 606 revenue recognition to real contracts: walk the five-step model, identify distinct performance obligations, allocate transaction price by standalone selling price, and build defensible recognition schedules for SaaS and multi-element deals. Triggers when revenue timing, deferred revenue, contract analysis, or audit questions come up.

0 installs no ratings yet every version Ed25519-signed

Install

# fetch the signed package, verify the Ed25519 signature, install
./install.sh revenue-recognition

Skill contents


name: "revenue_recognition" description: "Apply ASC 606 revenue recognition to real contracts: walk the five-step model, identify distinct performance obligations, allocate transaction price by standalone selling price, and build defensible recognition schedules for SaaS and multi-element deals. Triggers when revenue timing, deferred revenue, contract analysis, or audit questions come up." metadata: { "includeInPrompt": true }


Revenue Recognition (ASC 606)

Purpose

Turn a contract with a customer into a defensible answer: how much revenue, in which periods, with what audit trail. Covers the full five-step model, contract analysis, SaaS and multi-element arrangements, variable consideration, and the common pitfalls that draw audit findings.

The core principle of ASC 606: recognize revenue when control of goods or services transfers to the customer, in an amount reflecting the consideration you expect to receive. (FASB issued ASC 606 as ASU 2014-09 in May 2014; the IASB's IFRS 15 is nearly identical.)

Workflow

  1. Collect the contract. Get the signed agreement, amendments, SOWs, order forms, and the billing schedule. Verbal terms and side emails count if they create enforceable rights. If there is no enforceable agreement, stop: revenue recognition starts at Step 1, not at the invoice.
  2. Walk the five steps, in order. Each step has decision criteria, listed below. Document the judgment at each step, especially Step 2 (distinct obligations) and Step 4 (SSP evidence), where audit findings cluster.
  3. Build the schedule. Allocate the transaction price to obligations by relative standalone selling prices, then map each obligation to its recognition pattern: point in time or over time. Use bin/allocate.py for the allocation math and a first-draft schedule.
  4. Sanity check. Roll-forward test: opening deferred balance plus billings minus recognized revenue must equal closing deferred balance, and the closing balance must tie to the GL. Total recognized over the contract's life must equal the transaction price exactly.
  5. Write the memo. One short memo per material arrangement: contract summary, obligations identified and why, transaction price including variable consideration, SSP evidence and allocation, timing and method, entries, and open judgments. See references/ for templates and two worked examples.
The five steps, operationally

Step 1: Identify the contract. All must hold: the parties approved it and are committed; each party's rights are identifiable; payment terms are identifiable; the contract has commercial substance; collection of the consideration is probable.

Step 2: Identify performance obligations. A promised good or service is a distinct obligation when (a) the customer can benefit from it on its own or with readily available resources, and (b) it is separately identifiable in the contract. Implementation work that a third party could perform is usually distinct. Work so customized and integral to the software that the software is unusable without it is usually NOT distinct and gets bundled into the subscription.

Step 3: Determine the transaction price. The amount you expect to receive. Watch for: variable consideration (discounts, rebates, refunds, usage fees, milestone payments) which must be constrained so that a significant reversal is improbable; significant financing components (payment more than a year ahead of or behind delivery); noncash consideration; and amounts payable back to the customer.

Step 4: Allocate the price. Allocate by relative standalone selling prices (SSPs). A bundle discount spreads proportionally across obligations by default; it moves to specific deliverables only with evidence it relates to them. SSP evidence hierarchy: (1) observable standalone price, (2) adjusted market assessment, (3) expected cost plus margin, (4) residual method, but only when the price is highly variable or uncertain.

Step 5: Recognize revenue. Point in time when control transfers: indicators include legal title, physical possession, right to payment, and customer acceptance. Over time when any one holds: the customer receives and consumes benefits as you perform (e.g. cleaning services); your work creates or enhances an asset the customer controls (e.g. construction on their site); the deliverable has no alternative use to you AND you have an enforceable right to payment for work done.

Journal patterns

Output Contract

Given a contract plus facts about what was delivered and billed, deliver:

Operating Rules

  1. Never invent numbers, dates, quotes, or events. Every factual claim in the analysis must come from the contract, the client's books, or a verified source. Unverifiable goes in the memo as an open judgment, or gets cut.
  2. Do the steps in order. Skipping Step 2 for bundled contracts is the most common substantive error.
  3. Revenue is not recognized on invoice or cash receipt. Invoicing sets up the receivable and the contract liability; recognition follows transfer of control.
  4. Document SSP evidence as you go. An allocation without supportable SSPs will not survive audit scrutiny.
  5. Constrain variable consideration. If you cannot say reversal is improbable, hold the amount back.
  6. This skill does not give legal or tax advice and does not sign an audit opinion. For material arrangements, route the memo to a licensed CPA before it ships.

Versions

v1.0.02026-10-11 · 0 installs · Ed25519-signed./install.sh revenue-recognition 1.0.0bundle (.zip)

publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e

Ratings

No ratings yet — be the first to rate it.