Polymarket Wallet Routing And Consolidation¶
Bullpen now uses a three-category Polymarket routing model:
- Legacy Safe — your older Safe can still trade. Do not deploy a Deposit Wallet.
- Deposit Wallet flow — your Deposit Wallet is the trading wallet.
- New user — no Polymarket wallet exists yet. Trading creates the Deposit Wallet flow.
The Bullpen server selects the active Polymarket wallet for each owner EOA. If funds or positions are on a non-selected wallet, that is split-brain state. Start every wallet-routing investigation with the read-only audit:
The audit enumerates every owner EOA, asks the server for the selected wallet, checks Safe / Deposit Wallet / signer balances and positions, and reports stranded assets.
If wallet-audit reports stranded assets¶
Preview the consolidation plan first:
Execute only after the plan moves assets to the intended server-selected wallet:
consolidate is dry-run by default and is idempotent. It handles pUSD / USDC.e / USDC balances, on-chain CTF position transfer, and open-order preflight. Off-chain CLOB credit cannot be moved on-chain; follow the web-app withdrawal guidance shown by the command.
If You Need One Owner Or Wallet Kind¶
Audit or consolidate one owner EOA:
bullpen polymarket wallet-audit --owner <OWNER_EOA>
bullpen polymarket consolidate --owner <OWNER_EOA>
The default consolidation target is the server-selected wallet. Only override the wallet kind if support explicitly tells you to force assets to a particular side:
If wallet-audit Finds No Stranded Assets¶
No consolidation is needed. If you still cannot trade, run:
Legacy pUSD Migration¶
bullpen polymarket migrate and the deprecated alias bullpen polymarket migrate-collateral are legacy pUSD-only migration paths. Use them only when you specifically need to move stranded pUSD between an old Safe and Deposit Wallet. For split-brain balances, positions, or mixed assets, use wallet-audit and consolidate.
Preview legacy migration before submitting:
If both wallets hold pUSD, preview both target choices before executing one: