Skip to main content

RouterClientConfigError: chain is required

Pass a supported chain name when you construct RouterClient.
new RouterClient({
  chain: "base",
  signer
});

Provide either signer, or privateKey

The client needs one signing path. Provide either signer or privateKey. Your signer’s wallet has no spendable USDC on the chain you’re paying from. Paid requests draw from your Circle Gateway balance, and a brand-new key starts at zero.
  • Confirm you’re funding the same chain you pass to RouterClient (e.g. chain: "base").
  • Top up with the SELAT CLI: selat fund --chain base --amount 2.
  • Check what’s recorded so far with selat history, and run selat doctor if the balance looks wrong.
See the Quickstart “Fund your wallet” step for the full flow.

Circle CLI signing timed out

If you use the Circle Agent Wallet signer, confirm that:
  • circle is installed and authenticated
  • the wallet address matches the target wallet
  • your timeout is long enough for the environment

Remote signer returns no signature

Your remote signer must return a JSON object with a signature field that starts with 0x. Check the target endpoint and the selected protocol hint.
  • Use mpp for the default path
  • Use x402 when you explicitly want the x402 path
Also verify that the upstream endpoint actually emits a valid payment challenge.

Need a faster way to isolate the issue

Try the smallest request possible first:
  1. Use a GET request.
  2. Remove custom headers.
  3. Test with a private key signer before moving to a remote signer or Circle Agent Wallet.