Proxy-seller

Payments

Updated:

Every paid endpoint uses the same two-request cycle of the x402 protocol: the first request returns the price, the second one pays it.

The flow

  1. Request a quote

    POST /orders (or /renew, /traffic, /topup) without payment headers

    Returns 402 Payment Required: the quote in the body and the payment requirements in the PAYMENT-REQUIRED header. Nothing is reserved or charged.

  2. Sign the authorization

    EIP-3009 transferWithAuthorization

    Sign a USDC transfer of exactly amount to payTo with your wallet. A signature alone does not move funds.

  3. Repeat the request with the signature

    Same method, path and body plus PAYMENT-SIGNATURE

    Returns 202 Accepted with the operation id, its status and, for new orders and top-ups, an access token. The PAYMENT-RESPONSE header carries the transaction.

  4. Poll the result

    GET /orders/{id} or GET /topup/{id}

    The payment is confirmed on the network first, then the operation is fulfilled. Poll every next_poll_after_seconds until status_is_terminal is true.

Before you start

  • Wallet with USDC on Base — the payer. No ETH for gas is needed.

  • x402 client — any client with x402 version 2, the exact scheme and EIP-3009, or your own code (Payment headers).

  • Current terms — the versions from catalog.terms go into accept_terms of a new order.

Common to all paid endpoints

Base URL

https://proxy-seller.com/api/x402/v1

Payment protocol

x402 version 2, scheme exact, transfer method EIP-3009, flow upfront: you pay before the order is fulfilled. The version 1 header X-PAYMENT is rejected.

Quote

A quote lives 15 minutes (quote_expires_at). The paid request must repeat the body of the unpaid one; only idempotency_key, callback_url and auto_renew may differ.

Error model

Real HTTP status codes and a JSON body with retry_action that tells what to do next (Errors).

Endpoint

What you pay for

Who can pay

POST /orders

A new order

Any wallet; it becomes the owner of the order

POST /orders/{id}/items/{line_id}/renew

Renewal of an order line

Only the wallet that paid the order

POST /orders/{id}/traffic

Residential traffic

Only the wallet that paid the order

POST /topup

Balance top-up for auto-renewal

Any wallet; the balance of this wallet is credited

How long it takes

After the 202 response the payment is confirmed on the Base network, then the order is fulfilled. Proxies are usually ready within a few minutes. Mobile proxies are issued manually by our staff: allow up to 3 hours.

A paid operation is never lost. If a step fails, the operation waits for our staff, and the money is not taken twice.

After you've paid

FAQ

No. The signed authorization is submitted to the network for you.

Request a new quote. If you already sent a signed request with an expired quote, the response tells you what to do: 402 quote_expired comes with a new quote right in the response; 409 payment_not_settleable means your previous authorization can still be executed, so wait until authorization_expires_at before signing a new one.

No. One authorization can be executed on the network only once, and repeating the same PAYMENT-SIGNATURE returns the result of the first attempt. Do not sign a new authorization while the previous one can still be executed: error responses say until when (authorization_expires_at).

Repeat the same request with the same PAYMENT-SIGNATURE. It is safe: you get the result of the first attempt.

Not through the API. Contact [email protected] with the order id.

If one is available, its address is published in the catalog as protocol.sandbox_url.

On this page