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, else400 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.