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

# Upload Document

> Upload customer documents using multipart/form-data. Files can be uploaded with arbitrary field names (e.g., poa, poi, passport, file1, etc.)

## Allowed File Types

* `PDF`
* `JPG` / `JPEG`
* `PNG`

<Note>
  Files should be uploaded as separate form fields with arbitrary names.
  You can use any field name for files (e.g., `passport`, `poa`, `poi`, `file1`, `document1`, etc.).
  The field name you use will be returned as the key in the response.
</Note>


## OpenAPI

````yaml POST /v1/customers/upload
openapi: 3.1.0
info:
  title: Fin.com API
  version: 1.0.0
  description: A simple API specification
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:
  /v1/customers/upload:
    post:
      tags:
        - Customers
      summary: Upload Document
      description: >-
        Upload customer documents using multipart/form-data. Files can be
        uploaded with arbitrary field names (e.g., poa, poi, passport, file1,
        etc.)
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                customer_id:
                  type: string
                  format: uuid
                  example: 55bd6b4e-c20a-4cc8-9535-91d5557a67d9
                passport:
                  type: string
                  format: binary
                poa:
                  type: string
                  format: binary
                poi:
                  type: string
                  format: binary
      responses:
        '200':
          description: Documents uploaded successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      files:
                        type: array
                        items:
                          type: object
                          additionalProperties:
                            type: string
                        example:
                          - passport: /CwW9PHhP_Germany-passport.jpg
                          - poa: /KVdLfqjR_germany-poa-green.jpg
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '422':
          $ref: '#/components/responses/ValidationError'
      security:
        - bearerAuth: []
components:
  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

````