Deprecating the v1 billing webhook
The v1 billing webhook retires on March 31. After that date the endpoint returns 410 Gone and no further deliveries are attempted.
Why now
v1 delivers four event types with no signature versioning and no replay window. v2 has both, plus per-event retry budgets. Running the two side by side has cost us two incidents this year.
What callers have to change
- Point the endpoint at /webhooks/v2 and verify the new signature header.
- Handle invoice.paid and invoice.voided, which change shape in v2.
- Expect at-least-once delivery — v2 retries for 24 hours rather than 3.
Timeline
| Date | What happens |
|---|
| Feb 10 | v2 ships the two missing invoice events |
| Feb 17 | This notice goes out to every caller |
| Mar 17 | v1 starts returning a deprecation header on every delivery |
| Mar 31 | v1 returns 410 Gone |
Who is still calling v1
| Account | Calls / 30d | Owner |
|---|
| Northwind | 18,402 | @mira |
| Kestrel | 9,110 | @tomas |
| Bluefin | 4,864 | @mira |
| Halcyon | 2,918 | @jules |
| Foxglove | 1,744 | @tomas |
| Marrow | 1,206 | @jules |
| Sable | 902 | @mira |
| Pike & Co | 704 | @jules |
| Verity | 588 | @tomas |
| Alder | 402 | @mira |
| Quill | 236 | @jules |
| Wren | 132 | @tomas |