Did my x402 payment settle? May I pay again?
payment_statusTells whether an x402 payment settled, for use after a timeout, a 5xx or any unclear answer to a paid request and before a new payment is signed. Pass network and the settlement tx, or (EVM exact) from + nonce + valid_before of the signed authorization, or (Solana exact) from + the recentBlockhash of the signed transaction; the signature itself is not needed. safe_to_sign_new is true only when a new payment cannot pay twice. alalanet reads the chain and answers state (settled | pending | not_settled | expired_unsettled | failed) and retry: do_not_pay_again, resend_same (same authorization can settle only once), new_payment_ok, or wait. Prevents paying twice. Read-only (nothing is signed or logged); the error chain_unavailable means the payment networks did not answer, and the same question can be asked again after 15 s.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"network": "<network>"
},
"name": "payment_status"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tx | No | settlement transaction hash from the transaction field of the PAYMENT-RESPONSE header (0x + 64 hex on Base, base58 signature on Solana), if you got one | |
| from | No | payments without a tx: EVM exact: payload.authorization.from of the PAYMENT-SIGNATURE you sent (your wallet address); Solana exact: your wallet address (the signer of the transaction besides the facilitator's fee payer) | |
| asset | No | token contract; default USDC on Base | |
| nonce | No | EVM exact payments without a tx: payload.authorization.nonce of the PAYMENT-SIGNATURE you sent (0x + 64 hex); never send the signature itself | |
| network | Yes | Base: eip155:8453 or base; Solana: solana or solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp | |
| blockhash | No | Solana exact payments without a tx: the recentBlockhash of the transaction you signed (base58); with from it identifies your payment, since the facilitator's fee-payer signature (the transaction id) is unknown to you before settlement | |
| valid_before | No | payload.authorization.validBefore (unix seconds): lets alalanet tell an expired, unused authorization (safe to pay anew) from one that may still settle |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tx | No | ||
| retry | Yes | ||
| state | Yes | ||
| advice | Yes | ||
| source | Yes | ||
| network | Yes | ||
| checked_at | Yes | ||
| reported_outcome | No | ||
| safe_to_sign_new | Yes |