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

# Create Customer Wallets

> Provisions one or more crypto wallets for a customer across supported chains and tokens.

<Note>
  Fin.com issued crypto wallets require pre-configuration. Contact support to learn more.
</Note>

Wallets start with a status of `PENDING`. They move to `ACTIVE` (or `INACTIVE`) asynchronously once the wallet address has been issued, so creation is not synchronous. Poll [Get Customer Wallets](/api-reference/crypto-orchestration/get-customer-wallets) to check on status.

Supported rails and currencies:

| Rail     | Currency |
| -------- | -------- |
| POLYGON  | USDC     |
| ETHEREUM | USDC     |
| SOLANA   | USDC     |

If any requested wallet (same `rail` + `currency` pair) already exists for the customer, the request fails with a `409` and lists the colliding pairs; none of the requested wallets are created.


## OpenAPI

````yaml POST /v2/customers/{customer_id}/wallets
openapi: 3.1.0
info:
  title: Fin.com API
  version: 1.0.0
  description: A simple API specificationFo
servers:
  - url: https://sandbox.api.fin.com
    description: Sandbox server
  - url: https://api.fin.com
    description: Production server
security: []
tags:
  - name: Authentication
    description: A modified OAuth 2.0 Client Credential Flow
  - name: Customers
    description: Customer management and document upload operations
  - name: Balances
    description: Retrieve wallet balance information
  - name: Catalogue
    description: |
      A set of endpoints to retrieve contextual data to assemble requests
      to fin.com's API
  - name: Beneficiaries
    description: Manage beneficiary accounts for payments and transfers
  - name: Transactions
    description: Transaction history and management for beneficiaries
  - name: Virtual Accounts
    description: Create and manage virtual accounts for USD to USDC conversions
  - name: Fees & FX Rates
    description: Retrieve fees and foreign exchange rates
paths:
  /v2/customers/{customer_id}/wallets:
    post:
      tags:
        - Customers
      summary: Create Customer Wallets
      description: >-
        Provisions one or more crypto wallets for a customer across supported
        chains and tokens.
      parameters:
        - name: customer_id
          in: path
          required: true
          schema:
            type: string
          example: 765d498e-a267-4154-9d2f-9e411a0b50dd
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - wallets
              properties:
                wallets:
                  type: array
                  minItems: 1
                  description: Wallets to provision, one entry per rail.
                  items:
                    type: object
                    required:
                      - rail
                      - currency
                    properties:
                      rail:
                        type: string
                        description: Blockchain network to provision the wallet(s) on.
                        example: SOLANA
                      currency:
                        type: array
                        minItems: 1
                        description: Token(s) to provision a wallet for on this rail.
                        items:
                          type: string
                        example:
                          - USDC
            example:
              wallets:
                - rail: SOLANA
                  currency:
                    - USDC
                - rail: ETHEREUM
                  currency:
                    - USDC
      responses:
        '200':
          description: >-
            Wallet creation request accepted for processing. Note the nested
            `data`: the outer envelope wraps a `message` plus the inner `data`
            array of wallets being provisioned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      message:
                        type: string
                        example: Request is being processed
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/CustomerWallet'
              example:
                data:
                  message: Request is being processed
                  data:
                    - id: b1e2c3d4-4d5e-6f70-8a90-1b2c3d4e5f60
                      rail: SOLANA
                      currency: USDC
                      status: PENDING
                    - id: d3a4e5f6-4d5e-6f70-8a90-1b2c3d4e5f62
                      rail: ETHEREUM
                      currency: USDC
                      status: PENDING
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '409':
          description: >-
            One or more of the requested wallets already exist for this
            customer.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: one or more wallets already exist for this customer
                  collisions:
                    type: array
                    items:
                      type: object
                      properties:
                        rail:
                          type: string
                          example: SOLANA
                        currency:
                          type: string
                          example: USDC
              example:
                message: one or more wallets already exist for this customer
                collisions:
                  - rail: SOLANA
                    currency: USDC
        '422':
          $ref: '#/components/responses/ValidationError'
      security:
        - bearerAuth: []
components:
  schemas:
    CustomerWallet:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique wallet identifier.
          example: 27dbc0f2-e5ae-444b-b4ab-0764252aedf6
        status:
          type: string
          enum:
            - PENDING
            - ACTIVE
            - INACTIVE
          description: >-
            Wallet provisioning status. Wallets start PENDING and move to ACTIVE
            (or INACTIVE) asynchronously once the wallet address has been
            issued; creation is not synchronous.
          example: ACTIVE
        currency:
          type: string
          description: Token held in this wallet.
          example: USDC
        rail:
          type: string
          description: Blockchain network for this wallet.
          example: ETHEREUM
        address:
          type: string
          nullable: true
          description: On-chain wallet address. Null until the wallet is provisioned.
          example: '0xc42a5f7083c7e8f1d9820c7660867277289cd998'
        balance:
          type: number
          description: Current wallet balance.
          example: 10.000001
  responses:
    AuthenticationError:
      description: Authentication failed due to invalid credentials
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Authentication failed
    ValidationError:
      description: Failed due to a formatting error.
      content:
        application/json:
          schema:
            type: object
            required:
              - message
            properties:
              message:
                type: string
              errors:
                type: array
                items:
                  type: object
                  additionalProperties:
                    type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Bearer token authentication. Obtain token from [Issue a
        Token](https://developer.fin.com/api-reference/authentication/issue-a-token)
        endpoint

````