NO_ENTITLEMENT
The account has no plan that can pay for this transaction.
| HTTP status | 402 |
| Group | Relay path |
| Retryable | No — sending it again changes nothing |
| Re-sign | NONE — do not ask the user to sign anything |
What happened
details.reason is NO_ACCOUNT (nothing was ever bought) or PERIOD_LAPSED (the plan’s period ended).
What to do
Buy or renew a plan, then relay. The response carries a PAYMENT-REQUIRED header for x402 clients that pay for their own address. A server relaying with a sponsor key ignores that header: it is built for the transaction’s sender, not for the key’s account. If that server’s plan is active and the answer says NO_ACCOUNT, the key never reached POST /v1/relay (a stripped header, a key sent as Authorization: Bearer, a client built without it), so the relay billed the sender, who has no plan: send it as X-Api-Key. A sponsored answer carries billing.authMode: "api_key". Otherwise renew the plan in the dashboard.
Extra members
This code carries reason in the problem document, on top of the common members.
The problem document
Every error is application/problem+json (RFC 9457) with the same shape:
{
"type": "https://docs.co-relayer.com/errors/no-entitlement",
"title": "The account has no plan that can pay for this transaction.",
"status": 402,
"detail": "A sentence about this specific occurrence.",
"instance": "req_01JB…",
"code": "NO_ENTITLEMENT",
"retryable": false,
"resign": "NONE",
"hint": "Buy or renew a plan, then relay. The response carries a `PAYMENT-REQUIRED` header for x402 clients that pay for their own address. A server relaying with a sponsor key ignores that header: it is built for the transaction’s sender, not for the key’s account. If that server’s plan is active and the answer says `NO_ACCOUNT`, the key never reached `POST /v1/relay` (a stripped header, a key sent as `Authorization: Bearer`, a client built without it), so the relay billed the sender, who has no plan: send it as `X-Api-Key`. A sponsored answer carries `billing.authMode: \"api_key\"`. Otherwise renew the plan in the dashboard."
}
See the error model for what each member means and how to handle unknown codes.