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

# Assign Deposit Customer Wallet

> Assigns or returns a deposit wallet for the specified blockchain engine on a deposit customer. If a wallet for that engine already exists, the existing wallet is returned.

<Info>
  **Note:** When using the production environment at [moonpay.hel.io](http://app.hel.io), set your API endpoint to `api.hel.io/v1`. For the development environment, use `api.dev.hel.io/v1`.
</Info>

## Authentication

This endpoint is **public** — it is not API-key authenticated. The `depositCustomerToken` in the path is the credential, so treat it as a secret and only expose it to the customer it belongs to.

## Behavior

* **Idempotent:** If the customer already has a wallet for the requested `blockchainEngineType`, the existing wallet is returned instead of creating a duplicate.
* **On-demand assignment:** Use this when a customer selects a network in your UI and you need to provision (or retrieve) the corresponding deposit address.
* **HYPERCORE compatibility:** Requesting `HYPERCORE` may return an existing EVM wallet that is marked as compatible with Hypercore.
* **Restricted engines:** Some engines (for example `TRON`) require your company account to have that engine enabled. Otherwise the request returns `400`.


## OpenAPI

````yaml POST /v1/deposit-customers/{depositCustomerToken}/wallets
openapi: 3.0.0
info:
  title: Helio Open API
  description: |-
    API schema and definitions for Helio API. <br/> 
          The API is using two types of Authentication, for dashboard endpoints we use <b>JSON Web Token (JWT)</b> that is generated by self custodial wallet signing a message from API.</br> 
          We also support authentication with <b>API Key and Secret</b> which can be generated on <a href='https://hel.io'>Helio dashboard</a>.
  version: 1.0.0
  contact: {}
servers:
  - description: Helio API (Mainnet)
    url: https://api.hel.io
  - description: Helio API (Devnet)
    url: https://api.dev.hel.io
security: []
tags:
  - name: Webhooks
  - name: Exports
  - name: Currencies
    description: >-
      Supported currencies endpoint, includes fiat and digital assets
      </br><i>Authentication: </i><b>None</b>
externalDocs:
  description: Helio product documentation
  url: https://docs.hel.io/
paths:
  /v1/deposit-customers/{depositCustomerToken}/wallets:
    post:
      tags:
        - Deposits
      summary: Assign Deposit Customer Wallet
      description: >-
        Assigns or returns a deposit wallet for the specified **blockchain
        engine** on a deposit customer. If a wallet for that engine already
        exists, the existing wallet is returned instead of creating a duplicate.


        Use this when a customer selects a network in your UI and you need to
        provision (or retrieve) the corresponding deposit address.


        **Authentication:** none (public). The deposit customer token in the
        path is the credential — keep it secret as you would an API key.
      operationId: DepositCustomersController_assignWalletForEngine
      parameters:
        - name: depositCustomerToken
          in: path
          required: true
          description: The token associated with the deposit customer.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssignDepositCustomerWallet'
            example:
              blockchainEngineType: SOL
      responses:
        '200':
          description: The assigned deposit wallet for the requested blockchain engine.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositWalletEnriched'
              examples:
                assignedWallet:
                  summary: Example assigned deposit wallet
                  value:
                    id: 6987afc15f2ed144a41ac8a3
                    publicKey: So11111111111111111111111111111111111111112
                    blockchainEngine:
                      id: 63b6b1200cfb4b3f6131f2b4
                      type: SOL
                    createdAt: '2026-02-07T21:33:53.427Z'
                    updatedAt: '2026-02-10T13:03:09.599Z'
        '400':
          description: >-
            The requested blockchain engine is not supported for this company,
            or wallet assignment failed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  statusCode:
                    type: number
        '403':
          description: >-
            The deposit customer is sanctioned, or the deposit creator is
            disabled.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  statusCode:
                    type: number
        '404':
          description: >-
            The deposit customer token is unknown, or the customer type does not
            support wallet assignment.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  statusCode:
                    type: number
      security: []
components:
  schemas:
    AssignDepositCustomerWallet:
      type: object
      required:
        - blockchainEngineType
      properties:
        blockchainEngineType:
          type: string
          description: The blockchain engine to assign a deposit wallet for.
          enum:
            - EVM
            - SOL
            - BTC
            - TRON
            - HYPERCORE
            - DOGE
            - TON
    DepositWalletEnriched:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the deposit wallet.
        publicKey:
          type: string
          description: The wallet address for this blockchain.
        blockchainEngine:
          $ref: '#/components/schemas/BlockchainEngine'
        createdAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the wallet was created.
        updatedAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the wallet was last updated.
      required:
        - id
        - publicKey
        - blockchainEngine
    BlockchainEngine:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - EVM
            - SOL
            - BTC
      required:
        - id
        - type

````