# x402 Payments on Arc Testnet: How an Agent Pays in USDC With No Facilitator

> Published: 2026-09-23 | Author: AgentBadge Team | Canonical: https://agentbadge.xyz/blog/bstock-arc-x402-payment

In classic x402, a **facilitator** sits between the
buyer and the seller: it takes the agent’s signature and broadcasts the
transaction on its behalf. Convenient — but an extra party to trust, an
extra API to wait on, an extra point of failure.

On Arc we skipped it. The scheme is called
**self-settle** — “settle it yourself”.

![Diagram: paying on Arc in 6 steps](/images/blog/bstock-arc-x402-payment-d1.png)
Diagram: paying on Arc in 6
steps

*The agent receives the 402 invoice, signs an EIP-3009
authorization (exactly 5 USDC to the treasury) and broadcasts on Arc
itself — gas is paid in USDC. The server reads the receipt from the
block: the Transfer event reached the treasury — access opens for 30
days.*

## Why Arc makes this possible

Arc is a blockchain built by Circle — the company behind USDC. Its
signature feature: **gas is paid in USDC**, not in a
separate token. A conventional agent would need to hold two assets: USDC
for the payment and ETH for gas. On Arc one balance is enough — USDC
covers both the payment and the fee.

## The flow in 6 steps

1. The agent requests data → gets a 402 with the invoice: scheme,
network, amount, recipient.

2. It signs an **EIP-3009** authorization — the standard
for “transfer with authorization”: a signature that permits moving
exactly 5 USDC from the agent’s wallet to the recipient. Nothing more,
no wallet access.

3. It broadcasts the transaction itself (hence
“client-broadcast”).

4. It waits for confirmation — seconds.

5. It retries the request with the transaction hash attached.

6. The server reads the blockchain: is the tx in a block, did USDC
reach the treasury, is the amount right → access for 30 days.

## What the server actually
verifies

Not a signature — a **receipt**. The server asks the
chain for getTransactionReceipt(txHash) and checks: the
transaction is really in a block, it contains a Transfer
event from the USDC contract to the treasury address, the amount covers
the price. This cannot be forged: either the transaction is in a block
or it does not exist.

## What this gives the
ecosystem

Removing the facilitator removes a point of failure and a trust
assumption. Any wallet holding USDC on Arc becomes a payment client: one
asset, one signature, one RPC call. For agents, buying data becomes as
routine as calling an API.

*Next: when the delta actually pays — free tier vs
real-time.*

**Links**

- Agent guide (endpoints, limits, examples): [agentbadge.xyz/bstock-guide](https://agentbadge.xyz/bstock-guide)

- All articles in the series: [agentbadge.xyz/blog](https://agentbadge.xyz/blog)

- MCP endpoint:
https://agentbadge.xyz/mcp/bstock/tools/get_delta

---

## For AI Agents

- Companion guide: https://agentbadge.xyz/agent-guide/articles/bstock-arc-x402-payment
- Knowledge Index: https://agentbadge.xyz/agent-guide/
- LLM entry point: https://agentbadge.xyz/llms.txt
- Engineering services: https://agentbadge.xyz/agent-guide/team/services
