Webhooks for blockchain transfers
Monitor wallet addresses across multiple blockchains and receive webhooks when transfers are confirmed.
Supported networks: Ethereum, BNB Smart Chain, Polygon, Arbitrum One, OP Mainnet, Base, Avalanche C-Chain, TRON, and Bitcoin.
From block to backend
Chainhook scans each network, waits for confirmations, matches transfers to your webhooks, and sends a signed POST.
One request to create, one handler to receive
Create webhooks in the dashboard or over the API. Handle events in any language.
REST API
Create, pause, and delete webhooks. Look up and replay deliveries.
Duplicate-safe
Delivery is at-least-once. Skip duplicates by event
id, which stays the same across retries and replays.MCP server for AI agents
Connect any MCP client to manage webhooks and check deliveries from an AI agent.
Docs for people and LLMs
A complete API reference, plus
llms.txtandllms-full.txtfor AI tools.
1. Create a webhook
curl https://api.chainhook.io/v1/webhooks \ -H "Authorization: Bearer $CHAINHOOK_API_KEY" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "network": "bsc", "type": "token", "direction": "in", "address": "0x9d2a7e41c8b05f3e6a1d4c7b28e0f95a3b6c1d47", "webhook_url": "https://api.example.com/webhooks/chainhook" }'
2. Receive and verify the event
POST /webhooks/chainhook HTTP/1.1 Host: api.example.com Content-Type: application/json User-Agent: chainhook/1.x X-Webhook-Id: 01a0fbfd-4fe4-7a3c-8f21-6b9d0e4c7a15 X-Webhook-Signature: 7a12d02673420517279805cf8188a1a62c6f69706161ba5cf0a8ec91ea66b8e3 { "id": "01a0fbfd-4fe4-7a3c-8f21-6b9d0e4c7a15", "event": "transfer.detected", "created_at": "2026-10-02T09:41:17Z", "webhook_id": "01a0fbf2-fadc-7c3e-9b1a-4d6f2e8a5c71", "data": { "network": "bsc", "direction": "in", "type": "token", "transaction_hash": "0x7c1e9f4a2b6d8035e4f1a9c27d3b5e8061f4a2c9d7b3e5f8a1c4d6e9b2f7a3c5", "transfer_index": 214, "block_number": 71206438, "block_hash": "0x3a8f2c6e1d9b4f7a0c5e8d2b6f1a9c4e7d0b3f6a2c8e5d1b9f4a7c0e3d6b8f2a", "block_timestamp": "2026-10-02T09:41:05Z", "confirmations": 16, "from": "0xe3b1c5a9f27d4e8b06c1a3f5d9e2b7c4a8f6d0e1", "to": "0x9d2a7e41c8b05f3e6a1d4c7b28e0f95a3b6c1d47", "currency": "USDT", "amount": "1250.75", "amount_raw": "1250750000000000000000", "decimals": 18, "contract_address": "0x55d398326f99059ff775485246999027b3197955" } }
What you don't have to build
Scanning, confirmations, token decoding, and delivery work the same on every network.
Confirmed before it's sent
Nothing is sent until the transfer reaches the network's confirmation depth.
Signed requests
Each request has an HMAC-SHA256 signature you check with your webhook's secret. URLs must use HTTPS, and private IP addresses are refused.
Automatic retries
If your server is down, Chainhook retries. You can replay any delivery later.
Delivery log
Every delivery's status and your endpoint's response, in the dashboard and the API.
Networks and tokens
What Chainhook detects today, and how many confirmations it waits for on each network.
| Network | Value | Native coin | Tokens | Confirmations |
|---|---|---|---|---|
ethereum | ETH | USDT, USDC, BUSD, DAI, WETH, WBTC, LINK, UNI, SHIB, PEPE | 12 | |
bsc | Not detected | USDT, USDC, BUSD, DAI, WBNB, Cake, ETH, BTCB | 15 | |
polygon | Not detected | USDT, USDC, DAI, WETH, WPOL, WBTC | 64 | |
arbitrum | Not detected | USDT, USDC, DAI, WETH, ARB, WBTC | 20 | |
optimism | Not detected | USDT, USDC, DAI, WETH, OP, WBTC | 20 | |
base | Not detected | USDC, DAI, WETH, cbBTC | 20 | |
avalanche | Not detected | USDT, USDC, DAI.e, WAVAX, WETH.e, WBTC.e | 20 | |
tron | Not detected | USDT, USDC, WTRX, JST | 19 | |
bitcoin | BTC | Not detected | 6 |
Contracts, confirmations and sample payloads per network. Missing a token? Email us.
Pay per detection
Start with 100 trial detections for 1 month and pay only for what you use. Paid plans add detections, webhooks, and per-detection overage.
Pay as you go
$0/month
Card required, no monthly fee
- 100 trial detections for 1 month
- 3 active webhooks
- $0.001 per detection after the trial
- Decoded transfers, delivered once confirmed
Starter
$9/month
or $90/year billed yearly
- 25,000 detections a month
- 25 active webhooks
- $0.0006 per extra detection
- Decoded transfers, delivered once confirmed
- Recommended
Growth
$29/month
or $290/year billed yearly
- 100,000 detections a month
- 100 active webhooks
- $0.0003 per extra detection
- Decoded transfers, delivered once confirmed
Scale
$99/month
or $990/year billed yearly
- 400,000 detections a month
- 200 active webhooks
- $0.0002 per extra detection
- Decoded transfers, delivered once confirmed
Enterprise
Custom limits for teams that need more than 400,000 detections a month or more than 200 active webhooks. Contact us and we'll set up a plan around your volume.
Prices in USD, plus applicable tax. Billed monthly or yearly, and paid allowances reset monthly. Cancel any time and keep your plan until the period ends.
Questions
How Chainhook detects, confirms, and delivers transfers, and how billing works.
Can't find your answer? Contact support.
Does Chainhook hold my funds?
No. Chainhook only reads public blockchain data and never asks for private keys. Transfers go straight to addresses you control.
Can I get alerts in Discord or Telegram?
Yes, through a small bridge. Point the webhook at your own endpoint or serverless function, verify the signature, and post a message to a Discord webhook or a Telegram bot. Chainhook sends JSON events, not chat messages.
How do I match a payment to an order?
Give each open order its own deposit address and webhook, and delete the webhook once it's paid to stay within your plan's active webhook limit. Each event includes the receiving address, transaction hash, and amount.
How quickly are transfers delivered?
As soon as the block reaches the network's confirmation depth: seconds on the fastest networks, a few minutes on Ethereum, about an hour on Bitcoin.
How do I verify a request came from Chainhook?
Each request has an X-Webhook-Signature header, an HMAC-SHA256 of the raw body using your webhook's secret. Compute the same hash and compare.
What if my endpoint is down?
Chainhook retries automatically. If every attempt fails, replay the delivery from the dashboard or the API.
How is my account protected?
Sign in with an authenticator app, a passkey, or both. API keys are shown once and never stored, and you can revoke one or set it to expire.
What counts as a detection?
One transfer matched by one webhook. A transfer that matches three webhooks is three detections. Retries and replays are free.
What happens when I reach my allowance?
Pay as you go has no monthly fee and includes 100 trial detections for 1 month after sign-up, then each detection is paid from prepaid credit at $0.001. Paid plans keep detecting past their allowance and pay for extra detections from prepaid credit at the plan's overage rate. You can turn overage off to stop at the allowance instead.
Can I pay yearly?
Yes. Every paid plan can be billed monthly or yearly, and yearly billing costs less. Your allowance still resets every month, and extra detections are paid from credit on both.
Can I change or cancel my plan?
Yes. Upgrades apply right away, with a prorated charge for the rest of the period. Downgrades and cancellations apply at the end of the billing period, so you keep your current plan until then. Detection stops when a cancelled plan ends. There are no refunds for partial periods.
Watch your first wallet
Create an account and start with 100 trial detections for 1 month.