Auth Deposit Status Updates

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.

StateDescription
submitted
initialDeposit has been detected on-chain and recorded, awaiting confirmations.
confirmedDeposit has received sufficient on-chain confirmations.
pending_complianceDeposit is being held for a compliance review before funds can be credited.
pending_approvalDeposit exceeds a configured threshold and requires manual approval before it can be settled.
account_match_pendingAccount name matching is in progress pending a final match.
account_match_timeoutAccount 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_settlementDeposit has passed all reviews and is queued to be credited to the customer's account.
completedFunds have been credited to the customer's account. This is a terminal state.
quarantinedDeposit has been quarantined and will not be credited without manual intervention. This is a terminal state.
recovery_quarantineDeposit has been placed into recovery quarantine pending investigation.

Payload Schema

FieldTypeDetails
deposit_idstring (uuid)Unique deposit identifier
participant_codestringCustomer participant code owning the deposit
platform_codestringPlatform the deposit belongs to
amountstring (decimal)Deposit amount
symbolstringAsset symbol (e.g. USDC.ETH)
statestringCurrent deposit state (see table above), always lowercase
connection_idstring (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_typestringCUSTODIAL, NON_CUSTODIAL, or MANUAL. Omitted if not set
source_integrationstringSource integration of the Auth deposit
transaction_hashstringOn-chain transaction hash. Omitted until matched on-chain (absent for pending, submitted, 2fa_pending, archived)
block_numberstringSame omission rule as transaction_hash
destination_addressstringzerohash-owned receiving address
failure_reasonstring or nullA failed state from a non-account-validation cause (e.g. address not whitelisted)
account_labelstringFree-text label set at deposit creation. Omitted if empty
travel_rule_match_resultstringpending, valid, invalid, error, or timeout. Only present once the deposit has gone through account validation
reated_atstring (ISO 8601)Deposit creation timestamp
updated_atstring (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"
}