{shop callback_url}Order result callback
When an async payment is confirmed, HubZell relays the result to your shop's configured callback_url, as a plain JSON POST body — no custom headers or signature, since the callback URL itself is a secret you configured. Only final statuses are delivered, best-effort with no retry — poll /orders/by-transaction/TXN_ID if you never receive one. For CASHCARD orders, the purchased card details are returned in cashcard_ref1 / cashcard_ref2 (also mirrored inside delivered_content).
Callback payload
Posted to your as application/json.
| Field | Type | Description |
|---|---|---|
transaction_id | string | Transaction id, when available |
client_ref | string | Your order reference, as sent when the payment was placed |
status | string | Result status — SUCCESS or FAILED |
input | object | The original input you submitted when placing the order |
category | string | Product category for this order |
amount | number | Amount charged for this order |
currency | string | Currency code for amount |
message | string | Human-readable result message |
failure_reason | string | Reason for failure, set only when status is FAILED |
cashcard_ref1 | string | CASHCARD only — first card reference of the purchased card (e.g. card serial number), set only when status is SUCCESS. Not sent for other categories |
cashcard_ref2 | string | CASHCARD only — second card reference of the purchased card (e.g. card PIN / redeem code), set only when status is SUCCESS. Not sent for other categories |
delivered_content | object | Goods delivered for this order, set only when status is SUCCESS and the product delivers something. For CASHCARD it holds the same cashcard_ref1 / cashcard_ref2 values as the top-level fields. null otherwise |
created_at | string | When the order was created |
completed_at | string | When the order reached a final status, when available |
{
"transaction_id": "987654321",
"client_ref": "ORD20260708001",
"status": "SUCCESS",
"input": {
"uid": "234750130579422976",
"server_id": "asia-01"
},
"category": "GTOPUP",
"amount": 100,
"currency": "THB",
"message": "Topup successful.",
"failure_reason": null,
"delivered_content": null,
"created_at": "2026-07-08T02:30:00.000Z",
"completed_at": "2026-07-08T02:30:05.000Z"
}{
"transaction_id": "987654322",
"client_ref": "CASH20260923001",
"status": "SUCCESS",
"input": {
"ref1": "0718814500"
},
"category": "CASHCARD",
"amount": 54.17,
"currency": "THB",
"message": "Topup successful.",
"failure_reason": null,
"cashcard_ref1": "262-F85-0001146",
"cashcard_ref2": "9UE7US89ACTS",
"delivered_content": {
"cashcard_ref1": "262-F85-0001146",
"cashcard_ref2": "9UE7US89ACTS"
},
"created_at": "2026-09-23T04:22:27.467Z",
"completed_at": "2026-09-23T04:22:30.259Z"
}Your response
Return any 2xx HTTP status to acknowledge. The response body isn't read.


