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

# Create a crypto payment customer wallet

> Registers a hosted customer wallet for an approved Travel Rule customer. The resulting customer wallet ID can be supplied as `customerWalletId` when creating a transient payment intent.

Customer wallet creation is available to eligible Circle Singapore (`CIRCLE_SG`) merchants. The customer must be `approved`.




## OpenAPI

````yaml openapi/payments.yaml post /v1/payments/customers/{customerId}/wallets
openapi: 3.0.2
info:
  version: ${version}
  title: Crypto Deposits API
  description: >
    The Circle Payments API allows you to take payments from your end users via
    traditional methods such as debit & credit cards and receive settlement in
    USDC.


    The Circle Payments API has been designed with any business or internet
    commerce in mind, not just crypto applications, and it's based on Circle's
    extensive experience processing millions of card payments since 2014.
servers:
  - url: https://api-sandbox.circle.com
  - url: https://api.circle.com
security: []
tags:
  - name: Payments
    description: Create, cancel, refund, and get updates on card payments.
  - name: Crypto Payment Intents
    description: Create and track intent for end user to pay via crypto.
  - name: Crypto Payment Customers
    description: >-
      Create and manage Travel Rule customers and customer wallets for crypto
      payment attribution.
  - name: Crypto Payment Refund Addresses
    description: Create refund address-book entries for crypto payment refunds.
paths:
  /v1/payments/customers/{customerId}/wallets:
    post:
      tags:
        - Crypto Payment Customers
      summary: Create a crypto payment customer wallet
      description: >
        Registers a hosted customer wallet for an approved Travel Rule customer.
        The resulting customer wallet ID can be supplied as `customerWalletId`
        when creating a transient payment intent.


        Customer wallet creation is available to eligible Circle Singapore
        (`CIRCLE_SG`) merchants. The customer must be `approved`.
      operationId: createPaymentCustomerWallet
      parameters:
        - name: customerId
          description: Customer identifier.
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentCustomerWalletCreationRequest'
      responses:
        '201':
          description: Customer wallet successfully created.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                title: CreatePaymentCustomerWalletResponse
                properties:
                  data:
                    $ref: '#/components/schemas/PaymentCustomerWallet'
              examples:
                hostedWallet:
                  value:
                    data:
                      id: 9b8a7d6c-5e4f-4321-9c8b-123456789abc
                      customerId: 7d4f71c1-7e2e-4a1d-9df3-3a4d8d6d5a11
                      chain: ETH
                      type: hosted
                      vaspId: 581b9b20-28e1-464d-a257-e408733d0857
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/NotAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - bearerAuth: []
components:
  schemas:
    PaymentCustomerWalletCreationRequest:
      type: object
      required:
        - type
        - chain
        - vaspId
      properties:
        type:
          $ref: '#/components/schemas/PaymentCustomerWalletType'
        chain:
          $ref: '#/components/schemas/Chain'
        address:
          type: string
          description: Optional customer wallet address.
          maxLength: 255
          example: '0x57414adbBbc4BBA36f1dE26b2dc1648b28ae7799'
        addressTag:
          description: >-
            Optional secondary address identifier. Only allowed when `address`
            is provided.
          allOf:
            - $ref: '#/components/schemas/AddressTag'
        vaspId:
          type: string
          format: uuid
          description: Hosted VASP identifier for the customer wallet.
          example: 581b9b20-28e1-464d-a257-e408733d0857
    PaymentCustomerWallet:
      type: object
      description: Customer wallet linked to a Travel Rule customer.
      required:
        - id
        - customerId
        - chain
        - type
      properties:
        id:
          $ref: '#/components/schemas/Id'
        customerId:
          type: string
          format: uuid
          description: Identifier of the customer this wallet belongs to.
          example: 7d4f71c1-7e2e-4a1d-9df3-3a4d8d6d5a11
        chain:
          $ref: '#/components/schemas/Chain'
        type:
          $ref: '#/components/schemas/PaymentCustomerWalletType'
        address:
          type: string
          description: Customer wallet address, when provided.
          example: '0x57414adbBbc4BBA36f1dE26b2dc1648b28ae7799'
        addressTag:
          $ref: '#/components/schemas/AddressTag'
        vaspId:
          type: string
          format: uuid
          description: Hosted VASP identifier for the customer wallet.
          example: 581b9b20-28e1-464d-a257-e408733d0857
    PaymentCustomerWalletType:
      type: string
      description: >-
        Customer wallet type. Hosted customer wallets are currently supported
        for API creation.
      enum:
        - hosted
      example: hosted
    Chain:
      type: string
      description: >
        A blockchain that a given currency is available on.


        **Note:** Arc (`ARC`) is only available in the sandbox environment
        (`api-sandbox.circle.com`).
      enum:
        - ALGO
        - APTOS
        - ARB
        - ARC
        - AVAX
        - BASE
        - BTC
        - CELO
        - CODEX
        - ETH
        - HBAR
        - HYPEREVM
        - INK
        - LINEA
        - NEAR
        - NOBLE
        - OP
        - PLUME
        - PAH
        - POLY
        - SEI
        - SOL
        - SONIC
        - SUI
        - UNI
        - WORLDCHAIN
        - XLAYER
        - XDC
        - XLM
        - XRP
        - ZKS
        - ZKSYNC
    AddressTag:
      type: string
      description: >-
        The secondary identifier for a blockchain address. An example of this is
        the memo field on the Stellar network, which can be text, id, or hash
        format.
      nullable: true
      example: '123456789'
    Id:
      type: string
      description: Unique system generated identifier for the entity.
      format: uuid
      example: b8627ae8-732b-4d25-b947-1df8f4007a29
  headers:
    XRequestId:
      description: >-
        Universally unique identifier (UUID v4) for the request. Helpful for
        identifying a request when communicating with Circle support.
      schema:
        type: string
        format: uuid
        example: 2adba88e-9d63-44bc-b975-9b6ae3440dde
  responses:
    BadRequest:
      description: The request cannot be processed due to a client error.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            title: BadRequest
            required:
              - code
              - message
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Something went wrong.
            example:
              code: 400
              message: Bad request.
          examples:
            response:
              value:
                code: 400
                message: Bad request.
    NotAuthorized:
      description: >-
        The request has not been applied because it lacks valid authentication
        credentials.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            title: NotAuthorized
            required:
              - code
              - message
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Something went wrong.
            example:
              code: 401
              message: Malformed authorization.
          examples:
            response:
              value:
                code: 401
                message: Malformed authorization.
    Forbidden:
      description: >-
        The request provides authentication, but the authenticated user does not
        possess sufficient permissions for accessing this resource.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            title: Forbidden
            required:
              - code
              - message
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Something went wrong.
            example:
              code: 3
              message: Forbidden
          examples:
            response:
              value:
                code: 3
                message: Forbidden
    NotFound:
      description: The specified resource was not found.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            title: NotFound
            required:
              - code
              - message
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Something went wrong.
            example:
              code: 404
              message: Not found.
          examples:
            response:
              value:
                code: 404
                message: Not found.
    Conflict:
      description: >-
        The request has not been applied because it comes in conflict with
        another request (such as re-using an idempotencyKey for a different
        request).
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            title: Conflict
            required:
              - code
              - message
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Something went wrong.
            example:
              code: 409
              message: Conflicts with another request.
          examples:
            response:
              value:
                code: 409
                message: Conflicts with another request.
    InternalServerError:
      description: Unexpected server error.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            title: InternalServerError
            required:
              - code
              - message
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Something went wrong.
            example:
              code: 500
              message: Internal server error.
          examples:
            response:
              value:
                code: 500
                message: Internal server error.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````