payin.updated
payin.updated is the fiat-deposit successor to the deprecated balance.updated event. During the migration, both names are delivered for the same deposit — payin.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 fiat-deposit handling at payin.updated before then.payin.updated, but the data fields differ between the two — each field below states when it is present. For on-chain crypto deposits, see Crypto deposit updated. See Webhooks overview for delivery, headers, and signature verification.
data fields
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.string
The deposit identifier.
string
Deprecated alias of
id, carrying the same value. Sent for bank-rail deposits only, and only during the transition.string
Your company identifier.
string
Your external reference, if one was provided.
string | null
The state the deposit moved from. For payment-code deposits it carries the previous state, and is
null only on the first event. For bank-rail deposits it is always null: a single deposit still produces several events as it progresses, but each one is reported on its own, so rely on state rather than on the transition.string
The current deposit state.
number
The deposit amount, in minor units.
string
The currency of
amount. For payment-code deposits this is the local currency the payer paid in (BOB, BRL) — the USDC you receive is reported separately in creditedUsdc.string
The payment rail:
pix or bo_qr_code. Payment-code deposits only.number | null
The USDC amount credited to your balance once the deposit settles;
null before then. Payment-code deposits only.string
The settlement rail. Bank-rail deposits only.
string | null
Not set for fiat deposits. Bank-rail deposits only.
string | null
Failure reason, when applicable.
string
ISO 8601 timestamp of the update.