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

> Faz upload de documentos empresariais da subconta (Comprovante de Endereço, CNPJ, Contrato Social)

## Upload de Documento Empresa

Faz upload de documentos da empresa (Contrato Social).

### 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 (PROOF\_OF\_RESIDENCE, CNPJ, SOCIAL\_CONTRACT)
</ParamField>

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

### Tipos de Documento Empresarial Aceitos

<AccordionGroup>
  <Accordion title="PROOF_OF_RESIDENCE">
    Comprovante de Endereço
  </Accordion>

  <Accordion title="CNPJ">
    CNPJ da empresa
  </Accordion>

  <Accordion title="SOCIAL_CONTRACT">
    Contrato Social da empresa
  </Accordion>
</AccordionGroup>

### Resposta de Sucesso (201)

```json theme={null}
{
  "status": "success",
  "message": "Documento da empresa enviado com sucesso.",
  "data": {
    "filename": "contrato-social.pdf",
    "document_type": "SOCIAL_CONTRACT",
    "document_format": "PDF"
  }
}
```

### 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/company
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/company:
    post:
      tags:
        - Sub-accounts
      summary: Upload Documento Empresa
      description: >-
        Faz upload de documentos empresariais da subconta (Comprovante de
        Endereço, CNPJ, Contrato Social)
      operationId: uploadCompanyDocument
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - documentType
                - file
              properties:
                documentType:
                  type: string
                  description: Tipo do documento
                  enum:
                    - PROOF_OF_RESIDENCE
                    - CNPJ
                    - SOCIAL_CONTRACT
                file:
                  type: string
                  format: binary
                  description: Arquivo do documento
      responses:
        '201':
          description: Documento da empresa 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

````