> ## 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.

# Create a Customer for a Deposit

> Creates a new customer linked to a specific deposit using the depositId

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


## OpenAPI

````yaml POST /v1/deposit-customers/api-key
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/api-key:
    post:
      tags:
        - Deposits
      summary: Create a Customer for a Deposit
      description: Creates a new customer linked to a specific deposit using the depositId
      operationId: DepositController_createCustomer
      parameters:
        - name: apiKey
          required: true
          in: query
          description: >-
            Your API key can be generated on the Helio Dashboard’s settings
            page.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDepositCustomer'
      responses:
        '200':
          description: The deposit customer was created successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CreateDepositCustomer'
              examples:
                exportedPaymentsList:
                  summary: Example of a successful create deposit customer responsee
                  value:
                    id: 68f8c78f600865f76e7cc866
                    deposit: 68f25d8ebe91855f9fad444b
                    token: ba065c1b-9134-4a68-9bfc-104e5c1c7631
                    customerId: customerId
                    recipientPublicKeys:
                      - 7YancRyN3yp9s6G7YNwx9H93UqswoKFqF9GuNJPufyvW
                    defaultOnrampAmount: 30
                    disabled: false
                    depositWallets:
                      - id: 6985e16c78f93907a64eb29d
                        publicKey: '0x13d89374C9C2F8EdB747EE2f1D1675b05dB061eD'
                        blockchainEngine:
                          id: 63b6b1200cfb4b3f6131f2b2
                          type: EVM
                        createdAt: '2026-02-06T12:41:16.191Z'
                        updatedAt: '2026-02-10T13:03:09.672Z'
                      - id: 6987a95cd68cfcabec137e41
                        publicKey: bc1qm8xf2he4eze2g940hpnjwsamk2889mnn20mqz6
                        blockchainEngine:
                          id: 63da34127a40a721a6e0a21d
                          type: BTC
                        createdAt: '2026-02-07T21:06:36.965Z'
                        updatedAt: '2026-02-10T13:03:09.635Z'
                      - id: 6987afc15f2ed144a41ac8a3
                        publicKey: HJiZM17UozKV6JwrysPkZ2TMxLvpeamqJKCxKEzRqXD6
                        blockchainEngine:
                          id: 63b6b1200cfb4b3f6131f2b4
                          type: SOL
                        createdAt: '2026-02-07T21:33:53.427Z'
                        updatedAt: '2026-02-10T13:03:09.599Z'
                      - id: 6987ead22a792df6401ab268
                        publicKey: TAHgWAwvoY66pmpevaNzAEq1gh7feTKqVT
                        blockchainEngine:
                          id: 69807675403cca2d3e5582e1
                          type: TRON
                        createdAt: '2026-02-08T01:45:54.761Z'
                        updatedAt: '2026-02-10T13:03:09.709Z'
        '401':
          description: Provided API key has no access to the resource.
          content:
            application/json:
              examples:
                unauthorized:
                  summary: Invalid or missing API key
                  value:
                    message: Api key or token is invalid
                    code: 401
      security:
        - bearer: []
components:
  schemas:
    CreateDepositCustomer:
      type: object
      properties:
        customerId:
          type: string
          description: >-
            Merchant-defined unique identifier used to reference the customer in
            the merchant’s system.
        depositId:
          type: string
          description: Identifier of the deposit.
        recipientPublicKeys:
          type: array
          description: List of recipient public keys.
          minItems: 1
          maxItems: 1
          items:
            type: string
        defaultOnrampAmount:
          type: integer
          description: The default on-ramp amount to prefill for the customer.
        customerEmail:
          type: string
          description: >-
            Prefills the email field in the MoonPay on-ramp widget for the
            customer.
        additionalJSON:
          type: string
          description: Optional JSON string containing metadata.
        blockchainEngineTypes:
          type: array
          description: >-
            Optional list of blockchain engines to provision deposit wallets
            for. When omitted, wallets are created for all supported engines
            (SOL, BTC, EVM, TRON, HYPERCORE, DOGE). Use this to limit which
            deposit addresses are generated — for example, pass ["EVM", "BTC"]
            to skip SOL if you handle Solana deposits yourself.
          uniqueItems: true
          items:
            type: string
            enum:
              - SOL
              - BTC
              - EVM
              - TRON
              - HYPERCORE
              - DOGE
      required:
        - customerId
        - depositId
        - recipientPublicKeys
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Authentication using JWT token

````