Skip to content
Create account or Sign in
The Stripe Docs logo
/
Ask AI
Create accountSign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
APIs & SDKsHelp
Overview
Billing
OverviewAbout the Billing APIs
Subscriptions
Invoicing
Usage-based billing
Advanced usage-based billing
Quotes
Customer management
Billing with other products
Revenue recovery
Automations
Scripts
Test your integration
Tax
Overview
Use Stripe Tax
Manage compliance
Reporting
Overview
Select a report
Configure reports
Reports for multiple accounts
Reports API
Revenue recognition
    Overview
    How Revenue Recognition works
    Get started
      Invite your accountant
      Revenue Recognition settings
        Accounting period control
        Examples
      Revenue recognition rules
      Map to your chart of accounts
      Standalone selling price
      Multi-currency
      Performance obligations API
    Import data to Stripe
    Reports
    Examples
    Revenue Recognition for platforms
Data
Overview
Query business data
Sigma
Data Pipeline
Import external data
United States
English (United States)
HomeRevenueRevenue recognitionGet startedRevenue Recognition settings

Revenue Recognition settings examples

Learn about revenue settings through examples.

Amortization granularity

This example uses the following assumptions:

  • On June 15th, 2026 at 12:00:00 PM UTC, a customer starts a 4-month subscription that costs 120 USD.
  • The subscription generates an invoice.
  • The invoice finalizes and the customer pays 120 USD.

In this example, the invoice and revenue periods are from June 15, 2026 12:00:00 PM UTC to October 13, 2026 12:00:00 PM UTC. The 120 USD is recognized across 15.5 days in June, 31 days in July, 31 days in August, 30 days in September and 12.5 days in October. We can use this example to demonstrate the differences between our supported amortization methods.

If you look at the summary after October ends, with amortization by second applied, you might see something like:

AccountJunJulAugSepOct
Revenue+15.50+31.00+31.00+30.00+12.50
DeferredRevenue+104.50-31.00-31.00-30.00-12.50

If you looked at the summary after October ends, amortization by day applied, you might see something like:

AccountJunJulAugSepOct
Revenue+16.00+31.00+31.00+30.00+12.00
DeferredRevenue+104.00-31.00-31.00-30.00-12.00

If you looked at the summary after October ends, amortization by month evenly applied, you might see something like:

AccountJunJulAugSep
Revenue+30.00+30.00+30.00+30.00
DeferredRevenue+90.00-30.00-30.00-30.00

If you looked at the summary after October ends, amortization by month evenly, first and last month prorated applied, you might see something like:

AccountJunJulAugSepOct
Revenue+15.50+30.66+30.66+30.68+12.50
DeferredRevenue+104.50-30.66-30.66-30.68-12.50

Record recovered revenue as gains

By default, Stripe Revenue Recognition recognizes recovered revenue as gains. Revenue recovered from events such as uncollectible invoices paid, disputes won, or refunds failed is booked to the Recoverables account (gains). This example uses the following assumptions:

  • On January 1, 2026 at 00:00:00 PM UTC, a customer starts a 4-month subscription that costs 120 USD.
  • The subscription generates an invoice.
  • The invoice is marked as uncollectible on February 1.
  • On March 1, the invoice is paid and a recovery occurs.
AccountJanuaryFebruaryMarch
AccountsReceivable+120.00-120.00
Revenue+31.00
DeferredRevenue+89.00-89.00
BadDebt+31.00
Recoverables+120.00
Cash+120.00

When you disable this setting, revenue recognition resumes from the original revenue recognition schedule. This applies to two scenarios: when recovery occurs before the service period ends, or when recovery occurs after the service period ends.

If you receive cash before the service period ends, then the original revenue recognition schedule resumes. Using the example above, cash is received in March, which is before the service period ends. Rather than booking a gain in March, Stripe Revenue Recognition reverses the bad debt, recognizes revenue immediately for February and March, and adds the remaining deferred revenue back for the remainder of the subscription life. Revenue continues to be recognized until the end of the original service period. The summary might look like this:

AccountJanuaryFebruaryMarchApril
AccountsReceivable+120.00-120.00
Revenue+31.00+59.00+30.00
DeferredRevenue+89.00-89.00+30.00-30.00
BadDebt+31.00-31.00
Cash+120.00

If you receive cash after the original service period ends, revenue is recognized in the period cash is received. Using the previous example, if you don’t receive cash until May, Stripe Revenue Recognition reverses the bad debt and recognizes revenue immediately in May. The summary might look like this:

AccountJanuaryFebruaryMarchAprilMay
AccountsReceivable+120.00-120.00
Revenue+31.00+89.00
DeferredRevenue+89.00-89.00
BadDebt+31.00-31.00
Cash+120.00

Stripe handles refunds failed and disputes won in a similar manner, but the recovered revenue goes to different accounts. For refunds failed, the recovered revenue goes to the Refunds account. For disputes won, the recovered revenue goes to the Disputes account.

Catch-up revenue

This example uses the following assumptions:

  • On November 1st, 2026, at 00:00:00 UTC, a customer is billed for an invoice that costs 92 USD.
  • The invoice has service periods from Oct 1, 2026 to Jan 1, 2027 for all of its line items.
  • The invoice finalizes and the customer pays 92 USD.

In this example, the service period for the transaction begins prior to the invoice finalization, triggering the catch-up revenue effect. We can use this example to demonstrate the differences between enabling and disabling catch-up revenue.

After December ends, with catch-up revenue enabled, the summary might look like:

AccountNovDec
Revenue+61.00+31.00
DeferredRevenue+31.00-31.00

After December ends, with catch-up revenue disabled, the summary might look like:

AccountOctNovDec
Revenue+31.00+30.00+31.00
DeferredRevenue+31.00 (= +61.00 + -30.00)-31.00
UnbilledAccountsReceivable+31.00-31.00
AccountsReceivable+92.00

Functional currency

This example uses the following scenario:

  • Your functional currency is EUR.
  • On January 1, 2026 at 00:00:00 UTC, you create a 300 CAD invoice for a three-month subscription and settle in USD. When you finalize the invoice, 1 CAD = 0.60 EUR, so 300 CAD = 180 EUR.
  • On February 1, 2026, the customer pays the invoice in full, which settles to your account as 204 USD. At payment, 1 USD = 0.80 EUR, so 204 USD = 163.20 EUR. You book the difference between the billed functional amount and the paid functional amount as a foreign exchange loss.
AccountJanuaryFebruaryMarch
Revenue+60.00+60.00+60.00
DeferredRevenue+120.00-60.00-60.00
AccountsReceivable+180.00-180.00
Cash+163.20
FxLoss+16.80 (+180.00 + -163.20)

Record discounts as contra revenue

The example below makes the following assumptions:

  • The invoice has a service period from October 1, 2025 to December 1, 2025 for all line items.
  • The full price is 122.00 USD with a 30.50 USD discount.
  • The invoice finalizes and the customer pays 91.50 USD.

By default, discounts are subtracted from the revenue account. Only the net amount (91.50 USD) is recognized as revenue.

AccountTotalOctober (31 days)November (30 days)
Cash91.50+91.500
Deferred revenue0+45.00-45.00
Revenue91.50+46.50+45.00

When enabled, the full price and the discount are booked separately.

AccountTotalOctober (31 days)November (30 days)
Cash91.50+91.500
Deferred revenue0+60.00-60.00
Revenue122.00+62.00+60.00
Deferred discounts0+15.00-15.00
Discounts30.50+15.50+15.00
Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Chat with Stripe developers on Discord.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc
On this page