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.

How to Configure Subscription Billing

DualEntry’s subscription billing module manages recurring billing for SaaS and subscription businesses. You define contracts with performance obligations, configure billing schedules, and DualEntry handles invoice generation and the handoff to revenue recognition.

Creating Contracts

A contract is the foundation of subscription billing. You create contracts from the billing module or via the /public/v2/contracts/ API endpoint. Each contract includes:
  • Customer - the customer being billed.
  • Term dates - start date and end date for the contract.
  • Billing schedule - how often invoices are generated.
  • Performance obligations - the products or services being delivered.
Contracts follow a lifecycle of statuses: draft, active, completed, and archived. You finalize the terms in draft, then activate the contract to begin billing. The API also supports a “review” filter status for contracts awaiting internal approval.

Performance Obligations

Each line item on a contract represents a performance obligation. When you add a line, you configure:
  • Item and quantity - the product or service and how much is being delivered.
  • Rate and standalone selling price (SSP) - the price per unit and the SSP used for revenue allocation.
  • Recognition strategy - how revenue is recognized for this obligation.
  • Billing group and classifications - optional groupings for billing presentation and dimensional reporting.
  • Billing start date - can differ from the contract start date for staggered obligations.
DualEntry supports these recognition strategies: straight_line, straight_line_start_end_even, daily_prorata, milestone, usage_tiered, usage, immediate, and deposit_release. The strategy you choose determines how the ASC 606 engine recognizes revenue over the obligation’s term.

Billing Schedules

You configure billing frequency on each contract. Supported frequencies are daily, weekly, monthly, quarterly, semi-annually, and annually. You also set a billing interval (e.g., every 2 months) and a billing start date that can differ from the contract start. DualEntry generates invoices automatically according to the schedule. Each generated invoice posts to accounts receivable and includes the line items, amounts, and tax calculations for that billing period.
Billing start dates at the obligation level let you stagger charges. For example, a contract might bill the platform fee monthly starting at contract start, while billing an implementation fee as a one-time charge on day one.

Revenue Recognition

Contracts flow through to DualEntry’s ASC 606 revenue recognition engine. Each performance obligation’s recognition strategy determines when and how revenue is recognized. The billing module handles the invoice side (cash and AR), while the revenue engine handles the recognition side (deferred revenue and recognized revenue). This separation means your billing schedule and your revenue schedule can differ. You might bill annually upfront but recognize revenue monthly over the service period.

Usage-Based Billing

For obligations with usage or usage_tiered recognition strategies, you post usage records to DualEntry via the /public/v2/contracts/{contract_id}/usage/ endpoint. Usage records include the quantity consumed and the date. DualEntry calculates the billable amount based on the obligation’s rate tiers and includes it on the next invoice. You can also bulk-upsert usage records for high-volume scenarios. DualEntry deduplicates based on the usage record’s external ID.
Ensure usage records are posted before the billing run date. Usage records received after an invoice is generated are included in the next billing cycle.
For details on how subscription revenue flows into reporting, see revenue recognition reporting. For syncing billing data with Stripe, see Stripe revenue sync. For invoice management, see invoicing and dunning.
Last modified on May 28, 2026