Verify Payment
API Reference
Verify Payment
Verify an EIP-3009 payment authorization
POST
Verify Payment
Endpoint
Verify that an EIP-3009transferWithAuthorization signature is valid and meets expected criteria.
Key principle: Customer authorizes payment to merchant address (not facilitator).
Verification is FREE. Only successful settlements incur the $0.01 fee.
Request Parameters
object
required
Payment payload containing EIP-3009 authorization and signaturepayment.payload.authorization:
from: Customer addressto: MERCHANT address (where customer payment goes)value: Payment amount in token’s smallest unitvalidAfter: Unix timestamp (usually “0”)validBefore: Unix timestamp (expiry)nonce: Unique random bytes32
object
required
Payment requirements from merchant’s 402 response
scheme: “exact”price: “$0.02” (or atomic amount)network: “eip155:84532” (CAIP-2 format)payTo: Merchant addresstoken: USDC address (optional if using price)
Request Examples
Response Examples
Response Fields
boolean
required
Whether the payment authorization is valid
string
required
Human-readable verification result
object
details.verification_id: Use this for settlementdetails.verified_amount: Confirmed payment amountdetails.merchant_address: Merchant receiving paymentdetails.payer_address: Customer making paymentdetails.verified_at: ISO 8601 timestamp
Verification Process
What Gets Verified
1
Signature Validation
EIP-712 signature cryptographically verified using
ecrecover2
Recipient Validation
Critical: Authorization
to address must match merchant address from requirements.payTo✅ authorization.to == requirements.payTo (merchant address)❌ authorization.to == treasury_address (wrong!)3
Amount Validation
Authorization value matches expected amount exactly
4
Token Validation
Token address matches expected token (if specified)
5
Expiry Check
Current time is between
validAfter and validBefore6
Nonce Uniqueness
Nonce hasn’t been used in a previous settlement
Important Notes
Verification is FREE - unlimited verifications at no cost. Only successful settlements incur the $0.01 fee (collected from merchant’s approved balance).
Common Use Cases
USDC Payment on Base Sepolia
USDC Payment on Base Sepolia
USDC Payment on Base Mainnet
USDC Payment on Base Mainnet
Error Prevention
1
Use Merchant Address
Always set
authorization.to = merchant address (not treasury)2
Generate Unique Nonce
3
Set Long Validity
4
Match Amounts Exactly
Ensure
authorization.value matches requirements.price or amountNext Steps
Settle Payment
Execute settlement after verification
Error Handling
Handle verification failures
Architecture
Understand payment flow
Integration Guide
Complete setup guide
Verification complete! Use the
verification_id to settle the payment.