When setup or payment stops
Start with the reason shown in the dashboard or returned by the MCP tool. A Policy denial means the payment should stop or change; a temporary infrastructure problem may need a retry after its cause is resolved.
After an uncertain wallet broadcast, inspect the existing intent, transaction hash, and receipt first. Retrying an OAuth request or read-only preview is different from submitting a second blockchain transaction.
The wallet owner needs to act
| Reason | What it means | Next step |
|---|---|---|
payment_wallet_not_bound | No verified wallet is linked to this Agent. | Connect and verify one in AI Agents. |
policy_not_bound | This Agent has no onchain Spending Policy. | Set its limits in AI Agents. |
policy_disabled / policy_emergency_paused | New Spendkit payments are paused. | Review the Policy before resuming. |
policy_revoked | The Policy has ended. | Create a new Policy through the guided process if needed. |
recipient_not_allowed | The recipient is outside the allowed list. | Review recipient rules; do not bypass them. |
policy_daily_limit_exceeded | No daily capacity remains. | Wait for the UTC reset or explicitly change the Policy. |
router_allowance_insufficient / wallet_balance_insufficient | The wallet lacks token permission or funds. | Finish wallet setup or fund the wallet. |
The Agent or developer should change the request
| Reason | Next step |
|---|---|
per_transaction_limit_exceeded | Use a genuinely smaller valid payment or ask the owner to review the limit. Do not split a denied payment to evade Policy. |
idempotency_key_conflict | Keep the original key for the original payment; use a new key only for a new logical payment. |
invalid_client / invalid_scope | Check connection status and requested scope. Rotate or update credentials in Connect Agent if needed. |
rate_limit_exceeded | Wait for the supplied retry delay before making another request. |
recipient_allowlist_not_enabled | Enable the allowlist before adding recipients. |
Investigate before continuing
| Reason | What to check |
|---|---|
router_v2_not_ready | Runtime or network validation failed closed. The name is a legacy reason code; it does not mean the current Router should be version 2. Check service and network health. |
policy_owner_mismatch / policy_agent_mismatch / policy_token_mismatch | Policy binding is inconsistent. Stop payment and investigate the wallet, Agent, and chain state. |
router_transaction_reverted | Inspect the transaction receipt and reason before any new attempt. |
router_payment_event_missing_or_mismatched | A receipt did not prove the expected Spendkit payment. Do not assume the payment succeeded. |
rate_limit_backend_unavailable | The abuse-control service could not be checked and failed closed. Wait for service recovery. |
Other setup messages include wallet_challenge_already_used_or_invalid (request a new ownership challenge) and agent_has_onchain_policy_history (a Policy-bound Agent is retained for audit; revoke the Policy instead of deleting its record).
MCP results include a request trace ID and may include recovery ownership and next action. Share the trace ID when asking for support, but never send your Client Secret or Payment Wallet private key.