Skip to main content
POST
/
v1
/
x402
/
verify
Verify payment payload
curl --request POST \
  --url https://api.swiftpay.finance/v1/x402/verify \
  --header 'Content-Type: application/json' \
  --data '
{
  "x402Version": 2,
  "paymentPayload": "eyJ4NDAyVmVyc2lvbiI6Miwi...",
  "paymentRequirements": {
    "scheme": "exact",
    "network": "eip155:8453",
    "amount": "100000",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "payTo": "0xForwarderAddress...",
    "maxTimeoutSeconds": 300,
    "extra": {
      "name": "USDC",
      "version": "2",
      "merchantId": "m1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "endpointId": "e1b2c3d4-e5f6-7890-abcd-ef1234567890"
    }
  }
}
'
{
  "isValid": true,
  "payer": "0xpayeraddress..."
}

Documentation Index

Fetch the complete documentation index at: https://docs.swiftpay.finance/llms.txt

Use this file to discover all available pages before exploring further.

Body

application/json
x402Version
integer
required
Example:

1

paymentPayload
string
required

Base64-encoded EIP-3009 payment payload from the X-PAYMENT header

Example:

"eyJ4NDAyVmVyc2lvbiI6MSwi..."

paymentRequirements
object
required

One accepted payment option, returned inside a 402 response body and passed back unchanged when calling settle.

Response

Verification result (always 200 — check isValid field)

isValid
boolean
invalidReason
string

Machine-readable error code when isValid=false

Example:

"payment_expired"

payer
string

Recovered payer wallet address when isValid=true

Example:

"0xpayeraddress..."