HTTPFacilitatorClient) call them for you, so most integrations never construct these requests by hand. This page is for when you need the exact formats, are debugging, or are calling the API directly.
Base URL
Authentication
Send your API key in thex-api-key header on /verify and /settle. Get the key from your x402Go dashboard. Authorization: Bearer YOUR_X402GO_API_KEY is also accepted.
GET /supported is public, and sending the key there is harmless.
A request with a missing or unknown key returns 401:
payTo is your own payment address. Anything else is rejected with invalid_pay_to.
Choosing a network
Every endpoint also works under a network prefix, for examplePOST /celo/settle or GET /celo-sepolia/supported. The prefix is optional because the network is also in the payment itself. If you use one, it must match the payment’s network, or the request fails with invalid_network.
A network can be written as a name or as a CAIP-2 identifier:
Endpoints
GET /supported
Returns what the facilitator accepts right now. Check it before you configure a token.
Tokens appear here only when x402Go has set a fee for them. A newly added token can take about a minute to show up. v1 entries list only
eip3009 tokens, because permit2 needs v2.
An unknown network returns 400:
POST /verify
Checks that a payment is valid and matches your requirements. Nothing is submitted on-chain. RequestpaymentRequirements must match paymentPayload.accepted. Amounts are in the token’s smallest unit.
Response
200. Check isValid.
Permit2 payments (v2 only)
Permit2 payments (v2 only)
Tokens whose Set
assetTransferMethod is permit2 use a different payload. The payer must have approved Permit2 on the token beforehand, or verification fails with permit2_allowance_required.extra.assetTransferMethod to "permit2" in both accepted and paymentRequirements.x402 v1 format
x402 v1 format
v1 puts
scheme and network on the payload, and requirements use maxAmountRequired instead of amount. v1 supports eip3009 tokens only.POST /settle
Completes the payment on-chain. The request body is the same as/verify. x402Go checks the payment again before it submits anything, because things can change between the two calls.
Response
- One transaction. The payment is collected and split between your payout wallet and the fee in a single transaction. Your first payment on a network also creates your payment address on-chain, so it takes a little longer.
- Timeouts. Settlement can wait up to about a minute for confirmation. Set your HTTP timeout above 60 seconds, for example 90.
- Retries are safe for successful payments. Sending the same payment again returns the original result. A failed attempt can be retried.
- If the response has a
transactionbutsuccessisfalse, the transaction may still land. Look the hash up on Celoscan before you retry or refuse the request.
Status codes
Error reasons
invalidReason (from /verify) and errorReason (from /settle) use the same values.
Each response may also include an
invalidMessage or errorMessage with more detail.