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

# Upload a customer document

> Upload a base64 document into the vault (off-host store + DB metadata). A correction after failed deposit-account KYC invalidates prior approval and returns the customer to ``incomplete`` for resubmission and re-review.



## OpenAPI

````yaml /api-reference/openapi.json post /partner/customers/{customer_id}/documents
openapi: 3.1.0
info:
  title: Element Pay Partner API
  description: >-
    Provider-neutral fiat ↔ crypto ramps for partners. Discover corridors,
    create a binding quote, accept it, and receive webhooks. African local fiat
    (mobile money and bank) is auto-routed by corridor.
  version: 1.0.0
servers:
  - url: https://sandbox.elementpay.net/api/v1
    description: Sandbox
security:
  - APIKeyHeader: []
tags:
  - name: partner
    description: >-
      Corridor discovery, indicative rates, binding quotes, and order acceptance
      (including account currency conversion).
    x-group: Partner
  - name: partner-customers
    description: >-
      Vault KYC: requirements, create, list, get/update, documents, and submit
      (pcus_*).
    x-group: Customers
  - name: partner-customer-accounts
    description: >-
      Customer accounts and funding: open/list/get rails, deposit instructions,
      stablecoin sends, and same-currency fiat book transfers.
    x-group: Customer accounts
paths:
  /partner/customers/{customer_id}/documents:
    post:
      tags:
        - partner-customers
      summary: Upload a customer document
      description: >-
        Upload a base64 document into the vault (off-host store + DB metadata).
        A correction after failed deposit-account KYC invalidates prior approval
        and returns the customer to ``incomplete`` for resubmission and
        re-review.
      operationId: >-
        partner_customer_upload_document_partner_customers__customer_id__documents_post
      parameters:
        - name: customer_id
          in: path
          required: true
          schema:
            type: string
            description: Public customer id returned on create
            examples:
              - pcus_a1b2c3d4e5f6
            title: Customer Id
            example: pcus_a1b2c3d4e5f6
          description: Public customer id returned on create
          example: pcus_a1b2c3d4e5f6
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PartnerCustomerDocumentUploadRequest'
            examples:
              default:
                summary: Identity document
                value:
                  category: identity
                  content_base64: >-
                    JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFI+PmVuZG9iagoyIDAgb2JqCjw8L1R5cGUvUGFnZXMvQ291bnQgMC9LaWRzW10+PmVuZG9iagp4cmVmCjAgMwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDA2OCAwMDAwMCBuIAp0cmFpbGVyCjw8L1NpemUgMy9Sb290IDEgMCBSPj4Kc3RhcnR4cmVmCjEyMQolJUVPRgo=
                  content_type: application/pdf
                  file_name: passport.pdf
            example:
              category: identity
              content_base64: >-
                JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFI+PmVuZG9iagoyIDAgb2JqCjw8L1R5cGUvUGFnZXMvQ291bnQgMC9LaWRzW10+PmVuZG9iagp4cmVmCjAgMwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDA2OCAwMDAwMCBuIAp0cmFpbGVyCjw8L1NpemUgMy9Sb290IDEgMCBSPj4Kc3RhcnR4cmVmCjEyMQolJUVPRgo=
              content_type: application/pdf
              file_name: passport.pdf
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                type: object
                required:
                  - status
                  - message
                properties:
                  status:
                    type: string
                    enum:
                      - error
                  message:
                    type: string
                  data:
                    type:
                      - object
                      - 'null'
              example:
                status: error
                message: Validation error
                data:
                  field: country
      security:
        - APIKeyHeader: []
components:
  schemas:
    PartnerCustomerDocumentUploadRequest:
      properties:
        category:
          type: string
          maxLength: 64
          minLength: 1
          title: Category
          description: Document key from requirements (e.g. identity, address).
          examples:
            - identity
          example: identity
        content_base64:
          type: string
          maxLength: 12000000
          minLength: 1
          title: Content Base64
          description: Base64-encoded file bytes (max ~8 MiB decoded).
          example: >-
            JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFI+PmVuZG9iagoyIDAgb2JqCjw8L1R5cGUvUGFnZXMvQ291bnQgMC9LaWRzW10+PmVuZG9iagp4cmVmCjAgMwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDA2OCAwMDAwMCBuIAp0cmFpbGVyCjw8L1NpemUgMy9Sb290IDEgMCBSPj4Kc3RhcnR4cmVmCjEyMQolJUVPRgo=
        content_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Content Type
          description: >-
            MIME type. Required for upload: image/jpeg, image/png, or
            application/pdf.
          examples:
            - image/jpeg
            - application/pdf
          example: application/pdf
        file_name:
          anyOf:
            - type: string
              maxLength: 128
            - type: 'null'
          title: File Name
          description: >-
            Optional original filename for the partner only; not stored in
            object keys.
          example: passport.pdf
      type: object
      required:
        - category
        - content_base64
      title: PartnerCustomerDocumentUploadRequest
      example:
        category: identity
        content_base64: >-
          JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFI+PmVuZG9iagoyIDAgb2JqCjw8L1R5cGUvUGFnZXMvQ291bnQgMC9LaWRzW10+PmVuZG9iagp4cmVmCjAgMwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDA2OCAwMDAwMCBuIAp0cmFpbGVyCjw8L1NpemUgMy9Sb290IDEgMCBSPj4Kc3RhcnR4cmVmCjEyMQolJUVPRgo=
        content_type: application/pdf
        file_name: passport.pdf
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key

````