Loading CBFS model data...
Connecting to Google Sheets
CBFS
Stripe Forecast Model
Anton Schneider

Executive Summary

2024 GPV
2024 Revenue
2024 Gross Margin %
Merchants EOY 2024

Revenue by year (Base)

Revenue mix by segment — 2018-2024 (Base)

Current Year Overview

Forecast Years Overview

Annual view 2018-2024 · reflects Base scenario

Unit Economics

2020 cohort · CAC flat across scenarios · LTV is 5-year discounted · Base scenario

Scenario Comparison

Base / Bear / Bull side-by-side 2020-2024 with variances vs Base

Sensitivity Analysis

Revenue impact of key lever perturbations · Base case anchor

Instructions

How this dashboard connects to the model

Data source

This dashboard reads live from a Google Sheet (open the model) which is "Published to the web" so each tab's data is available as a CSV endpoint. On page load, the dashboard fetches 7 tabs in parallel: Current Year Overview, Forecast Years Overview, RFE_Base, RFE_Bear, RFE_Bull, Assumptions, and Summary.

Scenario toggle

The Base / Bear / Bull toggle in the top bar controls every tab. Switching is instant because all three scenarios are pre-fetched from the parallel RFE_Base, RFE_Bear, RFE_Bull tabs in the Sheet.

Those three RFE tabs are parallel copies of the main RFE engine with scenario hardcoded. They update automatically whenever you change any Base/Bear/Bull assumption in the Sheet.

Where to change assumptions

All assumptions live in the Assumptions tab of the Sheet. Key cells:

  • C5 — Last month of actuals (drives where actuals end and forecast begins)
  • C7 — active scenario for the Sheet's own CYO (Base / Bear / Bull). Not used by this dashboard.
  • D/E/F 16-19 — volume take rate per product (now 2.6% flat across all)
  • D/E/F 20 — custom pricing threshold ($5m/month merchant GPV)
  • D/E/F 22 — custom pricing discount (15% off rate and trx fee)
  • D/E/F 24 — per-transaction fee ($0.20)
  • D/E/F 29 — Recurring billing uplift (% of Recurring GPV, 2020+)
  • D/E/F 41Basic → Recurring migration rate (% of Basic GPV migrating per month)
  • D/E/F 42New SaaS merchant sell-in mix (% onboarded directly as Recurring)
  • D/E/F 56-58 — new merchants added per year by segment and scenario
  • D/E/F 60-62 — annual merchant churn by segment (Base/Bear/Bull)
  • D/E/F 64-66 — Existing merchant GPV growth per year by segment
  • D/E/F 68-69 — new merchant ramp (months to full GPV, starting % of segment average)
  • C 82-84 — segment CAC (flat across scenarios)
  • C 85 — WACC for LTV discounting

SaaS Recurring migration mechanic

Stripe Billing (Recurring) launched in May 2018. The model treats Basic API → Recurring migration as a strategic priority:

  • Migration rate (Assumptions D/E/F 41): each forecast month, X% of cohort Basic API GPV shifts to Recurring. Defaults: Base 1.5% / Bear 0.5% / Bull 3.0% per month (≈17% / 6% / 30% per year).
  • Sell-in mix (D/E/F 42): of new SaaS merchants onboarded 2020+, this % start on Recurring; the rest start on Basic and migrate over time. Default: 50% across all scenarios.
  • Recurring billing uplift (D/E/F 29): incremental revenue on Recurring GPV (added to base 2.6% volume rate). Default: Base 0.8% / Bear 0.5% / Bull 1.1%.
  • Net effect by 2024: Recurring share of SaaS GPV rises from 37% (2019) to 68% Base / 45% Bear / 86% Bull.

When to hit Refresh

Click the Refresh button in the top right whenever you edit the Sheet and want the dashboard to pick up those edits. Google Sheets typically takes 1-5 minutes to republish CSV endpoints after a change, so if numbers don't update immediately, wait a minute and try again.

You do NOT need to refresh when toggling scenarios — that's instant, client-side.

Data integrity check

The Data check badge in the top bar reads from the model's integrity check row. It ties reported revenue/GPV/merchant counts back to the raw Product Usage data. Green OK means all checks pass; red ERROR means there's a mismatch. If you see ERROR, scroll to row 1130 of any RFE tab in the Sheet to see which check (GPV / Events / Merchants) failed and for which month.

Adding a new merchant

If raw data starts showing a new merchant ID, you need to wire it in manually in four places:

  1. Add the merchant ID, name, and segment to the Segmentation tab
  2. Add the merchant to the Merchant Activity tab
  3. Add per-merchant detail rows in all four RFE tabs: Reporting & Forecasting Engine, RFE_Base, RFE_Bear, RFE_Bull
  4. Update B2 in Current Year Overview to pull the new actuals

Easy way to do step 3: copy the block of rows of an existing merchant in the same segment, paste below, then update the merchant ID reference (col B) to the new merchant. Do this in all 4 tabs. The Instructions tab in the Sheet has more details.