> ## 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 customer wallet

> Registers a crypto wallet for a customer that belongs to the caller's organization or a
direct child organization. Mirrors `POST /ramp/wallet` but scoped
to a specific customer within the caller's org hierarchy.

This endpoint only accepts **bring-your-own (external)** wallets (`publicKey` + `blockchain`). Embedded-wallet provisioning is not supported for customer wallets. Use `POST /ramp/wallet` for the organization instead.

If the wallet was previously soft-deleted, it is restored. Optionally claims ownership of
the wallet on behalf of the customer's organization.

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



## OpenAPI

````yaml /openapi.json post /ramp/customer/{customer_id}/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: 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/customer/{customer_id}/wallet:
    post:
      tags:
        - Wallets
      summary: Register customer wallet
      description: >-
        Registers a crypto wallet for a customer that belongs to the caller's
        organization or a

        direct child organization. Mirrors `POST /ramp/wallet` but scoped

        to a specific customer within the caller's org hierarchy.


        This endpoint only accepts **bring-your-own (external)** wallets
        (`publicKey` + `blockchain`). Embedded-wallet provisioning is not
        supported for customer wallets. Use `POST /ramp/wallet` for the
        organization instead.


        If the wallet was previously soft-deleted, it is restored. Optionally
        claims ownership of

        the wallet on behalf of the customer's organization.


        Idempotent: registering an already-active wallet returns the existing
        record.
      operationId: register_customer_wallet
      parameters:
        - name: customer_id
          in: path
          description: >-
            The customer (child org) ID. Must belong to the caller's
            organization or a direct child.
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterWalletExternal'
        required: true
      responses:
        '200':
          description: The registered wallet
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Wallet'
        '404':
          description: Customer not found
components:
  schemas:
    RegisterWalletExternal:
      type: object
      title: Bring-your-own wallet
      required:
        - publicKey
        - blockchain
      properties:
        publicKey:
          type: string
          description: Wallet public key / address.
        blockchain:
          $ref: '#/components/schemas/Blockchain'
          description: Target blockchain.
        claimOwnership:
          type: boolean
          description: >-
            Claim org ownership of the wallet for compliance attribution.
            Defaults to `false`.
      example:
        publicKey: GDUKMGUGD3V6VXTU2RLAUM7A2FABLMHCPWTMDHKP7HHJ6FCZKEY4PVWL
        blockchain: stellar
    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.

````