Skip to main content
Bitliva sends a webhook to your endpoint when a transaction finishes or crypto arrives at one of your customers’ addresses. Verify the signature on every request, then answer with any 2xx status. Anything else is retried.

Events

Request format

Every webhook is a POST with a JSON body and these headers: The body has the same envelope for every event:
crypto.deposit.received
transaction.successful
The transaction object is the same one described in Wallet and transactions.

Verify the signature

The v1 value is the HMAC-SHA256 of t + "." + raw body, using your endpoint’s signing secret, written as hex. Compute it over the raw request body exactly as received, before any JSON parsing, and compare it in constant time.
To guard against replayed requests, also reject a webhook whose t timestamp is more than a few minutes old.

Handle deliveries safely

  • Respond with a 2xx status as soon as you have verified and stored the event. Any other response is retried, so do slow work after you respond.
  • Retries mean you can receive the same event more than once. Use the event id to ignore duplicates.
  • Use the mode field to keep test events apart from live events.
  • Send a webhook.test event from the dashboard to check your endpoint before you rely on it.