**FY2025 revenue bridge (48 customers)**

| Step | Amount |
|---|---:|
| **FY2024 revenue** | **11,243,300** |
| New customers (6) | +462,893 |
| Expansion | +1,210,651 |
| Timing | +53,080 |
| Contraction | −443,322 |
| Churn (4) | −1,288,224 |
| **FY2025 revenue** | **11,238,378** |

Revenue is down 4,922 (−0.04%). The bridge reconciles to zero.

- **Churn offsets growth.** Churn was 1.29M. It came mostly from Enterprise: Birchway and Fenwick Legal left, and together they account for 1.19M of the churn. Expansion in existing accounts (+1.21M) and new logos (+0.46M) almost exactly cover it.
- **New logos are all SMB.** There are six, from Riverbend Water to Wren Architecture. Churn in SMB was only 99K.
- **Segment view:**

| Segment | Expansion | Contraction | Churn | New | Timing |
|---|---:|---:|---:|---:|---:|
| Enterprise | +607,747 | −220,558 | −1,188,984 | – | +53,231 |
| Mid-Market | +500,692 | −165,706 | – | – | −151 |
| SMB | +102,212 | −57,058 | −99,240 | +462,893 | – |

**Assumption to confirm:** I treated `timing_amount` as the part of a retained customer's year-over-year change that comes from timing, such as revenue recognition shifts. I pulled it out of expansion and contraction into its own step. I ignored it for new and churned customers, where it is zero anyway. If it means something else, expansion and contraction would shift by 53K in total. The other bars wouldn't change.

I didn't write any files or build a chart. I can export the bridge to Excel or CSV, or make a waterfall chart, if you want.