Skip to main content
Withdrawals move USDC out of the user’s on-chain vault to an external destination. Every withdrawal is:
  1. EIP-712 signed by the user against the vault’s WithdrawERC20 typed-data struct.
  2. AML-screened by core-api (Global Ledger sanction + risk check). If flagged, the withdrawal enters MLRO_REVIEW for human compliance review.
  3. Backend co-signed with a second EIP-712 signature. Dual signatures are both required on-chain; neither party can move funds alone.
  4. Submitted on-chain by PredictStreet’s backend submitter (PredictStreet pays gas).
  5. Confirmed when the on-chain tx receipt is observed.

State machine

See State machine detail.

Typical timeline

  • Happy path (no flag): under 10s from request to CONFIRMED in production; target < 60s on mainnet.
  • MLRO review path: SLA 1 business day for decision, per SOP §8.

User-visible balance effects

Partner & MM notes

Market makers running high withdrawal cadence should:
  • Pre-register destination wallets via deposit sources (see Deposit sources) — otherwise the first withdrawal to a new address triggers enhanced due diligence review above the threshold.
  • Poll GET /api/me/withdrawals/{id} or subscribe to the withdrawals.me WebSocket channel for state transitions.

Next

Dual-sig flow

Why two signatures, how the co-sign works.

EIP-712 struct

WithdrawERC20 struct + signing.

State machine

All states + transitions.

Deposit sources

Return-to-source rules and EDD.