The verdict in three sentences
A lost webhook is a customer who paid but whose order stays "pending": money collected, an unhappy customer, and 1 to 5 % of transactions invisible in the database. The fix isn't to trust webhooks more but to add a periodic reconciliation job that compares the operator API to your database. In 2026 every serious site combines webhook + reconcile, never webhook alone.
Why webhooks get lost
A webhook is an HTTP notification sent by the operator to your server. It can fail for a thousand reasons: server briefly down, timeout, an ongoing deploy, a 500 error, or plain network loss. If you only process the webhook, those payments vanish from your system even though the money did arrive.
| Root cause | Relative frequency | Fix |
|---|---|---|
| Server down / deploy | High | Queue + retry |
| Processing timeout | Medium | Immediate 200, async processing |
| Application error (500) | Medium | Idempotency + logs |
| Unverified signature rejected | Low | Correct signature check |
| Network loss | Low | Periodic reconcile job |
| Mishandled duplicate | Medium | Idempotency key |
Polling vs webhook + reconcile
Two main strategies exist. Polling queries the API in a loop: simple but costly and slow. Webhook + reconcile combines webhook responsiveness with a safety net that catches the gaps. It's the 2026 reference.
| Strategy | Latency | API cost | Reliability | Recommended |
|---|---|---|---|---|
| Webhook only | Low | Low | Medium (1-5 % gaps) | No |
| Polling only | High (min) | High | Good | Small volume |
| Webhook + reconcile | Low | Moderate | Excellent | Yes |
| Daily reconcile | T+1 | Low | Good (net) | As complement |
Recommended reconciliation cadence
| Orders/day volume | Reconcile job frequency |
|---|---|
| < 100 | Every hour |
| 100 to 1,000 | Every 15 min |
| 1,000 to 10,000 | Every 5 min |
| > 10,000 | Continuous + hourly reconcile |
Mini case study
Aminata runs an online store in Dakar, 1,200 orders/month, average basket 18,000 FCFA. A badly timed deploy lost webhooks for 3 hours: about 3 % of the month's payments, i.e. 36 orders never processed, for 648,000 FCFA collected but stuck. Without reconcile she'd have refunded furious customers and lost that revenue. With a reconciliation job every 15 minutes comparing the Wave API to her database, the 36 orders were caught automatically within the hour: 648,000 FCFA recovered.
Need a professional website?
Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.
FAQ
Aren't webhooks reliable?
They're useful but never 100 % guaranteed. A loss rate of 1 to 5 % is normal in real conditions; that's why you need a reconcile job as a safety net.
What is idempotency and why is it vital?
It's being able to process the same event multiple times with no side effects (no duplicate order). With an idempotency key, webhook and reconcile can overlap without duplication risk.
How often should reconcile run?
Every 15 minutes for 100 to 1,000 orders/day; every 5 minutes beyond that. A daily reconcile is still useful as a last net.
How do you concretely detect missing payments?
The job lists transactions marked "successful" on the operator side (API) and looks up their reference in the database. Any transaction present at the operator but absent from the database is a missing payment to handle.
Is polling alone enough for a small site?
For under 100 orders/day, regular polling can suffice, but it's slower and more costly in API calls than the webhook + reconcile combination.
Let's talk about your project. We audit your webhooks and set up a reconciliation job so you never lose a payment again. WhatsApp +221 77 596 93 33.
Mohamed Bah
Fondateur, Kolonell
Passionate about digital and entrepreneurship in Africa, Mohamed has been helping Sénégalese businesses with their digital transformation since 2020. Founder of Kolonell, he believes every SME deserves a professional and accessible online présence.

