Skip to main content

Webhooks overview

HelaMesh sends a signed HTTP POST to your webhook URL when on-chain activity that concerns your client is confirmed. Your backend should:

  1. Verify the signature
  2. Handle the event by type (event field)
  3. Return 200 OK within 10 seconds

If you return any non-2xx status (or time out), HelaMesh retries with exponential backoff.

Event typesโ€‹

EventWhen it firesWho uses it
payment.confirmedAn invoice-based payment reaches required confirmationsStandard invoice flow
transfer.confirmedA USDT deposit arrives at a derived sub-wallet addressPlatforms using HD sub-wallet derivation

Invoice flow (payment.confirmed)โ€‹

Chain confirms payment
โ”‚
โ–ผ
HelaMesh poller detects โ†’ marks invoice CONFIRMED
โ”‚
โ–ผ
Webhook enqueued โ†’ dispatcher claims โ†’ POST to your URL
โ”‚ โ†‘ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€ retry โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ (on non-2xx) โ”‚
โ–ผ โ–ผ
Invoice stays CONFIRMED Your backend verifies
until 2xx received signature + updates DB
โ”‚ โ”‚
โ””โ”€โ”€โ”€โ”€ 2xx received โ”€โ”€โ†’ COMPLETED โ—„โ”€โ”€โ”€โ”€โ”˜

Key principle: CONFIRMED โ†’ COMPLETED is gated on successful webhook delivery. An invoice stays CONFIRMED until your backend ack's the webhook.

Derived-address flow (transfer.confirmed)โ€‹

User sends USDT to their derived address
โ”‚
โ–ผ
HelaMesh poller detects transfer โ†’ checks confirmation depth
โ”‚
โ–ผ (โ‰ฅ required confirmations)
Webhook enqueued โ†’ dispatcher claims โ†’ POST to your URL
โ”‚
โ–ผ
Your backend looks up user
by hdIndex, credits balance

No invoice is created in this flow. Use the hdIndex in the payload to identify which of your users received the funds.

Read next: Webhook payload, Verifying signatures, Retries.