Changelogs
All notable changes to the Bitnob API are documented here.
Stablecoin webhooks reference
Added dedicated Stablecoin Webhooks pages under the Addresses and Withdrawal API reference sections, documenting the deposit.success, transfer.success, and transfer.failed events. Each page covers event verification (HMAC SHA512 via the x-bitnob-signature header), notification retries, local testing, and full payload field references with sample payloads.
Card webhooks v2: snake_case payloads, micro-units, new envelope
Refreshed every outbound virtual-card webhook to a new payload shape. Event suffixes renamed from .complete to .completed (e.g. virtualcard.created.completed, virtualcard.topup.completed, virtualcard.withdrawal.completed). All JSON keys are now snake_case (card_id, company_id, created_status, etc.) and amounts are integers in micro-units (1 USD = 1,000,000) with a sibling display_amount float on transaction events. New top-level envelope adds company_id alongside event_id / event / data. Transaction events gain transaction_type (stable enum), merchant_name / merchant_mcc / merchant_country, and timestamp. Cross-border now emits two variants: cross_border_pending (company-wallet fee debit) and cross_border_settled (card-balance principal debit). Contactless and refund events also fire with multiple transaction_type values under the same event string — branch on event first, then transaction_type.
Webhook payloads: top-level event_id
Refreshed webhook payloads for card top-up, card withdrawal, stablecoin transfer, and stablecoin deposit events to include a top-level event_id, making deduplication and tracing easier. The transfer.success event now also includes transaction_id in its data payload.
Card Issuing API v2 beta
New card creation endpoints are now available, with support for physical cards, custom BIN ranges, and 3D Secure. This update provides greater flexibility in how you issue and manage cards, while also improving security and control over card transactions.
Virtual Cards API v2
Refactored the Virtual Cards API to a resource-oriented design. Replaced /api/virtualcards/* with /api/cards and /api/customers namespaces, standardized route structure using :cardId and :customerId path parameters, and consolidated card operations under /api/cards/:cardId/*. Added endpoints for extended card details, spending-limit controls, and customer-cards lookup.
Breaking changes: legacy Virtual Cards endpoints removed
All previous endpoints under /api/virtualcards are no longer supported. Card operations now require an explicit cardId path parameter instead of implicit context, and the user-based model has been replaced with a customer-centric model using customerId. Update integrations to the new /api/cards and /api/customers namespaces before upgrading.
| Old Endpoint | New Endpoint |
|---|---|
| POST /api/virtualcards/create | POST /api/cards |
| POST /api/virtualcards/topup | POST /api/cards/:cardId/fund |
| POST /api/virtualcards/withdraw | POST /api/cards/:cardId/withdraw |
| POST /api/virtualcards/freeze | POST /api/cards/:cardId/freeze |
| POST /api/virtualcards/unfreeze | POST /api/cards/:cardId/unfreeze |
| POST /api/virtualcards/terminate | POST /api/cards/:cardId/terminate |