---
title: "Create Wallet"
method: POST
path: "/2025-06-09/wallets"
---

# Create Wallet

`POST /2025-06-09/wallets`

Creates a new wallet of specified type. If called with an idempotency key or for a user who already has a wallet, returns existing wallet. When owner is provided, subsequent calls with the same owner will return the existing wallet. Supports both custodial and non-custodial wallet types.

**API scope required**: `wallets.create`

## Headers

- `X-API-KEY` string, required
- `x-idempotency-key` string

## Request body

- union
  - object — EVM smart wallet creation input
    - `chainType` 'evm', required
    - `type` 'smart'
    - `config` object, required
      - `adminSigner` union — @deprecated Use `recovery` instead. The admin signer for the wallet. Mutually exclusive with `recovery`.
        - object — An external wallet that can be used to sign transactions
          - `type` 'external-wallet', required — Identifier for external wallet signer type
          - `address` string, required — The blockchain address of the external wallet
        - object — A server-managed blockchain signer
          - `type` 'server', required — Identifier for server signer type
          - `address` string, required — The blockchain address of the server signer
        - object — A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.
          - `type` 'api-key', required — Identifier for API key signer type
        - object — Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication
          - `type` 'passkey', required — Identifier for the Passkey signer type
          - `id` string, required — Credential ID from the WebAuthn registration response
          - `name` string, required — Human-readable name for the passkey
          - `publicKey` object, required — The public key coordinates from the WebAuthn credential
            - `x` string, required — S component of the signature as a stringified bigint
            - `y` string, required — S component of the signature as a stringified bigint
        - object — An email-based signer that can be used to sign transactions
          - `type` 'email', required — Identifier for email signer type
          - `email` string, required — The email address for the signer
        - object — An phone-based signer that can be used to sign transactions
          - `type` 'phone', required — Identifier for phone signer type
          - `phone` string, required — The phone number for the signer in E164 format
        - object — A quorum (multisig) signer composed of multiple member signers with an approval threshold
          - `type` 'quorum', required — Identifier for quorum (multisig) signer type
          - `threshold` integer — The minimum number of member signatures required to approve. Defaults to 1.
          - `signers` union[], required — The member signers that make up the quorum (1-10 members, no duplicates). Nested quorums are not allowed.
            - union
              - …
      - `recovery` union — The recovery configuration (admin signer) for the wallet. Mutually exclusive with `adminSigner`.
        - object — An external wallet that can be used to sign transactions
          - `type` 'external-wallet', required — Identifier for external wallet signer type
          - `address` string, required — The blockchain address of the external wallet
        - object — A server-managed blockchain signer
          - `type` 'server', required — Identifier for server signer type
          - `address` string, required — The blockchain address of the server signer
        - object — A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.
          - `type` 'api-key', required — Identifier for API key signer type
        - object — Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication
          - `type` 'passkey', required — Identifier for the Passkey signer type
          - `id` string, required — Credential ID from the WebAuthn registration response
          - `name` string, required — Human-readable name for the passkey
          - `publicKey` object, required — The public key coordinates from the WebAuthn credential
            - `x` string, required — S component of the signature as a stringified bigint
            - `y` string, required — S component of the signature as a stringified bigint
        - object — An email-based signer that can be used to sign transactions
          - `type` 'email', required — Identifier for email signer type
          - `email` string, required — The email address for the signer
        - object — An phone-based signer that can be used to sign transactions
          - `type` 'phone', required — Identifier for phone signer type
          - `phone` string, required — The phone number for the signer in E164 format
        - object — A quorum (multisig) signer composed of multiple member signers with an approval threshold
          - `type` 'quorum', required — Identifier for quorum (multisig) signer type
          - `threshold` integer — The minimum number of member signatures required to approve. Defaults to 1.
          - `signers` union[], required — The member signers that make up the quorum (1-10 members, no duplicates). Nested quorums are not allowed.
            - union
              - …
      - `delegatedSigners` object[] — Optional array of delegated signers to be created for the wallet
        - `signer` union, required
          - union
            - object — Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication
              - …
            - object — A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.
              - …
            - object — An external wallet that can be used to sign transactions
              - …
            - object — A server-managed blockchain signer
              - …
            - object — An email-based signer that can be used to sign transactions
              - …
            - object — An phone-based signer that can be used to sign transactions
              - …
            - object — A device signer that can be used as a delegated signer
              - …
          - string — The locator for the signer
        - `scopes` object[] — Optional array of scopes to restrict the signer's capabilities
          - `type` 'transfer', required
          - `tokenLocator` string, required
          - `recipients` string[]
          - `spendingLimit` object
            - `amount` string, required
            - `interval` integer
        - `expiresAt` string, date-time — The expiry date of the signer in ISO 8601 format
        - `deployImmediately` boolean — If true, returns a transaction to register the signer in the wallet. If false (default), it generates a signature and the signer will be registered on the following transaction.
      - `creationSeed` string — The unique wallet seed. By default, the seed is randomly generated.
    - `owner` string
    - `alias` string — The wallet alias
  - object — EVM MPC wallet creation input
    - `chainType` 'evm', required
    - `type` 'mpc', required
    - `config` unknown
    - `owner` string — A user locator can be of the format: - `email:<email>` - `userId:<userId>` - `phoneNumber:<phoneNumber>` - `twitter:<handle>` - `x:<handle>`
  - object — Solana smart wallet creation input
    - `chainType` 'solana', required
    - `type` 'smart'
    - `config` object, required
      - `adminSigner` union — @deprecated Use `recovery` instead. The admin signer for the wallet. Mutually exclusive with `recovery`.
        - object — An external wallet that can be used to sign transactions
          - `type` 'external-wallet', required — Identifier for external wallet signer type
          - `address` string, required — The blockchain address of the external wallet
        - object — A server-managed blockchain signer
          - `type` 'server', required — Identifier for server signer type
          - `address` string, required — The blockchain address of the server signer
        - object — A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.
          - `type` 'api-key', required — Identifier for API key signer type
        - object — An email-based signer that can be used to sign transactions
          - `type` 'email', required — Identifier for email signer type
          - `email` string, required — The email address for the signer
        - object — An phone-based signer that can be used to sign transactions
          - `type` 'phone', required — Identifier for phone signer type
          - `phone` string, required — The phone number for the signer in E164 format
        - object — A quorum (multisig) signer composed of multiple member signers with an approval threshold
          - `type` 'quorum', required — Identifier for quorum (multisig) signer type
          - `threshold` integer — The minimum number of member signatures required to approve. Defaults to 1.
          - `signers` union[], required — The member signers that make up the quorum (1-10 members, no duplicates). Nested quorums are not allowed.
            - union
              - …
      - `recovery` union — The recovery configuration (admin signer) for the wallet. Mutually exclusive with `adminSigner`.
        - object — An external wallet that can be used to sign transactions
          - `type` 'external-wallet', required — Identifier for external wallet signer type
          - `address` string, required — The blockchain address of the external wallet
        - object — A server-managed blockchain signer
          - `type` 'server', required — Identifier for server signer type
          - `address` string, required — The blockchain address of the server signer
        - object — A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.
          - `type` 'api-key', required — Identifier for API key signer type
        - object — An email-based signer that can be used to sign transactions
          - `type` 'email', required — Identifier for email signer type
          - `email` string, required — The email address for the signer
        - object — An phone-based signer that can be used to sign transactions
          - `type` 'phone', required — Identifier for phone signer type
          - `phone` string, required — The phone number for the signer in E164 format
        - object — A quorum (multisig) signer composed of multiple member signers with an approval threshold
          - `type` 'quorum', required — Identifier for quorum (multisig) signer type
          - `threshold` integer — The minimum number of member signatures required to approve. Defaults to 1.
          - `signers` union[], required — The member signers that make up the quorum (1-10 members, no duplicates). Nested quorums are not allowed.
            - union
              - …
      - `delegatedSigners` object[] — Optional array of delegated signers to be created for the wallet
        - `signer` union, required
          - union
            - object — Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication
              - …
            - object — A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.
              - …
            - object — An external wallet that can be used to sign transactions
              - …
            - object — A server-managed blockchain signer
              - …
            - object — An email-based signer that can be used to sign transactions
              - …
            - object — An phone-based signer that can be used to sign transactions
              - …
            - object — A device signer that can be used as a delegated signer
              - …
          - string — The locator for the signer
        - `scopes` object[] — Optional array of scopes to restrict the signer's capabilities
          - `type` 'transfer', required
          - `tokenLocator` string, required
          - `recipients` string[]
          - `spendingLimit` object
            - `amount` string, required
            - `interval` integer
        - `expiresAt` string, date-time — The expiry date of the signer in ISO 8601 format
    - `owner` string
    - `alias` string — The wallet alias
  - object — Solana MPC wallet creation input
    - `chainType` 'solana', required
    - `type` 'mpc', required
    - `config` unknown
    - `owner` string — A user locator can be of the format: - `email:<email>` - `userId:<userId>` - `phoneNumber:<phoneNumber>` - `twitter:<handle>` - `x:<handle>`
  - object — Aptos wallet creation input
    - `chainType` 'aptos', required
    - `type` 'mpc'
    - `config` unknown
    - `owner` string — A user locator can be of the format: - `email:<email>` - `userId:<userId>` - `phoneNumber:<phoneNumber>` - `twitter:<handle>` - `x:<handle>`
  - object — Sui wallet creation input
    - `chainType` 'sui', required
    - `type` 'mpc'
    - `config` unknown
    - `owner` string — A user locator can be of the format: - `email:<email>` - `userId:<userId>` - `phoneNumber:<phoneNumber>` - `twitter:<handle>` - `x:<handle>`
  - object — Stellar wallet creation input
    - `chainType` 'stellar', required
    - `type` 'smart'
    - `config` object, required
      - `adminSigner` union — @deprecated Use `recovery` instead. The admin signer for the wallet. Mutually exclusive with `recovery`.
        - object — An external wallet that can be used to sign transactions
          - `type` 'external-wallet', required — Identifier for external wallet signer type
          - `address` string, required — The blockchain address of the external wallet
        - object — A server-managed blockchain signer
          - `type` 'server', required — Identifier for server signer type
          - `address` string, required — The blockchain address of the server signer
        - object — An email-based signer that can be used to sign transactions
          - `type` 'email', required — Identifier for email signer type
          - `email` string, required — The email address for the signer
        - object — An phone-based signer that can be used to sign transactions
          - `type` 'phone', required — Identifier for phone signer type
          - `phone` string, required — The phone number for the signer in E164 format
        - object — A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.
          - `type` 'api-key', required — Identifier for API key signer type
        - object — A quorum (multisig) signer composed of multiple member signers with an approval threshold
          - `type` 'quorum', required — Identifier for quorum (multisig) signer type
          - `threshold` integer — The minimum number of member signatures required to approve. Defaults to 1.
          - `signers` union[], required — The member signers that make up the quorum (1-10 members, no duplicates). Nested quorums are not allowed.
            - union
              - …
      - `recovery` union — The recovery configuration (admin signer) for the wallet. Mutually exclusive with `adminSigner`.
        - object — An external wallet that can be used to sign transactions
          - `type` 'external-wallet', required — Identifier for external wallet signer type
          - `address` string, required — The blockchain address of the external wallet
        - object — A server-managed blockchain signer
          - `type` 'server', required — Identifier for server signer type
          - `address` string, required — The blockchain address of the server signer
        - object — An email-based signer that can be used to sign transactions
          - `type` 'email', required — Identifier for email signer type
          - `email` string, required — The email address for the signer
        - object — An phone-based signer that can be used to sign transactions
          - `type` 'phone', required — Identifier for phone signer type
          - `phone` string, required — The phone number for the signer in E164 format
        - object — A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.
          - `type` 'api-key', required — Identifier for API key signer type
        - object — A quorum (multisig) signer composed of multiple member signers with an approval threshold
          - `type` 'quorum', required — Identifier for quorum (multisig) signer type
          - `threshold` integer — The minimum number of member signatures required to approve. Defaults to 1.
          - `signers` union[], required — The member signers that make up the quorum (1-10 members, no duplicates). Nested quorums are not allowed.
            - union
              - …
      - `delegatedSigners` object[] — Optional array of delegated signers to be created for the wallet
        - `signer` union, required
          - union
            - object — Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication
              - …
            - object — A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.
              - …
            - object — An external wallet that can be used to sign transactions
              - …
            - object — A server-managed blockchain signer
              - …
            - object — An email-based signer that can be used to sign transactions
              - …
            - object — An phone-based signer that can be used to sign transactions
              - …
            - object — A device signer that can be used as a delegated signer
              - …
          - string — The locator for the signer
        - `scopes` object[] — Optional array of scopes to restrict the signer's capabilities
          - `type` 'transfer', required
          - `tokenLocator` string, required
          - `recipients` string[]
          - `spendingLimit` object
            - `amount` string, required
            - `interval` integer
        - `expiresAt` string, date-time — The expiry date of the signer in ISO 8601 format
      - `plugins` string[] — Optional array of plugins to be used for the wallet
    - `owner` string
    - `alias` string — The wallet alias

## Response `201`

Returns an existing wallet (200) if one already exists for the provided owner or idempotencyKey, or creates and returns a new wallet (201). The response includes the wallet details and whether it was newly created.

- union
  - object
    - `chainType` 'evm', required — The blockchain type of the wallet
    - `type` 'smart' | 'mpc', required — The wallet type (smart or mpc)
    - `config` object — EVM wallet type specific configuration settings
      - `adminSigner` union, required
        - object — Configuration for an external wallet signer
          - `type` 'external-wallet', required — Identifier for external wallet signer type
          - `address` string, required — The blockchain address of the external wallet
          - `locator` string, required — The locator of the signer
        - object — Configuration for a server signer
          - `type` 'server', required — Identifier for server signer type
          - `address` string, required — The blockchain address of the server signer
          - `locator` string, required — The locator of the signer
        - object — Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access.
          - `type` 'api-key', required — Identifier for API key signer type
          - `address` union, required — The blockchain address of the custodial signer
            - string — The recipient address for this transaction call
            - string — The Solana address of the signer
            - string
          - `locator` string, required — The locator of the signer
        - object — Response schema for a registered Passkey signer including validator contract details
          - `type` 'passkey', required — Identifier for the Passkey signer type
          - `id` string, required — Credential ID from the WebAuthn registration response
          - `name` string, required — Human-readable name for the passkey
          - `publicKey` object, required — The public key coordinates from the WebAuthn credential
            - `x` string, required — S component of the signature as a stringified bigint
            - `y` string, required — S component of the signature as a stringified bigint
          - `validatorContractVersion` string, required — ERC-7579 webAuthn validator contract version
          - `locator` string, required — Unique identifier for locating this passkey signer
        - object — Configuration for an email signer
          - `type` 'email', required — Identifier for email signer type
          - `email` string, required — The email address for the signer
          - `locator` string, required — The locator of the signer
          - `address` union, required — The address of the signer
            - string — The recipient address for this transaction call
            - string
        - object — Configuration for a phone signer
          - `type` 'phone', required — Identifier for phone signer type
          - `phone` string, required — The phone number for the signer in E164 format
          - `locator` string, required — The locator of the signer
          - `address` union, required — The address of the signer
            - string — The recipient address for this transaction call
            - string
      - `delegatedSigners` union[] — Optional array of additional signers for the wallet
        - union
          - object — Configuration for an external wallet signer
            - `type` 'external-wallet', required — Identifier for external wallet signer type
            - `address` string, required — The blockchain address of the external wallet
            - `locator` string, required — The locator of the signer
            - `scopes` unknown[] — Permission scopes granted to this delegated signer
              - …
            - `expiresAt` string — ISO timestamp of when the delegated signer expires
            - `chains` object — Per-chain configuration for the delegated signer
          - object — Configuration for a server signer
            - `type` 'server', required — Identifier for server signer type
            - `address` string, required — The blockchain address of the server signer
            - `locator` string, required — The locator of the signer
            - `scopes` unknown[] — Permission scopes granted to this delegated signer
              - …
            - `expiresAt` string — ISO timestamp of when the delegated signer expires
            - `chains` object — Per-chain configuration for the delegated signer
          - object — Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access.
            - `type` 'api-key', required — Identifier for API key signer type
            - `address` union, required — The blockchain address of the custodial signer
              - …
            - `locator` string, required — The locator of the signer
            - `scopes` unknown[] — Permission scopes granted to this delegated signer
              - …
            - `expiresAt` string — ISO timestamp of when the delegated signer expires
            - `chains` object — Per-chain configuration for the delegated signer
          - object — Response schema for a registered Passkey signer including validator contract details
            - `type` 'passkey', required — Identifier for the Passkey signer type
            - `id` string, required — Credential ID from the WebAuthn registration response
            - `name` string, required — Human-readable name for the passkey
            - `publicKey` object, required — The public key coordinates from the WebAuthn credential
              - …
            - `validatorContractVersion` string, required — ERC-7579 webAuthn validator contract version
            - `locator` string, required — Unique identifier for locating this passkey signer
            - `scopes` unknown[] — Permission scopes granted to this delegated signer
              - …
            - `expiresAt` string — ISO timestamp of when the delegated signer expires
            - `chains` object — Per-chain configuration for the delegated signer
          - object — Configuration for an email signer
            - `type` 'email', required — Identifier for email signer type
            - `email` string, required — The email address for the signer
            - `locator` string, required — The locator of the signer
            - `address` union, required — The address of the signer
              - …
            - `scopes` unknown[] — Permission scopes granted to this delegated signer
              - …
            - `expiresAt` string — ISO timestamp of when the delegated signer expires
            - `chains` object — Per-chain configuration for the delegated signer
          - object — Configuration for a phone signer
            - `type` 'phone', required — Identifier for phone signer type
            - `phone` string, required — The phone number for the signer in E164 format
            - `locator` string, required — The locator of the signer
            - `address` union, required — The address of the signer
              - …
            - `scopes` unknown[] — Permission scopes granted to this delegated signer
              - …
            - `expiresAt` string — ISO timestamp of when the delegated signer expires
            - `chains` object — Per-chain configuration for the delegated signer
          - object — Configuration for a device signer
            - `type` 'device', required — Identifier for device signer type
            - `publicKey` object, required — The p256 public key of the device signer
              - …
            - `locator` string, required — The locator of the signer
            - `name` string — Optional human-readable name for the device signer
            - `scopes` unknown[] — Permission scopes granted to this delegated signer
              - …
            - `expiresAt` string — ISO timestamp of when the delegated signer expires
            - `chains` object — Per-chain configuration for the delegated signer
    - `address` string, required — The onchain address of the wallet
    - `owner` string — The user that owns this wallet in format <locatorType>:<value>
    - `createdAt` union — ISO timestamp of when the wallet was created
      - number — ISO timestamp when the signature was created
      - string
    - `alias` string — The wallet alias
  - object
    - `chainType` 'solana', required — The blockchain type of the wallet
    - `type` 'smart' | 'mpc', required — The wallet type (smart or mpc)
    - `config` object — Solana wallet type specific configuration settings
      - `adminSigner` union, required
        - object — Configuration for an external wallet signer
          - `type` 'external-wallet', required — Identifier for external wallet signer type
          - `address` string, required — The blockchain address of the external wallet
          - `locator` string, required — The locator of the signer
        - object — Configuration for a server signer
          - `type` 'server', required — Identifier for server signer type
          - `address` string, required — The blockchain address of the server signer
          - `locator` string, required — The locator of the signer
        - object — Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access.
          - `type` 'api-key', required — Identifier for API key signer type
          - `address` union, required — The blockchain address of the custodial signer
            - string — The recipient address for this transaction call
            - string — The Solana address of the signer
            - string
          - `locator` string, required — The locator of the signer
        - object — Configuration for an email signer
          - `type` 'email', required — Identifier for email signer type
          - `email` string, required — The email address for the signer
          - `locator` string, required — The locator of the signer
          - `address` union, required — The address of the signer
            - string — The recipient address for this transaction call
            - string
        - object — Configuration for a phone signer
          - `type` 'phone', required — Identifier for phone signer type
          - `phone` string, required — The phone number for the signer in E164 format
          - `locator` string, required — The locator of the signer
          - `address` union, required — The address of the signer
            - string — The recipient address for this transaction call
            - string
        - object — Quorum (m-of-n multisig) admin signer
          - `type` 'quorum', required
          - `threshold` integer, required
          - `locator` string, required — The locator of the quorum signer (read-only, derived from threshold + members)
          - `signers` union[], required
            - union
              - …
      - `delegatedSigners` union[] — Optional array of additional signers for the wallet
        - union
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'passkey', required — Identifier for the Passkey signer type
            - `id` string, required — Credential ID from the WebAuthn registration response
            - `name` string, required — Human-readable name for the passkey
            - `publicKey` object, required — The public key coordinates from the WebAuthn credential
              - …
            - `validatorContractVersion` string, required — ERC-7579 webAuthn validator contract version
            - `locator` string, required — Unique identifier for locating this passkey signer
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'api-key', required — Identifier for API key signer type
            - `address` union, required — The blockchain address of the custodial signer
              - …
            - `locator` string, required — The locator of the signer
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'external-wallet', required — Identifier for external wallet signer type
            - `address` string, required — The blockchain address of the external wallet
            - `locator` string, required — The locator of the signer
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'server', required — Identifier for server signer type
            - `address` string, required — The blockchain address of the server signer
            - `locator` string, required — The locator of the signer
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'email', required — Identifier for email signer type
            - `email` string, required — The email address for the signer
            - `locator` string, required — The locator of the signer
            - `address` union, required — The address of the signer
              - …
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'phone', required — Identifier for phone signer type
            - `phone` string, required — The phone number for the signer in E164 format
            - `locator` string, required — The locator of the signer
            - `address` union, required — The address of the signer
              - …
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'device', required — Identifier for device signer type
            - `publicKey` object, required — The p256 public key of the device signer
              - …
            - `locator` string, required — The locator of the signer
            - `name` string — Optional human-readable name for the device signer
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
    - `address` string, required — The onchain address of the wallet
    - `owner` string — The user that owns this wallet in format <locatorType>:<value>
    - `createdAt` union — ISO timestamp of when the wallet was created
      - number — ISO timestamp when the signature was created
      - string
    - `alias` string — The wallet alias
  - object
    - `chainType` 'aptos', required — The blockchain type of the wallet
    - `type` 'smart' | 'mpc', required — The wallet type (smart or mpc)
    - `config` unknown
    - `address` string, required — The onchain address of the wallet
    - `owner` string — The user that owns this wallet in format <locatorType>:<value>
    - `createdAt` union — ISO timestamp of when the wallet was created
      - number — ISO timestamp when the signature was created
      - string
    - `alias` string — The wallet alias
  - object
    - `chainType` 'sui', required — The blockchain type of the wallet
    - `type` 'smart' | 'mpc', required — The wallet type (smart or mpc)
    - `config` unknown
    - `address` string, required — The onchain address of the wallet
    - `owner` string — The user that owns this wallet in format <locatorType>:<value>
    - `createdAt` union — ISO timestamp of when the wallet was created
      - number — ISO timestamp when the signature was created
      - string
    - `alias` string — The wallet alias
  - object
    - `chainType` 'stellar', required — The blockchain type of the wallet
    - `type` 'smart' | 'mpc', required — The wallet type (smart or mpc)
    - `config` object — Stellar wallet type specific configuration settings
      - `adminSigner` union, required
        - object — Configuration for an external wallet signer
          - `type` 'external-wallet', required — Identifier for external wallet signer type
          - `address` string, required — The blockchain address of the external wallet
          - `locator` string, required — The locator of the signer
        - object — Configuration for a server signer
          - `type` 'server', required — Identifier for server signer type
          - `address` string, required — The blockchain address of the server signer
          - `locator` string, required — The locator of the signer
        - object — Configuration for an email signer
          - `type` 'email', required — Identifier for email signer type
          - `email` string, required — The email address for the signer
          - `locator` string, required — The locator of the signer
          - `address` union, required — The address of the signer
            - string — The recipient address for this transaction call
            - string
        - object — Configuration for a phone signer
          - `type` 'phone', required — Identifier for phone signer type
          - `phone` string, required — The phone number for the signer in E164 format
          - `locator` string, required — The locator of the signer
          - `address` union, required — The address of the signer
            - string — The recipient address for this transaction call
            - string
        - object — Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access.
          - `type` 'api-key', required — Identifier for API key signer type
          - `address` union, required — The blockchain address of the custodial signer
            - string — The recipient address for this transaction call
            - string — The Solana address of the signer
            - string
          - `locator` string, required — The locator of the signer
        - object — Quorum (m-of-n multisig) admin signer
          - `type` 'quorum', required
          - `threshold` integer, required
          - `locator` string, required — The locator of the quorum signer (read-only, derived from threshold + members)
          - `signers` union[], required
            - union
              - …
      - `delegatedSigners` union[] — Optional array of additional signers for the wallet
        - union
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'passkey', required — Identifier for the Passkey signer type
            - `id` string, required — Credential ID from the WebAuthn registration response
            - `name` string, required — Human-readable name for the passkey
            - `publicKey` object, required — The public key coordinates from the WebAuthn credential
              - …
            - `validatorContractVersion` string, required — ERC-7579 webAuthn validator contract version
            - `locator` string, required — Unique identifier for locating this passkey signer
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'api-key', required — Identifier for API key signer type
            - `address` union, required — The blockchain address of the custodial signer
              - …
            - `locator` string, required — The locator of the signer
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'external-wallet', required — Identifier for external wallet signer type
            - `address` string, required — The blockchain address of the external wallet
            - `locator` string, required — The locator of the signer
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'server', required — Identifier for server signer type
            - `address` string, required — The blockchain address of the server signer
            - `locator` string, required — The locator of the signer
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'email', required — Identifier for email signer type
            - `email` string, required — The email address for the signer
            - `locator` string, required — The locator of the signer
            - `address` union, required — The address of the signer
              - …
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'phone', required — Identifier for phone signer type
            - `phone` string, required — The phone number for the signer in E164 format
            - `locator` string, required — The locator of the signer
            - `address` union, required — The address of the signer
              - …
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
          - object — Complete delegated signer response including the signer and authorization transaction
            - `type` 'device', required — Identifier for device signer type
            - `publicKey` object, required — The p256 public key of the device signer
              - …
            - `locator` string, required — The locator of the signer
            - `name` string — Optional human-readable name for the device signer
            - `scopes` object[] — Optional array of scopes restricting the signer's capabilities
              - …
            - `expiresAt` union — The expiry date of the signer in ISO 8601 format
              - …
            - `transaction` object — The transaction for the signer
              - …
      - `plugins` string[] — Optional array of plugins used for the wallet
    - `address` string, required — The onchain address of the wallet
    - `owner` string — The user that owns this wallet in format <locatorType>:<value>
    - `createdAt` union — ISO timestamp of when the wallet was created
      - number — ISO timestamp when the signature was created
      - string
    - `alias` string — The wallet alias

## Other responses

- `400` — Returns an error if a wallet with the specified creation seed and signer configuration already exists

---

[API](https://skmtc.net/crossmint/apis/onramp.md) · [All operations](https://skmtc.net/crossmint/apis/onramp/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/crossmint/onramp/versions/e2143d192130/schema)
