# Sync Stripe Subscriptions for Revenue Recognition

Connect Stripe to DualEntry to automatically create revenue contracts from Stripe subscriptions. When a subscription is created, changed, or canceled in Stripe, DualEntry reflects the event as a contract action and applies ASC 606 treatment.

## Prerequisites

Before you begin, confirm the following items are in place.

- Your [Stripe integration](/accountants/integrations/stripe) is connected and syncing. Complete the Stripe setup guide first if you have not already.
- The **Advanced Revenue Recognition** module is enabled on your DualEntry account. Contact your account manager or enable it under **Settings → Modules** if available.
- Your Stripe products are mapped to DualEntry items under **Settings → Integrations → Stripe → Products**.


If any of these are not yet configured, complete them before enabling the revenue sync. Missing prerequisites - especially unmapped products - cause sync errors that block contract creation.

## How the sync works

When a Stripe subscription is created, DualEntry automatically creates a contract with the subscription terms. The contract includes:

- **Start date and end date** pulled from the Stripe subscription period.
- **Billing frequency** matching the Stripe billing interval.
- **Performance obligations** - one per Stripe product on the subscription.


Each obligation inherits the recognition strategy and standalone selling price from the mapped DualEntry item. DualEntry generates the recognition schedule when the contract reaches active status. The sync runs in near-real-time via Stripe webhooks, so new subscriptions appear as contracts within minutes.

## Map Stripe products to DualEntry items

Product mapping determines how revenue is recognized for each subscription line. In **Settings → Integrations → Stripe → Products**, you map each Stripe product to a DualEntry item. On the DualEntry item, you configure:

- **Recognition strategy** - controls how revenue is recognized (typically straight-line over the subscription term for SaaS).
- **Standalone selling price** - drives [allocation](/accountants/revenue-recognition/allocations-and-ssp) when a subscription includes multiple products.


Mapping is a one-time setup per product, but you should review it whenever you add new products in Stripe. The mapping screen shows unmapped products at the top so you can identify gaps quickly.

Unmapped products prevent contract creation. If a Stripe subscription references a product without a DualEntry item mapping, the sync logs an error. Map all active products before enabling the sync.

## Invoice and payment sync

When Stripe generates a subscription invoice, DualEntry creates a **contract invoice** linked to the contract. The invoice records the billing event and the amount due.

When the invoice is paid in Stripe, DualEntry creates a **customer payment** applied to the contract invoice. This updates the contract's billing-versus-recognition position, which drives the contract asset or liability balance visible in [Reporting](/accountants/revenue-recognition/reporting). The timing difference between billing and recognition is the primary driver of deferred revenue for subscription businesses.

## Revenue recognition

Revenue is recognized per the obligation's recognition strategy, independent of when the customer is billed or pays. For most subscriptions, this means straight-line recognition over the subscription term.

For example, a $12,000 annual subscription billed monthly results in $1,000 of recognized revenue per month. If the same subscription is billed upfront, the full $12,000 is recorded as deferred revenue and recognized at $1,000 per month over the term.

This independence between billing and recognition is a core ASC 606 principle. DualEntry maintains separate schedules for each, and the contract balance report in [Reporting](/accountants/revenue-recognition/reporting) shows you the net position at any point.

## Change events from Stripe

Upgrades, downgrades, and cancellations in Stripe flow through as contract modifications in DualEntry automatically.

- **Upgrades and downgrades** - DualEntry receives the subscription change event and applies the appropriate ASC 606 modification treatment. If the change adds a distinct product at standalone value, DualEntry applies [prospective treatment](/accountants/revenue-recognition/change-orders-terminations-renewals). If it modifies an existing obligation, DualEntry applies [cumulative catch-up treatment](/accountants/revenue-recognition/change-orders-terminations-renewals).
- **Cancellations** - when a Stripe subscription is canceled, DualEntry terminates the contract and sets its status to **terminated**. Satisfied obligations are recognized; unsatisfied obligations are written off.


DualEntry logs each change event with a reference to the originating Stripe event ID, so you can trace any contract modification back to the specific Stripe action that triggered it.

## Validate the sync

After the initial sync, compare your data to confirm accuracy.

1. In Stripe, pull your MRR (monthly recurring revenue) total.
2. In DualEntry, open **Reports → Revenue Recognition → Recognized Revenue** and filter to the same period.
3. Compare the two figures directionally. Timing differences are expected because Stripe MRR is a billing metric, while DualEntry recognized revenue follows ASC 606 allocation.


A subscription with an upfront annual payment, for example, shows the full amount in Stripe MRR for the billing month but is spread across twelve months in DualEntry. If the figures diverge beyond expected timing differences, check for unmapped products, failed sync records in the integration error log, or contracts stuck in draft status.

## Next steps

- Review the full Stripe integration setup in the [Stripe Integration guide](/accountants/integrations/stripe).
- Understand how contract modifications work in [Change Orders, Terminations, and Renewals](/accountants/revenue-recognition/change-orders-terminations-renewals).
- See recognized and deferred revenue from synced contracts in [Reporting](/accountants/revenue-recognition/reporting).