Funding a Polymarket wallet in pmv2: deposit USDC to the signer EOA, never to the maker proxy. Polymarket’s relayer watches the EOA deposit address and mints pUSD into the proxy; USDC sent directly to the proxy bypasses the relayer and strands there as unwrapped native USDC — invisible to the bot. A $10 test deposit is exactly what caught this.
For Agents
Each Polymarket wallet in
pmv2_walletsstores two addresses:
maker_proxy— the Polymarket account. Holds the pUSD collateral. The bot trades from here (SigningClient::connect(signer, addr=proxy)incrates/position_manager/src/signer_arm.rs).signer_eoa— the signer only. Always holds $0.Deposit target = the EOA. Verify a deposit by watching pUSD rise at the proxy, not by “USDC left my wallet.”
The Gotcha
Polymarket’s deposit address is the EOA. Their relayer monitors that EOA, then mints pUSD into the proxy. Sending USDC directly to the proxy bypasses the relayer and strands it there as unwrapped native USDC — the CLOB does not count it as cash and the bot never sees it.
Stranded funds — this cost $10
USDC sent to the
maker_proxysits there as native USDC and does not convert to pUSD. It is not collateral, not tradeable, and not counted by/wallets. Recovering it requires a separate move; it does not auto-wrap.
Sequence That Revealed It
- Sent a $10 test via Polymarket withdraw to the PROXY address.
- It landed as native USDC (
0x3c499c542cEF5E3811e1192ce70d8cc03d5c3359) at the proxy and did NOT convert to pUSD. - Balance at proxy showed 31.34 pUSD + 10.00 native USDC — the $10 was stranded, not spendable.
- Re-deposited via the EOA deposit address → it wrapped to pUSD. Proxy became 41.34 pUSD, native USDC went to 0.
This is why the small test deposit matters: the $10 probe surfaced the wrong-address failure before a large deposit could strand a large amount.
Rules
Funding checklist
- Collateral is pUSD
0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB, 6 decimals. This is the only token the CLOB and/walletscount as cash.- Deposit to the EOA. Never send USDC directly to the proxy.
- Verify success by watching pUSD rise at the proxy — not by “USDC left my wallet.”
- Always do a small test deposit before a large one. The $10 test is exactly what caught this.
Native USDC vs pUSD
| Token | Address | Counts as cash? |
|---|---|---|
| pUSD (collateral) | 0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB | Yes — only token CLOB / /wallets see |
| Native USDC | 0x3c499c542cEF5E3811e1192ce70d8cc03d5c3359 | No — strands at proxy if deposited directly |
Note this native USDC is distinct from USDC.e (0x2791Bca1...) referenced in pmv2-data-api-positions-pnl-classification-2026-06-28.
Polygon RPC for Balance Checks
Public Polygon RPC endpoints that DON'T work
polygon-rpc.com→ 403 (tenant disabled).polygon.llamarpc.com→ empty response.Use
https://polygon-bor-rpc.publicnode.com.
Balance check = eth_call balanceOf selector 0x70a08231 against the pUSD contract, addressed with the proxy address. Watching this value rise confirms a deposit wrapped correctly.
Addresses (public)
Wallet addresses — public, safe to record. NO private keys.
Wallet maker_proxy signer_eoa (deposit here) levi 0x99331696e44A1256013698D4a62Dc66961b4F7860xF9bBBd3BC8E6e6E6C7432eD7A71aA2c223B927Fdgyula 0xDC0ec17C948a7A717e2b52C348785bce3e915f200x02c0D37a5eDa5593187cf08829dB06eCA8b92cbEbandi 0x7D39B0e537f84Ce88feE233eEa1d84eCEAD48ee6—
Related
- pmv2-signer-prearm-proxy-owner-gotcha-2026-06-25 — proxy vs signer EOA relationship; pre-arm verifies
maker_proxy.owner()== signer EOA - pmv2-polymarket-deposit-wallet-live-trading-solution-2026-06-26 — deposit-wallet / Poly1271 flow; maker=signer=funder rules
- pmv2-data-api-positions-pnl-classification-2026-06-28 — pUSD balance contract via
eth_call balanceOf; pUSD vs USDC.e distinction - pmv2-multi-signer-wallet-2026-07-01 —
pmv2_walletsregistry storingmaker_proxy+signer_eoaper wallet - pmv2-measure-before-mitigating-priority-tiers-2026-07-09 — companion learning from the same session
- position_manager — PM overview