Webhooks allow you to receive real-time updates from DashX. Follow these steps to set up a webhook.

Webhooks allow you to receive real-time updates about checkout sessions and other events. Once a webhook is configured, your server will receive structured JSON payloads whenever an event occurs.
When a checkout session is completed, your webhook URL will receive a POST request with a payload similar to this:
{
"id": "38ea5415-d69c-4aa2-a892-588972a534d3",
"apiVersion": "2023-01-11",
"created": 1745405443086,
"object": "checkoutSession",
"type": "checkout_session.completed",
"data": {
"object": {
"id": "7cf3f4cf-e39a-48b5-ad07-ea7a77c4c52d",
"createdAt": "2025-04-23T10:50:41.449683Z",
"amountTotal": "0.00987000",
"status": "SUCCESS",
"currency": "SOL",
"customer_id": "36ab0154-0797-42",
"payment_link_id": "d4cf04d5-0d45-4b6e-9227-011b39844aac",
"payment_link_title": "test",
"payment_link_slug": "sKgmsAGmRZ-aa5XOFLqZ8Q",
"transaction_hash": "3jdxLnx5Pe22X6uBqB1Cwt6x6xtjfjh8yUnwc3667KkX43KiCroiT2rZ9b3VJ8jnMyF3LvGF2biJu3etsubHjb2t",
"from_address": "4umonu9DZSj63cUZVvAUfLhBMDr8ad4YcAeUMBSZXUS2",
"payment_address": "cuZFBDnPSt5J7Limwm37RedRWpNVs1xNR8XQDtWDMiN",
"chain_symbol": "SOL",
"payment_amount": "0.01000000",
"payment_processing_fee": "0.00005000",
"updatedAt": "2025-04-23T10:50:43.086043+00:00"
}
}
}When a checkout session is expired, your webhook URL will receive a POST request with a payload similar to this:
{
"id": "d011c41f-a29f-4c44-b3de-64e234d8b269",
"apiVersion": "2023-01-11",
"created": 1742839610947,
"object": "checkoutSession",
"type": "checkout_session.expired",
"data": null
}When a checkout session is canceled, your webhook URL will receive a POST request with a payload similar to this:
{
"id": "d011c41f-a29f-4c44-b3de-64e234d8b269",
"apiVersion": "2023-01-11",
"created": 1742839610947,
"object": "checkoutSession",
"type": "checkout_session.canceled",
"data":null
}Tip: You can use the payment_link_slug from the webhook response to verify the transaction status through the API. This is especially useful when you need to confirm payment details or perform additional checks after receiving a webhook event.
Webhooks allow your server to listen for real-time payment events. When a checkout session is completed, your webhook URL will receive a POST request containing transaction details. Below are examples of how to handle webhook events in Python and JavaScript.
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def webhook():
data = request.json
if data["type"] == "checkout_session.completed":
print("Payment successful:", data["data"]["object"])
return jsonify({"status": "received"}), 200
if __name__ == '__main__':
app.run(port=5000)const express = require("express");
const app = express();
app.use(express.json());
app.post("/webhook", (req, res) => {
const data = req.body;
if (data.type === "checkout_session.completed") {
console.log("Payment successful:", data.data.object);
}
res.json({ status: "received" });
});
app.listen(5000, () => console.log("Webhook server running on port 5000"));Note: Only 5 webhooks are allowed per merchant