Skip to main content
Make your API charge AI agents per request in USDC over x402: your endpoint returns 402 Payment Required when a request is unpaid, and serves the resource when a valid payment is attached. There are no API keys to issue, no invoices to send, and no accounts to manage. Follow these steps to take an Express API from zero to paid and ready to list in the Agent Marketplace.
The accept-agent-payments Circle Skill scaffolds these steps directly in your codebase. Install it in your AI IDE with circle skill install --tool claude-code --name accept-agent-payments (or see the other install options on the skills page), then ask your agent to add agent payments to your service.

Prerequisites

Before you begin, ensure that you’ve:
  • Obtained an EVM wallet address to receive USDC. Buyers pay to this address, and only you control it. If you don’t have one, create an agent wallet with Circle CLI.
  • Built an HTTP API that you can add payment middleware to.
  • Installed Node.js v22.6+.
  • Chosen a price per request (for example, $0.01; sub-cent prices work too).

Steps

Step 1. Install the SDK

Step 2. Return 402 and settle payments

Add the Gateway middleware and put a price on a route. Set sellerAddress to your payout wallet address; buyers see it as the payTo address in the price list your endpoint returns:
server.ts
gateway.require("$0.01") returns 402 Payment Required with the payment options for unpaid requests, and settles valid payments with Gateway before your handler runs. Full walkthrough: Nanopayments seller quickstart.

Step 3. Accept vanilla x402 too

The preceding middleware accepts Gateway nanopayments: gasless, sub-cent payments settled offchain in batches. To also accept onchain x402 payments and reach buyers on non-Circle x402 stacks, run an x402ResourceServer with an x402 facilitator alongside the Gateway scheme:
GatewayEvmScheme extends the standard onchain scheme, so your 402 responses offer both rails in one accepts array and buyers pick whichever they have funded. Details: Add nanopayments to an x402 seller.
Supporting both rails maximizes the buyers who can transact with you, the same way a merchant accepts more than one card network. For the same reason, accept payment on more than one blockchain (for example, Base and Polygon PoS): a buyer can only pay from a blockchain where you accept it.

Step 4. Test the handshake

Send an unpaid request and confirm the 402:
You should see 402 Payment Required with a PAYMENT-REQUIRED header that carries the payment options. Then pay it end to end with the buyer quickstart client or the Circle CLI pay for a service flow.

Step 5. Check earnings and withdraw

Gateway payments accumulate in your Gateway balance and batch-settle onchain. Check and withdraw with GatewayClient:

See also