Skip to content

LP integration — Deposit flow

USDG is deposited on Robinhood Chain (an EVM chain, chain id 4663) to a per-user, deterministically-derived deposit forwarder address. Send USDG on Robinhood Chain to it and Parti detects, confirms, and credits your account balance automatically — no claim step.

Robinhood Chain-only deposits

Parti deposits are Robinhood Chain-native — send USDG on Robinhood Chain (chain id 4663) to your derived address. Other tokens or networks will not credit.

Get your deposit address — GET /v1/deposit/robinhood-address/{user_address}

  • {user_address} is your EVM address (0x + 40 hex chars, else 400 invalid_address). It is normalized to lowercase — the checksummed and lowercase forms derive the identical deposit address.
  • Unauthenticated and public — the address is deterministic per user, so anyone can derive/query anyone's. No cookie needed. Per-IP rate limited to 30 / 60s.
  • Idempotent. Repeated calls return the same address.
  • The address is valid to receive USDG before any contract exists at it — you can send funds immediately after the first call.

Response:

{
  "address": "0x… — send USDG here",
  "chain": "robinhood",
  "chain_id": 4663,
  "token": "USDG",
  "token_address": "0x… — the USDG token contract on Robinhood Chain",
  "min_usdg_micro": 1000000,
  "max_usdc_per_tx_micro": 100000000,
  "instructions": "Send USDG on Robinhood Chain to this address. Other tokens or networks will not credit."
}

chain_id may be absent in non-production environments. Errors: 400 invalid_address, 429 rate_limited, 500 derivation_failed, and 503 registration_failed — the last means the address could not be registered for deposit watching; retry rather than sending funds to an address you obtained elsewhere.

How funds are detected + credited

Parti watches the registered deposit address for incoming USDG transfers on Robinhood Chain, confirms, and credits your Parti balance. It records progress at each transition.

Poll progress — GET /v1/deposit/progress/{user_address}

{user_address} is the same EVM 0x address. Response is wrapped in data:

{ "data": { "stage": "confirming", "amount_micro": 25000000, "tx_signature": "…", "updated_at": 1750700123, "error": null } }

DepositProgress fields: stage (required), amount_micro?, tx_signature?, updated_at? (unix seconds), error?.

Stage values (DepositStage):

Stage Meaning
idle no deposit seen yet (default when no row exists)
detected on-chain transfer observed
bridging bridge hop in progress (legacy stage; not seen on a native Robinhood Chain deposit)
confirming awaiting confirmation
credited balance credited — funds spendable
error failed; see error string

Poll until stage === 'credited', then confirm via GET /v1/balance/{user}.

Retired endpoint: bridge-address

The Solana-era GET /v1/deposit/bridge-address/{pubkey} endpoint is retired — it expects a base58 pubkey and returns 400 invalid_pubkey for every EVM 0x address. Use GET /v1/deposit/robinhood-address/{user_address} instead.