Deposits & Withdrawals
Fund a Parti account by sending USDG to your personal deposit address on Robinhood Chain. USDG on the matching Robinhood Chain (mainnet for prod, testnet for staging) is credited to your Oracle engine balance, usually under a minute.
Your identity — and the address you fund — is your EVM 0x address. All
deposit/withdraw APIs key off that address, passed lowercase.
| Mainnet | Testnet (staging) | |
|---|---|---|
| EVM chain id | 4663 |
46630 |
| Deposit host | https://oracle-deposit.parti.com |
https://deposit-staging.parti-oracle.pbcapps.dev |
| USDG token (6 dp) | 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 |
0x29ECEE9eA19C638EB5b69f4e5f2C77B794982cd0 |
Orders consume your engine balance (the off-chain credit ledger), not on-chain USDG directly. You deposit USDG to a per-account forwarder and the deposit watcher credits your engine balance.
Get your deposit address
The address is a CREATE2 DepositForwarder derived purely from your 0x
address by the vault's DepositForwarderFactory. Pass your address
lowercase — the route runs an EIP-55 checksum on the input, so a mixed-case
address with a bad checksum returns derivation_failed:
# Prod
curl https://oracle-deposit.parti.com/v1/deposit/robinhood-address/<your-lowercase-0x-address>
# Staging
curl https://deposit-staging.parti-oracle.pbcapps.dev/v1/deposit/robinhood-address/<your-lowercase-0x-address>
Response:
{
"address": "0x…", // your deposit forwarder — send USDG here
"chain": "robinhood",
"chain_id": 4663, // 46630 on staging
"token": "USDG",
"token_address": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
"min_usdg_micro": 1000000
}
The address is deterministic — the same 0x input always returns the
same forwarder.
Note: the older
/v1/deposit/bridge-address/<pubkey>route is the retired Solana/Fogo path — it returnsinvalid_pubkeyfor a0xaddress. Userobinhood-address.
Send USDG on Robinhood Chain
Send USDG on Robinhood Chain (the matching network — mainnet for prod,
testnet for staging) to the returned address.
| Parameter | Value |
|---|---|
| Token | USDG on Robinhood Chain only |
| Minimum | 1 USDG (1000000 micro) |
| Time | usually under a minute |
Only USDG on that chain credits; other tokens or other networks are lost. The watcher deploys-and-sweeps the forwarder and credits your engine balance.
Check balance
Balance is served by the gateway, keyed to your lowercase 0x address:
GET {GATEWAY_URL}/v1/balance/<your-lowercase-0x-address>
{
"data": {
"available_usdc": 10000000,
"locked_usdc": 0,
"gas_debt_usdc": 0
}
}
All values are in micro-dollars (6 decimals): 1000000 = $1.00. The settled
token is USDG; the usdc-suffixed keys are the engine's chain-agnostic ledger
field names and are unchanged across the cutover.
Withdraw
Withdraw any time via POST /v1/withdraw-signed with chain:'robinhood' and a
signed EIP-712 Withdraw{user,recipient,amount,nonce,deadline}:
POST {GATEWAY_URL}/v1/withdraw-signed
{
"user": "<lowercase 0x address>",
"recipient": "<destination lowercase 0x address>",
"amount": "10000000", // USDG micro, integer string
"nonce": 0,
"deadline": 1799000000, // unix seconds; vault reverts past it
"signature": "<65-byte EIP-712 Withdraw signature>",
"chain": "robinhood"
}
⚠️ Withdraws use the SEQUENTIAL on-chain vault nonce — NOT the order timestamp nonce. Orders carry a monotonic timestamp nonce checked off-chain. A withdraw is verified on-chain by
PartiVault, which requiresnonce == vault.nonces(user)— a per-user counter that starts at 0 and increments by 1 per confirmed withdraw. Signing a timestamp nonce for a withdraw reverts on-chain withBadNonceand the funds never move. Readvault.nonces(user)over RPC first (mainnethttps://rpc.mainnet.chain.robinhood.com, testnethttps://rpc.testnet.chain.robinhood.com), sign theWithdrawstruct with that nonce (0for a first withdraw), then submit.
Signature
Sign the EIP-712 Withdraw{user,recipient,amount,nonce,deadline} struct under
the PartiVault domain. amount is in USDG micro (6 dp). The vault verifies
the signature recovers to the user's 0x address and that deadline has not
passed.
Limits
Minimums:
- Deposit: 1 USDG (1000000 micro)
- Max withdrawal: 1,000,000 USDG
Per-tx caps (tier-based):
| Tier | Max per tx | Upgrade |
|---|---|---|
| 0 — Retail | 10,000 USDG | Default |
| 1 — LP | 1,000,000 USDG | Contact team |
| 2 — Institutional | 10,000,000 USDG | Contact team |
Daily deposit cap: 100,000 USDG aggregate (resets 00:00 UTC)
FAQ
What token do I deposit?
USDG on Robinhood Chain — the matching network for your environment (mainnet
4663 for prod, testnet 46630 for staging). Other tokens or networks don't
credit.
Is the deposit address custodial?
It's a CREATE2 DepositForwarder derived from your 0x address. The watcher
deploys-and-sweeps it into the vault and credits your engine balance.
derivation_failed on the deposit route?
You passed a mixed-case 0x address with a bad EIP-55 checksum. Pass it
lowercase. (invalid_address means it wasn't a 0x + 40-hex string.)
Fees? - Direct USDG send: just Robinhood Chain gas. - Withdrawal: the operator executes on-chain.