Skip to main content

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

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. 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.

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.
  • Milestone - recognizes revenue when you mark a milestone as achieved.
  • Usage-based - recognizes revenue based on consumption records you submit.
  • Immediate - recognizes the full amount when the obligation is satisfied.
  • Deposit release - holds revenue until a release event occurs.
You assign a strategy per performance obligation, so a single contract can mix time-based, milestone, and usage-based recognition. Straight-line and daily pro-rata are the most common choices for SaaS subscriptions, while milestone and usage-based strategies suit professional services and 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, 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. For details on how contract changes affect the model, see Change Orders, Terminations, and Renewals.

Pages in this section

For billing configuration that drives how and when customers are invoiced, see Subscription Billing.
Last modified on May 28, 2026