Skip to main content

Event Catalog

All events share the envelope {id, type, created, data}. Per-account transaction.* events include accountId, your externalId, vaultId, the on-chain digest, and the intentId when the transaction was built through the API. Fields not listed as guaranteed may be absent — parse leniently.

Transaction events (per account)

transaction.deposit.confirmed

Deposit transaction observed on-chain. Funds are in the current settlement cycle.

{
"id": "evt_01h…", "type": "transaction.deposit.confirmed", "created": "…",
"data": {
"intentId": "txi_01h…", "accountId": "acct_7f3a…", "externalId": "user-8492",
"vaultId": "rcusdp-sui", "recordId": "42",
"amount": "100.000000", "digest": "8vJk…"
}
}

Keep recordId — it is what tx/cancel-deposit takes on the Sui rail. On XAUa subscriptions, amount is the net (post-fee) USDC and a fee field reports the subscription fee withheld. A settlementCycle number is included on rails that expose cycle numbering.

Suggested UI: "Processing — settles T+1."

transaction.deposit.settled

Shares credited.

{
"type": "transaction.deposit.settled",
"data": {
"intentId": "txi_01h…", "accountId": "acct_7f3a…", "externalId": "user-8492",
"vaultId": "rcusdp-sui", "recordId": "42",
"shares": "97.310000", "digest": "9mQr…"
}
}

Suggested UI: "Your deposit is now earning." Omnibus: this is your booking trigger — allocate shares in your sub-ledger. For the cycle's share price, read GET /v1/vaults/:vaultId/price at settlement time.

transaction.deposit.cancelled

Cancel transaction confirmed or cycle rollback (reason: "cancelled" | "rollback"). Data includes the returned amount and, on a user cancel, the fee withheld. On rollback the amount is back in the wallet (direct rail) or claimable (legacy gateway rail). Omnibus: reverse the pending allocation in your ledger.

transaction.redeem.confirmed / transaction.redeem.settled

Redemption queued / proceeds final. confirmed data includes the locked shares (plus estimatedProceeds on rcusdp-sui). settled data carries one of two shapes depending on how the vault settles:

  • amount (USDC) — the settlement paid the wallet directly; nothing further to do. This is how rcusdp-sui settles today.
  • claimable (USDC) — the vault allocates a claimable balance; call tx/claim to receive it.

When several redemptions from the same wallet settle in one cycle (typical for omnibus accounts), the chain pays one aggregated transfer per wallet: each intent still gets its own settled event, with amount split proportionally by locked shares and walletTotal carrying the full delivered figure. Reconcile your ledger against walletTotal / the on-chain transfer — that is the authoritative number; the per-intent splits are exact under one cycle's single price and fee.

Suggested UI on settled: with amount — "Withdrawal complete"; with claimable — "Withdrawal ready" with a claim action.

transaction.claim.confirmed

USDC paid to the account's own wallet. Data: amount, digest.

Vault events (platform-wide)

vault.cycle.closed / vault.cycle.settled / vault.cycle.rolled_back

A settlement cycle changed state. Data: vaultId, cycleKind ("deposit" or "redeem" — deposit and redeem cycles progress independently), a settlementCycle number where the rail exposes one, and cycle totals: totalAmount/mintedShares on deposit cycles, totalShares/netProceeds (and any fee) on redeem cycles.

{
"type": "vault.cycle.settled",
"data": {
"vaultId": "rcusdp-sui",
"cycleKind": "deposit",
"totalAmount": "12500.000000",
"mintedShares": "12180.450000"
}
}

Per-account transaction.*.settled events accompany vault.cycle.settled for every affected account — most apps only need the per-account events; the cycle events are useful for ops dashboards and omnibus reconciliation.

vault.price.updated

NAV changed. Data: vaultId plus the raw on-chain price-sync fields. Treat it as a trigger: read the normalized price/apy from GET /v1/vaults/:vaultId/price.

vault.paused / vault.unpaused

Disable/enable deposit & redeem actions in your UI. Claims and cancel-deposits keep working while paused.

Account & treasury events

TypeFires whenKey data fields
account.createdaccount registeredaccountId, externalId, type
treasury.allowlist.activated24 h timelock elapsedid, accountId, address
treasury.withdrawal.pending_approvalwithdrawal awaits a second keyid, accountId, amount, address
treasury.withdrawal.approvedapproved; unsigned tx availableid, accountId, amount, address
treasury.withdrawal.confirmedreserved for the confirmed-withdrawal lifecycle (subscribable, not yet emitted)

Wildcards

Subscriptions accept exact event names, namespace wildcards (transaction.*, account.*, treasury.*, vault.*), or * for everything. New event types may be added under existing prefixes at any time — handle unknown types gracefully.