> ## Documentation Index
> Fetch the complete documentation index at: https://docs.etherfuse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Register wallet

> Registers a crypto wallet for the authenticated organization. If the wallet was
previously soft-deleted, it is restored.

Optionally claims ownership of the wallet on behalf of the organization. When an
approved (KYB'd) organization claims ownership, that wallet is treated as compliant
without requiring individual KYC verification.

Idempotent — registering an already-active wallet returns the existing record.



## OpenAPI

````yaml /openapi.json post /ramp/wallet
openapi: 3.1.0
info:
  title: Etherfuse FX API
  description: Partner-facing ramp API for onramps, offramps, swaps, and KYC.
  license:
    name: Proprietary
  version: 1.0.0
servers:
  - url: https://api.sand.etherfuse.com
    description: Sandbox
security:
  - ApiKeyAuth: []
tags:
  - name: Authentication
    description: >-
      Partner JWT authentication — exchange a JWT for an access token, or launch
      a user into the app.
  - name: Lookup
    description: >-
      Public reference data: exchange rates, stablebonds, bond costs, country
      codes.
  - name: Assets
    description: Rampable stablecoins and stablebonds available per blockchain.
  - name: Onboarding
    description: Hosted and programmatic customer onboarding.
  - name: Agreements
    description: Legal agreement acceptance during onboarding.
  - name: Bank Accounts
    description: Register and retrieve customer bank accounts.
  - name: Quotes
    description: Price quotes for onramps, offramps, and swaps.
  - name: Orders
    description: Create, track, and manage ramp orders.
  - name: Swaps
    description: Crypto-to-crypto swaps.
  - name: Sponsored
    description: Token approvals for sponsored (gasless) offramps.
  - name: Customers
    description: Customer (child-organization) records.
  - name: Wallets
    description: Register and manage customer wallets.
  - name: KYC
    description: Submit and check customer KYC status.
  - name: Webhooks
    description: Event notification subscriptions.
  - name: Organizations
    description: Organization identity, child orgs, and partner fees.
paths:
  /ramp/wallet:
    post:
      tags:
        - Wallets
      summary: Register wallet
      description: >-
        Registers a crypto wallet for the authenticated organization. If the
        wallet was

        previously soft-deleted, it is restored.


        Optionally claims ownership of the wallet on behalf of the organization.
        When an

        approved (KYB'd) organization claims ownership, that wallet is treated
        as compliant

        without requiring individual KYC verification.


        Idempotent — registering an already-active wallet returns the existing
        record.
      operationId: register_wallet
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterWalletRequest'
        required: true
      responses:
        '200':
          description: The registered wallet
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Wallet'
        '404':
          description: Organization not found
components:
  schemas:
    RegisterWalletRequest:
      description: >-
        Request body for registering a wallet. Two mutually-exclusive shapes:
        bring-your-own (external): provide `publicKey` and `blockchain`; or
        embedded (non-custodial): provide `walletId` and a `signer` with the
        owner's P-256 public key as compressed SEC1 hex (`signerPublicKey`), PEM
        (`signerPublicKeyPem`), or JWK (`signerPublicKeyJwk`). Supply exactly
        one key encoding. Supplying both external and embedded fields is
        rejected.
      oneOf:
        - type: object
          title: Bring-your-own wallet
          required:
            - publicKey
            - blockchain
          properties:
            blockchain:
              type: string
              description: Target blockchain.
              example: solana
            claimOwnership:
              type: boolean
              description: >-
                Claim org ownership of the wallet for compliance attribution.
                Defaults to `false`.
            publicKey:
              type: string
              description: Wallet public key / address.
        - type: object
          title: Embedded wallet
          required:
            - walletId
            - signer
          properties:
            walletId:
              type: string
              format: uuid
              description: Idempotency key supplied by the caller; becomes the wallet id.
            signer:
              type: object
              description: >-
                Owner P-256 public key. Provide exactly one of `signerPublicKey`
                (compressed SEC1 hex), `signerPublicKeyPem` (SPKI PEM), or
                `signerPublicKeyJwk` (EC JWK with `crv: P-256`).
              properties:
                signerPublicKey:
                  type: string
                  description: >-
                    Owner's compressed SEC1 P-256 public key (hex). The only key
                    that can authorize transactions for this wallet.
                signerPublicKeyPem:
                  type: string
                  description: >-
                    Owner's P-256 public key as SPKI PEM (`-----BEGIN PUBLIC
                    KEY-----`).
                signerPublicKeyJwk:
                  type: object
                  description: >-
                    Owner's P-256 public key as an EC JWK (`kty: EC`, `crv:
                    P-256`).
      example:
        walletId: 1b6e98a2-7c3d-4e5f-9a0b-1c2d3e4f5a6b
        signer:
          signerPublicKeyPem: |-
            -----BEGIN PUBLIC KEY-----
            MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...
            -----END PUBLIC KEY-----
    Wallet:
      type: object
      required:
        - walletId
        - customerId
        - createdAt
        - updatedAt
        - publicKey
        - blockchain
      properties:
        blockchain:
          $ref: '#/components/schemas/Blockchain'
          description: Blockchain the wallet is on.
        claimedOwnership:
          type:
            - boolean
            - 'null'
          description: >-
            Whether the wallet has active claimed ownership by the organization.
            When `true`

            and the organization is approved, the wallet is treated as compliant
            without

            requiring individual KYC. Only present when claimed ownership has
            been set.
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the wallet was created.
        customerId:
          type: string
          format: uuid
          description: ID of the customer who owns this wallet.
        deletedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: Timestamp when the wallet was deleted (if applicable).
        displayName:
          type:
            - string
            - 'null'
          description: Display name for the wallet.
        kycOnChain:
          type:
            - boolean
            - 'null'
          description: >-
            Whether KYC is marked on-chain for the wallet. Only present for
            Solana wallets;

            for other blockchains this field is omitted as on-chain KYC marking
            does not apply.
        kycStatus:
          type:
            - string
            - 'null'
          description: >-
            Current KYC verification status for the wallet. Only present for
            individual wallet

            calls. The `approved_chain_deploying` status indicates the user is
            approved but

            waiting for on-chain marking (Solana only).
        publicKey:
          type: string
          description: Public key / address of the wallet.
        signerPublicKey:
          type:
            - string
            - 'null'
          description: >-
            For embedded (non-custodial) wallets, the compressed SEC1 P-256
            public key of the owner key that authorizes transactions. Absent for
            bring-your-own wallets.
        updatedAt:
          type: string
          format: date-time
          description: Timestamp when the wallet was last updated.
        walletId:
          type: string
          format: uuid
          description: Unique identifier for the wallet.
      example:
        blockchain: stellar
        claimedOwnership: true
        createdAt: '2026-05-01T14:30:00Z'
        customerId: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        kycStatus: approved
        publicKey: GDUKMGUGD3V6VXTU2RLAUM7A2FABLMHCPWTMDHKP7HHJ6FCZKEY4PVWL
        updatedAt: '2026-05-02T09:15:00Z'
        walletId: c3d4e5f6-a7b8-9012-cdef-123456789012
    Blockchain:
      type: string
      description: |-
        Canonical blockchain enum for API serialization.
        Use this type for JSON APIs and WebSocket messages.
        For database storage, convert to `BlockchainType`.
      enum:
        - stellar
        - solana
        - base
        - polygon
        - monad
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: API key sent in the Authorization header.

````