Receiving Purchase and Deposit Updates (Hybrid Webhook + API)
Confirming – The full amount has been received, and the system is now waiting for the required number of blockchain confirmations to mark the deposit as successful.
Unconfirmed – A deposit has been detected on the blockchain but has not yet been included in a block (only relevant for UTXO-based networks such as Bitcoin).
Completed – The required number of blockchain confirmations has been received, and the deposit is finalized successfully.
PendingFork - Tx confirmed on a forked block; credit on hold until reorg resolves. After settlement, the deposit may complete or fail.
Failed - The deposit cannot be credited (e.g., transaction invalid/dropped, double-spent or replaced via RBF to a different address). The payment attempt should be considered unsuccessful.
Purchase Widget Type only:
Initiated – The deposit request has been created, but no blockchain deposit address has been assigned yet.
Allocated – A unique blockchain address has been successfully generated and linked to the deposit.
Undercharge – The customer deposited less than the expected amount, but the deposit window is still active, allowing them to complete the payment.
UnderchargeExpired – The customer deposited less than the required amount, and the payment window has expired, meaning the transaction cannot be completed.
Overcharge – The customer deposited more than the required amount. The deposit will still be processed, and the system may handle the excess according to predefined rules (e.g., ignore, credit, or refund).
Expired – The customer did not complete the payment within the allowed time window, and the transaction is no longer valid.
Retrieve notifications through webhooks on transaction events and status changes
Inabit Terminal uses webhooks to notify your backend when key payment events occur. Webhooks are triggered per widget and can be configured globally at the organization level or overridden per widget.
Terminal supports two webhook types, based on widget type:
Customer Address Widgets – for persistent payment addresses
Purchase Address Widgets – for one-time payments
Webhook URLs are registered during onboarding and apply to all widgets by default. To update these, contact [email protected].
API: When , you can override the default webhook URL:
UI: Upon widget creation, you'll be requested to insert a Webhook URL to receive notifications to:
Triggered when a new on-chain transaction is detected for a Customer Address widget.
Triggered when a transaction is retrieved/received for the first time. (e.g., Confirming)
Triggered when a transaction's status is updated (e.g., Confirmed).
Triggered when a Purchase Address widget is created (initiated).
Triggered when a purchase is updated (payment received, amount confirmed, status changed).
If a webhook delivery fails (e.g., due to a timeout or non-2xx response), Inabit Terminal will wait 30 seconds, then automatically retry the webhook up to 5 additional times, with 30 seconds between each retry
Validate the event type before handling the payload
Store widgetId or purchaseId to associate the event with your system
Log all webhook payloads for auditability and replay if needed
Customer Address
IncomingTransactionReceived
A new transaction is detected (“Unconfirmed” for UTXO blockchains, “Confirming” for non UTXO blockchains)
Customer Address
IncomingTransactionStatusUpdated
Transaction status changes (e.g., “Completed”)
Purchase Address
PurchaseInitiated
Widget is created and ready to receive payment, status=”Initiated”
Purchase Address
PurchaseUpdated
Purchase status or amount has changed
{
"webhookUrl": "https://yourdomain.com/webhook/inabit"
}{
"event": "IncomingTransactionStatusInitiated",
"data": {
"transactionId": "cmd62lqob00yre7014nj501zc",
"transactionHash": "0xbb22...5011",
"status": "Pending",
"amount": 20,
"sourceAddress": "0x0bf2...",
"destinationAddress": "0x1973...",
"asset": "USDT",
"blockchain": "ethereum-sepolia",
"customerIdentifier": "[email protected]",
"widgetId": "31ec71e3-26ed-4653-ad3b-c56f42330510",
"targetConfirmations": "12"
}
}{
"event": "IncomingTransactionReceived",
"data": {
"transactionId": "cmdrdvuae01ytec01vtdf3wql",
"transactionHash": "0x2a754742bce4786b4ca870ab5c15f53e108f56663b949fe570db0db36be3c4ab",
"status": "Confirming",
"amount": 5,
"sourceAddress": "0x2dbcaac27274e0dc7835e0d6c1b3c6bce2712790",
"destinationAddress": "0xc4870c59e649e1b66d6329e16c6d942cad8e59d4",
"asset": "USDT",
"blockchain": "ethereum-sepolia",
"createdAt": "2025-07-31T12:41:28.093Z",
"customerIdentifier": "[email protected]",
"widgetId": "9e37db44-0eea-465e-b35d-907d0a817b89",
"widgetName": "test 20 customer address",
"baseCurrency": "USD",
"baseCurrencyAmount": 4.998749,
"targetConfirmations": "12"
}
}{
"event": "IncomingTransactionStatusUpdated",
"data": {
"transactionId": "cmdrdvuae01ytec01vtdf3wql",
"transactionHash": "0x2a754742bce4786b4ca870ab5c15f53e108f56663b949fe570db0db36be3c4ab",
"status": "Completed",
"amount": 5,
"sourceAddress": "0x2dbcaac27274e0dc7835e0d6c1b3c6bce2712790",
"destinationAddress": "0xc4870c59e649e1b66d6329e16c6d942cad8e59d4",
"asset": "USDT",
"blockchain": "ethereum-sepolia",
"createdAt": "2025-07-31T12:41:28.093Z",
"customerIdentifier": "[email protected]",
"widgetId": "9e37db44-0eea-465e-b35d-907d0a817b89",
"widgetName": "test 20 customer address",
"baseCurrency": "USD",
"baseCurrencyAmount": 4.998749,
"targetConfirmations": "12"
}
}{
"event": "PurchaseUpdated",
"data": {
"purchaseId": "5a7e6bad-8ad8-464f-9892-0f2df100b79c",
"status": "Initiated",
"amount": 0,
"plannedAmount": 0.00000673,
"asset": "BTC",
"blockchain": "bitcoin",
"address": "bc1q8pe73z...",
"fiatCurrency": "USD",
"fiatAmount": 0.8,
"confirmationAmount": 6,
"widgetId": "bd6510a0-ad66-4f95-ad50-1bc415bf97a6",
"widgetName": "product widget purchase",
"purchaseIdentifier": "[email protected]",
"title": "Payment",
"subTitle": "The payment description",
"siteName": "Merchant Site",
"transactions": [],
"currentDate": "2025-07-16T11:50:12.835Z",
"expirationDate": "2025-07-16T12:35:12.388Z",
"acceptPartialPayment": true,
"redirectUrl": "http://www.inabit.com"
}
}{
"event": "PurchaseUpdated",
"data": {
"purchaseId": "5a7e6bad-8ad8-464f-9892-0f2df100b79c",
"status": "Completed",
"amount": 0.000007,
"plannedAmount": 0.00000673,
"asset": "BTC",
"blockchain": "bitcoin",
"address": "bc1q8pe73z...",
"fiatCurrency": "USD",
"fiatAmount": 0.8,
"confirmationAmount": 6,
"widgetId": "bd6510a0-ad66-4f95-ad50-1bc415bf97a6",
"transactions": [
"e30e54115a76d52b2f857e1f0fa6888c76f2f04edc6095498107eebdf299dff9"
],
"allocationDate": "2025-07-16T11:50:12.388Z",
"expirationDate": "2025-07-16T12:35:12.388Z",
"acceptPartialPayment": true,
"redirectUrl": "http://www.inabit.com"
}
}