received_amount — the stablecoin amount detected at the Smart Deposit Address, in the input token’s smallest unit.
Shared Fields
Tracking a Deposit Across Events
Usedeposit_id to tie a webhook to a deposit — it is minted when the deposit is first detected and repeated on every subsequent event for that deposit. Do not use the top-level id for this: id is unique per event (its job is deduplicating redeliveries), so the pending and confirmed events for one deposit have different id values but the same deposit_id.
A deposit emits one sequence: pending, then confirmed or failed, then — after confirmed only — finalized. Every sequence begins with pending: a confirmed, failed, or finalized event is only ever emitted for a deposit_id whose pending event was already emitted. As with any webhook system, deliveries can still reach your endpoint out of order — order by event semantics, not arrival time.
If a deposit fails with
remediation: "retained", the funds stay in the Smart Deposit Address and may be retried automatically. A retry is a new sequence with a new deposit_id, starting again from pending.smart_deposit.deposit.pending
Paxos Labs has received the stablecoins and initiated the process to deposit them into the vault.
Event-Specific Fields
None —pending carries only the shared fields above. It is emitted as soon as the stablecoin balance is detected, before any forward transaction exists, so there are no transaction hashes to report yet.
smart_deposit.deposit.confirmed
Stablecoins have been successfully deposited into the vault and shares have been minted to the destination address.
Event-Specific Fields
smart_deposit.deposit.finalized
Deposit finalized.
Event-Specific Fields
Same assmart_deposit.deposit.confirmed. Sent after the forward transaction reaches chain-specific finality.
smart_deposit.deposit.failed
Unable to deposit for some reason. Customer notified with reason and remediation actions taken.
Event-Specific Fields
Remediation Values
Branch onremediation rather than parsing error, which is free-form prose intended for humans and may change at any time.
remediation is only present on smart_deposit.deposit.failed. It is never sent on pending, confirmed, or finalized events, where there is nothing to remediate.
remediation: "refunded" and remediation: "recovered" always carry a non-null forward_tx_hash, because the remediation itself is an on-chain action. remediation: "retained" always carries forward_tx_hash: null.