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

# How Quantity and Rate Work

> Quantity and unit price mean one invoice period on every recognition method. DualEntry multiplies them by generated invoice dates to set total contract value.

Quantity and unit price on a DualEntry performance obligation describe one invoice period. DualEntry uses those values on every generated invoice and multiplies them by the number of invoice dates in the billing window to set total contract value (TCV). Recognition cadence can differ from billing, but it does not change TCV. This page explains the meaning of each field, how DualEntry counts invoice periods, and how invoices and schedules stay aligned. For the steps to enter a total or a per-period price, see [How to Enter Obligation Pricing](https://docs.dualentry.com/accountants/revenue-recognition/quantity-and-rate/how-to-enter-obligation-pricing.md).

## Quantity and unit price are per invoice period

Quantity is the number of units DualEntry bills on one invoice. Unit price is the price of one of those units on that same invoice. Both fields keep that meaning for every recognition method, including straight-line, daily pro-rata, immediate, milestone, and usage.

An invoice period is one generated invoice date in the obligation's effective billing window. DualEntry builds those dates from billing start, billing end, billing frequency, and billing interval, or from a synced billing schedule when the contract comes from an integration. A start or end stub still counts as one invoice period. If monthly billing runs from 01/15/2026 through 03/01/2026, the generator creates 01/15/2026 and 02/15/2026, so TCV uses two invoice periods.

This per-invoice meaning is what keeps a seat count readable from the contract through each invoice. When you enter 10 seats at \$100 on a 12-month monthly contract, each monthly invoice shows quantity 10 at \$100, not a fractional 0.83 seats. The contract form labels that field **Quantity per period**.

The public contracts API uses the same meaning. The `quantity` and `rate` fields on a performance obligation are the per-invoice-period quantity and unit price. Sending a term-total quantity on a multi-invoice obligation multiplies TCV by the invoice count a second time. For the API steps, see [How to Enter Obligation Pricing](https://docs.dualentry.com/accountants/revenue-recognition/quantity-and-rate/how-to-enter-obligation-pricing.md#confirm-invoices-and-the-contract-total).

Standalone selling price follows the same split as the pricing mode you use. On **Unit price**, **SSP per period** is the standalone price of one unit for one invoice period. On **Total amount**, **SSP** is the standalone price of the whole obligation. Allocation still uses those SSP values to split transaction price under [ASC 606 and IFRS 15](https://docs.dualentry.com/accountants/revenue-recognition/asc-606.md). See [Allocations and SSP](https://docs.dualentry.com/accountants/revenue-recognition/allocations-and-ssp.md) for the formula.

## How total contract value is calculated

Total contract value is the consideration DualEntry expects from the obligation across its generated invoices. For a uniform-period obligation, DualEntry calculates it as unit price times quantity times the number of invoice periods.

The contract form shows that math as you type. Quantity 10, unit price \$100, and 12 monthly invoices preview as \$12,000 (10 × \$100 × 12 periods). The obligation header and the contract subtotal use the same amount, so you can check TCV before you save. After activation, the sum of generated invoice line amounts before tax equals that TCV, and the revenue schedule totals the same figure.

Billing cadence is the TCV clock. Weekly billing with monthly recognition still uses the weekly invoice count. Quantity 10 at \$100 across 52 weekly invoices is \$52,000 TCV. Each weekly invoice shows 10 × \$100. The monthly recognition schedule then allocates that \$52,000; it does not divide invoice quantity.

Quarterly billing with monthly recognition works the same way: four quarterly invoices of 10 × \$100 produce \$4,000 TCV, and recognition spreads \$4,000 across its own dates.

Recognition strategy still controls when DualEntry posts revenue. Straight-line, daily pro-rata, and custom [recognition frequency and interval](https://docs.dualentry.com/accountants/revenue-recognition/recognition-timing/understanding-recognition-timing.md) only change how DualEntry places recognition lines. They do not rewrite quantity, unit price, or TCV. That separation is what lets you bill annually and recognize monthly without turning 10 seats into a fractional invoice quantity.

A change order keeps the per-invoice meaning on every version of the obligation. If a 12-month monthly obligation starts at quantity 10 and \$100, then changes to quantity 15 from month 7, DualEntry calculates 10 × \$100 × 6 plus 15 × \$100 × 6, or \$15,000. Revenue already recognized before the modification date stays as posted. See [Change Orders, Terminations, and Renewals](https://docs.dualentry.com/accountants/revenue-recognition/change-orders-terminations-renewals.md) for how DualEntry reallocates the updated transaction price.

## What each recognition method counts as an invoice period

DualEntry counts TCV periods from generated invoice dates, then applies a small set of method-specific exceptions. The table below is the rule DualEntry uses when it turns quantity and unit price into TCV.

| Recognition method | How TCV periods are counted |
| - | - |
| Straight-line, even periods | Generated invoice dates in the billing window |
| Straight-line, prorate first and last | Generated invoice dates in the billing window |
| Straight-line, prorate daily | Generated invoice dates in the billing window |
| Immediate | One TCV period, even when billing recurs |
| Usage | One TCV period. Recorded usage drives what DualEntry invoices |
| Milestone | One TCV period. The obligation's rate × quantity sets its ceiling; billing can follow milestone completion or the standard schedule |
| Prepaid drawdown | The initial prepaid invoice is one TCV period. Later usage recognizes from the prepaid balance |

Milestone obligations are the main exception to uniform multiplication. Quantity 10 at \$100 on a milestone obligation totals \$1,000, however many milestone invoices you raise. That total is the ceiling: the milestones on the obligation cannot exceed it. Billing can follow milestone completion or the standard schedule. See [Milestone Revenue Recognition](https://docs.dualentry.com/accountants/revenue-recognition/milestone-recognition.md).

Prepaid drawdown is the other exception you will meet on usage obligations. DualEntry invoices the committed pool once, so that prepaid invoice is the TCV period. Later consumption draws the remaining balance and does not multiply the original quantity across every recognition month. See [How Usage Drawdown Works](https://docs.dualentry.com/accountants/revenue-recognition/usage-and-tiered-pricing/understanding-usage-drawdown.md).

Usage obligations that bill as they go also count one TCV period. Quantity times unit price is a projection, and recorded consumption replaces it as you post usage. The unit count you configure in a usage tier is the same quantity concept as the units on an invoice line. See [Usage Pricing: Flat and Tiered Models](https://docs.dualentry.com/accountants/revenue-recognition/usage-and-tiered-pricing/usage-tiered-pricing.md).

Immediate recognition also counts one TCV period, so quantity times unit price equals TCV however often the obligation bills. If an immediate obligation bills on more than one date, DualEntry splits that quantity and amount across the invoices rather than multiplying them.

## How invoices and revenue schedules use quantity

For a uniform-period obligation, each invoice DualEntry generates from the contract uses the obligation's per-period quantity and unit price. Quantity 10 at \$100, billed monthly for 12 months, produces 12 invoice lines of 10 × \$100 = \$1,000. Those line amounts sum to TCV, and DualEntry does not divide the contract quantity across the term. An obligation that counts one TCV period but bills on several dates, such as an immediate obligation billed monthly, splits its quantity across those invoices instead, so a line can show a fractional quantity. Bill-as-you-go usage invoices reflect recorded consumption and its pricing model, not the configured TCV projection.

The revenue schedule and the schedule preview use the same per-period quantity. A monthly straight-line obligation with quantity 10, unit price \$100, and 12 months shows quantity 10 and \$1,000 on each recognition period, with a schedule total of \$12,000. Preview and the saved schedule show identical numbers. Recognition still follows the method you assigned: daily pro-rata can split amounts by day, and a custom interval can skip months, but the quantity on each line stays the quantity you entered.

Invoices already issued keep the quantity and amount they had when DualEntry created them. Changing quantity or unit price on a later change order updates future invoices and the remaining recognition schedule. It does not rewrite posted invoice lines or journal entries in closed periods. For how a contract-generated invoice then moves through sending, payment, and dunning, see [How to Invoice Customers and Run Dunning](https://docs.dualentry.com/accountants/core-financials/accounts-receivable/invoicing-and-dunning.md).

When you migrate an in-flight contract, enter quantity and unit price with this per-invoice meaning, or use **Total amount** and enter the full original contract value, which DualEntry divides into per-period amounts. The TCV on the migrated contract should still be the full original contract value. See [Migrate Mid-Life Contracts](https://docs.dualentry.com/accountants/revenue-recognition/migrate-mid-life-contracts.md).

## Next steps

Use the pages below to enter pricing, allocate the resulting transaction price, and keep billing and recognition on the cadences you need. Start with the how-to if you are creating a contract now. Use the allocation and timing pages after the obligation total looks right, because SSP allocation and recognition cadence both consume TCV rather than rewriting quantity.

* Enter a total or a per-period price in [How to Enter Obligation Pricing](https://docs.dualentry.com/accountants/revenue-recognition/quantity-and-rate/how-to-enter-obligation-pricing.md).
* Allocate the contract's transaction price in [Allocations and SSP](https://docs.dualentry.com/accountants/revenue-recognition/allocations-and-ssp.md).
* Set billing frequency in [Subscription Billing](https://docs.dualentry.com/accountants/platform-configuration/subscription-billing.md). Billing frequency is the TCV clock, so change it before you treat the preview as final.
* Set recognition cadence in [Recognition Timing: Frequency and Intervals](https://docs.dualentry.com/accountants/revenue-recognition/recognition-timing/recognition-frequency-and-intervals.md) when you need to recognize on a different cadence from billing.
* Record usage against a per-period price in [Usage Pricing: Flat and Tiered Models](https://docs.dualentry.com/accountants/revenue-recognition/usage-and-tiered-pricing/usage-tiered-pricing.md).
* Review contract-generated invoice lines in [How to Invoice Customers and Run Dunning](https://docs.dualentry.com/accountants/core-financials/accounts-receivable/invoicing-and-dunning.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.