Skip to main content
This is the go/no-go list for the x402 and MPP examples. For what your wallet needs on each side — funds, gas, allowances, and a receive address — start with Prerequisites. Local stub runs need none of this — no funds move. Before you switch the stub off and settle for real, confirm:
  • One environment, end to end. The payer and the merchant point at the same Atum environment — matching gateway/facilitator URLs, and the stub flag off on both sides. See Choose an environment.
  • Current example and package versions. You pulled the latest examples repo and reinstalled (git pull && npm install).
  • The right wallet. You’re using your current testnet wallet, not a stale credential. If you exported PRIVATE_KEY in your shell earlier, run unset PRIVATE_KEY so the value in .env is the one that’s used.
  • Funds in place (payer). The payer wallet holds enough source token, enough native coin for the one-time Permit2 approve(), and an active Permit2 allowance on the source token.
  • A valid receive address (merchant). DEST_ADDRESS is a real address you control on the destination chain.
  • A short, intentional quote deadline. Keep the quote window tight so a stalled quote round fails fast instead of hanging.
  • Record the payment identifier before troubleshooting. Capture the settlement transaction / payment ID (x402) or the Payment-Receipt (MPP) as soon as you have it.
  • Verify before retrying. After a timeout or ambiguous result, confirm settlement on-chain or via the gateway before resending — a fresh retry is a second payment. See Troubleshooting.