Billing webhooks
Observe, search, and replay the vendor billing webhook events the ForestVPN platform records for your project.
When a billing vendor (for example Stripe) tells the platform something
happened — a payment succeeded, a subscription renewed, a charge was
disputed — that inbound event is recorded per project before it is
processed. The /platform/v1/billing/webhooks family lets you see exactly
what arrived, whether processing succeeded, and re-run anything that failed.
Inspecting events
curl https://api.fvpn.net/platform/v1/billing/webhooks \
-H "Authorization: Bearer $FVPN_API_KEY" \
-H "X-Project-Id: $FVPN_PROJECT_ID"GET /platform/v1/billing/webhooks lists recent events;
GET /platform/v1/billing/webhooks/search filters them. Each event record
carries:
event_type— the vendor's event namestatusandprocessing_attempts— where the event is in its lifecyclereceived_at/processed_at— the ingestion-to-completion timelinelast_error— the failure message, when processing didn't succeedraw_payload_b64and adecoded_summary— the evidence, verbatim
Health and lag
Two read models tell you whether webhook processing is keeping up:
GET /platform/v1/billing/webhooks/health— a snapshot of the pipeline's current state;GET /platform/v1/billing/webhooks/lag-timeseries— ingestion-to-processed lag over time, the number to alert on.
Replay
Processing is idempotent, so a failed (or suspicious) event can be re-run safely:
curl -X POST https://api.fvpn.net/platform/v1/billing/webhooks/$EVENT_ID/replay \
-H "Authorization: Bearer $FVPN_API_KEY" \
-H "X-Project-Id: $FVPN_PROJECT_ID"Replay is the recovery tool for vendor incidents: find the failed window
with search, replay the events, watch health return to green.
Reference
Full request/response shapes are in the generated
API reference under platform-billing. Billing state itself
(plans, subscriptions, invoices) lives in the wider /platform/v1/billing/*
family documented alongside it.