Billing
Examples

Revenue recognition examples Beta

Learn about revenue recognition using some common examples.

After reading the revenue recognition overview and methodology pages, use what you learned to review the examples below. Unless stated otherwise, the examples assume that revenue recognition takes place on a per-day basis. Stripe’s tooling recognizes revenue every millisecond but using a daily increment simplifies the calculations.

Monthly subscription

This example is based on the following assumptions:

  • On January 15th, at 00:00:00 UTC, a customer starts a monthly subscription that costs 31 USD.
  • The subscription generates an invoice.
  • The invoice is finalized and the customer pays 31 USD.

In this example, the invoice and revenue periods are from 1/15/2019 to 2/14/2019. The 31 USD is recognized across 17 days in January and 14 days in February. If you looked at the summary after January ends, you might see something like:

Account Jan
Revenue +17.00
DeferredRevenue +14.00

This means that recognized revenue increased by 17 USD for the days in January, and deferred revenue increased by 14 USD for revenue expected to be recognized in February.

Annual subscription

This example is based on the following assumptions:

  • On January 1st, at 00:00:00 UTC, a customer starts an annual subscription that costs 365 USD.
  • The subscription generates an invoice.
  • The invoice is finalized and the customer pays 365 USD.

In this example, the invoice and revenue periods are from 1/1/2019 to 12/31/2019. The 365 USD is recognized daily throughout the year. If you looked at the summary after March ends, you might see something like:

Account Jan 2019 Feb 2019 Mar 2019
Revenue +31.00 +28.00 +31.00
DeferredRevenue +334.00 -28.00 -31.00

Monthly metered subscription

This example is based on the following assumptions:

  • On January 15th, a customer subscribes to a monthly metered subscription at 1 USD per unit, and with aggregate_usage=sum.
  • On January 25th, the customer uses 15 units.
  • On February 4th, the customer uses another 17 units.
  • On February 14th, the subscription generates an invoice of 32 USD.
  • The invoice is finalized for 32 USD, but is not yet paid.

In this example, the invoice and revenue periods are from 1/15/2019 to 2/14/2019. Although the invoice is not generated until February 14th, the 15 USD from January 25th still has to be recognized when the usage was reported. If you looked at the summary after January ends, you might see something like:

Account Jan
Revenue +15.00
UnbilledAccountsReceivable +15.00

If you looked at the summary after February ends and the invoice is yet to be paid, you might see something like:

Account Jan Feb
Revenue +15.00 +17.00
UnbilledAccountsReceivable +15.00 -15.00
AccountsReceivable +32.00

Upgrade

This example is based on the following assumptions:

  • On April 1st, at 00:00:00 UTC, a customer starts a monthly subscription that costs 90 USD.
  • The subscription generates an invoice.
  • The invoice is finalized on April 1st and the customer pays 90 USD.
  • On April 21st at 00:00:00 UTC, the customer upgrades to a monthly subscription that costs 120 USD.

In this example, the customer receives 20 days of service with the 90 USD monthly subscription (60 USD in value) and 10 days of service with the 120 USD monthly subscription (40 USD in value). Therefore, in April, the recognized revenue is 100 USD.

Downgrade

This example is based on the following assumptions:

  • On April 1st, at 00:00:00 UTC, a customer starts a monthly subscription that costs 90 USD.
  • The subscription generates an invoice.
  • The invoice is finalized on April 1st and the customer pays 90 USD.
  • On April 21st at 00:00:00 UTC, the customer downgrades to a monthly subscription that costs 30 USD.

In this example, the customer receives 20 days of service with the 90 USD monthly subscription (60 USD in value) and 10 days of service with the 30 USD monthly subscription (10 USD in value). Therefore, in April, the recognized revenue is 70 USD.

Customer credit balance

This example is based on the following assumptions:

  • On January 15th, at 00:00:00 UTC, a customer starts a monthly subscription that costs 31 USD.
  • The subscription generates an invoice.
  • The invoice is finalized on January 15th, at 00:00:00 UTC.
  • The customer has -11 USD in its customer credit balance. Stripe automatically applies -11 USD to the invoice and adjusts the customer credit balance to 0 USD.
  • The customer pays 20 USD on February 9th.

In this example, the invoice and revenue periods are from 1/15/2019 to 2/14/2019. The 31 USD is recognized across 17 days in January and 14 days in February. If you looked at the summary after January ends, you might see something like:

Account Jan Feb
AccountsReceivable +20.00 -20.00
Cash +20.00
CustomerBalance -11.00
Revenue +17.00 +14.00
DeferredRevenue +14.00 -14.00

In this scenario, the customer has an existing customer credit balance that’s used to pay the invoice. It’s also possible for a negative amount on an invoice to credit the customer credit balance, which is then used to pay the invoice. This often happens when a customer downgrades to a cheaper subscription. For example, assume that:

  • A -31 USD invoice with one invoice line item is finalized on January 15th, at 00:00:00 UTC.
  • The -31 USD invoice line item’s service period is from January 15th 00:00:00 UTC to February 15th 00:00:00 UTC.
  • Stripe automatically credits 31 USD to the customer credit balance and closes the invoice.

The -31 USD line item books a journal entry that debits DeferredRevenue and credits AccountsReceivable. When Stripe credits the customer credit balance, another journal entry is booked that debits AccountsReceivable and credits CustomerBalance. In the summary at the end of January, you might see something like:

Account Jan Feb
AccountsReceivable
Cash
CustomerBalance +31.00
Revenue -17.00 -14.00
DeferredRevenue -14.00 +14.00

Notice that eventually the net revenue is -31 USD.

Refund

This example is based on the following assumptions:

  • On January 1st, at 00:00:00 UTC, a customer starts a three month subscription that costs 90 USD.
  • The subscription generates an invoice.
  • The invoice is finalized and the customer pays 90 USD.
  • On February 1st, a full refund is made.

When the full refund is made:

  • Cash is returned to the customer.
  • Recognized revenue is offset by contra revenue in the refunds account.
  • Deferred revenue from the subscription that has not been recognized is cleared.

In this example, the customer received one month of service, so 31 USD in recognized revenue is refunded. The refund also decreases the cash balance in your Stripe account by 90 USD. At the time of the refund, there was 59 USD remaining in deferred revenue, so this is also cleared. If you viewed the summary after March ends, it might look something like this:

Account Jan 2019 Feb 2019 Mar 2019
Revenue +31.00
DeferredRevenue +59.00 -59.00
Cash +90.00 -90.00
Refunds +31.00

Partial refund

This example is based on the following assumptions:

  • On January 1st, at 00:00:00 UTC, a customer starts a three month subscription that costs 90 USD.
  • The subscription generates an invoice.
  • The invoice is finalized and the customer pays 90 USD.
  • On February 1st, a partial refund of 9 USD is made.

When the partial refund is made:

  • 9 USD is returned to the customer.
  • Recognized revenue is proportionally offset by contra revenue in the refunds account.
  • Deferred revenue from the subscription that has not been recognized is also proportionally reduced.

In this example, the customer received one month of service, so 31 USD has been recognized. There is 59 USD remaining in deferred revenue. The partial refund of 9 USD is 10% of 90 USD. Therefore, the refunds account (part of contra revenue) is increased by 3.10 USD (10% of 31 USD), and deferred revenue is decreased by 5.90 USD (10% of 59 USD). If you viewed the summary after March ends, it might look something like this:

Account Jan 2019 Feb 2019 March 2019
Revenue +31.00 +25.20 +27.90
DeferredRevenue +59.00 -31.10 (= -25.20 + -5.90) -27.90
Cash +90.00 -9.00
Refunds +3.10

Void

This example is based on the following assumptions:

  • On January 1st, at 00:00:00 UTC, a customer starts a three month subscription that costs 90 USD.
  • The subscription generates an invoice.
  • The invoice is finalized, but the customer hasn’t paid yet.
  • On February 1st, the invoice is voided.

When the invoice is voided:

  • The accounts receivable account is cleared because we don’t expect to get paid.
  • Recognized revenue is offset by contra revenue in the voids account.
  • Deferred revenue from the subscription that has not been recognized is cleared.

In this example, the customer received one month of service, so 31 USD in recognized revenue is voided. At the time of the refund, there was 59 USD remaining in deferred revenue, so this is also cleared. If you viewed the summary after March ends, it might look something like this:

Account Jan 2019 Feb 2019 Mar 2019
AccountsReceivable +90.00 -90.00
Revenue +31.00
DeferredRevenue +59.00 -59.00
Voids +31.00

Uncollectible

This example is based on the following assumptions:

  • On January 1st, at 00:00:00 UTC, a customer starts a three month subscription that costs 90 USD.
  • The subscription generates an invoice.
  • The invoice is finalized, but the customer hasn’t paid yet.
  • On February 1st, the invoice is marked as uncollectible.

When the invoice is marked as uncollectible:

  • The accounts receivable account is cleared because we don’t expect to get paid.
  • Recognized revenue is offset by contra revenue in the bad debt account.
  • Deferred revenue from the subscription that has not been recognized is cleared.

In this example, the customer received one month of service, so 31 USD in recognized revenue becomes bad debt. At the time of the invoice being marked as uncollectible, there was 59 USD remaining in deferred revenue, so this is also cleared. If you viewed the summary after March ends, it might look something like this:

Account Jan 2019 Feb 2019 Mar 2019
AccountsReceivable +90.00 -90.00
Revenue +31.00
DeferredRevenue +59.00 -59.00
BadDebt +31.00

An uncollectible invoice might still be paid. When the invoice is paid, the bad debt account is cleared out using a part of the received cash amount. The remaining cash amount goes to the recoverables account. If the invoice is paid in April, the summary might look something like this:

Account Jan 2019 Feb 2019 Mar 2019 Apr 2019
AccountsReceivable +90.00 -90.00
Revenue +31.00
DeferredRevenue +59.00 -59.00
BadDebt +31.00 -31.00
Cash +90.00
Recoverables +59.00

Dispute

In case of a dispute, revenue recognition works similarly to how a refund works except that the disputes account is used instead. This example also shows what happens if you win a dispute and is based on the following assumptions:

  • On January 1st, at 00:00:00 UTC, a customer starts a three month subscription that costs 90 USD.
  • The subscription generates an invoice.
  • The invoice is finalized and the customer pays 90 USD.
  • On February 1st, a dispute is made.
  • On April 1st, you win the dispute because the bank rules in your favor.

When the dispute is made:

  • Cash is returned to the customer.
  • Recognized revenue is offset by contra revenue in the disputes account.
  • Deferred revenue from the subscription that has not been recognized is cleared.

When you win the dispute:

  • Cash is returned to you.
  • Recognized revenue and deferred revenue aren’t changed.
  • Cash is offset by an increase in the recoverables account.

In this example, the customer received one month of service, so 31 USD in recognized revenue is disputed. The dispute also decreases the cash balance in your Stripe account by 90 USD. At the time of the dispute, there was 59 USD remaining in deferred revenue, so this is also cleared. Later in time, in April, the bank rules in your favor, so the cash is returned to you.

If you viewed the summary after April ends, it might look something like this:

Account Jan 2019 Feb 2019 Mar 2019 Apr 2019
Revenue +31.00
DeferredRevenue +59.00 -59.00
Cash +90.00 -90.00 +90.00
Disputes +31.00
Recoverables +90.00

External asset

When you manually mark invoices as paid outside of Stripe, the external asset account is increased. All other accounts operate as if the invoice was paid except that the cash account isn’t changed.

Below is an example involving the external asset account with the following assumptions:

  • On January 1st, at 00:00:00 UTC, a customer starts a monthly subscription that costs 31 USD.
  • The subscription generates an invoice, and the invoice is finalized on the same day.
  • The invoice is manually marked as paid outside of Stripe on February 5th.
Account Jan Feb
AccountsReceivable +31.00 -31.00
Revenue +31.00
Cash
ExternalAsset +31.00

Tax liability

Invoices and invoice line items can be assigned tax rates. Once tax rates are assigned, the revenue recognition reports will compute tax liability.

Below is an example using an exclusive tax rate with the following assumptions:

  • On January 1st, at 00:00:00 UTC, a customer starts a monthly subscription that costs 31 USD with an exclusive tax rate of 10%. The total due amount is 34.10 USD.
  • The subscription generates an invoice.
  • The invoice is finalized and paid on the same day.
Account Jan
Revenue +31.00
Cash +34.10
TaxLiability +3.10

Below is an example using an inclusive tax rate with the following assumptions:

  • On January 1st, at 00:00:00 UTC, a customer starts a monthly subscription that costs 31 USD with an inclusive tax rate of 10%. The total due amount is 31 USD.
  • The subscription generates an invoice.
  • The invoice is finalized and paid on the same day.
Account Jan
Revenue +27.90
Cash +31.00
TaxLiability +3.10
Was this page helpful?
Questions? Contact us.
Developer tutorials on YouTube.