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

# Crypto deposit updated

> Sent when an on-chain crypto deposit changes state.

**Event type:** `crypto_deposit.updated`

<Note>
  `crypto_deposit.updated` is the on-chain successor to the deprecated `balance.updated` event. During the migration, both names are delivered for the same deposit — `crypto_deposit.updated` (new) and `balance.updated` (legacy) — so you can migrate without missing events. `balance.updated` is deprecated and will be removed on **15 November 2026**; point your on-chain deposit handling at `crypto_deposit.updated` before then.
</Note>

On-chain crypto deposits. For fiat (bank-rail) deposits, see [Fiat deposit updated](/api-reference/webhooks/payin-updated). See [Webhooks overview](/api-reference/webhooks/overview) for delivery, headers, and signature verification.

### `data` fields

<ResponseField name="eventId" type="string">Stable identifier for this deposit event. The **same value** is sent on the legacy `balance.updated` during the transition — use it to deduplicate the two names.</ResponseField>
<ResponseField name="payoutId" type="string">The deposit identifier (named `payoutId` for transport consistency).</ResponseField>
<ResponseField name="companyId" type="string">Your company identifier.</ResponseField>
<ResponseField name="externalId" type="string">Your external reference, if one was provided.</ResponseField>
<ResponseField name="previousState" type="string | null">The state the deposit moved from. An event is emitted only when the state actually changes, so the transition always carries meaning. `null` on the first event.</ResponseField>
<ResponseField name="state" type="string">The current deposit state.</ResponseField>
<ResponseField name="amount" type="number">The deposit amount, in minor units.</ResponseField>
<ResponseField name="currency" type="string">The deposit currency (e.g. `usdc`).</ResponseField>
<ResponseField name="blockchain" type="string">The chain the deposit settled on (e.g. `polygon`, `tron`, `stellar`).</ResponseField>
<ResponseField name="txHash" type="string | null">On-chain transaction hash, when available.</ResponseField>
<ResponseField name="errorReason" type="string | null">Failure reason, when applicable.</ResponseField>
<ResponseField name="updatedAt" type="string">ISO 8601 last-update timestamp.</ResponseField>

<ResponseExample>
  ```json First event theme={null}
  {
    "type": "crypto_deposit.updated",
    "timestamp": "2026-06-23T12:00:00.000Z",
    "data": {
      "eventId": "crypto-deposit:dep_9f86d081884c7d65:none:pending",
      "payoutId": "dep_9f86d081884c7d65",
      "companyId": "cmp_123",
      "externalId": "ext-009",
      "previousState": null,
      "state": "pending",
      "amount": 100000,
      "currency": "usdc",
      "blockchain": "polygon",
      "txHash": "0xdef456",
      "errorReason": null,
      "updatedAt": "2026-06-23T12:00:00.000Z"
    }
  }
  ```

  ```json State transition theme={null}
  {
    "type": "crypto_deposit.updated",
    "timestamp": "2026-06-23T12:05:00.000Z",
    "data": {
      "eventId": "crypto-deposit:dep_9f86d081884c7d65:confirmed:completed",
      "payoutId": "dep_9f86d081884c7d65",
      "companyId": "cmp_123",
      "externalId": "ext-009",
      "previousState": "confirmed",
      "state": "completed",
      "amount": 100000,
      "currency": "usdc",
      "blockchain": "polygon",
      "txHash": "0xdef456",
      "errorReason": null,
      "updatedAt": "2026-06-23T12:05:00.000Z"
    }
  }
  ```
</ResponseExample>
