Contracts rarely stay static. Customers upgrade, downgrade, cancel, or extend their arrangements. DualEntry models these events as change orders, terminations, or renewals and applies the appropriate ASC 606 treatment automatically.
Change orders
A change order is a modification to an existing contract’s scope or price. In DualEntry, you edit an active contract to add, remove, or modify performance obligations. DualEntry then determines whether the change qualifies as a separate contract or a modification of the existing one.
Bill or recognize more on an existing contract
Use a change order whenever the amount on an active contract changes, including upsells, price increases, and added scope. The change order updates the contract’s recognition schedule, and its invoice schedule if the contract has one. DualEntry then bills and recognizes the new amount under the contract’s terms and reallocates the transaction price if needed.
If you set up scheduled invoices when you created the contract, don’t create a separate invoice and link it to the contract to bill the extra amount. The change order already bills it through those scheduled invoices. An invoice linked to a contract credits the item’s deferral account rather than income, and only the contract’s recognition schedule releases that balance to revenue. A standalone linked invoice adds to deferred revenue with no schedule to recognize it, and it leaves the contract’s transaction price and allocations unchanged.
Linking an invoice to a contract by hand is meant only for contracts that don’t create their own scheduled invoices, meaning obligations that have Exclude Invoice turned on in the obligation’s Invoicing tab. Those obligations post revenue recognition only, and the invoices come from somewhere else, usually an integration. A linked invoice always uses the contract’s books, so if you choose different books on it, DualEntry rejects the save with Book selection is controlled by the parent record.
Create a change order
To create a change order:
- Open the active contract in the contract detail view.
- Choose Add Change Order.
- Add, remove, or modify obligations as needed.
- Save the change order as a draft or complete it. DualEntry applies the modification treatment and updates the recognition schedule when the change order is complete and effective.
DualEntry records each change order as a discrete event on the contract timeline. You can review all change orders from the contract detail view under the Change Orders tab and under Activity, where each entry shows the before-and-after state of affected obligations. This history is critical for auditors who need to trace how the contract evolved over its lifetime.
The Add Change Order action is unavailable on any contract that has a usage-based obligation billed as Prepaid drawdown. Add more prepaid funds with a top-up, or terminate and replace the contract when the commercial terms change. The Change Orders tab is also hidden on those contracts.
For contracts in subledger recognition mode, DualEntry blocks a change order or termination over any period that already has posted or pending-batch subledger lines, since that revenue is finalized. Release the affected lines first, then apply the modification. See Revenue Subledgers for how these guards work.
DualEntry also blocks a change order when any contract invoice dated after its effective date has a posted customer payment or prepayment application. In that case, DualEntry shows Cannot apply change order: there are paid invoices after the effective date. Archive the payments first. Archive those payments, or choose an effective date on or after the last paid invoice’s date, then complete the change order. Draft change orders skip this check until you complete them.
Draft change orders
You can save change orders as drafts without passing full validation. Use drafts when an integration (for example, Salesforce or HubSpot) creates a change order before every commercial field is known, or when you need to capture a partial modification and finish it later in DualEntry.
Draft change orders:
- Accept incomplete forms, including null fields that would fail on a final save.
- Show a draft badge on the contract’s Change Orders tab.
- Surface a warning badge on that tab when a draft is incomplete and needs attention.
- Do not update recognition schedules until you complete and save the change order with valid data.
When you finish a draft, DualEntry runs full validation (including effective-date rules such as matching the performance obligation start day of month) before applying the modification. Until that final save succeeds, the live contract keeps its current obligations, invoices, and recognition schedule. An incomplete draft that is never completed remains on the Change Orders tab as a reminder only; it does not reallocate transaction price or post catch-up entries on its own.
Complete draft change orders promptly so the contract’s live schedules stay aligned with signed amendments. Archive or discard drafts you do not intend to finish so reviewers are not blocked by stale warnings.
Prospective treatment
When a modification adds distinct goods or services at their standalone selling price, DualEntry treats the addition as a new performance obligation. DualEntry recognizes revenue for the new obligation going forward from the modification date. There is no catch-up adjustment to previously recognized amounts.
This applies when the new deliverable is both capable of being distinct and distinct in the context of the contract, and the pricing reflects standalone value. DualEntry evaluates these conditions based on the SSP you configured on the item record. If the addition meets both criteria, the original obligations continue on their existing schedules unchanged.
Cumulative catch-up treatment
When a modification changes the price or scope of existing obligations (for example, extending a service period or adjusting the rate), DualEntry reallocates the updated transaction price across all obligations using the SSP-based formula. It then records a cumulative catch-up adjustment in the current period to align recognized revenue with the revised schedule.
The catch-up entry appears as a single journal entry in the period the change order is applied. You can drill into the entry from the contract detail view to see the before-and-after allocation. The adjustment can be positive or negative depending on whether the modification increased or decreased the transaction price relative to the existing obligations.
Milestone obligations
When a change order adjusts the rate or quantity of an obligation that uses the milestone method, DualEntry re-links the obligation’s milestones to fit the revised total. Milestones dated on or after the change’s effective date, and any without a date, move to the successor obligation. Earlier-dated milestones and all completed milestones stay on the predecessor. DualEntry then prorates each side’s allocation to the milestones it retains.
Use a change order to raise a milestone obligation’s ceiling. Milestone amounts cannot exceed the obligation total on their own, so increasing the rate or quantity through a change order is how you make room for additional or larger milestones. Completed milestones keep their recognized revenue through the modification; only draft and active milestones are re-linked and reallocated.
Terminations
When you terminate a contract early, DualEntry handles the remaining contract activity using the termination treatment you choose.
- Accelerated recognition: DualEntry recognizes the remaining revenue as of the termination date.
- Cancel remaining schedules: DualEntry cancels open invoices and future revenue schedule lines. No additional revenue is recognized after the termination date.
Accelerated revenue recognition
Choose accelerated recognition when the termination terms require the remaining contract revenue to be recognized at termination. DualEntry posts the remaining allocated revenue in the termination period and closes the related future revenue schedule lines.
Cancel remaining schedules
Choose cancel remaining schedules when the customer is released from the remaining obligation or future service will not be delivered. DualEntry cancels the remaining invoices and revenue schedule lines so no further billing or recognition occurs after the termination date.
For obligations that use the milestone method, terminating the contract archives the future (draft and active) milestones and routes the remaining deferred balance through whichever treatment you choose. Completed milestones keep their recognized revenue, so termination affects only work that had not yet been delivered.
To terminate a contract:
- Open the contract and choose Terminate.
- Confirm the termination date and review the impact summary.
- DualEntry updates the recognition schedule and moves the contract status to terminated.
The impact summary shows the selected treatment before you confirm, including any accelerated revenue and any invoices or revenue schedule lines that will be canceled. Review this summary carefully before completing the termination.
Reversal entries for posted periods
DualEntry never modifies revenue that has already posted. When a termination prorates a period whose revenue was already recognized, DualEntry leaves the original entry untouched and records a reversal entry instead. The reversal is a new revenue recognition, marked as a reversal and dated at the termination effective date, with debit and credit directions swapped for the over-recognized amount. The net general ledger impact matches the prorated result, and the original posted entry stays intact for audit purposes. For subledger contracts, the equivalent behavior is a draft reversal line you post in a batch, as described in Revenue Subledgers.
Terminating a contract is not reversible. If the customer later resumes the arrangement, model it as a new contract or a renewal on the original.
Renewals
A renewal extends the contract term or adds new obligations for a subsequent period. DualEntry supports two renewal approaches, depending on your configuration and the nature of the arrangement.
- New contract: DualEntry creates a separate contract for the renewal term. SSP allocation starts fresh, and the original contract moves to completed status. Use this when the renewal terms differ significantly from the original.
- Existing contract renewal: DualEntry extends the existing contract by adding obligations for the renewal period or adjusting dates. DualEntry schedules recognition for the renewal period prospectively and records no catch-up adjustment. Use this when the renewal is a continuation of the same arrangement.
You choose the approach when you process the renewal. Both options preserve the audit trail linking the renewal to the original contract. For Stripe-sourced contracts, the sync logic handles renewal events automatically based on Stripe’s subscription renewal behavior. See Stripe Revenue Sync for details.
Attachments and documentation
Contracts support file attachments so you can store change order documentation alongside the contract record. Attach amendment letters, internal approval memos, or customer-signed modifications under the Attachments tab.
These files are available for auditors reviewing the contract history. Keeping supporting documentation attached to the contract rather than in a separate system makes it easier to produce a complete audit package. DualEntry indexes attachment metadata so you can search across contracts for specific document types.
Audit trail
DualEntry logs every contract modification in the audit trail with before-and-after values. DualEntry records who made the change, when, and what fields were affected.
You can view the full modification history from the contract detail view under Activity. The audit trail captures not only field-level changes but also the resulting allocation and schedule adjustments. This means an auditor can trace from a change order through the reallocation math to the specific journal entries it produced, all from a single contract record.
Next steps
Last modified on October 9, 2026