Webhook Events

Every Webhook request to your webhook URL comes with a payload, and this payload contains the details of the transaction for which you are being notified.

Webhook Payload Definitions

Transaction Event Definition

FieldDescriptionType
eventThe webhook event action that triggered the webhookString
dataAll information related to this specific webhook.Object
data.transactionAll information related to the transaction is being carried out.Object
data.transaction.referenceBasqet transaction referenceString
data.transaction.merchant_nameBasqet merchant nameString
data.transaction.payment_currencyTransaction currency idString
data.transaction.payment_currency_slugTransaction currency slugString
data.transaction.customer_emailYour customer's emailString
data.transaction.customer_nameYour customer's nameString
data.transaction.statusTransaction status (INITIATED,PENDING,ABANDONED,SUCCESSFUL)String
data.transaction.payment_amountPayment amount (Amount User was to pay)String
data.transaction.amount_paidAmount Paid (Amount user sent to wallet address)String
data.transaction.descriptionTransaction description / Description of paymentString
data.transaction.is_liveMerchant account status / Live or Sandbox transactionBoolean / String
data.transaction.created_atThe date the transaction was created.String

*Sample Transaction Event

{
  "event": "payment.received",
  "data": {
    "transaction": {
      "reference": "bq_RkaUV0Zy3PGpQsT8c",
      "merchant_name": "Bar BQ Express",
      "payment_currency": 3,
      "payment_currency_name": "Bitcoin",
      "payment_currency_slug": "BTC",
      "status": "SUCCESSFUL",
      "customer_email": "[email protected]",
      "customer_name": "John Doe",
      "payment_amount": 1,
      "amount_paid": 1,
      "description": "Payment for Lamborghini",
      "is_live": false,
      "created_at": "2026-02-09T16:18:20.000Z",
      "meta": {}
    }
  }
}

Wallet Event Definition

FieldDescriptionType
eventThe webhook event action that triggered the webhookString
dataAll information related to this specific webhookObject
data.walletAll information related to the wallet that was updatedObject
data.wallet.transaction_referenceReference of transaction that triggered wallet updateString
data.wallet.amountAmount that was added to walletNumber
data.wallet.available_balanceBalance on walletNumber
data.wallet.ledger_balanceLedger Balance of WalletNumber
data.wallet.currencyCurrency code of the wallet that was updated e.g USDCString
data.wallet.nameName of the wallet that was updated e.g USD CoinString
data.wallet.is_liveA boolean flag indicating the environment: true for production and false for sandbox.Boolean

Sample Wallet Event

{
  "event": "wallet.updated",
  "data": {
    "wallet": {
      "transaction_reference": "bq_RkaUV0Zy3PGpQsT8c",
      "amount": 10.1178,
      "available_balance": 6.8399,
      "ledger_balance": 0,
      "currency": "USDC",
      "name": "USD Coin",
      "type": "CRYPTO",
      "is_live": false
    }
  }
}

Events

Basqet dispatches the following webhook events to communicate updates on incoming transactions and wallet changes:

  • payment.received: Dispatched whenever a merchant receives payment.
  • payment.initiated: Dispatched when a payment has been initialized.
  • payment.pending: Dispatched after a payment has been initiated.
  • payment.abandoned: Dispatched when a transaction has been abandoned.
  • wallet.updated: Dispatched when a wallet is updated.

Retry Policy

Merchants can manually retry a webhook using the Retry Transaction Webhook API

Responding to a Webhook Request

It is important to respond to the requests with a 200 status code to acknowledge that you have received the requests. Basqet does not pay attention to any request parameters apart from the request status code.

Best Practices

It is recommended to do the following when receiving webhook notifications from us:

  • Keep track of all notifications received: It’s important to keep track of all notifications you’ve received. When a new notification is received proceed to check that this has not been processed before giving value. A retry of already processed notifications can happen if we do not get a 200 HTTP Status code from your notification URL, or if there was a request time out.
  • Acknowledge receipt of notifications with a 200 HTTP status code: It’s recommended you immediately acknowledge receipt of the notification by returning a 200 HTTP Status code before proceeding to perform other logics, failure to do so might result in a timeout which would trigger a retry of such notification.