Subscribe to this event by setting the x-zh-hook-payload-type header value to auth_deposit.status_changed.
An auth_deposit.status_changed webhook is emitted every time a deposit submitted through the Auth product transitions states. These webhooks emit for all of the standard events of Deposit Status Updates, but in the context of Auth, they indicate the first point where zerohash can detect deposits given that the transactions originate from Auth Providers such as Robinhood.
Auth Deposit States
The state field communicates the current stage of the deposit in zerohash's processing pipeline. Values are returned in lowercase.
| State | Description |
|---|---|
submitted | |
initial | Deposit has been detected on-chain and recorded, awaiting confirmations. |
confirmed | Deposit has received sufficient on-chain confirmations. |
pending_compliance | Deposit is being held for a compliance review before funds can be credited. |
pending_approval | Deposit exceeds a configured threshold and requires manual approval before it can be settled. |
account_match_pending | Account name matching is in progress pending a final match. |
account_match_timeout | Account name matching for travel rule has timed out as deposit could not be found for the transaction ID. Funds will be made available in /recovery_quarantine subledger. |
pending_settlement | Deposit has passed all reviews and is queued to be credited to the customer's account. |
completed | Funds have been credited to the customer's account. This is a terminal state. |
quarantined | Deposit has been quarantined and will not be credited without manual intervention. This is a terminal state. |
recovery_quarantine | Deposit has been placed into recovery quarantine pending investigation. |
Payload Schema
| Field | Type | Details |
|---|---|---|
deposit_id | string (uuid) | Unique deposit identifier |
participant_code | string | Customer participant code owning the deposit |
platform_code | string | Platform the deposit belongs to |
amount | string (decimal) | Deposit amount |
symbol | string | Asset symbol (e.g. USDC.ETH) |
state | string | Current deposit state (see table above), always lowercase |
connection_id | string (uuid) | Auth connection tied to the deposit. Renders as an all-zero UUID (00000000-...), not null or omitted, when the deposit has no connection (e.g. manual/legacy deposits) |
source_type | string | CUSTODIAL, NON_CUSTODIAL, or MANUAL. Omitted if not set |
source_integration | string | Source integration of the Auth deposit |
transaction_hash | string | On-chain transaction hash. Omitted until matched on-chain (absent for pending, submitted, 2fa_pending, archived) |
block_number | string | Same omission rule as transaction_hash |
destination_address | string | zerohash-owned receiving address |
failure_reason | string or null | A failed state from a non-account-validation cause (e.g. address not whitelisted) |
account_label | string | Free-text label set at deposit creation. Omitted if empty |
travel_rule_match_result | string | pending, valid, invalid, error, or timeout. Only present once the deposit has gone through account validation |
reated_at | string (ISO 8601) | Deposit creation timestamp |
updated_at | string (ISO 8601) | Timestamp of this state change |
Example Payload
{
"deposit_id": "f6a1c2c4-2a9e-4a01-9b0f-7b9e2c5d8e11",
"participant_code": "PART456",
"platform_code": "PLAT123",
"amount": "100.00",
"symbol": "USDC.ETH",
"state": "confirmed",
"connection_id": "3f29a1e0-1c44-4b3a-9d2e-8a7c6b5f4e10",
"source_type": "CUSTODIAL",
"source_integration": "cbase",
"transaction_hash": "0xabcdef1234567890...",
"block_number": "18500000",
"destination_address": "0xZHwallet...",
"failure_reason": null,
"account_label": "primary",
"created_at": "2026-05-05T00:00:00Z",
"updated_at": "2026-05-05T00:00:01Z"
}Account-matching states include travel_rule_match_result in addition to the fields above:
{
"deposit_id": "f6a1c2c4-2a9e-4a01-9b0f-7b9e2c5d8e11",
"participant_code": "PART456",
"platform_code": "PLAT123",
"amount": "100.00",
"symbol": "USDC.ETH",
"state": "account_match_failed",
"connection_id": "3f29a1e0-1c44-4b3a-9d2e-8a7c6b5f4e10",
"source_type": "CUSTODIAL",
"source_integration": "cbase",
"transaction_hash": "0xabcdef1234567890...",
"block_number": "18500000",
"destination_address": "0xZHwallet...",
"travel_rule_match_result": "invalid",
"created_at": "2026-05-05T00:00:00Z",
"updated_at": "2026-05-05T00:00:05Z"
}