Check the public entry point
Facilitator capability declaration:facilitator, supportedKinds, and protocol endpoints, the capability metadata is normal. API resource discovery has been retired; please call the target API directly and use the real-time 402 response as the source of truth.
Facilitator supported capabilities:
kinds, the Facilitator entry point is normal.
Check 402 accepts
Send a non-authenticated request that will not incur charges:
accepts contains the network you want to use. network is a CAIP-2 identifier:
eip155:8453+exact(Base)eip155:8453+upto(Base, post-metering)eip155:1187947933+exact(SKALE)solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp+exact(Solana)
Run the X402Client advanced validation tools
The X402Client repository provides advanced validation tools that can be used to confirm 402 response selection, signature generation, paid retry, and on-chain settlement. They require a funded wallet, RPC, private key, and development dependencies. For normal business integration, it is recommended to prioritize the TypeScript or Python SDK; only run these tools when you need to identify signature or on-chain settlement issues. Repository address: https://github.com/AceDataCloud/X402Client- The 402 response from the first request.
- The selected payment requirement.
- The signed
PAYMENT-SIGNATUREsummary. - The HTTP status and response body after retry.
- The on-chain settlement transaction, or the Facilitator error reason when it fails.
PAYMENT-SIGNATURE values to logging systems or support tickets.
Example public API validation results:
- SKALE
exact, Baseexact, Solanaexact, and Baseuptoall completed the paid retry from HTTP 402 to HTTP 200. - The on-chain transaction for SKALE
exactcan be found in the SKALE explorer, and the settlement amount is0.095215USDC. - The on-chain transaction for Base
exactcan be found in BaseScan, and the settlement amount is95215atomic USDC. - The signed ceiling for Base
uptois95215atomic USDC, but the actual on-chain settlement is3atomic USDC, indicating that post-metering charges based on actual usage. - The Solana path has confirmed paid retry and model output. Public RPC may be rate-limited; when strict on-chain reconciliation is required, please use your own Solana RPC or confirm the transaction signature through platform-side settlement records.
SDK smoke test
Advanced validation tools are used to check signatures and on-chain settlement. On the business side, an SDK smoke test should also be performed to confirm that application code can automatically handle 402 through the payment handler. Only the core snippets are shown below; complete code needs to include the wallet, provider, and imports. TypeScript:exact. SKALE currently only provides exact, which settles at the fixed amount quoted by 402 and will not decrease based on actual token usage. Chat completions are a token-metered scenario; for production integration, it is recommended to switch to Base and pass preferScheme: 'upto', settling based on actual usage.
SDK smoke test program results:
- The TypeScript SDK automatically handles 402, signing, and retries through
createX402PaymentHandler, and ultimately receivesADC_TS_SDK_X402_OK. - The Python SDK completes the same flow through
create_x402_payment_handler, and ultimately receivesADC_PY_SDK_X402_OK. - Both smoke tests use the SKALE payer
0xd0479FA9FD8C678303d477433d24C15e3723CC1C. - The Python SDK response object is a
dict; the content can be read in the example usingres["choices"][0]["message"]["content"].
Order Payment E2E
Order payment uses the platform API ofplatform.acedata.cloud and requires a platform account token. The complete flow is: create a Pending order, trigger 402 with POST /api/v1/orders/{order_id}/pay/, then retry with PAYMENT-SIGNATURE.
Example of small order payment verification results:
The transaction records below are historical real-world test samples under the old policy; the amounts and transaction hashes are retained as-is. New X402 orders no longer have payment method discounts; use the amount in the current 402 response as the basis for signing and payment.
- After creating the order, the order status is
Pending, and the price is1.26. - The first
pay/request returns HTTP 402.acceptscontains Baseexactand Solanaexact, both with an amount of1200000atomic USDC. - Retrying with the Base
PAYMENT-SIGNATUREreturns HTTP 200, the order status changes toFinished, andpay_wayisX402. - After decoding
PAYMENT-RESPONSE, it showssuccess=True,network=base, and provides the same transaction hash. - The transaction status on BaseScan is
1, and the transfer amount is1200000atomic USDC, which is1.2USDC. - The creation price of
1.26was paid during the old X402 payment discount policy, and the final signed and settled amount was1.2USDC.
Authorization: Bearer {platform_token}, or the order does not belong to the current account, it will fail at the platform permission layer; this differs from the account-free X402 API that directly calls x402.acedata.cloud.
Common Errors
Base upto Checklist
upto is currently only available on Base (eip155:8453). SKALE only provides exact. Because an upto signature binds more EVM typed data parameters, during integration you should specifically confirm that the real-time fields in the 402 response are fully consistent with the client signature.
upto returns invalid_upto_evm_payload_invalid_signature, prioritize checking:
extra.chainIdin theeip155:8453+uptoentry returned by the API (should be8453).- The
extra.facilitatorAddressreturned by the API. - The Base
uptofacilitator address returned byhttps://facilitator.acedata.cloud/supported. - The Permit2 domain, spender, USDC contract, and signing account.
- Whether the wallet has already approved Permit2 for Base USDC.
upto signing digest simultaneously binds the Permit2 domain, chain ID, spender, recipient address, facilitator address, and validAfter. If any item is inconsistent, the Facilitator will recover an incorrect signer, resulting in an invalid signature. If all of these are consistent but it still returns 402, check the Permit2 allowance next; when unauthorized, it returns PERMIT2_ALLOWANCE_REQUIRED.
Save Verification Information
A complete verification must save at least:- API path and request body summary;
- selected network and scheme;
maxAmountRequired;- payer wallet address;
- HTTP final status;
- model output or task ID in the response;
- settlement transaction link;
- Gateway trace ID or platform usage record ID.
PAYMENT-SIGNATURE, complete EIP-712 signature, or mnemonic phrase.
Structured Payment Errors
Signed X402 failures will return stablecode, safe interpolation parameters, stage, and retry flag in extensions.acedatacloud.paymentError. Prioritize using this structure for troubleshooting; do not parse the top-level English error, and do not ask users to provide wallet signatures or original on-chain simulation text.
charged: false: verification was explicitly rejected before settlement, and no charge was initiated this time.- No
charged: the result is unknown or has entered the settlement stage; check the order and on-chain status first, and do not directly repeat payment. settlement_pending: do not repeat payment for now; refresh the order first or contact support.- Unrecognized code: handle it as
payment_failed, and retain the public technical code for customer service lookup.

