BSC-only, $U-only, EIP-3009-native. The core integration is three API calls: quote, verify, settle.
Sign up in the console. Get your first project + API key instantly.
https://x402.milady-app.com/console
Your backend calls quote with the project API key.
curl -X POST /v2/quote \
-H 'Authorization: Bearer <KEY>' \
-d '{"resourceId":"...",
"amountAtomic":"1000000000000000000",
"maxTimeoutSeconds":120}'
Payer signs the authorization returned by the quote.
{ "signature": "0x...",
"authorization": {
"from": "0xPayerAddr",
"to": "0xMerchantPayTo",
"value": "1000000000000000000",
"validAfter": "1709856000",
"validBefore": "1709856120",
"nonce": "0x..." }}
Merchant checks validity before delivering the resource.
curl -X POST /verify \
-H 'Authorization: Bearer <KEY>' \
-d '{"x402Version":2,
"paymentRequirements":{...},
"paymentPayload":{...}}'
Submit settlement with idempotency key.
curl -X POST /settle \
-H 'Authorization: Bearer <KEY>' \
-d '{"x402Version":2,
"verificationId":"a1c9e...",
"idempotencyKey":"...",
"paymentRequirements":{...},
"paymentPayload":{...}}'
End-to-end local test of the full payment flow.
npm run smoke:payment -- \ --facilitator-url https://x402... \ --api-key <KEY> \ --payer-private-key 0x... \ --resource-id https://... \ --amount-atomic 1000000000000000000