Skip to main content
Create a revenue recognition contract in five steps: Contract Terms, Performance Obligations, Invoicing, Recognition, and Preview. After you finish, the contract exists as a draft you can return to, or as an active contract (or one waiting for approval) with allocations, invoices, and recognition ready to review.

Prerequisites

Before you create a contract, confirm the following:
  • Revenue recognition is enabled for your organization.
  • Your role can create contracts on Accounting > Revenue Recognition > Contracts.
  • The customer record already exists, and the item for each obligation already exists. DualEntry fills the obligation SSP from that item’s List Price in the contract currency, so set List Prices at standalone selling price before you start.
  • You know the commercial term, whether you will enter a term total or a per-period rate, and the recognition method for each deliverable.
For the accounting model the form encodes, see ASC 606 and IFRS 15 in DualEntry. You can also create contracts through the API at /public/v2/contracts/ or from a Stripe subscription sync. Those paths skip this form; use this page for the in-app wizard.

Enter contract terms

The Contract Terms step identifies the arrangement: who the contract is with, which company holds it, and the dates DualEntry uses for billing and recognition.
  1. Go to Accounting > Revenue Recognition > Contracts and choose New Contract.
  2. Optionally apply a Contract template to prefill fields, or leave the template blank and enter the terms yourself.
  3. Select the Company and Customer. Both are required before you can activate the contract.
  4. Set Close Date and Contract Start Date. For the end of the term, pick a specific Contract End Date, enter a duration in months, or leave the contract ongoing.
  5. Choose the Recognition mode: Individual posts one journal entry per obligation per period; Subledger accumulates lines you post in batches. You cannot change this mode after the contract leaves draft. See Revenue Subledgers.
  6. Confirm Transaction Currency. DualEntry fills Base Currency from the company. Add a memo, payment terms, payment method, attachments, and any custom fields your organization uses for contracts.
Optional sections on this step: Choose Next to continue. Save as draft is available on every step if you need to stop before the terms are complete.

Add performance obligations

The Performance Obligations step is where you add each distinct good or service, choose how it is recognized, and price it. You set invoicing and recognition cadence for each obligation on the next two steps.
  1. Add an obligation and select the Item. DualEntry fills SSP from the item’s List Price in the contract currency. Override SSP on the obligation when this arrangement uses a different standalone price. See Configure Allocations and Standalone Selling Price.
  2. Set Recognition Method. The item’s Default Revenue Recognition Method is only a starting value. The methods are Straight line prorate daily, Straight line prorate first and last, even period, Straight line even periods, One time, Usage, and Milestone.
  3. Price the obligation. For a flat-rate line, choose Total amount or Unit price (see Price a flat-rate obligation). For usage, configure the pricing model on the obligation. See Usage Pricing: Flat and Tiered Models.
Add one obligation per distinct deliverable. A 12-month subscription and a one-time implementation belong on separate obligations so DualEntry can allocate and recognize them independently. Select multiple obligations to bulk-edit shared fields. For year-over-year rate steps, model a multi-year ramp instead of a single flat-rate line.

Price a flat-rate obligation

Flat-rate obligations let you enter either the term total or a per-period rate. DualEntry shows the same contract total either way, so the header amount matches what you typed. Choose the pricing tab that matches the commercial terms:
  • Total amount: Enter the full obligation Amount and SSP. DualEntry does not multiply that amount by the number of periods. Use this when you know the term total and do not want to work backwards from a per-period rate.
  • Unit price: Enter Quantity per period, Unit price per period, and SSP per period. The obligation header shows a live total of quantity × unit price × number of periods.
Example: 10 seats at $100 per period for 12 monthly periods. In Unit price, DualEntry shows TCV $12,000 (10 × $100 × 12 periods) before you save. In Total amount, enter $12,000 and the header shows $12,000 with no extra period multiplication. Switching tabs keeps the values you already typed. The contract subtotal and total sum the same amounts shown on each obligation header. One time and Milestone obligations do not multiply across periods. Ten units at $100 is $1,000, not $12,000. Usage obligations use consumption quantity and the usage pricing model, not this per-period TCV formula. See Milestone Revenue Recognition and Usage Pricing: Flat and Tiered Models.

Set invoicing and recognition

The Invoicing and Recognition steps hold the billing and recognition cadence for each obligation. On each step, select an obligation from the obligation list, configure it, then select the next one. On the Invoicing step:
  1. Keep invoicing on, or turn on Exclude Invoice when the invoices come from somewhere else.
  2. For a usage obligation, choose a Billing mode: Period (schedule), Sync with recognition, or Prepaid drawdown. See How to Configure Usage Drawdown when the obligation is prepaid.
  3. Set billing Frequency, Interval, and invoice dates.
On the Recognition step, set Frequency and Interval for schedule-driven methods, and review the recognition schedule. Billing and recognition cadences are independent, so changing one leaves the other alone. See Recognition Timing: Frequency and Intervals.

Review the contract preview

The Preview step is a read-only summary of the contract before you save. Allocations, invoices, and recognition sit in one tabbed summary. Open each tab that applies:
  • Allocations: Review the SSP-based split of transaction price across obligations, and confirm each obligation’s allocated amount before you activate.
  • Invoice Summary: Review the invoices DualEntry generates from the invoicing settings on each obligation.
  • Revenue Recognition Summary: Review the recognition entries DualEntry generates for each obligation by period.
When you edit a contract that already has customer credits, the credits appear below the tabs. If a total, date, or allocated amount is wrong, go Back to the step that holds it and correct it. Entered obligations and rates persist when you move between steps.

Save a draft or activate the contract

You can leave the form at any time with Save as draft, then reopen the contract from the Draft tab to finish it. Save (or Send for approval) on Preview creates or updates the contract. A contract activates from draft only when it has a company, a customer, and at least one obligation, and every obligation has an item, quantity, and rate. If an approval workflow applies, DualEntry keeps the contract in draft and places it in For Approval. If no workflow applies, the contract becomes Active. A draft contract has no general ledger impact. When the contract becomes active (or is approved), invoices and revenue recognition entries dated on or before that day post. Later records stay in draft and post automatically once their date arrives. Subledger-mode recognition posts through batch posting instead. See ASC 606 and IFRS 15 in DualEntry for the rest of the lifecycle.
If required fields are still empty, Save stays unavailable. Hover the button to see why, then use Save as draft if you need to continue later.

Troubleshooting

These are the problems that most often stop a new contract from saving or activating:
  • Save is unavailable on Preview: A required field is empty (company, customer, item, quantity, or rate). Complete the field or choose Save as draft.
  • The live TCV is larger than the commercial term total: You entered a term total in Unit price. Switch to Total amount, or enter the per-period unit price so quantity × price × periods equals the signed total.
  • The Invoicing or Recognition step is empty: No obligation is configured yet. Go Back to Performance Obligations and add one.
  • The contract will not activate: Add a company, a customer, and at least one obligation, and give every obligation an item, quantity, and rate. Approval workflows can also hold the contract in For Approval instead of making it active.
  • Recognition mode cannot be changed: The contract has left draft. Create a new contract if you need the other mode.

Next steps

Last modified on November 5, 2026