Skip to main content
Revenue subledgers change how DualEntry records recognized revenue in the general ledger. Instead of posting one journal entry per performance obligation per period, a subledger contract accumulates non-posting subledger lines that you later post to the GL in aggregated batches. This keeps the general ledger clean on high-volume contract portfolios and adds a review step before revenue is recognized.

Recognition modes

Every contract runs in one of two recognition modes, set on the contract itself. The mode controls how DualEntry turns a recognition schedule into general ledger activity.
  • Individual. The default mode. DualEntry posts one journal entry per performance obligation per period as revenue is recognized. This is the legacy behavior, and existing contracts keep it with no change.
  • Subledger. DualEntry writes recognized amounts as subledger lines that do not touch the general ledger until you post them in a batch.
You choose the mode in the Revenue Recognition step of the contract wizard, and the current mode appears as a badge on the contract overview. New contracts can opt into subledger mode; existing contracts stay on individual mode unless you migrate them. The mode is immutable once subledger lines exist for a contract, so decide before the contract starts generating schedule activity.
Recognition mode controls only how revenue reaches the general ledger. It does not change ASC 606 allocation or the recognition strategy you assign per obligation. See ASC 606 in DualEntry for the underlying model.

Subledger lines

A subledger line is a single period’s recognized revenue for one performance obligation, recorded outside the general ledger. Each line carries a period date, an amount, a status, and, once posted, a link to the batch that posted it. Lines have two statuses:
  • Draft. The line has been computed from the recognition schedule but has not been posted to the general ledger. Draft lines have no GL impact and are not reflected in recognized revenue reports.
  • Posted. The line has been posted to the general ledger as part of a batch. Posted lines are immutable.
On a subledger contract, the contract detail page shows a subledger lines section in place of the individual revenue recognition entries. You can also browse every line across the organization from the Revenue Subledger Lines list under Revenue Recognition, filtered by period range, company, customer, contract, or status.

Schedule refresh and catch-up lines

DualEntry regenerates a subledger contract’s draft lines from the current schedule whenever the contract changes. The refresh deletes all draft lines and rebuilds the complete schedule from the contract’s obligations, usage records, and parameters, so draft lines always reflect the latest terms. Posted lines are never touched by a refresh. Because posted periods are fixed, any difference between what was already posted and what the current schedule says should have been recognized is resolved with a catch-up line. DualEntry places the catch-up on the first open period rather than editing a closed one. Time-based and usage-based obligations both flow through the same calculator and catch-up mechanism. A late usage submission for a posted period produces a catch-up on the next open period instead of a retroactive change. This design keeps the subledger idempotent: rerunning the refresh on an unchanged contract produces the same lines, and every correction is visible as its own line.

Immutability and reversals

Posted revenue is never modified in place. This invariant applies to both recognition modes and is what makes the subledger safe to post in batches. When an event would otherwise change an already posted period, DualEntry records an offsetting entry instead of editing the original. For the individual path, terminating a contract that prorates an already posted period creates a reversal entry. The reversal is a new revenue recognition, marked as a reversal, dated at the termination effective date, with swapped debit and credit directions for the over-recognized amount. The net general ledger impact matches the prorated result, but the original posted entry stays intact for audit purposes. See Change Orders, Terminations, and Renewals for the full termination flow. For subledger contracts, archiving a contract that already has posted lines does not delete GL activity. Instead, DualEntry creates a draft reversal line per obligation, dated at the last posted period, so you can post the reversal in a batch to zero out the GL impact. Unarchiving the contract regenerates the full schedule through the normal refresh.

Guards on posted periods

For subledger contracts, DualEntry blocks contract modifications that would affect a period whose revenue is already finalized. You cannot create or archive a change order or termination for a date that has posted subledger lines after it, because that period was already approved and posted. The same guard applies to lines claimed by a pending batch, meaning a line whose batch has been created but not yet approved. To apply a modification that affects such a period, first reject or archive the pending batch to release its lines back to draft. Then make the change and post a fresh batch. These guards apply only to subledger contracts; individual contracts are unaffected.

Next steps

  • Post a Revenue Recognition Batch walks through previewing and posting subledger lines to the general ledger, including the approval workflow.
  • ASC 606 in DualEntry covers the five-step recognition model that produces the amounts on each line.
  • Reporting shows where posted revenue appears in the waterfall and deferred revenue schedules.
Last modified on July 31, 2026