Initiate Transaction - API

This is the next and final step involved in creating a transaction via API on Basqet.

API Details

FieldValue
ActionInitiate Transaction
MethodPOST
Path/v1/transaction/:transaction_id/pay
Auth RequirementSecret key

Business Summary

This endpoint updates the transaction object by assigning a cryptocurrency to it and returning the calculated crypto amount and payment address.

You can use this API to:

  • Select the cryptocurrency the customer wants to use to convert an INITIATED transaction into a live payment request.
  • Transition the transaction to the PENDING state to generate a unique wallet address and QR code for the customer.
  • Lock in the real-time conversion rate to determine the exact amount of crypto the customer needs to send.

Request Parameters

Path Parameters

NameTypeRequiredDefaultAllowed ValuesDescription
transaction_idstringYesThe unique identifier of the transaction.

Body Parameters

NameTypeRequiredDefaultAllowed ValuesDescription
currency_idstringYesTether: 3, Bitcoin: 4, Quidax Token: 5, Ethereum: 6, Litecoin: 7The unique identifier of the cryptocurrency the customer wishes to pay in.
refund_addressstringNoOptional refund address stored in the transaction metadata.

Request Headers

NameTypeRequiredDefaultDescription
AuthorizationstringYesBearer token in the form Bearer YOUR_SECRET_KEY.
Content-TypestringYesapplication/jsonThe media type of the resource. Must be application/json.

Request Example

cURL

curl --request POST \
  --url https://api.basqet.com/v1/transaction/BASQET_TXN_REF_12345/pay \
  --header 'Authorization: Bearer sec_live_xxxxxxxxxxxxx' \
  --header 'Content-Type: application/json' \
  --data '{
    "currency_id": 2,
    "refund_address": "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113"
  }'

Response Schema

FieldTypeNullableDescription
statusstringNoStatus of the API request.
dataobjectNoObject containing the transaction details.
data.idstringNoUnique internal identifier for the transaction.
data.referencestringNoTransaction reference for the merchant.
data.descriptionstringYesTransaction description provided during initialization.
data.initialized_amountnumberNoOriginal fiat amount.
data.initialized_currencystringNoFiat currency slug, e.g. USD or NGN.
data.payment_amountnumberNoCrypto amount to be sent.
data.amount_paidnumberYesnull until payment is confirmed on-chain.
data.payment_currencynumber/stringYesSelected crypto currency or internal currency ID, depending on response format.
data.payment_addressstringNoDestination wallet address.
data.statusstringNoCurrent transaction status. Becomes PENDING after successful initiation.
data.qrCodestringNoBase64 data URL of the QR code for the payment_address.
data.is_livebooleanYesIndicates whether the transaction is in live or test mode.
data.merchantobjectNoMerchant account information.
data.merchant.idintegerNoUnique identifier for the merchant.
data.merchant.namestringNoRegistered merchant name.
data.metaobjectYesAdditional configuration, such as fee bearer and refund address.

Sample Response

{
  "status": "success",
  "data": {
    "qrCode": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...",
    "id": "BASQET_TXN_REF_12345",
    "reference": "BASQET_TXN_REF_12345",
    "amount_paid": null,
    "status": "PENDING",
    "description": "Invoice #1024",
    "initialized_amount": 1500,
    "payment_amount": 0.002357,
    "payment_address": "bc1qexampleaddress",
    "payment_currency": "BTC",
    "initialized_currency": "USD",
    "is_live": true,
    "merchant": {
      "id": 10,
      "name": "Acme Store"
    }
  },
  "meta": {}
}

Error Reference

HTTP CodeMessageResolution
400Missing or invalid payload fieldsEnsure currency_id is present and numeric, and that the refund_address format is valid.
404VariesOccurs if the transaction_id is invalid, the selected currency_id is not supported, or the merchant’s subaccount/processor is not configured.
422The transaction is not initiatedVerify that the transaction is still in the INITIATED state. This can also occur if the merchant account is inactive.
500Internal Server ErrorAn unexpected server-side error occurred. Retry the request or contact support.
503VariesAn upstream error occurred while generating the price quote or wallet address. Retry the request.

Webhook Payloads

Payment Pending (payment.pending)

When a transaction has been initiated and is awaiting payment, Basqet sends a POST request to your webhook URL, as set up in your dashboard.

{
  "event": "payment.pending",
  "data": {
    "transaction": {
      "reference": "bq_B09BMmXXgWMzRSmon",
      "merchant_name": "Appstate",
      "payment_currency": 6,
      "payment_currency_name": "Ethereum",
      "payment_currency_slug": "ETH",
      "status": "PENDING",
      "customer_email": "[email protected]",
      "customer_name": "tunde",
      "payment_amount": 0.001366,
      "amount_paid": null,
      "description": null,
      "is_live": false,
      "created_at": "2022-07-14T20:17:11.000Z",
      "meta": {}
    }
  }
}

Payment Completed (payment.received)

When a transaction is successfully completed and the merchant has received payment, Basqet sends a POST request to your webhook URL, as set up in your dashboard.

{
  "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": {}
    }
  }
}

Payment Abandoned (payment.abandoned)

When a transaction has been abandoned by the customer, for example when the checkout session expires, Basqet sends a POST request to your webhook URL, as set up in your dashboard.

{
  "event": "payment.abandoned",
  "data": {
    "transaction": {
      "reference": "bq_B09BMmXXgWMzRSmon",
      "merchant_name": "Appstate",
      "payment_currency": 6,
      "payment_currency_name": "Ethereum",
      "payment_currency_slug": "ETH",
      "status": "ABANDONED",
      "customer_email": "[email protected]",
      "customer_name": "tunde",
      "payment_amount": 0.001366,
      "amount_paid": null,
      "description": null,
      "is_live": false,
      "created_at": "2022-07-14T20:17:11.000Z",
      "meta": {}
    }
  }
}