> ## 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 for Fin.com, a financial services platform that
    provides a range of banking and payment solutions for businesses and
    individuals. This API allows developers to integrate Fin.com's services into
    their applications, enabling functionalities such as customer management,
    transaction processing, and access to financial data.
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

````