Polymarket errors / Order Processing Errors
400 Bad RequestDon't retry

not enough balance / allowance

Insufficient pUSD balance or token allowance. Make sure the account holds enough pUSD and grant the exchange allowances with Set Up Trading Approvals.

The account either doesn't hold enough pUSD or hasn't granted the exchange contracts an allowance. Both are required before an order can match.

Retry? Don't retry

Sending the same request again returns the same error. Change the request first.

Any authenticated CLOB endpoint can return this.

Handling it in code

The CLOB API returns errors as {"error": "..."}. It also rewrites status codes by message, so branch on the text: anything containing "not found" becomes 404 and anything containing "unauthorized" becomes 401.

r = session.post(url, json=payload, headers=headers)
if r.status_code >= 400:
    msg = r.json().get("error", "")
    if "not enough balance / allowance" in msg:
        raise ValueError(msg)  # fix the request, don't retry

Related errors

For errors Polymarket doesn't document, like "order manager not ready" or 403s from the edge, see the full error guide.

Message and status from Polymarket's error reference, synced 2026-10-04.