> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tesouro.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Event types

> Reference for embedded banking webhook event types and their payloads.

Tesouro emits the following event types for embedded banking. Every delivery uses the common [envelope](/embedded-banking/guides/webhooks#payload-structure); each event type below documents the `attributes` shape and includes an example payload.

<Warning>
  `attributes.rawData` is a verbatim pass-through from the upstream banking core. Tesouro doesn't control or guarantee its structure, field names, or stability - it can change without notice. Use the documented `attributes` fields for business logic. Treat `rawData` as opaque except for debugging and audit.
</Warning>

## LEDGER\_TRANSACTION

A monetary transaction posted to the ledger.

### Attributes

| Field                | Type          | Description                                                                          |
| :------------------- | :------------ | :----------------------------------------------------------------------------------- |
| `businessCustomerId` | string (UUID) | Tesouro organization id of the business customer this event applies to.              |
| `businessCustomer`   | string        | Display name of the business customer.                                               |
| `accountNumber`      | string        | Account number associated with the event.                                            |
| `routingNumber`      | string        | Routing number (ABA).                                                                |
| `eventType`          | string        | Mirrors the envelope `eventType`. Always `"LEDGER_TRANSACTION"`.                     |
| `rawData`            | object        | The original event payload from the upstream banking core, passed through unchanged. |

### Example

A `LEDGER_TRANSACTION` delivery for a \$50 ACH incoming credit:

```json theme={null}
{
  "version": "1",
  "deliveryId": "00000000-0000-0000-0000-000000000099",
  "webhookUrl": "https://your-endpoint.example.com/webhooks/tesouro",
  "deliveryDateTimeUtc": "2026-05-08T00:00:00.000000Z",
  "attemptCount": "1",
  "eventType": "LEDGER_TRANSACTION",
  "attributes": {
    "businessCustomerId": "00000000-0000-0000-0000-000000000001",
    "businessCustomer": "Tesouro Test Customer LLC",
    "accountNumber": "9999999999999",
    "routingNumber": "000000000",
    "eventType": "LEDGER_TRANSACTION",
    "rawData": {
      "id": "aabbccdd-1111-2222-3333-444455558888",
      "fisorganizationid": "9700",
      "adtDtl": {
        "evtNme": "monetary_transaction",
        "ver": "1_2_0",
        "msgUuid": "aabbccdd-1111-2222-3333-444455557799",
        "srcId": "BackOffice",
        "applId": "DP_RDP",
        "operTs": "2026-05-07T00:00:00.000000Z",
        "usrId": "MBPAPI_SVC_ACCOUNT",
        "deviceId": "BackOffice",
        "busPrcs": "DPCreateMonetaryTransaction_v2.0.0",
        "pubFeKey": {
          "feId": "9700",
          "sorFe": {
            "sorFeId": "9700",
            "sor": { "prcsrNme": "FIS NextGen", "applNme": "Deposits" }
          }
        },
        "prcsDte": "2026-05-07"
      },
      "mntryTxnKey": {
        "arKey": {
          "entprsArTyp": "Checking",
          "arId": "9999999999999",
          "sor": { "prcsrNme": "FIS NextGen", "applNme": "Deposits" }
        },
        "txnKey": { "txnRefNbr": 9000099999001, "pstId": 7000099999001 }
      },
      "mntryTxnDtl": {
        "pstDtl": {
          "pstCmmnData": {
            "pstStdCde": "ACHIncomingCredit",
            "origAmt": { "amt": 50.00, "crncyCde": "USD" },
            "pstAmt": { "amt": 50.00, "crncyCde": "USD" },
            "baseAmt": { "amt": 50.00, "crncyCde": "USD" },
            "pstEffDte": "2026-05-07",
            "pstEffTme": "00:00:00",
            "pstIntrstValDte": "2026-05-07",
            "pstDfltNarr": "ACH Incoming Credit"
          },
          "pstFeeDtl": []
        },
        "stlmtDtl": {
          "bnkIdTyp": "ABA Number",
          "bnkRefId": "000000000",
          "stlmtAr": {
            "arRefId": {
              "entprsArTyp": "Consumer Checking",
              "arId": "9999999999999",
              "sor": { "prcsrNme": "FIS NextGen", "applNme": "Deposits" }
            },
            "extArRef": { "extArRefIdTyp": "Consumer Checking", "extArRefId": "9999999999999" }
          },
          "stlmtMeth": "ACH",
          "stlmtDte": "2026-05-07",
          "amt": { "amt": 50.00, "crncyCde": "USD" }
        },
        "pubBalDtl": [
          {
            "balCde": "LedgerBalance",
            "balNme": "Ledger Balance",
            "amt": { "amt": 50.00, "crncyCde": "USD" },
            "balTypCde": "LedgerBalance",
            "actgClassCde": "Liability",
            "pmtTyp": "Credit",
            "balChgAmt": { "amt": 50.00, "crncyCde": "USD" },
            "effDte": "2026-05-07",
            "effTme": "00:00:00"
          }
        ],
        "pubPstDtl": {
          "pmtTyp": "Credit",
          "pstDte": "2026-05-07",
          "pstTs": "2026-05-07T00:00:00.100000Z",
          "busEvtCde": "FundsTransfer",
          "busEvtDte": "2026-05-07",
          "txnStat": "Processed",
          "chnlId": "EPS",
          "cshStlmtTypCde": "ACH"
        }
      },
      "adtnlAdtDtl": {
        "bkDte": "2026-05-07",
        "hostTs": "2026-05-07T00:00:00.100000Z",
        "acptTs": "2026-05-07T00:00:00.000000Z",
        "acptTsUtcOfst": "-05:00"
      }
    }
  }
}
```

## LEDGER\_POSTING\_EXCEPTION

Posting a transaction raised an exception.

### Attributes

Same shape as [LEDGER\_TRANSACTION](#ledger_transaction), with one difference: `eventType` is always `"LEDGER_POSTING_EXCEPTION"`. `rawData` carries the upstream exception payload instead of a successful posting.

### Example

```json theme={null}
{
  "version": "1",
  "deliveryId": "00000000-0000-0000-0000-000000000098",
  "webhookUrl": "https://your-endpoint.example.com/webhooks/tesouro",
  "deliveryDateTimeUtc": "2026-05-08T00:00:00.000000Z",
  "attemptCount": "1",
  "eventType": "LEDGER_POSTING_EXCEPTION",
  "attributes": {
    "businessCustomerId": "00000000-0000-0000-0000-000000000001",
    "businessCustomer": "Tesouro Test Customer LLC",
    "accountNumber": "9999999999999",
    "routingNumber": "000000000",
    "eventType": "LEDGER_POSTING_EXCEPTION",
    "rawData": {
      "id": "aabbccdd-1111-2222-3333-555566667777",
      "fisorganizationid": "9700",
      "adtDtl": { "evtNme": "MonetaryTransactionException" },
      "mntryTxnExcpKey": {
        "arKey": { "arId": "9999999999999" },
        "txnKey": { "txnRefNbr": 9000099999002 }
      },
      "mntryTxnExcpDtl": {
        "txnExcpDtl": { "excpStat": "PENDING", "dfltActn": "RETURN" },
        "pubTxnDtl": {
          "stlmtDtl": {
            "bnkRefId": "000000000",
            "stlmtAr": { "arRefId": { "arId": "9999999999999" } }
          }
        }
      }
    }
  }
}
```

## LEDGER\_ACCOUNT\_EXCEPTION

A ledger account raised an exception.

### Attributes

Same shape as [LEDGER\_TRANSACTION](#ledger_transaction), with two differences: `eventType` is always `"LEDGER_ACCOUNT_EXCEPTION"`, and `routingNumber` may be empty. `rawData` carries the upstream exception payload.

### Example

```json theme={null}
{
  "version": "1",
  "deliveryId": "00000000-0000-0000-0000-000000000097",
  "webhookUrl": "https://your-endpoint.example.com/webhooks/tesouro",
  "deliveryDateTimeUtc": "2026-05-08T00:00:00.000000Z",
  "attemptCount": "1",
  "eventType": "LEDGER_ACCOUNT_EXCEPTION",
  "attributes": {
    "businessCustomerId": "00000000-0000-0000-0000-000000000001",
    "businessCustomer": "Tesouro Test Customer LLC",
    "accountNumber": "9999999999999",
    "routingNumber": "000000000",
    "eventType": "LEDGER_ACCOUNT_EXCEPTION",
    "rawData": {
      "id": "aabbccdd-1111-2222-3333-888899990000",
      "fisorganizationid": "9700",
      "adtDtl": { "evtNme": "MBPPUBARException" },
      "arBusExcp": {
        "arKey": { "entprsArTyp": "Checking", "arId": "9999999999999" },
        "busEvtCde": "FundsTransfer",
        "msg": [
          { "cde": "DP006046", "desc": "Stop Hit occurred", "typ": "Validation Error" }
        ]
      }
    }
  }
}
```

## ACCOUNT\_STATUS\_CHANGED

A ledger account's status changed (for example, opened, closed, dormant, or charged off).

### Attributes

Same shape as [LEDGER\_TRANSACTION](#ledger_transaction), with two differences: `eventType` is always `"ACCOUNT_STATUS_CHANGED"`, and `routingNumber` is empty. `rawData` carries the upstream status-change payload, including the new primary and secondary status values.

### Example

```json theme={null}
{
  "version": "1",
  "deliveryId": "00000000-0000-0000-0000-000000000096",
  "webhookUrl": "https://your-endpoint.example.com/webhooks/tesouro",
  "deliveryDateTimeUtc": "2026-05-08T00:00:00.000000Z",
  "attemptCount": "1",
  "eventType": "ACCOUNT_STATUS_CHANGED",
  "attributes": {
    "businessCustomerId": "00000000-0000-0000-0000-000000000001",
    "businessCustomer": "Tesouro Test Customer LLC",
    "accountNumber": "9999999999999",
    "routingNumber": "000000000",
    "eventType": "ACCOUNT_STATUS_CHANGED",
    "rawData": {
      "id": "aabbccdd-1111-2222-3333-111122223333",
      "fisorganizationid": "9700",
      "adtDtl": {
        "evtNme": "account_status_change",
        "ver": "1_2_0",
        "msgUuid": "aabbccdd-1111-2222-3333-111122224444",
        "srcId": "BackOffice",
        "applId": "DP_RDP",
        "operTs": "2026-05-07T00:00:00.000000Z",
        "busPrcs": "DPCasaCreateArrangement_v1.9.0",
        "prcsDte": "2026-05-07"
      },
      "arKey": {
        "entprsArTyp": "Checking",
        "arId": "9999999999999",
        "sor": { "prcsrNme": "FIS NextGen", "applNme": "Deposits" }
      },
      "arStatDtl": {
        "prmyStat": "Active",
        "scndyStat": "Normal",
        "statEffDte": "2026-05-07",
        "custIndcInd": false,
        "adtnlDtl": [
          { "typ": "ProductMarketingCode", "val": "MRKT001" }
        ]
      }
    }
  }
}
```

## ACCOUNT\_RESTRICTION\_CHANGED

A ledger account's restrictions changed (for example, an account freeze was added for suspected fraud).

### Attributes

Same shape as [LEDGER\_TRANSACTION](#ledger_transaction), with `eventType` always `"ACCOUNT_RESTRICTION_CHANGED"`. `rawData` carries the upstream restriction payload, including the action (`actnCde` is `ADD`, `CHANGE`, or `DELETE`) and the restriction detail.

### Example

```json theme={null}
{
  "version": "1",
  "deliveryId": "00000000-0000-0000-0000-000000000095",
  "webhookUrl": "https://your-endpoint.example.com/webhooks/tesouro",
  "deliveryDateTimeUtc": "2026-05-08T00:00:00.000000Z",
  "attemptCount": "1",
  "eventType": "ACCOUNT_RESTRICTION_CHANGED",
  "attributes": {
    "businessCustomerId": "00000000-0000-0000-0000-000000000001",
    "businessCustomer": "Tesouro Test Customer LLC",
    "accountNumber": "9999999999999",
    "routingNumber": "000000000",
    "eventType": "ACCOUNT_RESTRICTION_CHANGED",
    "rawData": {
      "id": "aabbccdd-1111-2222-3333-555566669999",
      "fisorganizationid": "9700",
      "adtDtl": {
        "evtNme": "account_restriction",
        "ver": "1_0_0",
        "msgUuid": "aabbccdd-1111-2222-3333-555566660001",
        "srcId": "BackOffice",
        "applId": "DP_RDP",
        "operTs": "2026-05-07T00:00:00.000000Z",
        "busPrcs": "DPRecordArrangementException_v1.2.0",
        "prcsDte": "2026-05-07"
      },
      "acctRstrcKey": {
        "entprsArTyp": "Checking",
        "arId": "9999999999999",
        "sor": { "prcsrNme": "FIS NextGen", "applNme": "Deposits" }
      },
      "acctRstrcDtl": {
        "actnCde": "ADD",
        "arExcpDtl": {
          "cde": "AccountFreeze",
          "resn": "Fraud Is Suspected",
          "desc": "Customer lost wallet",
          "effDte": "2026-05-07",
          "clazz": "Error"
        }
      }
    }
  }
}
```
