> ## 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 a wallet for a child org customer

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

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

This endpoint is idempotent — registering an already-active wallet returns the existing record.




## OpenAPI

````yaml /openapi.yaml post /ramp/customer/{customer_id}/wallet
openapi: 3.1.0
info:
  title: FX API
  version: 1.0.0
  description: >
    API for managing FX operations including onboarding, quotes, orders, and
    customer management.

    This API provides endpoints for managing customers, bank accounts, crypto
    wallets, orders, and webhooks.
servers:
  - url: https://api.etherfuse.com
    description: Production API
  - url: https://api.sand.etherfuse.com
    description: Sandbox API (for testing)
security: []
tags:
  - name: Lookup
    description: Public endpoints for looking up stablebond and exchange rate data
  - name: Assets
    description: Get available assets for ramping
  - name: Onboarding
    description: Customer onboarding and KYC
  - name: Bank Accounts
    description: Manage customer bank accounts
  - name: Agreements
    description: Handle customer agreements and consents
  - name: Quotes
    description: Get quotes for conversions
  - name: Orders
    description: Create and manage orders
  - name: Swaps
    description: Create and manage swaps
  - name: Customers
    description: Manage customers
  - name: Crypto Wallets
    description: Manage crypto wallets
  - name: Webhooks
    description: Manage webhook subscriptions
  - name: Organizations
    description: Manage organizations and child organizations
paths:
  /ramp/customer/{customer_id}/wallet:
    post:
      tags:
        - Crypto Wallets
      summary: Register a wallet for a child org customer
      description: >
        Registers a crypto wallet for a customer that belongs to the caller's
        organization or a

        direct child organization. This mirrors `POST /ramp/wallet` but is
        scoped to a specific

        customer within the caller's org hierarchy.


        If the wallet was previously soft-deleted, it will be restored.
        Optionally claims ownership

        of the wallet on behalf of the customer's organization.


        This endpoint is idempotent — registering an already-active wallet
        returns the existing record.
      parameters:
        - name: customer_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            ID of the customer to register the wallet for. Must belong to the
            caller's org or a direct child org.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - publicKey
                - blockchain
              properties:
                publicKey:
                  type: string
                  description: The public key of the crypto wallet to register
                blockchain:
                  type: string
                  enum:
                    - solana
                    - stellar
                    - base
                    - polygon
                    - monad
                  description: Blockchain type for the wallet
                claimOwnership:
                  type: boolean
                  default: false
                  description: >-
                    If true, the customer's organization claims ownership of
                    this wallet. Combined with an approved org, this makes the
                    wallet compliant without individual KYC.
            example:
              publicKey: 9Qx7r...
              blockchain: solana
              claimOwnership: false
      responses:
        '200':
          description: Wallet registered successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Wallet'
        '400':
          description: >-
            Invalid public key format, invalid blockchain, or wallet already
            claimed by a different organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Customer not found or not within the caller's organization hierarchy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    Wallet:
      type: object
      properties:
        walletId:
          type: string
          format: uuid
          description: Unique identifier for the wallet
        customerId:
          type: string
          format: uuid
          description: ID of the customer who owns this wallet
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the wallet was created
        updatedAt:
          type: string
          format: date-time
          description: Timestamp when the wallet was last updated
        deletedAt:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when the wallet was deleted (if applicable)
        displayName:
          type: string
          nullable: true
          description: Display name for the wallet
        publicKey:
          type: string
          description: Public key of the wallet
        blockchain:
          type: string
          enum:
            - solana
            - stellar
            - base
            - polygon
            - monad
          description: Blockchain type
        isAuthenticated:
          type: boolean
          description: Whether the wallet is authenticated
        kycStatus:
          type: string
          nullable: true
          description: >-
            Current KYC verification status for the wallet. The
            `approved_chain_deploying` status indicates the user is approved but
            waiting for on-chain marking (Solana only).
          enum:
            - not_started
            - proposed
            - approved
            - approved_chain_deploying
            - rejected
        kycOnChain:
          type: boolean
          nullable: true
          description: >-
            Whether KYC is marked on-chain for the wallet. Only present for
            Solana wallets; for other blockchain types this field is omitted as
            on-chain KYC marking does not apply.
        claimedOwnership:
          type: boolean
          nullable: true
          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.
      example:
        walletId: 123e4567-e89b-12d3-a456-426614174000
        customerId: 123e4567-e89b-12d3-a456-426614174001
        createdAt: '2024-01-01T00:00:00Z'
        updatedAt: '2024-01-01T00:00:00Z'
        publicKey: 9Qx7r...
        blockchain: solana
        isAuthenticated: true
        kycStatus: approved
        kycOnChain: true
        claimedOwnership: true
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error message
      example:
        error: Invalid request parameters
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API key for authentication. Pass the key directly (e.g., `Authorization:
        your-api-key`). Do not use a `Bearer` prefix.

````