Order Transactions
These webhook events are triggered based on the overall lifecycle of a Payment Order. Merchants must strictly listen to order update events as the authoritative trigger for fulfilling orders or releasing services.
🔔 Event Types
| Event Identifier | Trigger Condition & Business Meaning | Actionable Advice |
|---|---|---|
pay.transaction | Order Created: Triggered when a payment order is successfully created in the system. The status is typically pending. | Use for logging or reconciliation only. Do not fulfill the order. |
pay.transaction.update | Order Updated: Triggered whenever there is a change in the order's status, confirmed amount, etc. | 🌟 Fulfillment Trigger: Listen to this event. When the status field in the payload changes to completed, execute your fulfillment logic. |
📦 Payload Example
When an event occurs, DogPay sends a POST request to your configured webhook endpoint. Below is the complete payload example of a pay.transaction.update event when the order is completed:
{
"event_id": "997daf9b-4162-4864-914c-960ff6cc16ad",
"event_identifier": "pay.transaction.update",
"data": {
"id": "761ca541-df6e-4273-a3f2-e3df85e5c3b7",
"idNo": "1940644675780100097",
"transactionAt": "2025-07-03T05:32:00.796Z",
"completedAt": "2025-07-04T14:32:17.366Z",
"payType": "chain_address",
"payer": null,
"payChannel": "pay_001",
"status": "completed",
"amount": "0.02000000",
"usdAmount": "0.02000000",
"usdFeeAmount": "0.01000000",
"currency": "USDC",
"transactionId": "817f2df2-3b0e-472f-b40e-20ed4c24761c",
"accountId": "0721aeda-ed79-4398-887b-77fd225c69f4",
"fee": "0.01000000",
"totalAmount": "0.00000000",
"usdRate": "1.00000000",
"settleStatus": "unsettled",
"type": "pay",
"originPayOrderId": null,
"callId": "0f38a615-ec28-7866-351f-7fcb78862b7n",
"balanceId": "eb078bf9-82ad-4c00-bf6a-992632b55d21",
"cursorId": "375638181647749120",
"successUrl": "[https://api.string.com/url](https://api.string.com/url)",
"failureUrl": "[https://api.string.com/url](https://api.string.com/url)",
"extraData": {
"payType": "WEB",
"goodsName": "Test_V2"
},
"payChannelCurrencyId": "c4dff705-3012-4b91-a4f5-0a4ec8a4982f",
"waitAmountOnChain": "0",
"doneAmountOnChain": "0.02",
"receiveAddress": "0xB0a2821fAa9AD8c08D2764EAF85C414518137620"
}
}
Idempotency Note
Please useevent_idor the order'sidNoto ensure idempotency. Always check if the order has already been fulfilled in your database before processing to prevent duplicate delivery caused by network retries.
Updated about 1 month ago
