Skip to main content
Import typed errors and guards from @rhinestone/sdk/errors. Orchestrator errors include a code, statusCode, and traceId; include the trace ID when contacting support.
This snippet continues an existing account and transaction setup. Implement scheduleRetry in your application; retryAfter is an optional string header value, so handle both delay-seconds and HTTP-date formats. Retry only an idempotent operation. Do not resubmit a signed transaction unless you have confirmed that the previous submission was not accepted.

Account configuration errors

Catch account implementation errors with isAccountError(error). For composite configuration and VM capability failures, use the separately exported isAccountCapabilityError guard:

Transaction and signing errors

Catch the category with isExecutionError(error).

Prepared artifacts and proofs

Use the exported isExecutionError guard for these diagnostics. InvalidPreparedTransactionError, UnsupportedSigningRequestError, IncompleteIntentProofsError, and MismatchedIntentProofError are thrown internally but their constructors are not exported from @rhinestone/sdk/errors in this revision. Do not import internal paths. Persist the complete prepared object, including request, with a serialization format that preserves bigint values. Keep returned owner contributions opaque. See Custom signing.

Funding and quote requirements

Use destination for execution or delivery and select one funding chain/token in source. Delivery always requires a source; user-paid execution needs a fee token. Sufficiently sponsored no-delivery EVM or Solana instruction execution can omit it. Solana authority changes always omit the source and are gas-sponsored. A portfolio read does not automatically select or aggregate funding. Inspect the selected quote’s requirements[], including approval and wrap requirements. These are disclosures, not automatic SDK actions. Resolve prerequisites explicitly and prepare again if the inputs or state change. maxAmount caps observed source balance; auxiliary funds are added after the cap. JWT approval occurs during prepare/quote. Upgrade backend helpers and runtime schemas before clients, require sdk-3.0.0-caucasus, and authorize the applicable account.evm or account.svm entry, source, destination, and options. A bound digest is not a sponsorship policy. See Security.

API and quote errors

isRetryable(error) returns true for internal errors, upstream timeouts, unavailable relayers, and simulation failures explicitly marked retryable. Use isSponsorError, isSponsorLimitExceeded, and isInsufficientSponsorBalance to distinguish sponsorship failures. Follow sponsorship setup for balance and policy configuration.

Registry errors

These are local SDK validation errors, not Orchestrator responses.

Solana failures

Native Solana transactions use the same prepare/sign/submit/wait lifecycle. Preserve the complete prepared artifact and its ordered signing requests; do not convert it into a UserOperation or replace its proof with a signature from an Ed25519 wallet. The managed owner must be one viem secp256k1 or WebAuthn account. Import the error constructors and isSolanaAccountNotCreated, isSolanaAuthorityChangeRefused, isSolanaQuoteExpiredError, and isInvalidSolanaTransactionArtifactError guards from @rhinestone/sdk/errors. getAuthorityStatus only checks one authority change, not global deployment or owner readiness. Deployment returning true can also mean an existing Swig without checking your configured owner.

Authority change refusals

SolanaAuthorityChangeRefusedError exposes a typed, optional reason and role metadata. Handle unknown reasons as refusals; retain redacted issues and traceId for diagnosis. See Solana recovery setup. Authority changes and deployments require separately authenticated sponsorship policies, not an unrestricted token-delivery policy. Network availability depends on the environment; mainnet support remains route-dependent.

EVM session key failures

See Multi-chain sessions and Restrict a session for the required shapes. Call rhinestone.validateSession to list every refusal for a session definition at once; see Validate a definition.

EVM guardian recovery failures

Follow Recover an account for the ordering constraints.

Report a persistent failure

Capture:
  • the SDK version (3.0.0 for these examples)
  • the error class, message, code, and traceId
  • the account address and chain IDs
  • the intent ID or UserOperation hash
  • redacted request parameters and per-operation status
Never include private keys, passkey material, API keys, or JWTs.