Engineering Blog
Real bugs we hit shipping x402 in production — problem, root cause, fix. If you are implementing x402 right now, these are the errors you will meet.
x402 payments fail on Base mainnet but work on Sepolia? Check your EIP-712 domain name
Our first mainnet payment was rejected with a cryptic invalid_payload while the exact same code settled fine on Base Sepolia. The root cause: USDC's EIP-712 domain name differs per network — "USD Coin" on Base mainnet, "USDC" on Base Sepolia.
Read more →Authenticating to the Coinbase CDP facilitator from PHP: Ed25519 JWTs without gymnastics
CDP API keys come in two flavors — Ed25519 and ECDSA — and the official docs only show TypeScript/Python. Here is a complete PHP implementation, including the sodium pitfalls (32-byte seed vs 64-byte secret key) that produce "Undefined constant" errors on shared hosting.
Read more →Settled x402 payments but not listed in the Bazaar? Your client is not echoing extensions
Fourteen settled mainnet payments, valid bazaar metadata in every 402, and the Bazaar discovery endpoint still returned total: 0. The missing piece was one line in the buyer: echoing the 402's extensions back in the payment payload.
Read more →