Transactions & Reporting

Transaction and Statement Webhooks

Example webhook bodies for transactions.created and statements.created.

See how to read the webhook examples. The values are made up, but every field, its order and its format match what Acme sends.

Transactions

A credit or debit was reported on one of your bank accounts. The event is transactions.created.

{
  "id": "wbh_0RWF7FQ99Y6AR",
  "createdAt": "2026-10-08T03:14:07.429871266Z",
  "mode": "LIVE",
  "event": "transactions.created",
  "object": {
    "id": "txn_0RWF7FQ81Y5NH",
    "dataSource": "ICN",
    "transactionType": "PAYNOW",
    "transactionStatus": "BOOKED",
    "bankReference": "IMB2628103140726100000C741000000126",
    "transactionReferences": [
      {
        "dataSource": "ICN",
        "name": "msgId",
        "value": "IMB2628103140726100000C741000000126"
      }
    ],
    "description": "INV-2026-10-0412",
    "customerReference": "INV-2026-10-0412",
    "remittanceInformation": null,
    "additionalInformation": null,
    "amount": 128050,
    "currency": "SGD",
    "direction": "CREDIT",
    "counterparty": {
      "name": "TAN WEI MING",
      "bank": "OCBCSGSGXXX",
      "bankAccountNumber": "5012846731"
    },
    "bankAccount": {
      "id": "intacc_0RWF7FPY9Y4WK",
      "bank": "DBSSSGSGXXX",
      "bankAccountNumber": "0721845093"
    },
    "virtualAccountNumber": null,
    "transactionDate": "2026-10-08",
    "bookingDate": {
      "date": "2026-10-08",
      "time": null,
      "offset": null,
      "tz": null
    },
    "statementId": null,
    "createdAt": "2026-10-08T03:14:07.418Z",
    "updatedAt": "2026-10-08T03:14:07.418Z"
  }
}

These fields are left out when the bank does not report them:

  • transactionStatus
  • bookingDate, which is also left out when your organization is set up to hide it
  • currencyExchange, which is sent only for a transaction converted between currencies
  • counterparty.bankName and counterparty.localRoutingIdentifier

What the bank reports also differs:

  • counterparty can hold only a name, or be null, when the bank sends no counterparty details.
  • transactionReferences lists every reference the bank sent, by the bank's own field name. It can be empty or null when the bank sent none.

Intraday statement with several new transactions. DBS sends up to 10 transactions in one webhook:

{
  "id": "wbh_0RWF7FRP1Y5E0",
  "createdAt": "2026-10-08T06:05:13.002117954Z",
  "mode": "LIVE",
  "event": "transactions.created",
  "objects": [
    {
      "id": "txn_0RWF7FRNXY54A",
      "dataSource": "CAMT052",
      "transactionType": "GIRO",
      "transactionStatus": "BOOKED",
      "bankReference": "GIRO2610080012784",
      "transactionReferences": [
        {
          "dataSource": "CAMT052",
          "name": "acctSvcrRef",
          "value": "GIRO2610080012784"
        }
      ],
      "description": "GIRO COLLECTION OCT 2026",
      "customerReference": "SUB-OCT26-00187",
      "remittanceInformation": null,
      "additionalInformation": "GIRO COLLECTION OCT 2026",
      "amount": 8900,
      "currency": "SGD",
      "direction": "CREDIT",
      "counterparty": {
        "name": "LIM HUI LING",
        "bank": "UOVBSGSGXXX",
        "bankAccountNumber": "3609127745"
      },
      "bankAccount": {
        "id": "intacc_0RWF7FPY9Y4WK",
        "bank": "DBSSSGSGXXX",
        "bankAccountNumber": "0721845093"
      },
      "virtualAccountNumber": null,
      "transactionDate": "2026-10-08",
      "bookingDate": {
        "date": "2026-10-08",
        "time": null,
        "offset": null,
        "tz": null
      },
      "statementId": null,
      "createdAt": "2026-10-08T06:05:12.844Z",
      "updatedAt": "2026-10-08T06:05:12.844Z"
    },
    {
      "id": "txn_0RWF7FRP1Y5DZ",
      "dataSource": "CAMT052",
      "transactionType": "TT",
      "transactionStatus": "BOOKED",
      "bankReference": "FT2610081142867",
      "transactionReferences": [
        {
          "dataSource": "CAMT052",
          "name": "acctSvcrRef",
          "value": "FT2610081142867"
        }
      ],
      "description": "OUTWARD TT PO 5521",
      "customerReference": "PO-5521",
      "remittanceInformation": null,
      "additionalInformation": "OUTWARD TT PO 5521",
      "amount": 354000,
      "currency": "SGD",
      "direction": "DEBIT",
      "counterparty": {
        "name": "SHENZHEN BRIGHT ELECTRONICS CO LTD",
        "bank": "CMBCCNBSXXX",
        "bankAccountNumber": "755912345610801"
      },
      "bankAccount": {
        "id": "intacc_0RWF7FPY9Y4WK",
        "bank": "DBSSSGSGXXX",
        "bankAccountNumber": "0721845093"
      },
      "virtualAccountNumber": null,
      "transactionDate": "2026-10-08",
      "bookingDate": {
        "date": "2026-10-08",
        "time": null,
        "offset": null,
        "tz": null
      },
      "statementId": null,
      "createdAt": "2026-10-08T06:05:12.844Z",
      "updatedAt": "2026-10-08T06:05:12.844Z"
    }
  ]
}

Statements

An end-of-day statement has been processed. The transactions it reports are now available at /v1/transactions. The event is statements.created.

openingBalance and closingBalance are null when the statement does not carry that balance for the statement date and currency.

{
  "id": "wbh_0RWF7FTRDY6B4",
  "createdAt": "2026-10-08T01:30:24.145087173Z",
  "mode": "LIVE",
  "event": "statements.created",
  "object": {
    "id": "stmt_0RWF7FTQDY7M7",
    "statementDate": "2026-10-07",
    "type": "CAMT.053",
    "bankAccount": {
      "id": "intacc_0RWF7FPY9Y4WK",
      "bank": "DBSSSGSGXXX",
      "bankAccountNumber": "0721845093"
    },
    "currency": "SGD",
    "createdAt": "2026-10-08T01:30:24.135Z",
    "updatedAt": "2026-10-08T01:30:24.135Z",
    "openingBalance": 18452300,
    "closingBalance": 19630850
  }
}

On this page