ReferenceLive
Axonpay facilitator
Axonpay runs its own x402 v2 facilitator for Solana mainnet and devnet. It verifies each payment, co-signs it as fee payer, submits it and writes a receipt. Buyers need only USDC, and sellers pay nothing for it.
On this page+
Endpoints
| Method and path | What it does |
|---|---|
GET /api/facilitator | Describes the facilitator: protocol, scheme, networks, endpoint URLs, and its live status |
GET /api/facilitator/supported | Supported kinds: x402 v2, scheme exact, each network with its fee payer in extra |
POST /api/facilitator/verify | Checks a payment against the requirements and the policy below. Never moves funds. |
POST /api/facilitator/settle | Co-signs as fee payer, submits, waits for confirmation, returns the signature |
GET /api/facilitator/status | Live per-network readiness, fee payer balance, settles in the last 24 h, and the policy numbers |
The base URL is https://axonpay.fun/api/facilitator. These are the paths HTTPFacilitatorClient from @x402/core/server calls, so pointing a seller at Axonpay is one line:
const facilitator = new HTTPFacilitatorClient({ url: "https://axonpay.fun/api/facilitator" });The full seller setup is in Quickstart: sellers; the seller kit in the dApp writes it for you.
Fee payer
Every payment it settles uses the fee payer 4A4iqdBZjNTPabzmKuW4nd3Nxx8rjhU2QDb19gyGVxNF. That address pays the Solana network fee, so a buyer’s agent wallet needs USDC and nothing else. To bound what one settle can cost it, the facilitator accepts a payment transaction only if:
- the priority fee is at most 25,000 micro-lamports per compute unit,
- the compute unit limit is at most 200,000,
- it needs at most 3 signatures.
It sends with preflight on, so a payment that would fail on chain (for example, the buyer moved its USDC after verify) is rejected by the RPC before it costs the fee payer anything.
Settlement policy
| Rule | Value |
|---|---|
| Who can be paid | A payTo with an Agent Shop listing on that network, or Axonpay’s treasury |
| Minimum payment | 0.001 USDC (worth $0.001) on mainnet; no minimum on devnet |
| Assets | Mainnet payments must be in an asset with a USD price, so the minimum can be checked. USDC always qualifies. |
| Rate limits | 60 payments per payer per minute and 600 per payTo per hour, counted separately for verify and settle |
| Daily cap | 2,000 settles per network over a rolling 24 hours |
| Fee payer reserve | Refuses everything on a network while the fee payer holds less than 0.002 SOL there |
| Protocol | x402 v2, scheme exact, Solana mainnet and devnet |
| Not accepted yet | x402 v1 payloads, and smart-wallet payments (Squads, Swig) |
| Fee | None. Sellers keep the full price. |
The listing rule is the reason the shop comes first: deploy your endpoint, list it, and only then expect payments to settle. Listings are per network, so a devnet listing doesn’t cover mainnet.
Refusal codes
A refusal comes back in invalidReason from /verify or errorReason from /settle, with a readable message next to it.
| Code | Meaning |
|---|---|
| axon_payto_not_listed | The payTo has no Agent Shop listing on this network |
| axon_amount_below_minimum | A mainnet payment worth less than $0.001 |
| axon_asset_unpriced | The asset has no USD price, so the minimum can't be checked. Price the endpoint in USDC. |
| axon_rate_limited | Over the per-payer or per-payTo limit |
| axon_daily_cap_reached | The network has used its 2,000 settles for the rolling 24 hours |
| axon_facilitator_unfunded | The fee payer holds less than 0.002 SOL on this network |
| axon_treasury_not_ready | A payment to Axonpay's treasury on a network where its USDC account doesn't exist yet |
| axon_network_not_supported | Not Solana mainnet or devnet, or not an x402 v2 payload |
| axon_scheme_not_supported | A scheme other than exact |
Payments that pass the policy then go through the standard checks of the exact scheme, whose own codes are listed in Payment scheme.
Receipts and notifications
Every settle that reaches the facilitator, successful or not, is written to the public receipts ledger. Those rows feed Axon Score and Agent GDP. If the payTo has signed in to the dApp, each settled payment also lands in its inbox as “Paid call settled”, with the amount, payer and settle time.
Axonpay's own endpoints
Axonpay sells three endpoints of its own through the same facilitator, paid in USDC on mainnet to the treasury GMvHWU3UthfvEoso1PR2vJ3er6a2e3qbTueMMRgoW3C8 and listed in the shop as “Axonpay”:
| Endpoint | Price | Returns |
|---|---|---|
GET /api/x402/brief | $0.01 | The latest Axon Brief with its data snapshot |
GET /api/x402/xstocks | $0.002 | xStocks on Solana against the listed shares: premiums, moves, liquidity |
GET /api/x402/quote?from&to&amount | $0.001 | A live Jupiter quote; bad input gets HTTP 400 before any payment |
GET /api/x402/demo answers a genuine 402 for 0.001 USDC but never settles: use it to test 402 parsing without paying. The facilitator is also reachable from the hosted MCP server at https://axonpay.fun/api/mcp through its facilitator_info tool.