Skip to main content
POST

Authorizations

Authorization
string
header
required

Bearer token authentication with a Circle API key. Use this for production settlement. Settling with an API key also binds the payTo to your Circle account, which ends the keyless trial allowance.

Body

application/json
x402Version
enum<integer>
required

x402 protocol version. Facilitator Service supports version 2.

Available options:
2
paymentPayload
object
required

x402 v2 payment payload. Includes the payment terms the buyer accepted and the signed authorization for the USDC transfer: an EIP-3009 authorization for exact, or a Permit2 authorization for upto.

For upto, the payload sent to /settle must match the payload sent to /verify. The seller can only vary paymentRequirements.amount between calls.

paymentRequirements
object
required

Payment terms the seller advertises for an x402 resource. Facilitator Service validates that the buyer's authorization matches these requirements.

Response

Verification result

isValid
boolean
required

Whether the payload passed every check before submission.

Example:

true

payer
string
required

Buyer address recovered from the signed authorization. Always rendered, including on invalid results, so callers can correlate.

Example:

"0x9aE2..."

invalidReason
enum<string>

Reason code. Present when isValid is false.

Available options:
invalid_x402_version,
unsupported_scheme,
invalid_network,
invalid_payment_requirements,
invalid_payload,
invalid_exact_evm_payload_recipient_mismatch,
invalid_exact_evm_payload_authorization_value_mismatch,
invalid_exact_evm_payload_authorization_valid_after,
invalid_exact_evm_payload_authorization_valid_before,
invalid_exact_evm_payload_signature,
invalid_transaction_state,
insufficient_funds,
invalid_permit2_spender,
invalid_permit2_recipient_mismatch,
permit2_token_mismatch,
permit2_amount_mismatch,
permit2_not_yet_valid,
permit2_deadline_expired,
upto_facilitator_mismatch,
invalid_permit2_signature,
permit2_invalid_nonce,
invalid_eip2612_extension_format,
eip2612_from_mismatch,
eip2612_asset_mismatch,
eip2612_spender_not_permit2,
eip2612_deadline_expired,
permit2_2612_amount_mismatch,
permit2_simulation_failed
Example:

"invalid_exact_evm_payload_signature"