Revenue Recognition Performance Obligations APIBeta
Learn how to model performance obligation fulfilment in Stripe Revenue Recognition.
Overview
Performance obligation fulfilment is an important part of revenue recognition in accounting and finance. It refers to the completion of a transaction in which the seller has delivered the goods or services promised to the customer, and can recognise revenue for the sale. There are several scenarios where fulfilment occurs and revenue can be recognised, including but not limited to:
- Delivery of tangible goods: Fulfilment occurs when the physical goods have been shipped to the customer and they’ve taken possession of the goods. The delivery of the goods confirms that the customer has received the promised benefit, and therefore you can recognise the revenue from the sale.
- Performance of a service: In the case of a service-based sale, fulfilment occurs when the service has been performed and the customer has accepted the service. After the customer has accepted the service, you can recognise the revenue.
- Prepayment: A customer pays for a service or goods in advance of receiving the actual service or goods. You can recognise the revenue from the prepayment over time as the service is delivered or the goods are used.
This guide explains how to use the Stripe Revenue Recognition Performance Obligations API to achieve accurate revenue reporting.
Setup
This example uses a product named “Prepaid package”. Create the product as a Stripe product – call it “Product Prepaid package.”
Under the Product Prepaid package, a create a Price for one unit. The price is 1 USD per unit. Call the price “Prepaid package”.
Say you bill a customer for a 100 USD Product Prepaid package, which includes a Price Prepaid package for 100 units. You want to defer the 100 USD upon invoicing and to recognise it based on the usage.
Create a subscription or an invoice
Now you can set up a subscription or a standalone invoice to bill the customer.
For a subscription, you’ll need to add a subscription item whose price is Price Prepaid package for 100 units.
For an invoice, you’ll need to add an invoice item whose price is Price Prepaid for 100 units.
Create a Revenue Recognition rule
To defer the revenue upon invoicing, you’ll need to create a Revenue Recognition rule. If no fulfilment events are ever sent, the revenue will be recognised entirely over the specified period, which defaults to one year.
Record usages
You can record usages through the API.
If you were to create an invoice on 1 June 2022, and 10 units are used on 29 July 2022, you would send the API request below:
Reporting
Before fulfilment
If you download the debits and credits reports in June 2022, the following is what you would see. Because no usage is recorded yet, the whole invoice line item will be deferred and recognised 12 months later.
Account | Jun 2022 | Jun 2023 |
---|---|---|
AccountsReceivable | +100 | |
DeferredRevenue | +100 | -100 |
Revenue | +100 |
Partial fulfilment
With the usage recorded in the section above, the reports would look like the following in July 2022:
Account | Jun 2022 | Jul 2022 | Jun 2023 |
---|---|---|---|
AccountsReceivable | +100 | ||
DeferredRevenue | +100 | -10 | -90 |
Revenue | +10 | +90 |
Full fulfilment
Suppose another usage is recorded on 10 Aug 2022 with the remaining amount (90 USD). The deferred revenue will be converted to revenue completely in Aug 2022:
Account | Jun 2022 | Jul 2022 | Aug 2022 |
---|---|---|---|
AccountsReceivable | +100 | ||
DeferredRevenue | +100 | -10 | -90 |
Revenue | +10 | +90 |