How long a Polymarket withdrawal takes, and what it costs
A Polymarket withdrawal is not a bank transfer with a processing queue. It is a bridge: your pUSD is unwrapped to USDC, swapped, and sent to an address on the chain you choose. That is why the answer to "how long does it take" is measured in seconds rather than days, and why, when it does go wrong, it is usually for a reason nobody at Polymarket has to approve: a swap that cannot fill. The useful part is that Polymarket exposes both the time and the cost before you commit, through an endpoint most people never call.

The short answer
- Withdrawals settle in seconds to minutes, not business days. Polymarket's own documented quote example returns an estimated checkout time of 45,000 milliseconds, 45 seconds.
- You can see the exact fee breakdown before withdrawing by requesting a quote.
- There is no fixed withdrawal fee. What you pay is gas, a bridge fee, and slippage on a swap, and the swap is where things break.
- If a withdrawal is stuck or the amount looks wrong, the cause is usually liquidity, and Polymarket documents the fix.
What a withdrawal actually costs
Polymarket's bridge exposes a /quote endpoint that returns the estimated
output and an itemised fee breakdown before you send anything. From the worked
example in its own documentation, on a $10 withdrawal:
| Component | Rate | Cost |
|---|---|---|
| Gas | n/a | $0.02 |
| Bridge fee | 0.3% | $0.03 |
| Fill cost | 0.1% | $0.01 |
| Swap impact | 0.05% | $0.005 |
| Total impact | 0.6% | $0.06 |
| Minimum received | n/a | $9.89 |
Maximum slippage on that quote is set at 0.5%, which is why the guaranteed minimum ($9.89) sits below the estimated output ($9.94).
Read those percentages rather than the dollars. On $10 the total is six cents and irrelevant. The components are percentage-based, so on a $10,000 withdrawal the same 0.6% is $60, with the fixed gas component shrinking to nothing as a share. A Polymarket withdrawal gets proportionally cheaper on the gas and no cheaper at all on the bridge fee and slippage.
These figures are the documentation's example, not a live quote. They show
the structure and the order of magnitude; your own numbers come from calling
/quote for your actual amount, chain and token. Nobody else publishes the
structure at all, which is why it is worth putting here.
Why withdrawals get stuck, in Polymarket's own words
This is the part that answers the complaints. Polymarket documents the mechanism plainly:
"When withdrawing, pUSD is unwrapped to USDC via the Collateral Offramp and swapped through the Uniswap v3 pool for USDC (native). The UI enforces less than 10bp difference in output amount. At times, this pool may be exhausted. If you are having withdraw issues, try breaking your withdraw into smaller amounts or waiting for the pool to be rebalanced."
So a failed or blocked withdrawal is usually not a review, a hold, or a compliance decision. It is a liquidity pool that cannot fill your swap at the tolerance the interface enforces. The interface refuses rather than filling you badly, which is the right behaviour and an unhelpful error message.
Two documented workarounds:
- Break the withdrawal into smaller amounts, or wait for the pool to rebalance.
- Withdraw pUSD directly, which does not require Uniswap liquidity at all, with the caveat Polymarket attaches: "some exchanges no longer accept pUSD deposits directly."
For withdrawals over $50,000, Polymarket's own guidance is to split them or use a third-party bridge to minimise slippage. That is a venue telling you its own path is the wrong one at size, which is worth taking seriously.
Two mistakes the docs warn about
Do not pre-generate withdrawal addresses. Polymarket is explicit: generate them only when you are ready to execute, because each address is configured for a specific destination. A stale address is a live way to send funds somewhere you no longer intend.
Track the bridge address, not your wallet. To follow a withdrawal you poll
the /status endpoint using the bridge address from the withdraw response,
not your Polymarket wallet address and not the destination wallet. Watching the
wrong address is a common reason people believe a transfer has vanished when it
is in flight. Status reports COMPLETED with a transaction hash when it lands.
What this page does not tell you
Frozen accounts, verification holds and locked balances are a different problem from a slow bridge, and Polymarket's bridge documentation says very little about them. Its status page has one note on the subject: if a bridge transaction fails, remains stuck or funds are held due to a compliance check, integrators are told to direct users to the bridge API provider's support. It does not explain why a hold happens, and it gives no policy and no timeline. People do report holds and freezes, such as an account accessed from a shared device or funds held as "available soon", but a support anecdote establishes that somebody had an experience, not what the platform's policy is.
We are not going to reverse-engineer a compliance process from complaints. If your funds are held rather than bridging slowly, that is an account matter and the mechanics on this page do not apply to it.
How this compares
Kalshi withdrawals are the opposite architecture: a regulated broker moving dollars through banking rails, with the delays and the review steps that implies. Polymarket moves a stablecoin through a swap. The Kalshi failure mode is a process; the Polymarket failure mode is a liquidity pool. Neither is strictly faster in every case. When a bridge transfer is stuck or held, Polymarket's docs send you to its bridge provider's support rather than to Polymarket itself.