> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dualentry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Revenue Recognition

> Overview of DualEntry's ASC 606 revenue recognition engine, covering contracts, performance obligations, allocation, recognition schedules, and reporting.

DualEntry's revenue recognition engine implements ASC 606 end-to-end, from contract creation through recognized revenue reporting. You model your customer arrangements as contracts, define performance obligations on each contract, and let DualEntry handle allocation, scheduling, and journal entry generation.

## The contract model

Revenue recognition in DualEntry centers on the **contract**. A contract is a record that captures the terms of an arrangement with a customer - what you are delivering, when, and at what price. Each contract contains one or more **performance obligations**, which represent the distinct goods or services you have promised.

You create contracts manually in the UI, through the API at `/public/v2/contracts/`, or automatically via the [Stripe integration](./stripe-revenue-sync). Contracts move through a lifecycle of statuses: **draft**, **active**, **completed**, **terminated**, and **archived**. Revenue recognition begins when a contract reaches active status.

Each contract also carries a currency, billing frequency, and optional end date. These fields drive the billing schedule but do not directly control recognition - recognition timing is determined by the strategy you assign to each performance obligation. You can review the full contract lifecycle and status transitions in [ASC 606 in DualEntry](./asc-606).

## Recognition strategies

DualEntry supports multiple recognition strategies so you can match how you satisfy each obligation to how revenue is recorded.

* **Straight-line** - recognizes revenue evenly over the obligation term.
* **Daily pro-rata** - recognizes revenue based on exact days elapsed.
* **Usage-based** - recognizes revenue based on consumption records you submit.
* **Immediate** - recognizes the full amount when the obligation is satisfied.

You assign a strategy per performance obligation, so a single contract can mix time-based and usage-based recognition. Straight-line and daily pro-rata are the most common choices for SaaS subscriptions, while usage-based strategies suit metered products. You configure recognition strategies on the DualEntry item record, and each obligation inherits the strategy from its mapped item. For details on how strategies interact with [SSP-based allocation](./allocations-and-ssp), see the allocation page.

## ASC 606 compliance

DualEntry follows the five-step ASC 606 model: identify the contract, identify performance obligations, determine the transaction price, allocate to obligations using standalone selling price, and recognize revenue per each obligation's strategy.

The system enforces these steps structurally. You cannot activate a contract without at least one performance obligation, and DualEntry runs allocation automatically before generating a recognition schedule. This means the five-step framework is embedded in the workflow rather than tracked manually. For the full walkthrough of each step, including how to enter accumulated revenue when cutting over an in-flight contract from a legacy system, see [ASC 606 in DualEntry](./asc-606). For details on how contract changes affect the model, see [Change Orders, Terminations, and Renewals](./change-orders-terminations-renewals).

## Pages in this section

* [ASC 606 in DualEntry](./asc-606) - how the five-step model maps to DualEntry's data model.
* [Allocations and SSP](./allocations-and-ssp) - configure standalone selling prices and understand how DualEntry allocates transaction price.
* [Change Orders, Terminations, and Renewals](./change-orders-terminations-renewals) - process contract modifications and their revenue impact.
* [Reporting](./reporting) - revenue waterfall, deferred revenue schedules, and auditor-ready reports.
* [Stripe Revenue Sync](./stripe-revenue-sync) - automatically create revenue contracts from Stripe subscriptions.

For billing configuration that drives how and when customers are invoiced, see [Subscription Billing](../platform-configuration/subscription-billing).
