If your Polymarket Up/Down bot started throwing order_version_mismatch or not enough balance / allowance (with funds in your wallet) in late April 2026, you hit the V2 SDK upgrade. Here are both fixes, plus a minimal PTB → signal → order quickstart.

Fix 1 — order_version_mismatch: serialize with order_to_json_v2

The order wire body changed. The old hand-built JSON ({"order": ..., "owner": ..., "orderType": ...}) is rejected. Serialize the signed order with order_to_json_v2 from py_clob_client_v2 — the V2 wire adds timestamp/metadata/builder, postOnly/deferExec, and an integer salt.

from py_clob_client_v2.order_utils.model.order_data_v2 import order_to_json_v2

signed = client.create_order(OrderArgs(price=p, size=s, side="BUY", token_id=tid))