Verify x402 payment (deprecated)
Nanopayments Gateway
Verify Batched Payment
deprecated
Deprecated legacy endpoint for verifying an x402 payment with organization-specific authentication
POST
Verify x402 payment (deprecated)
Verify a Nanopayments Gateway (Circle Gateway batched) payment without settling it. Routing happens on the same
See the Nanopayments Gateway Overview for a full description of the
400: Schema validation failures (apply to all
Verify validates
POST /v1/verify endpoint as the default x402 path; when paymentRequirements.extra.name === "GatewayWalletBatched", the facilitator forwards the request to Circle’s Gateway API.
Circle recommends calling Settle Batched
Payment directly for production
batched flows rather than the legacy
verify() + settle() two-step. Use
this endpoint mainly for diagnostics.Routing
Identical to Settle Batched Payment:paymentRequirements.extra.name === "GatewayWalletBatched"andextra.version === "1"- The network must be Gateway-enabled (testnets always; mainnets gated by
GATEWAY_MAINNET_ENABLED)
errorReason: "gateway_not_enabled".
Request Body
Same shape as the default verify endpoint, with the batchedextra block:
extra fields.
Response
200: Success
The facilitator spreads Circle’s response and adds Meridian-specific fields. The exact shape is{ ...gatewayResponse, verificationMethod, testnet, authContext }:
isValid(and any other fields) come from Circle.verificationMethod: "batched"confirms the Circle Gateway path was taken.testnetistruewhenpaymentRequirements.networkisarc-testnet,base-sepolia, oroptimism-sepolia. Note: the verify path does not markfluent-testnetas testnet, which differs from the settle path.authContext.authMethodis the literal string"middleware_handled". The verify path’sauthContextincludesorganizationId(resolved by theapiSessionmiddleware).
403: Network not enabled
500: Facilitator-side failure forwarding to Circle
400: Schema validation failures (apply to all /v1/verify requests)
Verify validates paymentPayload and paymentRequirements against PaymentPayloadSchema and PaymentRequirementsSchema before the batched routing check. If either fails, the request never reaches the Circle path:
Error Codes
gateway_not_enabled:paymentRequirements.extramatched batched butisGatewayEnabledForNetwork(network)returnedfalse.batched_verify_error: forwarding to Circle threw before a response could be parsed.invalid_payload:paymentPayloadfailedPaymentPayloadSchema.parse().invalid_payment_requirements:paymentRequirementsfailedPaymentRequirementsSchema.parse().unexpected_verify_error: unhandled exception inside the verify handler (HTTP 500).
Authorizations
Body
application/json