Example Webhook Payloads — automatic deposits

View sample webhook payloads for different event types

Idempotency Required

A webhook may be delivered more than once. Build the handler to tolerate repeats (idempotent) so the same data is never processed twice.

Event Types

Payment/PAYMENT_PAID
{
  "data": {
    "payment": {
      "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "amount": "300",
      "status": "SUCCESS",
      "address": "0x00",
      "fx_rate": {
        "THB": 300.33,
        "USD": 9.276
      },
      "seq_num": 99065525,
      "agent_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "lifetime": 600,
      "order_id": "MERCHANT ORDER ID",
      "slip_ref": "WH-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "tx_value": 9.276,
      "source_id": "payment",
      "audit_time": null,
      "created_at": "2026-05-13T10:09:47.500Z",
      "expired_at": "2026-05-13T10:19:47.496Z",
      "payment_qr": "00020101021229370016A0000006770101110213123456789012353037645802TH5406300.336304207D",
      "request_ip": null,
      "updated_at": "2026-05-13T10:10:26.487Z",
      "url_failed": "https://example.com/callback",
      "url_return": "https://example.com/callback",
      "audit_trail": [],
      "payment_url": "https://app.example.com/pay/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "to_currency": "THB",
      "url_success": "https://example.com/callback",
      "fee_subtract": 0,
      "from_address": "x466277",
      "invoice_type": "FIAT",
      "is_completed": true,
      "exchange_rate": 1,
      "failed_reason": "UNKNOWN",
      "from_currency": "THB",
      "merchant_name": "MERCHANT NAME",
      "sequence_time": "2026-05-13T10:10:26.486Z",
      "owned_by_group": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "payment_amount": 300.33,
      "payment_domain": "https://app.example.com",
      "payment_status": "PAYMENT_PAID",
      "additional_data": {
        "description": "deposit"
      },
      "discount_amount": 0,
      "merchant_amount": 296.73,
      "merchant_number": "1234567890",
      "organization_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "accuracy_percent": 0,
      "audit_by_user_id": null,
      "discount_percent": 0,
      "ebank_account_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "partner_agent_id": null,
      "request_platform": "API",
      "is_multiple_order": true,
      "merchant_provider": "SCB",
      "order_tracking_id": null,
      "payer_paid_amount": 300.33,
      "order_display_mode": "FIAT",
      "payment_match_type": "EXACTLY",
      "webhook_request_id": null,
      "payer_bank_provider": "KBANK",
      "payer_paid_currency": "THB",
      "payment_method_type": "PROMPTPAY_QR",
      "exchange_rate_source": "COINGECKO",
      "order_user_reference": "HH123456789",
      "merchant_promptpay_id": "1234567890123",
      "owned_by_group_parent": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "request_withdrawal_id": null,
      "payer_bank_account_name": "นางสาว XXXXX XXXXX",
      "payer_bank_account_number": "1234567890",
      "order_auto_cancel_previous": true,
      "request_withdrawal_sequence_time": null
    },
    "transaction": {
      "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "fee": 1.2,
      "type": "RECEIVE",
      "amount": 300.33,
      "status": "COMPLETED",
      "fx_rate": {
        "THB": 300.33,
        "USD": 9.276
      },
      "seq_num": 82871898,
      "slip_id": null,
      "to_bank": "SCB",
      "tx_date": "13/05/2026 17:10",
      "agent_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "currency": "THB",
      "metadata": null,
      "order_id": "MERCHANT ORDER ID",
      "tx_value": 9.276,
      "from_bank": "KBANK",
      "from_name": "นางสาว XXXXX XXXXX",
      "reference": "27075970",
      "source_id": "payment",
      "created_at": "2026-05-13T10:09:47.500Z",
      "fee_amount": 3.603959999999999,
      "matched_at": null,
      "message_id": null,
      "payment_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "updated_at": "2026-05-13T10:10:26.487Z",
      "webhook_id": null,
      "unique_hash": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "from_address": "x466277",
      "message_time": null,
      "p2p_match_id": null,
      "tx_unix_time": 1778692200,
      "sequence_time": "2026-05-13T10:10:26.486Z",
      "owned_by_group": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "organization_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "realized_amount": 296.72604,
      "extra_fee_network": 0,
      "settlement_channel": "CLASSIC",
      "webhook_request_id": null,
      "webhook_response_id": null,
      "order_user_reference": "HH123456789",
      "owned_by_group_parent": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "is_matched_from_unmatched": false
    },
    "idempotency_key": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX:PAYMENT_PAID"
  },
  "type": "FIAT",
  "event": "PAYMENT_PAID"
}

P2P payload examples

Slip deposits and P2P withdrawals — a different set of terminal events from this page