Skip to content

Revenue Recognition Fresh

Automated accrual accounting. Stripe Revenue Recognition calculates recognized and deferred revenue across all your Stripe transactions — subscriptions, invoices, one-time payments, refunds, and disputes.

Who needs Revenue Recognition

Business typeWhy
Public companies or businesses with $25M+ annual revenueLegally required to comply with ASC 606 / GAAP / IFRS
Startups raising investment or seeking loansInvestors and lenders require accrual accounting
Subscription and service businessesRevenue is earned over time, not at the point of payment
Businesses with upfront prepaymentCustomer pays before service is delivered

How it works

Revenue Recognition is built on a double-entry accounting ledger. Every billing event in Stripe (invoice finalized, payment received, refund issued, dispute opened) generates journal entries that debit and credit the appropriate accounts.

For subscriptions and invoices:

  • When an invoice finalizes, Revenue Recognition defers the total recognizable amount
  • It amortizes the deferred amount evenly over the invoice line item period
  • If no period is set on a line item, the full amount is recognized immediately at finalization

For one-time payments:

  • Revenue is recognized immediately when the payment occurs
  • Import data to add a service period or split recognition across a schedule

Chart of accounts

Income statement accounts

AccountTypeDescription
RevenueRevenue (credit)Recognizable portion of finalized invoices, prorated items, usage billing
RefundsContra revenue (debit)Portion of refunded amount previously recognized
DisputesContra revenue (debit)Portion of disputed amount previously recognized
Credit notesContra revenue (debit)Portion of credit note amount previously recognized
Bad debtContra revenue (debit)Previously recognized revenue from invoices marked uncollectible
VoidsContra revenue (debit)Previously recognized revenue from voided invoices
DiscountsContra revenue (debit)Recognized revenue from invoices with discounts applied
FeesExpenses (debit)Stripe fees
RecoverablesGains (credit)Recovered funds not attributable to revenue (e.g., won disputes)
Fx lossLosses (debit)Loss due to foreign currency exchange rates

Balance sheet accounts

AccountTypeDescription
Accounts receivableAssets (debit)Amount billed to customers; increases on invoice finalize, decreases on payment
CashAssets (debit)Net cash received (excludes Stripe fees and payouts)
Deferred revenueLiabilities (credit)Services invoiced but not yet recognized
Long-term deferred revenueLiabilities (credit)Deferred revenue for service periods beyond 12 accounting periods
Unbilled accounts receivableAssets (debit)Accrued revenue from prorations not yet invoiced
Tax liabilityLiabilities (credit)Tax component of issued invoices
Customer balanceLiabilities (credit)Credits accrued by customers
Pending cashAssets (debit)Unconfirmed payments (e.g., ACH debit — moves to Cash when confirmed)

Journal entry examples

One-time payment ($10)

EventDebitCreditAmount
Invoice finalizeAccountsReceivableDeferredRevenue$10.00
Payment receivedCashAccountsReceivable$10.00
Revenue recognizedDeferredRevenueRevenue$10.00

Net result: Cash +$10, Revenue +$10.

Annual subscription ($120/year)

When invoice finalizes, $120 deferred. Each month $10 is recognized.

MonthDeferredRevenueRevenue
Month 1-$10+$10
Month 2-$10+$10
.........
Month 12-$10+$10

Refund on annual subscription ($120, issued after 2 months)

  • $20 recognized so far → becomes contra revenue (Refunds)
  • $100 remaining deferred → contra adjustment to deferred revenue balance

Data modeling

Subscriptions and invoices

Revenue Recognition treats each invoice line item as its own performance obligation. The period of each line item determines the amortization schedule.

  • Subscription items automatically populate line item periods with the subscription billing period
  • Invoice items with no period: recognized immediately at finalization
  • Subscription changes (upgrades, downgrades): prorations generate unbilled accounts receivable

External transactions

Track revenue collected outside Stripe by marking invoices as paid out-of-band:

bash
curl https://api.stripe.com/v1/invoices/{{INVOICE_ID}}/pay \
  -u "sk_test_YOUR_KEY:" \
  -d paid_out_of_band=true

Out-of-band payments credit the External Asset account (not Cash).

Multi-currency

  • Journal entries use your account's settlement currencies
  • Presentment currencies not supported as settlement currencies are converted at the exchange rate of the money movement
  • Exchange rate differences between invoice issuance and payment are recorded to Fx Loss

Reports

Access in Dashboard → Revenue Recognition → Reports:

ReportDescription
Monthly summaryRecognized and deferred revenue totals by month
Waterfall chartHow deferred revenue from each cohort amortizes over time
Debits and creditsExportable journal entries by event type
Audit numbersDrill down to individual transactions behind any revenue number

Export debits and credits to CSV for import into your accounting system (QuickBooks, Xero, NetSuite, etc.).

Customization

Recognition rules

Create rules to override default recognition behavior for specific transactions:

  • Override when revenue is recognized based on amount, description, or customer email
  • Split a payment across multiple revenue schedules
  • Exclude certain transactions from revenue recognition

Configure in Dashboard → Revenue Recognition → Rules.

Data import

Import external data to attach service periods to one-time payments or add off-Stripe transactions to your revenue reports:

bash
curl https://api.stripe.com/v1/revenue_recognition/data_imports \
  -u "sk_test_YOUR_KEY:" \
  -d file={{FILE_ID}}

Supported import types: service period assignment, exclusions, external revenue.

Accounting period controls

Set your accounting period close dates to lock historical periods and prevent backdating. Configure in Dashboard → Revenue Recognition → Settings.

Stripe API Reference - Self-contained docs reference, refreshed 2026-05-18