BCK.X402.0001 | 404 | business | — | Agent not found | Verify the agentId in the x402 facilitator-resource URL. Agents that are deactivated or in a different environment surface as not-found here. |
BCK.X402.0002 | 404 | business | — | Plan not found | Verify the planId in the x402 facilitator-resource URL. Plans that are deactivated or in a different environment surface as not-found here. |
BCK.X402.0003 | 400 | business | — | The plan is not associated to the agent | Re-link the plan to the agent before retrying, or use a different plan that is already linked. x402 requires an explicit (agent, plan) edge. |
BCK.X402.0004 | 500 | business | — | Error generating X402 access token | Inspect the underlying error in logs. x402 access-token minting failed — usually a JWT signing key issue or an upstream chain RPC error. |
BCK.X402.0005 | 402 | business | — | Invalid access token | Mint a fresh access token via the x402 /generate-token endpoint. Expired or tampered tokens land here. |
BCK.X402.0006 | 500 | business | — | Error verifying permissions | Inspect the underlying error in logs. The verifyPermissions call failed — usually a transient DB error; retry once. Persistent failures may indicate a stale plan-permissions cache. |
BCK.X402.0007 | 500 | business | — | Failed to order Pay-as-you-go plan | Inspect the underlying error in logs. Pay-as-you-go plan ordering failed — usually a delegation/credit issue on the buyer side or an upstream chain RPC error. |
BCK.X402.0008 | 500 | business | — | Failed to order crypto plan | Inspect the underlying error in logs. Crypto plan ordering failed — usually a buyer balance/approval issue or a chain RPC revert. |
BCK.X402.0009 | 500 | business | — | Failed to redeem credits | Inspect the underlying error in logs. Credit redemption failed mid-way — the buyer may have been charged but not credited; check the activity feed and reconcile manually if needed. |
BCK.X402.0010 | 400 | business | — | Invalid x402 access token | Mint a fresh access token via the x402 /generate-token endpoint. The supplied token is malformed or signed by an unknown key. |
BCK.X402.0011 | 404 | business | — | User profile not found | Verify the buyer wallet has a user-profile row. New wallets must complete the signup flow before purchasing via x402. |
BCK.X402.0012 | 400 | business | — | resource.url is required when agentId is provided | Pass resource.url alongside agentId in the x402 settlement body. The URL is required for routing the settlement to the right merchant. |
BCK.X402.0013 | 400 | business | — | Accepted payment method does not match requirements | Pass an accepted payment method that matches the plan’s configured currency/scheme. The combinations are documented per-plan in the plan metadata. |
BCK.X402.0014 | 400 | business | — | Delegation restricted to a different plan | Reuse the delegation only with the planId it was originally bound to, or create a fresh delegation for the new plan. Visa mandates are plan-scoped. |
BCK.X402.0015 | 404 | business | ❌ | Permission not found | The permission record either has been revoked or never existed for this combination of (subscriber, plan, agent). |
BCK.X402.0016 | 400 | business | ❌ | Permission is already revoked | The permission was already revoked. No further action required. |
BCK.X402.0017 | 500 | internal | ❌ | Failed to issue credits after card charge | The card was charged successfully but the DB-side mint of credits failed. The charge is auto-refunded when the provider supports it; otherwise a failed_post_charge_* delegationTransactions row is left for manual reconciliation. |
BCK.X402.0018 | 500 | internal | ❌ | Invalid amountCents derived from order | A defensive arithmetic check in the erc4337 settlement path produced a non-finite or negative cents amount. Inspect the order amount and currency in params; this should never happen for legitimate orders. |
BCK.X402.0019 | 402 | business | ❌ | Delegation not found | No delegation with this id is owned by the caller — it either never existed or belongs to someone else (the two are intentionally indistinguishable). Verify the delegationId, or create a fresh delegation. Revoked/expired/exhausted delegations report BCK.X402.0020/0021/0022 instead. |
BCK.X402.0020 | 402 | business | ❌ | Delegation is revoked | This delegation has been revoked and can no longer be used. Create a new card delegation to continue. |
BCK.X402.0021 | 402 | business | ❌ | Delegation has expired | The delegation passed its expiry. Mint a new one (omit delegationId and resubmit with the payment method plus spendingLimitCents and durationSecs). |
BCK.X402.0022 | 402 | business | ❌ | Delegation budget exhausted | The delegation has reached its spending limit or maximum transaction count. Create a new delegation with a higher spendingLimitCents / maxTransactions to keep transacting. |
BCK.X402.0023 | 402 | business | ❌ | Delegation budget insufficient for this order | The remaining delegation budget is smaller than the cost of this order. Use a smaller order, or create a new delegation with a higher spendingLimitCents. |
BCK.X402.0024 | 402 | business | ❌ | No active permission found for the delegation | The delegation has no active permission backing it. Re-create the delegation so its permission and session keys are provisioned. |
BCK.X402.0025 | 402 | business | ❌ | Permission has been revoked | The permission backing this token was revoked. Create a fresh delegation/permission and mint a new access token. |
BCK.X402.0026 | 402 | business | ❌ | Permission has expired | The permission backing this token expired. Create a fresh delegation/permission and mint a new access token. |
BCK.X402.0027 | 402 | business | ❌ | Payment method not found or unusable | No usable payment method was found for this request. Add or re-enable a payment method in the dashboard, then retry — optionally passing its identifier via delegationConfig.providerPaymentMethodId or delegationConfig.cardId. |
BCK.X402.0028 | 402 | business | ❌ | Payment method is revoked | The payment method has been revoked. Add or re-enable a payment method in the dashboard and retry with its identifier. |
BCK.X402.0029 | 402 | business | ❌ | API key not authorized for this delegation or payment method | The API key used is not in the allow-list for this delegation / payment method. Use an authorized API key, or update the payment method allowedApiKeyIds to include it. |
BCK.X402.0030 | 402 | business | ❌ | Required token-generation input is missing or incomplete | A required input for issuing the access token is missing. Provide accepted.planId, and a complete delegationConfig: reuse with { delegationId }, or create with { providerPaymentMethodId | cardId, spendingLimitCents, durationSecs } (optionally currency). The per-failure details names the specific missing field. |
BCK.X402.0034 | 402 | business | ❌ | Unsupported scheme or currency | The requested payment scheme or currency is not supported. Check the plan configured scheme/currency (e.g. Visa delegations support only usd / eur) and resubmit with a supported combination. |
BCK.X402.0035 | 402 | business | ❌ | No session keys found for delegation | The delegation is owned by the caller and usable, but its linked erc4337 permission is missing session keys (burnSessionKey / orderSessionKey). This is a data-integrity issue — the delegation was likely created without completing session-key provisioning. Create a fresh crypto delegation; if it recurs, report the delegationId for investigation. |
BCK.X402.0036 | 402 | business | ❌ | Delegation not usable (unknown lifecycle state) | The delegation is in a lifecycle state the server does not recognise as usable. Create a fresh delegation to continue; if this persists, report the delegationId for investigation. |
BCK.X402.0037 | 403 | business | ❌ | SetupIntent does not belong to the authenticated user | The SetupIntent was created by (or for) a different user. Re-create the SetupIntent under the authenticated account and finalize enrollment with that id. |
BCK.X402.0038 | 409 | business | ❌ | SetupIntent is not in the expected state | The SetupIntent has not reached status “succeeded” (it may still be processing, or it failed). Confirm the card on the client, wait for “succeeded”, then finalize enrollment. |
BCK.X402.0039 | 422 | business | ❌ | SetupIntent has no associated payment method | The SetupIntent succeeded but carries no payment method. Re-run the card setup so a payment method is attached, then finalize enrollment. |
BCK.X402.0040 | 404 | business | ❌ | API Key not found for this user | One of the supplied allowedApiKeyIds does not belong to this user (the offending skId is in params). Remove or correct it and retry. |
BCK.X402.0041 | 409 | business | ❌ | API Key is not active | One of the supplied allowedApiKeyIds is revoked/inactive (the offending skId is in params). Use an active key or re-enable it, then retry. |
BCK.X402.0042 | 500 | internal | ❌ | VGS outbound proxy is misconfigured | Server-side configuration fault (the VGS outbound proxy is unset, not HTTPS, has an invalid URL, or points at a non-VGS host). The caller did nothing wrong. Fix the VGS proxy configuration; if it persists, report the correlationId. |
BCK.X402.0043 | 502 | integration | ❌ | Card enrollment via VGS failed | The upstream VGS→Stripe card-creation call returned bad data or a non-200 status. Inspect VGS / Stripe logs for the correlationId. Usually invalid card details or a vault-routing issue; retry after correcting the card, or report if it persists. |
BCK.X402.0044 | 500 | internal | ❌ | Invalid internal identifier format | An internal invariant failed (a userId did not match the expected format for downstream metadata). This is a server-side fault, not a client input error. Report the correlationId for investigation. |
BCK.X402.0045 | 501 | internal | ❌ | Network-token charging is not supported by this payment provider | This provider cannot yet charge from a network token + cryptogram. Today only the Visa rail does. Stripe gains a native network-token field in #1979 (T2.D) and Braintree gains BYOT in #1978 (T2.C); until then the router must not dispatch a network-token charge to these providers. |
BCK.X402.0046 | 500 | internal | ❌ | Charge router received no candidate provider routes | Epic #1958 T1.C: the charge-time provider router (CardPaymentProviderFactory.chargeWithFallback) was called with an empty route list. The settle handler always supplies at least the legacy delegations.provider route, so an empty list is a server-side wiring regression — never a client input error. Report the correlationId for investigation. |
BCK.X402.0047 | 500 | internal | ❌ | No card payment provider registered for the requested rail | Epic #1958 T1.C: CardPaymentProviderFactory.getProvider was asked for a card rail it has no provider instance for. CardProviderName aliases the growable CardSettlementProvider, so a newly-added PSP must be wired into the factory switch in the same change — an unhandled rail is a server-side wiring regression, never a client input error. Report the correlationId for investigation. |
BCK.X402.0048 | 502 | integration | ❌ | Network-token charge failed ambiguously (may have charged) — not retried or rolled back | Epic #1958 T2.D: a network-token charge through the PSP failed with an AMBIGUOUS error (timeout / 5xx / network / idempotency-key reuse) — the charge may actually have gone through. To avoid a double charge the spending reservation is deliberately LEFT IN PLACE (no rollback) and no other route is attempted. Reconcile the delegation against the PSP before any manual retry; the providerTransactionId in delegation_transactions is the breadcrumb. |
BCK.X402.0049 | 402 | business | ❌ | Network-token charge was declined by the payment provider | Epic #1958 T2.D: the PSP definitively declined the network-token charge (e.g. card_declined / insufficient_funds). No charge was captured, so the spending reservation is rolled back. Check the funding card or use a different payment method. |
BCK.X402.0050 | 400 | validation | ❌ | Delegation currency has no settlement token on the plan network | An on-chain (erc4337) delegation must approve a real ERC-20 for its currency on the plan’s settlement network. The requested currency has no token configured on that network (e.g. EURC on Tempo, which settles only pathUSD/USDC) — minting the session key would produce a no-op approve that can never charge, so it is rejected. Pick a currency supported on the plan’s network (#1929). |
BCK.X402.0051 | 503 | integration | ✅ | Chain RPC dependency temporarily unavailable during x402 verification | A transient failure of the on-chain RPC provider / bundler (5xx or unreachable) prevented an x402 verify/settle permission check from completing. Retry after a short backoff. If it persists, the RPC endpoint or its credentials may be misconfigured. The real upstream cause is captured server-side in the logs for this error id. |
BCK.X402.0052 | 503 | integration | ✅ | EIP-7702 delegation could not be installed on the plan network | Installing the account’s Kernel v3.3 delegation designator on the plan’s network failed (bundler/paymaster/RPC), or a recent attempt is in its fail-closed backoff window. This is a transient infrastructure fault, not a client error — retry the request. See #2300. |
BCK.X402.0053 | 404 | business | ❌ | Privy wallet no longer exists | The account’s embedded Privy wallet has been deleted, so its smart account can no longer be reconstructed. Privy states this is unrecoverable — neither Nevermined nor Privy can re-link an authentication method on the user’s behalf. The user profile survives but is no longer spendable; provision a new account. Distinct from BCK.X402.0011 (“user profile not found”), which means the profile itself is missing. See #2316. |
BCK.X402.0054 | 402 | business | ❌ | account_access credential may only spend via the card-delegation scheme | This access token was minted for account-wide card spending, so it can only pay through the card-delegation scheme against its own pinned card delegation — not the crypto (nvm:erc4337) scheme, nor an inline-created or foreign delegation. Retry with the card-delegation scheme. #2568 §6.3. |
BCK.X402.0055 | 500 | internal | ❌ | Internal error: account_access binding has no delegation to spend against | A server-side data-integrity condition — an account_access binding always carries a card delegation (funding is required at authorize time). A null here should be unreachable; inspect the API logs. #2578. |