Safety net for a lost payment webhook

A scheduled sweep re-reads recent settled payments across every payment provider and account, and replays anything not already recorded.

What it is

For each payment adapter and each account enabled on it, the sweep lists settled payments from the last three days and replays any session not already recorded, through the same idempotent recorder the webhook uses.

Also called: missed webhook · payment didn't register · reconciliation · deploy window

See it
Safety net for a lost payment webhook
Apr
May
Jun
Jul
Marlin Hoover — 30×40 Garage
Framing
Delia Yoder — Barndominium
Concrete
Marlin Hoover — Hobby Shop
Trim
Ivy Brubaker — 30×40 Garage
Framing
Ronan Petsch — 30×40 Garage
Concrete
Framing crewConcrete crewTrim crew
A sweep report card: 'scanned 34, already recorded 33, recovered 1' with the recovered invoice named. Sample data — no customer information appears here.
How it works
  1. 1The cron iterates every registered payment adapter.
  2. 2Each adapter lists the accounts it is configured for.
  3. 3Settled sessions in the lookback window are listed.
  4. 4Anything already recorded is skipped; anything missing is replayed.
  5. 5Counts of scanned, recovered, already-ok and failed are returned.
Why we built it

The route states the purpose: 'Safety net for the payment webhook. If a webhook is ever lost (deploy window, transient outage, misconfigured endpoint), this sweep re-drives it... This is what makes "automatically updates the invoice once paid" robust.'

The problem
  • A webhook lost during a deploy or outage left an invoice permanently unpaid.
  • Reconciliation was a manual comparison against the payment dashboard.
Sound familiar?
What you get
Missed payments self-heal within hours.
The sweep is provider-agnostic, so a second processor is covered automatically.

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →