> ## Documentation Index
> Fetch the complete documentation index at: https://docs.3xpay.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload Documento Pessoal

> Faz upload de documentos pessoais da subconta (RG, CNH, Selfie)

## Upload de Documento Pessoal

Faz upload de documentos pessoais da subconta (RG, CNH, Selfie).

### Headers

<ParamField path="api_key" type="string" required>
  Chave de API da subconta
</ParamField>

<ParamField path="api_secret" type="string" required>
  Secret de API da subconta
</ParamField>

<ParamField path="Content-Type" type="string" required>
  multipart/form-data
</ParamField>

### Body (Form Data)

<ParamField path="documentType" type="string" required>
  Tipo do documento (RG\_FRONT, RG\_BACK, CNH\_FRONT, CNH\_BACK, SELFIE)
</ParamField>

<ParamField path="file" type="File" required>
  Arquivo JPG, JPEG, PNG, GIF, WEBP ou PDF (máximo 10MB)
</ParamField>

### Tipos de Documento Aceitos

<AccordionGroup>
  <Accordion title="RG_FRONT">
    RG Frente - Documento de identidade (lado da foto)
  </Accordion>

  <Accordion title="RG_BACK">
    RG Verso - Documento de identidade (lado dos dados)
  </Accordion>

  <Accordion title="CNH_FRONT">
    CNH Frente - Carteira de habilitação (lado da foto)
  </Accordion>

  <Accordion title="CNH_BACK">
    CNH Verso - Carteira de habilitação (lado dos dados)
  </Accordion>

  <Accordion title="SELFIE">
    Selfie do sócio para verificação facial
  </Accordion>
</AccordionGroup>

### Resposta de Sucesso (201)

```json theme={null}
{
  "status": "success",
  "message": "Documento enviado com sucesso.",
  "data": {
    "filename": "rg_frente.jpg",
    "document_type": "RG_FRONT",
    "document_format": "JPG"
  }
}
```

### Validações

* ✅ **Tamanho máximo**: 10MB
* ✅ **Tipo obrigatório**: Deve especificar o tipo do documento
* ✅ **Arquivo obrigatório**: Deve enviar um arquivo
* ✅ **Autenticação**: Usa credenciais da própria subconta

### Possíveis Erros

<AccordionGroup>
  <Accordion title="400 - Bad Request">
    ```json theme={null}
    {
      "message": "Tipo de documento inválido.",
      "statusCode": 400
    }
    ```
  </Accordion>

  <Accordion title="401 - Unauthorized">
    ```json theme={null}
    {
      "message": "Api Key não encontrada.",
      "statusCode": 401
    }
    ```
  </Accordion>

  <Accordion title="413 - Payload Too Large">
    ```json theme={null}
    {
      "message": "Arquivo muito grande. Máximo 10MB.",
      "statusCode": 413
    }
    ```
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml POST /sub-accounts/document
openapi: 3.0.1
info:
  title: 3X Pay Gateway
  description: >-
    Para autenticar as rotas dessa API são necessario ter em mãos a
    **api_secret** e **api_key** da sua conta. Este podem ser encontrados dentro
    do painel https://app.3xpay.co acessando a página de Configurações e
    clicando na opção de Credencias de API.
  version: 1.0.0
servers:
  - url: https://gateway.3xpay.co
security:
  - apiKeyAuth: []
    apiSecretAuth: []
tags:
  - name: Transações
    description: Operações relacionadas a transações financeiras
  - name: Webhooks
    description: Notificações de eventos da API
  - name: Balance
    description: Operações relacionadas ao saldo da conta
  - name: Sub-accounts
    description: Operações relacionadas a subcontas BaaS
  - name: MED Contest
    description: >-
      Endpoints server-to-server para responder a solicitações de MED (Mecanismo
      Especial de Devolução do Pix)
paths:
  /sub-accounts/document:
    post:
      tags:
        - Sub-accounts
      summary: Upload Documento Pessoal
      description: Faz upload de documentos pessoais da subconta (RG, CNH, Selfie)
      operationId: uploadPersonalDocument
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - documentType
                - file
              properties:
                documentType:
                  type: string
                  description: Tipo do documento
                  enum:
                    - RG_FRONT
                    - RG_BACK
                    - CNH_FRONT
                    - CNH_BACK
                    - SELFIE
                file:
                  type: string
                  format: binary
                  description: Arquivo do documento
      responses:
        '201':
          description: Documento enviado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadDocumentResponse'
components:
  schemas:
    UploadDocumentResponse:
      type: object
      properties:
        status:
          type: string
          description: Status da resposta
          example: success
        message:
          type: string
          description: Mensagem de resposta
          example: Documento enviado com sucesso.
        data:
          type: object
          properties:
            filename:
              type: string
              description: Nome do arquivo
              example: rg_frente.jpg
            document_type:
              type: string
              description: Tipo do documento
              example: RG_FRONT
            document_format:
              type: string
              description: Formato do documento
              example: JPG
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: api_key
    apiSecretAuth:
      type: apiKey
      in: header
      name: api_secret

````