Deposit lifecycle
Detection
The service monitors registered accounts via chain indexer webhooks. When a token transfer is detected on a registered account, it goes through validation:- The token and amount are checked against your deposit whitelist (if configured)
- The transfer is deduplicated by chain, transaction hash, account, and token
- If valid, the deposit enters the pipeline with status
processing - If the token isn’t allowed or the amount is outside your configured min/max, the deposit is rejected (not bridged) and a
deposit-rejectedwebhook is sent afterdeposit-received
Bridging
The service submits a bridging intent to the Rhinestone Orchestrator, which routes the funds through the optimal settlement layer (Across, Relay, or others). If the primary layer fails, the service tries alternatives automatically.Settlement
Tokens arrive on the target chain in the registered target token. If a recipient address was set at registration, funds are forwarded there. The service marks the deposit ascompleted and sends a bridge-complete webhook.
Deposit statuses
Retries
Automatic
Transient errors — bridge failures, session activation issues, and internal errors — are retried automatically. Configuration errors like unsupported tokens, insufficient balance, or unregistered accounts require manual resolution.Manual
Force an immediate retry of all failed deposits for an account:Error codes
When a deposit fails, the error code indicates what went wrong and whether the service will retry automatically.Retryable
These are transient failures. The service retries automatically, or you can trigger a manual retry.Non-retryable
These indicate a configuration or input problem. Check account registration, deposit whitelist, and token support.Failed deposits with non-retryable errors will not be retried automatically. Resolve the underlying issue (e.g. update your deposit whitelist or register the account) before triggering a manual retry.
Whitelist and minimum rejections (
BALANCE-4, BALANCE-3, TOKEN-3) are deposits the service deliberately won’t bridge per your configuration. These are surfaced via the deposit-rejected webhook — not bridge-failed — and no bridging is attempted.