---
name: revenue-recognition
description: Automate complex revenue recognition calculations per ASC 606 / IFRS 15 including performance obligation identification, transaction price allocation, deferred revenue tracking, and contract modification handling. Use when implementing revenue recognition policies, processing multi-element arrangements, managing deferred revenue, handling contract modifications, preparing revenue disclosures, or auditing revenue practices. Triggers on phrases like "revenue recognition", "ASC 606", "IFRS 15", "performance obligation", "deferred revenue", "contract liability", "transaction price", "variable consideration", "bill vs recognize", "revenue deferral".
---

# Revenue Recognition (ASC 606 / IFRS 15)

Automate revenue recognition across complex contract structures ensuring compliance with ASC 606 / IFRS 15 standards.

## Workflow

### Five-Step Revenue Recognition Model

Trigger: Contract execution, contract modification, or periodic (monthly) revenue recognition run:

1. **Identify the contract**: Validate all five criteria (approval, identifiable parties, enforceable rights, probable collection, commercial substance). Determine commencement date; assess modification vs. new contract; handle oral vs. written; evaluate combined vs. separate.
2. **Identify performance obligations**: Distinguish distinct goods/services; evaluate distinctness criteria; group interrelated obligations; classify as point-in-time or over-time.
3. **Determine transaction price**: Fixed + variable consideration; constraint on variable; financing component; non-cash consideration; consideration payable to customer.
4. **Allocate to performance obligations**: Based on standalone selling price (SSP); determine SSP via market assessment, cost-plus, or residual; allocate discounts and variable consideration.
5. **Recognize when/as satisfied**: Over-time (three criteria) or point-in-time; select progress measurement (input/output method); recognize when control transfers.

### Monthly Revenue Recognition Run

```
MONTHLY REVENUE RECOGNITION RUN — 5-DAY CYCLE
===============================================

Day 1: Contract Data Refresh
  └─ Import new contracts and amendments from CRM
  └─ Update contract status (active, completed, cancelled, modified)
  └─ Refresh variable consideration estimates (rebates, bonuses, penalties)
  └─ Update progress measurement data (costs incurred, milestones achieved)
  └─ Load FX rates for international contracts

Day 2: Calculation Engine
  ├─ Calculate revenue to recognize this period by performance obligation
  ├─ Update deferred revenue balances (contract liabilities)
  ├─ Process contract modifications (cumulative catch-up or prospective)
  ├─ Adjust for changes in variable consideration (catch-up if constraint lifted)
  ├─ Calculate contract assets (revenue recognized > billed)
  └─ Generate recognition journal entries

Day 3: Validation and Review
  ├─ Revenue by segment vs. prior period (flag > 10% variance)
  ├─ Deferred revenue roll-forward validation
  ├─ Contract asset/liability balance check
  ├─ Remaining performance obligation (RPO) calculation
  ├─ SSP reasonableness test (compare to actual transaction prices)
  └─ Exception report review (unusual patterns, threshold breaches)

Day 4: Management Review
  ├─ Revenue recognition manager reviews exceptions
  ├─ Controller approves material adjustments
  ├─ CFO signs off (for public companies)
  └─ Audit documentation prepared (workpaper trail)

Day 5: Posting and Reporting
  ├─ Post revenue recognition entries to GL
  ├─ Update revenue analytics dashboards
  ├─ Prepare revenue disclosure data (for quarterly/annual reports)
  └─ Archive recognition calculations with version control
```

## Performance Obligation Classification

### Common PO Types by Industry

```
PERFORMANCE OBLIGATION CLASSIFICATION GUIDE
=============================================

SaaS / Cloud Software:
  PO-1: Software License (Point-in-Time)
    - Recognition: Upon delivery/activation
    - Control transfer: Customer can access and use software
    - SSP: Standalone license price or residual if not sold separately

  PO-2: Implementation/Onboarding Services (Over-Time)
    - Recognition: As services rendered (input method: cost-to-cost)
    - Control transfer: Customer benefits as services performed
    - SSP: Standalone implementation fee or market rate

  PO-3: Cloud Hosting/Subscription (Over-Time, Straight-Line)
    - Recognition: Equal monthly amounts over contract term
    - Control transfer: Continuous access to hosted service
    - SSP: Monthly/annual subscription price

  PO-4: Premium Support (Over-Time, Straight-Line)
    - Recognition: Equal monthly amounts over support period
    - Control transfer: Ongoing availability of support
    - SSP: Standalone support fee

  PO-5: Training (Point-in-Time or Over-Time)
    - If standardized: Point-in-time upon delivery
    - If customized: Over-time as training rendered
    - SSP: Per-session or per-program price

Professional Services / Consulting:
  PO-1: Discovery/Strategy (Over-Time)
    - Recognition: Cost-to-cost or milestone-based
    - Progress measurement: Hours incurred / total estimated hours
    - Risk: Estimate changes → catch-up adjustment

  PO-2: Design/Development (Over-Time)
    - Recognition: Cost-to-cost (most common) or milestones
    - Progress measurement: Value of work completed / total value
    - Risk: No alternative use + right to payment → over-time qualifies

  PO-3: Testing/QA (Over-Time or Point-in-Time)
    - If integrated with development: Combined PO
    - If distinct: Point-in-time upon test completion
    - SSP: Separate testing fee if sold standalone

  PO-4: Ongoing Maintenance (Over-Time, Straight-Line)
    - Recognition: Equal monthly over maintenance period
    - SSP: Annual maintenance contract price

Hardware + Software Bundle:
  PO-1: Hardware (Point-in-Time)
    - Recognition: Upon delivery and acceptance
    - Control transfer: Physical delivery + customer acceptance
    - SSP: Hardware list price or market price

  PO-2: Software License (Point-in-Time)
    - Recognition: Upon activation/installation
    - SSP: Software standalone price

  PO-3: Installation/Configuration (Over-Time)
    - Recognition: As installation performed
    - SSP: Installation fee

  PO-4: Maintenance/Warranty (Over-Time, Straight-Line)
    - Recognition: Over warranty/maintenance period
    - SSP: Standalone maintenance contract price

  Key issue: Discount allocation — is discount allocated to all POs proportionally
  or entirely to one PO (e.g., hardware if it's the discount driver)?
```

### Transaction Price Allocation

```
STANDALONE SELLING PRICE (SSP) DETERMINATION
===============================================

Method 1: Adjusted Market Assessment
  - Analyze market conditions and competitor pricing
  - Consider company's market position and value proposition
  - Best when: Product sold in competitive market with observable prices
  - Data sources: Competitor pricing, industry reports, market research
  - Example: Cloud hosting — comparable AWS/Azure/GCP pricing adjusted for features

Method 2: Expected Cost Plus Margin
  - Estimate cost to deliver the good/service
  - Add target margin (based on similar products/services)
  - Best when: Custom service with no direct market comparison
  - Formula: SSP = Expected Cost × (1 + Target Margin %)
  - Example: Implementation services — $200K cost × 1.30 = $260K SSP

Method 3: Residual Approach (Limited Use)
  - SSP = Total Transaction Price − Sum of observable SSPs of other POs
  - Best when: One PO has highly variable/unobservable SSP
  - Restrictions: Only when SSP is highly variable or uncertain (e.g., reseller margin)
  - Example: Reseller arrangement — SSP of reseller services uncertain; allocate residual to product

SSP Documentation Requirements:
  - Method used for each PO (with justification)
  - Data sources and assumptions
  - Date of SSP determination
  - Review frequency (at least annually, or when market changes)
  - Sign-off by revenue recognition manager

Discount Allocation:
  Pro-rata allocation:
    - Discount allocated to all POs proportionally to SSP
    - Default method unless criteria for specific allocation met
    - Example: $1,000 contract, $1,200 total SSP → 16.7% discount to all POs

  Specific allocation to one PO:
    - Discount relates entirely to one PO (e.g., promotional hardware price)
    - Evidence: Separate pricing for that PO at discounted amount
    - Example: Hardware sold at 50% off; software at full price → discount to hardware only

  Partial allocation:
    - Discount relates to subset of POs
    - Evidence: Separate pricing evidence for subset
    - Example: Hardware + software bundle discount; support at full price
```

## Deferred Revenue Management

### Roll-Forward and Analysis

```
DEFERRED REVENUE ROLL-FORWARD — Standard Template
===================================================

BALANCE, Beginning of Period:              $X,XXX,XXX

Additions:
  New billings (not yet earned):           $XXX,XXX
  Contract modifications (additional):       $XX,XXX
  Changes in variable consideration:        ($X,XXX)
  Foreign exchange adjustment:               $X,XXX
  Other additions:                           $X,XXX
Total Additions:                           $XXX,XXX

Deductions:
  Revenue recognized this period:         ($XXX,XXX)
  Contract cancellations/refunds:          ($XX,XXX)
  Write-offs (uncollectible):              ($X,XXX)
  Other deductions:                        ($X,XXX)
Total Deductions:                         ($XXX,XXX)

BALANCE, End of Period:                    $X,XXX,XXX

AGING OF DEFERRED REVENUE:
  Expected recognition < 6 months:       $XXX,XXX (XX%)
  Expected recognition 6–12 months:      $XXX,XXX (XX%)
  Expected recognition 12–24 months:     $XXX,XXX (XX%)
  Expected recognition > 24 months:      $XXX,XXX (XX%)

KEY METRICS:
  Deferred revenue / Annual revenue:    XX% (healthy: 60–150%)
  Quarter-over-quarter change:         +X.X%
  Conversion rate (deferred → recognized): XX%
  Cancellation rate:                   X.X%
```

## ASC 606 Disclosure Requirements

### Public Company Disclosures

```
ASC 606 FINANCIAL STATEMENT DISCLOSURES
==========================================

Required Disclosures (per ASC 606-10-50):

1. Revenue disaggregation:
   - Revenue by segment, geography, product line, contract type
   - Explanation of how disaggregation relates to revenue dynamics
   - Enough detail to reconcile to total revenue

2. Contract balances:
   - Opening and closing balances of contract assets and contract liabilities
   - Explanation of changes (revenue recognized, impairments, acquisitions)
   - Timing of expected recognition of contract liabilities

3. Performance obligations:
   - Aggregate amount of transaction price allocated to unsatisfied POs (RPO)
   - Explanation of how and when unsatisfied POs will be satisfied
   - Disaggregation of RPO by time horizon (<1yr, 1-2yr, 2-3yr, 3-5yr, 5+yr)
   - Practical expedient: POs with original duration ≤ 1 year may be omitted

4. Significant judgments:
   - Determination of transaction price (variable consideration, financing)
   - Identification of performance obligations (bundling decisions)
   - Determination of SSP (methods used, key inputs)
   - Method of recognizing revenue (input vs output, progress measurement)

5. Assets from contract costs:
   - Opening/closing balance of capitalized acquisition costs (sales commissions)
   - Amortization expense
   - Impairment losses

Practical expedients available:
  - Significant financing component: Ignore if payment within 1 year of PO satisfaction
  - Selling costs: Expense immediately if amortization period ≤ 1 year
  - RPO disclosure: Omit POs with original duration ≤ 1 year
  - Consideration: Allocate to POs destroyed by modification
```

## Edge Cases

- **Multi-element arrangements** (software + services + hardware):
  - Critical: Properly distinguish distinct vs. bundled performance obligations
  - SSP estimation: Use observable prices where available; document methodology
  - Discount allocation: Pro-rata default; specific allocation only with evidence
  - Example: $1M contract for software ($400K SSP) + implementation ($300K SSP) + hosting ($480K SSP) = $1.18M total SSP
    → $180K discount allocated proportionally: software $61K, implementation $45K, hosting $74K

- **Variable consideration** (rebates, refunds, volume discounts, performance bonuses):
  - Two estimation methods: Expected value (probability-weighted) or Most likely amount
  - Constraint: Only include to extent it is "probable" (more likely than not) that significant reversal won't occur
  - Reassessment: At each reporting date; changes are catch-up (not prospective)
  - Example: $100K volume rebate — 60% probability customer hits threshold
    → Expected value = $60K; but constraint applied → only include if reversal unlikely
    → If uncertain: $0 recognized until threshold achieved or missed

- **Contract modifications**:
  - Three treatments:
    1. Cumulative catch-up: Modified contract = continuation of original
       - Trigger: Remaining POs are substantially the same as original
       - Impact: Adjust revenue to date based on new progress
    2. Prospective: Modified contract = new contract
       - Trigger: Additional distinct goods/services at fair value
       - Impact: No adjustment to prior revenue; new POs recognized going forward
    3. Termination + new: Original terminated; new contract created
       - Trigger: Remaining POs not substantially the same
       - Impact: Write off unamortized costs; recognize new contract from scratch
  - Documentation: Modification order, pricing change rationale, scope change description

- **Licensing intellectual property**:
  - Functional IP (what it does): Over-time recognition (customer uses as company develops)
    - Example: Software license with ongoing updates and enhancements
  - Symbolic IP (what it is): Point-in-time recognition (customer receives rights at a point)
    - Example: Movie license, brand trademark license
  - Key test: Does the license significantly affect the IP during the contract period?
  - If yes → functional → over-time; If no → symbolic → point-in-time

- **Right of return**:
  - Estimate returns: Historical return rate × current sales
  - Recognize: Revenue net of expected returns; liability for return obligation
  - Asset: Right to recover returned goods (net of expected costs)
  - Update: At each reporting date; changes are catch-up
  - Example: 10% historical return rate → recognize 90% of revenue; 10% deferred

- **Bill-and-hold arrangements**:
  - Criteria for recognition (all must be met):
    1. Substantive reason for bill-and-hold (customer's request)
    2. Goods identified separately as belonging to customer
    3. Goods ready for physical transfer
    4. Seller cannot use the goods or redirect them
  - If criteria met: Revenue recognized at billing (despite no delivery)
  - If not met: Revenue deferred until delivery

- **SaaS with free trial**:
  - Contract commencement: When trial ends and paid contract begins
  - Revenue recognition: Straight-line over paid term
  - Deferred revenue: Collected upfront for annual plan; recognized monthly
  - Conversion tracking: Trial-to-paid rate monitored as KPI (target 15–30%)

- **Sales commissions capitalization** (ASC 340-40):
  - Incremental costs of obtaining a contract are capitalized
  - Amortized over the expected customer relationship period
  - Practical expedient: Expense immediately if amortization period ≤ 1 year
  - Example: $50K commission on 3-year contract → capitalize $50K; amortize $16.7K/year
  - Disclosure: Opening/closing balance, amortization expense, impairment

## Integration Points

- **CRM**: Salesforce, HubSpot — contract data, amendments, customer information, deal stages
- **Billing systems**: Stripe, Chargebee, Zuora — invoice data, payment receipt, subscription management
- **ERP/GL**: NetSuite, SAP, Oracle — revenue posting, deferred revenue tracking, journal entries
- **Revenue recognition software**: RevPro (Vertex), Tricor (Revcom), Bright Sphere — calculation engine, multi-element allocation
- **Contract lifecycle management**: DocuSign CLM, Conga, Icertis — contract repository, terms extraction, amendment tracking
- **Analytics platforms**: Tableau, Power BI — revenue reporting, disclosure preparation, trend analysis
- **Audit tools**: CaseWare, Wolters Kluwer CCH — revenue testing, documentation, workpaper preparation
- **Data warehouse**: Snowflake, BigQuery — contract data integration, revenue analytics, ML-based estimation
