> ## Documentation Index
> Fetch the complete documentation index at: https://selat.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting

> Fix the most common setup and runtime issues.

## `RouterClientConfigError: chain is required`

Pass a supported chain name when you construct `RouterClient`.

```ts theme={null}
new RouterClient({
  chain: "base",
  signer
});
```

## `Provide either signer, or privateKey (with chain) for Circle nanopayments`

The client needs one signing path. Provide either `signer` or `privateKey`.

## Paid request fails with an insufficient-balance error

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](/docs/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](/docs/selat-sdk/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`.

## Paid request still looks unpaid

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.
