Wallet pay-readiness API for Base and Solana

One call tells an agent whether a Base or Solana wallet can pay a USDC amount: balances, shortfalls, USDC blacklist or frozen flags, wallet type and open token approvals. Returns ok, review or cannot_pay for $0.01.

Agents fail payments for boring reasons. The wallet has too little USDC, USDC is frozen or blacklisted for that address, or the agent tries a direct transfer with no gas. GET /wallet/pay-readiness checks all of that in one call for $0.01. It also lists any open token approvals that could let a router or bridge move the wallet's funds.

What it checks

Example

GET /wallet/pay-readiness?address=0x6d7be981c103eD360874a7703ad3CD6a98929aFB&amount=0.01

Trimmed real response on Nov 11, 2026 (our own Base payTo):

{
  "chain": "base", "amountUsdc": 0.01,
  "status": "ok",
  "canPay": { "x402": true, "directTransfer": false },
  "balances": { "native": { "symbol": "ETH", "amount": 0 },
                "usdc": { "amount": 1.17 } },
  "wallet": { "type": "eoa", "usdcBlacklisted": false },
  "approvals": { "checked": 26, "open": [] },
  "reasons": ["Holds 1.17 USDC, enough for 0.01",
              "Low ETH for gas (0); fine for x402, not for a direct transfer"]
}

Solana works the same way. Pass a base58 wallet, and chain is detected for you.

Pay per call on Base or Solana

An unpaid request returns HTTP 402 offering USDC on Base and on Solana. You get a 400 or 422 before any payment if the address is malformed or is a Solana mint or token account rather than a wallet, so you are never charged for those. The route is also a tool called wallet_pay_readiness on the remote MCP server.

What it does not do

It is not a full portfolio, a credit score or a risk rating. The Base approval scan covers a curated spender list, so approvals to obscure contracts and Permit2 sub-allowances are not seen. For very large Solana wallets, the public RPC may time out while listing token accounts. When that happens, the response says the delegate scan is incomplete.

Try it free

Get a free API key (100 calls a month, no card), then pass it in the x-api-key header. This route uses 1 call of the monthly quota.

curl -X POST https://signals.incomefather.com/billing/free \
  -H 'content-type: application/json' -d '{"email":"you@example.com"}'

curl -H "x-api-key: $TRADING_SIGNALS_API_KEY" \
  "https://signals.incomefather.com/wallet/pay-readiness?address=0x6d7be981c103eD360874a7703ad3CD6a98929aFB&amount=0.01"

Agents that hold a wallet can skip the key entirely and pay per call over x402 (see x402 pay-per-call market data). Copy-paste code for curl, JavaScript, Python, MCP (Claude Desktop, Cursor, Cline), LangChain and the OpenAI Agents SDK is in gdietsch/trading-signals-examples.

More guides