📚 Reference🚨 Error Codes

🚨 Error Codes Dictionary

Stuck? Read this first. This page lists every error you may encounter, with causes and solutions, strictly mapped to the PayNode SSoT.


Client / SDK Errors

Error CodeSDKCommon CauseSolution
insufficient_fundsJS / PYWallet lacks USDC or ETH for gasFund your wallet via testnet faucet or ensure mainnet balance
token_not_acceptedJS / PYToken address is not in the SDK whitelistVerify you’re using the official USDC address. See Token Whitelist
amount_too_lowJS / PYPayment is below 1000 (0.001 USDC)Protocol minimum is 1000 to prevent dust exploits. Increase payment amount.
rpc_errorJS / PYFailed to connect to any provided RPC nodesCheck your RPC URLs or network connectivity.
internal_errorJS / PYAn unexpected error in the SDKReport to the PayNode team with stack trace.

Server / Merchant Errors (HTTP 402/403)

Error CodeHTTPCommon CauseSolution
missing_receipt402Request lacks X-402-Payload or x-paynode-receiptEnsure client uses latest SDK and provides the required headers.
invalid_receipt403Payload format invalid or malformed(1) Check if tx is still pending (2) Verify RPC node is synced (3) Check network match
duplicate_transaction403Transaction already consumed (replay attack)Each payment is valid for exactly one request. Do not reuse.
transaction_not_found403TxHash returns null receipt from RPCTransaction may not be mined yet. Wait and retry.
transaction_failed402Transaction reverted on-chain (status = 0)Check Basescan for revert reason. Common: insufficient allowance or balance.
wrong_contract403Event was not emitted by official contractVerify the router address in X-402-Required matches the official PayNode Router.
order_mismatch403Order ID in payload does not match requestedEnsure x-paynode-order-id (or X-402-Order-Id) matches the payload’s orderId.

Quick Debugging Checklist

  1. “402 but Agent won’t pay” — Check Agent wallet has ETH (gas) + USDC on the correct network.
  2. “403 invalid_receipt” — Are both sides on the same network? (mainnet vs sepolia).
  3. “token_not_accepted” — Are you using a custom token? Add it to acceptedTokens config.
  4. “duplicate_transaction” — Each payment can only unlock one request. Generate a new payment.
  5. “Nonce too low” — In Python, ensure you’re using a single PayNodeAgentClient instance (thread-safe).

MIT 2026 © Nextra.