BitPay shipped webhook subscriptions today. PRO and CUSTOM tier accounts can subscribe to 14 event types across cards and wallets. Subscriptions are managed per endpoint URL - operators can route card events to one webhook and wallet events to another.
Webhook events: card.created (a new card was issued), card.frozen (a card was frozen), card.reissued (a card was reissued with new PAN), card.unfrozen (a card was unfrozen), card.limit_updated (per-card limits changed), transaction.created (a charge hit the card), transaction.refunded (a charge was refunded), transaction.disputed (a charge is being disputed), wallet.low_balance (USD balance dropped below configured threshold), wallet.topup (a top-up completed), wallet.topup_failed (a top-up attempt failed), conversion.completed (crypto converted to USD), conversion.failed (conversion failed), and 2 others for PRO/CUSTOM tier.
Every webhook payload is signed with HMAC-SHA256 using the endpoint's signing secret. Operators verify the signature before processing. This prevents unauthorized webhooks from triggering automation. The signing secret is rotated via the API at any time.
Failed deliveries are automatically retried with exponential backoff for up to 24 hours. After 24 hours, the webhook is marked as 'failed' and the operator is notified. Operators can inspect delivery status in the cabinet and replay failed webhooks manually. Most webhook processors should handle 99.9% of deliveries within the first retry; sustained failures indicate an endpoint issue, not a BitPay issue.