Webhooks

Receive real-time event notifications at your server without polling.

OZZOBiT Webhooks allow you to receive real-time notifications about order status changes, KYC events, and other important events at your server endpoint. Instead of continuously polling our API for status updates, we push data to you when events occur.

Supported Webhook Types

📦
Order Webhooks
Notifications for order lifecycle events including creation, payment processing, completion, and failure.
🆔
KYC Webhooks
Notifications when KYC verification status changes (pending, approved, rejected, retry needed).

Adding / Updating Your Webhook URL

Navigate to Partner Dashboard

Log in to your OZZOBiT partner dashboard at OZZOBiT.com/dashboard

Go to Settings then Webhooks

In the settings section, find the Webhooks configuration panel.

Add Your Endpoint URL

Enter your HTTPS webhook endpoint URL and save. You can add multiple URLs if needed.

⚠️
Webhook Requirements
  • Your endpoint must use HTTPS (TLS 1.2+)
  • Your server must respond with HTTP 200 status within 10 seconds
  • Webhook payloads are sent as POST requests with JSON body
  • We retry failed deliveries up to 3 times with exponential backoff

Order Webhooks

EventDescriptionStatus
ORDER_CREATEDA new order has been createdInfo
ORDER_PROCESSINGPayment is being processedProcessing
ORDER_COMPLETEDPayment successful, crypto sent/completedSuccess
ORDER_FAILEDOrder failed due to payment or processing errorFailed
ORDER_CANCELLEDOrder was cancelled by user or systemCancelled
PENDING_DELIVERY_FROM_OZZOBiTCrypto is being sent from OZZOBiT to user walletPending
AWAITING_PAYMENT_FROM_USERWaiting for user to complete paymentAwaiting
PAYMENT_DONE_MARKED_BY_USERUser marked payment as done, verifyingVerifying
EventDescriptionStatus
ORDER_CREATEDSell order created, awaiting crypto depositInfo
AWAITING_CRYPTO_DEPOSITWaiting for user to send crypto to deposit addressAwaiting
CRYPTO_DEPOSIT_RECEIVEDCrypto received from user, fiat processing startedReceived
FIAT_PROCESSINGConverting crypto to fiat and initiating bank transferProcessing
FIAT_SENTFiat transfer initiated to user bank accountSent
ORDER_COMPLETEDFiat successfully delivered to user bank accountComplete
ORDER_FAILEDOff-ramp order failedFailed
ORDER_CANCELLEDOff-ramp order cancelled by userCancelled
ORDER_REFUNDEDFiat refunded to user due to fulfillment failureRefunded

Decrypting Webhook Payload

ℹ️
Encryption

All webhook payloads from OZZOBiT are signed as JWT tokens. You must verify and decode them using your Partner Access Token before processing on your backend.

See our decryption guide for detailed implementation examples in JavaScript, Java, and Go.

KYC Webhooks

EventKYC StatusDescription
KYC_SUBMITTEDSUBMITTEDTriggered when a user submits their KYC details
KYC_APPROVEDAPPROVEDTriggered when the user's KYC verification is approved
KYC_REJECTEDREJECTEDTriggered when the user's KYC verification is rejected

Webhook Response Schema

FieldTypeDescription
eventNamestringName of the webhook event
orderIdstringUnique identifier for the order
partnerOrderIdstringYour reference ID for this order
statusstringCurrent status of the order
cryptoAmountnumberAmount of cryptocurrency
fiatAmountnumberAmount in fiat currency
fiatCurrencystringFiat currency code (USD, EUR, etc.)
cryptoCurrencystringCryptocurrency code (BTC, ETH, etc.)
fromWalletAddressstringSender wallet address (for off-ramp)
toWalletAddressstringRecipient wallet address (for on-ramp)
timestampstringISO 8601 timestamp of the event
webhookDataobjectAdditional event-specific data

Sample Webhook Payloads

order-completed.jsonjson
{
  "eventName": "ORDER_COMPLETED",
  "data": {
    "partnerOrderId": "your-order-123",
    "id": "OZZOBiT-order-abc",
    "status": "COMPLETED",
    "fiatCurrency": "USD",
    "fiatAmount": 100.00,
    "cryptoCurrency": "ETH",
    "cryptoAmount": 0.045,
    "fromWalletAddress": null,
    "toWalletAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f8bD21",
    "network": "ethereum",
    "walletAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f8bD21",
    "createdAt": "2024-01-15T10:30:00Z",
    "completedAt": "2024-01-15T10:32:15Z"
  }
}
order-failed.jsonjson
{
  "eventName": "ORDER_FAILED",
  "data": {
    "partnerOrderId": "your-order-456",
    "id": "OZZOBiT-order-def",
    "status": "FAILED",
    "failureMessage": "Payment declined by issuing bank",
    "fiatCurrency": "USD",
    "fiatAmount": 50.00,
    "createdAt": "2024-01-15T11:00:00Z"
  }
}
kyc-approved.jsonjson
{
  "eventName": "KYC_APPROVED",
  "data": {
    "kycStatus": "APPROVED",
    "eventID": "KYC_APPROVED",
    "partnerUserId": "0870c29f-75a8-4091-a068-775fa4577172",
    "partnerCustomerId": "12345"
  }
}