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 IdentifierTrigger Condition & Business MeaningActionable Advice
pay.transactionOrder 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.updateOrder 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 use event_id or the order's idNo to ensure idempotency. Always check if the order has already been fulfilled in your database before processing to prevent duplicate delivery caused by network retries.