Webhooks overview
HelaMesh sends a signed HTTP POST to your webhook URL when a payment confirms โ regardless of which rail was used. Your backend should:
- Verify the signature
- Handle the event by type (
eventfield) - Return
200 OKwithin 10 seconds
If you return any non-2xx status (or time out), HelaMesh retries with exponential backoff.
Event typesโ
| Event | When it fires | Who uses it |
|---|---|---|
payment_link.confirmed | A payment link is paid via any rail (M-Pesa, TRON, BSC) | Everyone using payment links |
transfer.confirmed | A USDT deposit arrives at a derived sub-wallet address | Platforms using HD sub-wallet derivation |
Payment link flow (payment_link.confirmed)โ
Customer pays (M-Pesa PIN / on-chain tx)
โ
โผ
HelaMesh confirms payment โ marks link CONFIRMED
โ
โผ
Webhook enqueued โ dispatcher โ POST to your URL
โ โ โ
โ โโโโ retry โโโโโโค (on non-2xx)
โผ โผ
Link stays CONFIRMED Your backend verifies
until 2xx received signature + fulfils order
One webhook event covers all rails โ check confirmedRail in the payload to see how the customer paid.
Derived-address flow (transfer.confirmed)โ
User sends USDT to their derived address
โ
โผ
HelaMesh poller detects transfer โ checks confirmation depth
โ
โผ (โฅ required confirmations)
Webhook enqueued โ dispatcher โ POST to your URL
โ
โผ
Your backend looks up user
by hdIndex, credits balance
No payment link is involved in this flow. Use hdIndex in the payload to identify which of your users received the funds.
Read next: Webhook payload, Verifying signatures, Retries.