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:

  1. 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.)
  2. 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. 
  3. Payout Reconciliation Report: Balances > Payouts tab
    • 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.)
  4. 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:

  1. 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.
  2. 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:

  1. 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)
  2. 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.
  3. 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. 
  4. 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:

  1. Use VLOOKUP to link invoice information for product-related fees and sales tax allocation.
  2. 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:

  1. 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.
  2. 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:

  1. 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:

  1. 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:

  1. 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:

  1. 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.

Cody Leach

Accounting Automation | Product | Technical Accounting | Accounting Systems Nerd

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.

Get a Demo