Revenue Recognition is integrated with other Stripe objects to provide intelligent default settings for how revenue should be recognized.
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
Revenue recognition is built 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.
Data modeling for Revenue Recognition
You can better understand Revenue Recognition by understanding the data modeling—see the following descriptions of how Revenue Recognition handles common Stripe resources.
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 finalizes, the total recognizable amount is deferred and subsequently amortized 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 recognized entirely when the invoice is finalized. Use the Data Import feature to configure your invoice data, or set rules to customize when and how invoice line items are recognized.
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.
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 customize revenue treatment behavior and configure rules such as payment amount, description, and customer email.
For more details and examples on how Revenue Recognition handles one-time payments, review the One-time 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.
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 on 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.
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.