Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Overview
Billing
Tax
Reporting
    Overview
    Select a report
    Filters and settings
    Categories and types
    Connect an accounting tool
    Reports API
    Reports for multiple accounts
    Revenue recognition
      Get started
      How Revenue Recognition works
        Subscriptions and Invoicing
        One-off payments
        Refunds and disputes
      Data freshness
      Pricing
      Multi-currency
      Connect platforms
      Revenue Recognition for Usage-Based Billing
      Revenue contracts
      Reports
      Overrides
      Audit your numbers
      Examples
      Revenue recognition rules
      Revenue Recognition settings
      Map to your chart of accounts
      Performance obligations API
      Import data to Stripe
      Export data from Stripe
    Bank reconciliation
Data
Startup incorporation
HomeFinance automationReportingRevenue recognition

Revenue Recognition methodology

Learn how Revenue Recognition works within Stripe.

Copy page

Revenue Recognition is integrated with other Stripe objects to provide intelligent default settings for how to recognise revenue.

Revenue Recognition automatically calculates all transactions that happen within Stripe down to the millisecond, including subscriptions, invoices, one-time payments, refunds, disputes, and so on.

Chart of accounts

Stripe built Revenue Recognition on top of a double-entry accounting ledger that tracks debits and credits resulting from your business activity.

To get the most out of Revenue Recognition, it helps to understand the default chart of accounts and the debits and credits that impact those accounts.

AccountDebit or Credit typeDescription
RevenueRevenue (credit)Recognizable portion of finalized invoices, prorated invoice items, and metered billing that count towards revenue during the month. For example, if an invoice line item is for 90 USD with 10 USD in taxes, the total invoice is 100 USD, but the recognizable portion is only 90 USD.
RefundsContra revenue (debit)Portion of the refunded amount previously recognized. For example, if you issue a 120 USD refund on an annual subscription during the second month, 20 USD for the first 2 months is contra revenue. The remaining 100 USD is adjusted and reflected in your deferred revenue balance in the balance sheet.
DisputesContra revenue (debit)Portion of the disputed amount previously recognized. For example, if there’s a 120 USD dispute on an annual subscription during the second month, 20 USD for the first 2 months is contra revenue. The remaining 100 USD is adjusted and reflected in your deferred revenue balance in the balance sheet.
Credit notesContra revenue (debit)Portion of the credit note amount previously recognized. For example, if there’s a 120 USD credit note on an annual subscription during the second month, 20 USD for the first 2 months is contra revenue. The remaining 100 USD is adjusted and reflected in your deferred revenue balance in the balance sheet.
Bad debtContra revenue (debit)Previously recognized revenue from invoices that have been marked as uncollectible.
VoidsContra revenue (debit)Previously recognized revenue from invoices that have been voided.
Unbilled voidsContra revenue (debit)Previously recognized revenue from prorated invoice items that have been deleted. These items are sometimes deleted when they generate unbilled accounts receivable and revenue.
TransferContra revenue (debit)Previously recognised revenue from separate transfers.
DiscountsContra revenue (debit)Recognised revenue from invoices that received discounts. Revenue Recognition discount as contra revenue support is currently in private beta.
Customer balance adjustmentsExpense (debit)Expenses incurred due to manual adjustments to a customer credit balance or exclusion associated with post-paid credit notes on customer balance.
External customer balance adjustmentsExpense (debit)Expenses incurred due to exclusion associated with post-paid credit notes on external customer balance.
UnderpaymentsExpense (debit)Expenses incurred due to transfers that underpay an invoice, as used by the customer credit balance payment method or Sources.
FeesExpenses (debit)Expenses incurred due to Stripe fees.
RecoverablesGains (credit)Recovered funds that aren’t attributable to revenue. For example, if you have a 120 USD dispute on an annual subscription during the second month, 20 USD for the first 2 months is contra revenue and the remaining 100 USD is adjusted from the deferred revenue balance. If you win the dispute and 120 USD is returned to you, 20 USD is reflected as revenue and the remaining 100 USD is reflected as recoverables.
ExclusionGains (credit)Excluded funds that aren’t attributable to revenue. To exclude transactions, set up exclusion rules or use exclusion import.
Fx lossLoss (debit)Total loss due to foreign currency exchange rates.
Other lossLoss (debit)The portion of contra revenue that exceeds the total invoice represents an over-compensation in cash to the customer. For example, if a 100 USD invoice is partially refunded by 80 USD and then disputed for an additional 80 USD, 60 USD will be categorised as “Other loss”.
Connect transfer lossLoss (debit)Total loss due to destination charge refund, and the transfer reversal will reverse the ConnectTransferLoss account.

Data modeling for Revenue Recognition

See the following descriptions of how Revenue Recognition handles common Stripe resources to learn how Revenue Recognition uses data modelling.

Subscriptions and Invoicing

Subscriptions and Invoices are higher level resources that contain detailed information about each transaction.

Subscriptions create invoices on each cycle, with each subscription item corresponding to an invoice line item. The period of each line item is automatically populated with the period of the subscription item.

Revenue Recognition treats each invoice line item as its own performance obligation. When the invoice finalises, the total recognisable amount is deferred and subsequently amortised evenly over the period of each invoice line item.

If a period isn’t set on an invoice line item, the amount on that invoice line item is recognised entirely when the invoice is finalised. Use the Data Import feature to configure your invoice data, or set rules to customise when and how invoice line items are recognised.

For more details and examples regarding how Revenue Recognition handles subscriptions and invoices with specific scenarios involving upgrades, downgrades, discounts, taxes, and so on, review the Subscriptions and Invoicing page.

One-time payments

One-off payments created through Checkout contain information about the product, price, and tax starting 1 May 2025.

One-off payments created in the Dashboard or through the Charges and PaymentIntents APIs don’t contain as much information as invoices.

Because no service period or fulfillment information exists for them, by default, one-time payments are recognized immediately when the payment occurs.

Import data to add a service period or split a payment into different revenue recognition schedules. This allows you to customise revenue treatment behaviour and configure rules such as payment amount, description, and customer email.

For more details and examples on how Revenue Recognition handles one-off payments, review the One-off payments page.

Refunds and disputes

Revenue Recognition handles refunds and disputes by generating contra revenue to offset already recognized revenue.

For transactions with both already-recognized and deferred revenue, the recognized portion is added to either the refunds or disputes contra revenue account, which cancels out the deferred revenue.

For more details and examples on how Revenue Recognition handles refunds and disputes, review the Refunds and Disputes page.

External transactions

You can track revenue collected outside of Stripe using invoices. Configure the invoice as you would any other, and then mark the invoice as paid either directly in the Dashboard, or through the paid_out_of_band option in the API.

Invoices marked as paid outside of Stripe contribute not to the cash account, but rather to the external asset account.

Caution

If you’d like to consolidate your financial data from outside Stripe onto Revenue Recognition, review the Data import page.

Multi-currency

If your business handles transactions in multiple currencies, accurately recognizing revenue can be complicated.

Revenue Recognition processes transactions and generates journal entries based on your account’s settlement currencies. Transactions with presentment currencies that aren’t supported as settlement currencies are automatically converted to your account’s default settlement currency.

For payments and paid invoices, we use the exchange rate for the actual money movement (that is, reflected on the balance transaction). If you incur a time delay between issuing a bill (for example, an invoice) and it getting paid, the difference in amounts because of changing exchange rates between the two times is added to the FxLoss account.

For more details and examples on how Revenue Recognition handles multiple currencies, review the Multi-currency page.

Data availability

Revenue Recognition computes your data twice daily, at 0:00am UTC and at 12:00pm UTC.

The data processed at 0:00am UTC encompasses account activity from the prior day’s 12:00pm to that day’s 11:59pm UTC. The 12:00pm UTC update covers activity from 0:00am to 11:59am UTC of the same day.

It can take up to 24 hours to process the data. Users in time zones far from UTC might notice slight delays in reports because late-day activity in PST corresponds to early hours of the following day in UTC.

As an example, you might have account activity occurring on 1 August 2023, from 0:00 am to 11:59 am UTC. You can expect to see this activity reflected in the Revenue Recognition reports by 4 August 2023, at 12:00 pm UTC. Similarly, you can access reports for activity from 12:00 pm to 11:59 pm UTC on 1 August 2023 by 5 August 2023, at 0:00 am UTC.

Journal entries

Every billing activity in Stripe generates a set of journal entries. A journal entry is a record of a transaction. Each journal entry consists of a debit and a credit account. For example, an entry which finalises an invoice would debit AccountsReceivable and credit DeferredRevenue. Paying an invoice would debit Cash and credit AccountsReceivable.

These entries can occur in asset, liability, equity, expense, or revenue accounts. You can learn more about the definitions of each account that will appear in a journal entry under our Chart of accounts section.

The table below shows the applicable billing activities for common journal entries. You can export journal entries to CSV using the debits and credits report, which you can find in the Reports tab in the Dashboard. In addition, there are options to download debits and credits reports by the event type, which provide a brief description of the recorded event, which can help you understand the nature of each journal entry.

Caution

The following table isn’t the complete set of entries. We’ll be periodically updating the entries. If there’s a specific entry that you require assistance with, please create a ticket on our support page.

DebitCreditDefinition
Accounts receivableDeferred revenueInvoice being finalised
Unbilled accounts receivableUnbilled invoice item being invoiced
Passthrough feesFinalise an invoice with passthrough fees
Tax liabilityFinalise an invoice with tax
Bad debtAccounts receivableMark an invoice as uncollectible
Pending cashMark an invoice with a pending ACH as uncollectible
RecoverablesMark an invoice which is partially paid with customer balance as uncollectible
CashAccounts receivableInvoice is paid
Customer balancePaying for a negative customer balance
ExclusionCash is excluded
Pending cashACH paying invoice is confirmed
RecoverablesWinning a dispute for amounts that were previously adjusted from deferred revenue balance
Connect transfer lossCashLoss from a transfer
Credit notesAccounts receivablePrepaid credit note is issued on an unpaid invoice
Customer balancePost paid credit note credits customer balance
External customer balancePost paid credit note credits external customer balance
Customer balanceCustomer balance adjustmentsReduce the amount owned by the customer
Customer balance adjustmentsCustomer balanceIncrease the amount owned by the customer
Deferred revenueCashCaused by Refunds and Disputes
RevenueRevenue is recognized
External assetAccounts receivableMark an invoice as paid outside Stripe
RefundsCashRefund
Tax liabilityCustomer balanceCredit note on an invoice with tax, and it credits customer balance
External customer balanceCredit note on an invoice with tax, and it credits external customer balance
Unbilled accounts receivableRevenueRevenue recognised on unbilled invoice item
Unbilled voidsUnbilled accounts receivableUnbilled invoice item is deleted
VoidsAccounts receivableVoid an invoice
Bad debtVoid an uncollectible invoice
Customer balanceVoid an invoice partially paid with customer balance

The activities above are all based on positive amounts. It is important to note that these billing activities can be reversed. These reverse activities occur when activities are triggered on negative invoice line item amounts.

Negative Line Item

A negative line item occurs when the value of the line item becomes higher than the amount it is paid for. This occurs typically during a subscription downgrade or upgrade when the product tier changes.

Here is an example of journal entries which contains a negative line item caused by a downgrade:

  • On 1 April, the invoice is generated for a monthly subscription worth 90 USD and the customer pays for it.
  • On 21 April, the customer requests a downgrade of their service to a 30 USD subscription. This results in 2 unbilled line items for the remaining time of the subscription.
    • il_1 is for the remaining time on new plan worth 10 USD
    • il_2 is for the remaining time of old plan worth -30 USD
  • On 1 May, the invoice is generated containing the line items generated by the downgrade as well for the new line item, il_3, representing the month of May. The customer pays for the invoice on the same day.
  • On 4 May, the customer requests a full refund on the invoice for May, resulting in full refunds on the line item created by the downgrade as well as the new line item for May. We process the refund.
DateDebitCreditAmountLine Item
2022-04-21Unbilled accounts receivableRevenue10 USDil_1
RevenueUnbilled accounts receivable30 USDil_2
2022-05-01Accounts receivableDeferred revenue30 USDil_3
CashAccounts receivable30 USDil_3
Deferred revenueRevenue30 USDil_3
Accounts receivableUnbilled accounts receivable10 USDil_1
CashAccounts receivable10 USDil_1
Unbilled accounts receivableAccounts receivable30 USDil_2
Accounts receivableCash30 USDil_2
2022-05-04RefundsCash10 USDil_1
CashRefunds30 USDil_2
RevenueCash30 USDil_3
Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access programme.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc