Revenue recognition can be complex. When seeing the reports for the first time, you may find that some numbers do not match what you expected to see.
Stripe’s revenue recognition follows ASC 606 guidelines, and here are some nuances on how we recognize your revenue:
We recognize revenue as soon as an invoice is finalized. Specifically, we debit AccountsReceivable and credit DeferredRevenue upon invoice finalization. Revenue will be recognized based on the service period of the invoice, regardless of whether the invoice is paid.
We debit Cash and credit AccountsReceivable when an invoice is paid.
-
If an invoice is finalized but not yet paid, its revenue will continue to be recognized. If you believe an invoice is uncollectible, it needs to be explicitly marked as uncollectible for its revenue to be canceled out. Please see the detailed example of uncollectible invoice.
You might find it useful to enable the setting to automatically mark an invoice as uncollectible if it still unpaid after all retries are attempted. Please see: Updating the invoice status for failed automatic collections.
The revenue from a charge that is not associated with an invoice will be immediately recognized at the payment time.
The revenue from an invoice (or an invoice line item) that has unspecified service periods will be immediately recognized when the invoice is finalized.
There are many other useful examples (e.g. refund, dispute, winning dispute) that you might find interesting.
Below are a few common root causes that might be applicable:
When past due invoices are not marked as uncollectible, revenue from these invoices is still counted. As a result, your revenue numbers may appear as higher than you expected. You can see all your past due invoices on the invoice list page. If they are old invoices, you will want to mark them as uncollectible.
When invoices have unspecified service periods, revenue for those invoices is not amortized. The revenue is immediately recognized when the invoice is finalized. To rectify this, you can use the transaction overrides feature to assign a service period to an invoice. (Note that invoices created by subscriptions will automatically have service periods specified.)
If you are creating charges instead of invoices, the revenue for the charges is immediately recognized when the charges occur. To rectify, you can migrate to Stripe Billing, so new invoices will be created in Stripe. Please reach out to us if you have any questions regarding Stripe Billing. As a workaround, you can use the transaction overrides feature to set the service periods for all of your past charges, and continuing to do so as charges occur in the future.
-
If you have both a charge and a marked-as-paid invoice that represent the same real-world transaction, this will double-book revenue because Stripe would not know that the invoice and the charge are related. To rectify this, there are two recommended steps:
You can update your integration to link the charge to the invoice correctly in the future.
For existing charges & invoices, you can exclude the marked-as-paid invoice, and set a service period for the charge using the transaction overrides feature.
If you’re experiencing an issue unrelated to the above, please contact us via support+revenue-recognition@stripe.com, and our experts will help you with investigation.