Skip to content

EOA basic flow rejected: "maker address not allowed, please use the deposit wallet flow" #53

@luiskaco

Description

@luiskaco

Summary

When placing orders using the basic EOA flow (ClobClient(host, chain_id, key)), the CLOB API rejects the order with:

PolyApiException[status_code=400, error_message={'error': 'maker address not allowed, please use the deposit wallet flow'}]

This happens even with a brand new wallet that has never interacted with Polymarket UI.
The README documents the basic EOA flow as the standard approach, but the CLOB now requires
the Relay/EIP-7702 deposit wallet flow for all order placement.

Reproduction

from py_clob_client_v2 import ClobClient, MarketOrderArgs, OrderType, Side, PartialCreateOrderOptions

client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PRIVATE_KEY)
creds = client.create_or_derive_api_key()
client.set_api_creds(creds)

resp = client.create_and_post_market_order(
    order_args=MarketOrderArgs(
        token_id=TOKEN_ID,
        amount=1.0,
        side=Side.BUY,
        order_type=OrderType.FOK,
    ),
    options=PartialCreateOrderOptions(tick_size="0.01"),
    order_type=OrderType.FOK,
)
# → PolyApiException: 'maker address not allowed, please use the deposit wallet flow'

Environment

  • py-clob-client-v2 version: 1.0.1rc1
  • Python: 3.12
  • Network: Polygon Mainnet (Chain ID 137)
  • Wallet: fresh EOA, never used on polymarket.com

What I've tried

Attempt 1 — Basic EOA flow (as in README)

client = ClobClient(host=host, chain_id=137, key=PRIVATE_KEY)

Result: "maker address not allowed, please use the deposit wallet flow"

Attempt 2 — POLY_1271 + funder (as in examples/orders/gtc_limit_buy_deposit_wallet.py)

client = ClobClient(
    host=host, chain_id=137, key=PRIVATE_KEY,
    creds=creds,
    signature_type=SignatureTypeV2.POLY_1271,
    funder=WALLET_ADDRESS,
)

Result: "the order signer address has to be the address of the API KEY"

The second error suggests that with POLY_1271, the SDK computes a signer address
that doesn't match the API key's registered address (WALLET_ADDRESS).

Questions

  1. Is the Relay/EIP-7702 deposit wallet flow now mandatory for all users on mainnet?
  2. How should a developer set up the deposit wallet programmatically (without polymarket.com UI)?
  3. When using funder, what private key should go in key=? Is it a separate relay key or the same EOA key?
  4. Is there a method in the SDK to initialize and register a new deposit wallet from scratch?

Note: examples/auth/create_api_key_deposit_wallet.py referenced in the example doesn't exist in the repo.

Impact

The basic EOA flow documented in the README is completely non-functional on mainnet,
making it impossible to place orders programmatically without first going through the
Polymarket web UI — which creates an inaccessible relay key.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions