Webhooks

Transaction events

Every transaction change fires a webhook. All events share one envelope; the same object also comes back from Get Transaction Status. Signing, retries, and headers are covered under Platform → Register Webhook.

Envelope
{
  "id": "<eventId>",
  "type": "transaction.paid",
  "created": 1785473600000,
  "data": { "object": { /* the transaction object, shown below per event */ } }
}

Approval

Bank

Settlement

settlement

transaction.paid

Funds are settled to the beneficiary — the terminal success state.

transaction.paid
{
  "id": "evt_transaction_paid_sample",
  "type": "transaction.paid",
  "created": 1785473600000,
  "data": {
    "object": {
      "object": "transaction",
      "transactionId": "68bc0a1b-b2d3-4f42-84cd-1030e5aac4b3",
      "jobId": "f2baca0b-5896-4f7f-af27-f0ac2d89e6bd",
      "apiRefNumber": "PO-2026-08-01-778",
      "reference": "Acme July invoice",
      "tag": "july-settlement",
      "remark": "Monthly vendor settlement",
      "metadata": {
        "erpBatchId": "SAP-99213",
        "costCenter": "CC-42"
      },
      "status": "paid",
      "source": "partner_api",
      "initiationMode": "bulk",
      "packageCode": "VENPAY",
      "paymentMethod": "NEFT",
      "amount": {
        "value": 25000000,
        "currency": "INR"
      },
      "fees": {
        "base": {
          "value": 500,
          "currency": "INR"
        },
        "gst": {
          "value": 90,
          "currency": "INR"
        },
        "total": {
          "value": 590,
          "currency": "INR"
        }
      },
      "debitAccount": {
        "accountNumber": "000112220001"
      },
      "beneficiary": {
        "code": "ACME-VENDOR-01",
        "name": "Acme Supplies Pvt Ltd",
        "accountNumber": "000112223345",
        "ifsc": "HDFC0005678",
        "purpose": "Invoice INV-2291"
      },
      "approval": {
        "levelsRequired": 2,
        "currentLevel": 2,
        "comment": "Verified against PO"
      },
      "actors": {
        "createdBy": {
          "userId": "usr-maker-01",
          "username": "priya.finance",
          "role": "finance_maker"
        },
        "approvedBy": {
          "userId": "usr-checker-02",
          "username": "rahul.checker",
          "role": "finance_checker"
        }
      },
      "timestamps": {
        "createdAt": 1785460000000,
        "approvedAt": 1785472000000,
        "sentToBankAt": 1785473000000,
        "paidAt": 1785473600000
      },
      "utr": "HDFCN2026080100778",
      "narration": "CMS-HDFCN2026080100778-VENPAY",
      "bankReference": "BANKALPHA-DISP-68BC0A1B"
    }
  }
}
Fields at this stage

Adds timestamps.paidAt. This is the fullest payload: every reference and timestamp is present.