Hey! This is Jason from HubiFi, drop us a message below and we will get back to you asap.
Thank you! We have received your message. We are looking into this as we speak and will get back to you as soon as possible.
Oops! Something went wrong while submitting the form.
Accounting for Revenue Recognition for ASC 606 for organizations using Stripe
December 10, 2024
Cody Leach
Finance
This guide aims to streamline the process of accounting for Stripe revenue recognition and the order to cash cycle per ASC 606/GAAP and facilitate margin analysis.
Want a downloadable PDF version of this post? Click here.
Introduction
Subscription revenue accounting can be complex. While Stripe provides comprehensive data, it is scattered across various sections of the application. This guide aims to streamline the process of accounting for revenue recognition and the order to cash cycle per ASC 606/GAAP and facilitate margin analysis.
Stripe maintains all of the necessary data to record revenue according to ASC 606 correctly, unlike some other billing/payment tools, but extracting these reports is the first step in the accounting process. See above for a summary of accounting that can be achieved from Stripe, compared to other common Billing and Payment systems used in the Subscription/SaaS industry.
Data Extraction
To compile all necessary data for accurate accounting, up to 4 reports need to be downloaded from Stripe:
Balance Transaction Report: Balances>All Activity
This report is the most foundational level of Stripe reporting but it only traces the cash side transactions, all the other reports are used to enrich the transactions in this report with the needed data to do rev rec correctly (subscription and billing data for Revenue Deferral, Unbilled AR, Billed AR entries, etc.)
Invoices Report: Billing > the Invoices page
This report tracks the invoicing from Stripe, which drives your Unbilled and Billed AR entries (and potential deferred revenue) and allows you to analyze payment applications and drive useful reporting.
This is the report that should tie out to your bank and let you break down what makes up that payout (charges, disputes, refunds, fees, etc.)
Cash/Payments Report: Transactions > Payments tab
This is used to enrich charge data on the Balance Transaction Report for useful reporting.
See below for a functional guide to how these reports and items within the reports relate to one another.
Key Data Limitations to note:
Stripe does not separate the idea of a subscription or contract from invoicing. A Subscription in stripe is simply a billing schedule. As such, Stripe does not allow for complex billing arrangements where billing does not align with subscription terms. So manual workarounds are typically required to facilitate.
Manual revenue recognition and order to cash accounting of Stripe is possible, but time consuming - driven by data volume the amount of useful metadata you want to bring in for FP&A reporting. Typically this becomes untenable around $10m-15m ARR.
Accounting - Journal Entries
Invoices Report
Key Note - while under ASC 606 invoices are not technically what drive the deferred revenue and revenue recognition entries (contracts) do - Stripe does not differentiate and as such is the best (but not correct) source of revenue recognition. For simple billing models - this works, for more complex we recommend discussing how HubiFi can help solve this.
Journal Entries:
Revenue Deferral: Dr. Accounts Receivable (AR), Cr. Deferred Revenue
Revenue Recognition: Dr. Deferred Revenue, Cr. Revenue
Discount Deferral: Dr. Provision for Discount, Cr AR
Contra-Revenue Recognition: Dr Contra-Revenue, Cr. Provision for Discount
Sales Tax Accrual: Dr. AR, Cr. Sales Tax Liability
Steps:
Pull invoices to determine initial deferral and recognize revenue over time using start and end dates. (Note Stripe stores the start/end dates on the invoice line item level)
If volume is manageable, maintain each subscription/invoice line on a line in Excel to create a detailed waterfall report; otherwise, summarize entries to a summarized waterfall.
Discounts are presented on the invoice or invoice line item level. These would be treated as separate lines to drive provision for discount and amortization accounting.
Split out the tax portion for the sales tax accrual. Use a VLOOKUP on the payment report (discussed next) for tax jurisdiction if separate Sales Tax Accrual Accounts are maintained.
Cash/Payments Report
Journal Entries:
Customer Pays: Dr. Cash in Transit (Stripe), Cr. AR
Payment Processor Fees: Dr. Payment Processor (PSP) Fees, Cr. Cash in Transit (Stripe)
Steps:
Use VLOOKUP to link invoice information for product-related fees and sales tax allocation.
Connect fees to payments using the Stripe Charge ID and link payments to invoices using the Invoice ID. Note the charge created date is the date that will be used to drive cash in transit entries. Available On date is when it will be released for payout.
Payout Reconciliation Report
Journal Entries:
Stripe Payouts: Dr. Cash - Bank, Cr. Cash in Transit (Stripe)
Steps:
Stripe settles in large batches and, as such, you will use the Balance Report to reconcile payments, involving VLOOKUP to the Payout Report for details on fees, refunds, and disputes.
Entries can be recorded in bulk or detailed for FP&A purposes by using this balance transaction detail enriched by the various reports above.
Refunds, Disputes, and Credit Reports
Refunds
Journal Entries:
Dr. AR, Cr. Cash in Transit (Stripe)
Dr. Revenue/Contra Revenue, Cr. Deferred Revenue
Dr. Cash in Transit (Stripe), Cr. PSP Fees
Steps:
VLOOKUP refunded payments and related invoices for proper revenue offset recording.
Disputes - Initiated/Lost
Journal Entries:
Dr. AR, Cr. Cash in Transit (Stripe)
Dr. Deferred Revenue, Cr. Revenue/Contra Revenue
Dr. Cash in Transit (Stripe), Cr. PSP Fees
Steps:
VLOOKUP disputed payments and related invoices for accurate revenue offset recording.
Disputes - Won
Journal Entries:
Dr. Cash in Transit (Stripe), Cr. AR
Dr. Deferred Revenue, Cr. Revenue/Contra Revenue
Dr. PSP Fees, Cr. Cash in Transit (Stripe)
Steps:
You will need to pull several past months for won disputes and VLOOKUP the payments accordingly to offset previous reversals, usually done in summary but necessary for detailed FP&A analysis.
Credit Report
Journal Entries:
Credit Issuances (Proration IS NOT true): Dr. Deferred Revenue, Cr. Credit Payable
Credit Applications (Proration = true): Dr. Credit Payable, Cr. AR
Steps:
VLOOKUP related invoice IDs to determine which deferred revenue or AR accounts to offset.
Key Insights and Best Practices
Complex Billing Arrangements
Stripe stores the start and end dates for subscriptions on invoice line items. As such, fairly common arrangements where a customer pays for a subscription in advance and receives monthly service have to be completed manually. For ways to automate this accurately, I recommend reaching out to HubiFi as we solve this problem.
Revenue Completeness
The best identifier for revenue lines in Stripe is the invoice_line_items from invoices. To determine revenue segmentation, product is the best method. Each product_id should map to a revenue stream on the GL. Review monthly to ensure all product_ids are accounted for. Another check to complete is the Cash reconciliation.
Taxes
Stripe allows setup of various product_ids and is treated as invoice_line_items, including local and regulatory taxes. Ensure these are accounted for as tax rather than revenue streams.
Credits
Credits can have their own product_ids. Ensure accurate identification and accounting.
Subscription Upgrades and Downgrades
Stripe handles subscription changes by issuing an "unused time credit." Use this data to determine appropriate revenue and deferred revenue offsets. VLOOKUP unused time credits to the related invoice line item to find related revenue/deferred revenue to offset.
Conclusion
Accurately accounting for subscription revenue through Stripe requires a comprehensive approach to data extraction and journal entries and is highly manual. By following this guide, finance teams can ensure compliance with ASC 606/GAAP and achieve detailed margin analysis. Working closely with the team managing Stripe to maintain clean product_ids and a clean rev ops process will greatly facilitate the accounting.
Hubifi can significantly simplify this process by automating the data gathering, data cleaning, reconciliation, and eliminating the need for all the manual file creation entirely - automatically generating your journal entries and enrichment needed to analyze the data. Contact us to learn more about automating this process, or schedule a demo with your Stripe data to get started today.
This white paper is designed to serve as a practical guide for accounting professionals navigating subscription revenue accounting.
A technology and automation focused CPA helping finance leaders bring their processes into the 21st century.If you're interested in talking finance systems - https://calendly.com/cody-hubifi Feel free to set up some time on my calendar. I like talking about this stuff too much
Get a demo
Learn how we cut accounting close timelines by 75% and identified 6% of revenue margin erosion opportunities for one of the fastest growing companies.