> ## Documentation Index
> Fetch the complete documentation index at: https://documentacao.credicarro.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Enviar documento

> Envia um documento do comprador, do vendedor ou da loja em Base64 (até 10 MiB decodificado; PDF, JPG/JPEG ou PNG).
Aceito quando a etapa ativa do participante for `ENVIO_DOCUMENTOS` (6) com a proposta aprovada, ou
`CORRECAO_DOCUMENTOS` (7) para reenviar um tipo atualmente recusado (`INVALIDO`). O header `Idempotency-Key` é obrigatório.


Envia **um** documento do comprador, do vendedor ou da loja, em Base64. Aceito quando a etapa ativa do participante for `ENVIO_DOCUMENTOS` (com a proposta aprovada) ou `CORRECAO_DOCUMENTOS` (só para tipos com status `INVALIDO`). Retorna `204 No Content`.

**Exemplo:**

```json theme={null}
{
  "participante": "COMPRADOR",
  "tipoDocumento": 1,
  "nomeArquivo": "cnh-comprador.pdf",
  "conteudoBase64": "JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK..."
}
```

> [!WARNING]
>
> O header `Idempotency-Key` é **obrigatório**. Use a mesma chave nas retentativas do mesmo envio.

> [!TIP]
>
> PDF, JPG/JPEG ou PNG, até 10 MiB decodificado, Base64 puro (sem prefixo `data:`).

> **[Guia de envio de documentos](https://documentacao.credicarro.com.br/pages/guides/document-upload.md)**
>
> Tipos por participante, exemplo completo e o fluxo de correção.


## OpenAPI

````yaml POST /v2/proposal/{propostaId}/document
openapi: 3.1.0
info:
  title: API Credicarro
  description: API para gerenciamento de cobranças e pagamentos usando o Credicarro.
  version: 1.0.0
servers:
  - url: https://api.staging.credicarro.com.br/integration
    description: Servidor para o ambiente de staging
  - url: https://api.credicarro.com.br/integration
    description: Servidor para o ambiente de produção
security: []
paths:
  /v2/proposal/{propostaId}/document:
    post:
      tags:
        - Proposta
      summary: Enviar documento de participante
      description: >
        Envia um documento do comprador, do vendedor ou da loja em Base64 (até
        10 MiB decodificado; PDF, JPG/JPEG ou PNG).

        Aceito quando a etapa ativa do participante for `ENVIO_DOCUMENTOS` (6)
        com a proposta aprovada, ou

        `CORRECAO_DOCUMENTOS` (7) para reenviar um tipo atualmente recusado
        (`INVALIDO`). O header `Idempotency-Key` é obrigatório.
      parameters:
        - $ref: '#/components/parameters/ProposalId'
        - name: Idempotency-Key
          in: header
          required: true
          description: >-
            Chave única por envio (1 a 200 caracteres). Com a mesma chave e o
            mesmo conteúdo, um envio bem-sucedido nas últimas 24 horas não é
            processado de novo.
          schema:
            type: string
            example: doc-7f3c2a10-comprador-cnh
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - participante
                - tipoDocumento
                - nomeArquivo
                - conteudoBase64
              additionalProperties: false
              properties:
                participante:
                  type: string
                  description: Participante dono do documento.
                  enum:
                    - COMPRADOR
                    - VENDEDOR
                    - LOJA
                  example: COMPRADOR
                tipoDocumento:
                  type: integer
                  format: int32
                  description: >
                    Código do tipo de documento. Tipos aceitos por participante:
                      - COMPRADOR: 1, 4, 5, 6, 7, 9, 57
                      - VENDEDOR: 1, 2, 3, 5, 6, 7, 8, 9, 11
                      - LOJA: 6, 8

                    Códigos: 1 = CNH, 2 = CPF, 3 = RG, 4 = Comprovante de renda,
                    5 = Comprovante de residência,

                    6 = Documento do veículo, 7 = CNH digital, 8 = Laudo ECV, 9
                    = Laudo de vistoria, 11 = Cartão CNPJ, 57 = ATPV.
                  example: 1
                nomeArquivo:
                  type: string
                  maxLength: 255
                  description: >-
                    Nome do arquivo com extensão `.pdf`, `.jpg`, `.jpeg` ou
                    `.png`, sem caminho. A extensão precisa corresponder ao
                    conteúdo real do arquivo.
                  example: cnh-comprador.pdf
                conteudoBase64:
                  type: string
                  description: >-
                    Conteúdo do arquivo em Base64 puro (sem prefixo `data:`),
                    até 10 MiB depois de decodificado.
                  example: JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK...
      responses:
        '204':
          description: Documento recebido. A resposta não tem corpo.
          content:
            text/plain:
              schema:
                type: string
                description: Resposta sem corpo
              example: No Content
        '400':
          description: Erro na requisição
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          $ref: '#/components/responses/IntegrationInactive'
        '404':
          description: Proposta não encontrada para este parceiro
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '409':
          description: >-
            Idempotency-Key reutilizada com outro conteúdo
            (`Idempotency.KeyConflict`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '422':
          description: >-
            Regra não atendida — `Document.InvalidProposalStage`,
            `Document.NotPendingCorrection`, `Document.InvalidContent`,
            `Document.InvalidProposalModality` ou
            `Proposal.Access.NotIntegrationV2`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '502':
          description: >-
            Falha ao armazenar o documento (`Document.UploadFailed`). Repita com
            a mesma Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - bearerAuth: []
components:
  parameters:
    ProposalId:
      name: propostaId
      in: path
      required: true
      description: Identificador único da proposta (UUID) retornado na criação da proposta
      schema:
        type: string
        format: uuid
        example: bea8d060-f93d-48eb-b6c4-45f64483cdd9
  schemas:
    ProblemDetails:
      type: object
      properties:
        tipo:
          type: string
          description: Tipo de problema encontrado
          example: Validation.Cpf.Invalid
        titulo:
          type: string
          description: Título do erro
          example: Requisição inválida
        status:
          type: integer
          format: int32
          description: Status Code do erro
          example: 400
        detalhe:
          type: string
          description: Descrição do erro
          example: O CPF informado em 'cpf' é inválido.
        campo:
          type: string
          nullable: true
          description: Campo da requisição relacionado ao erro, quando houver
          example: cpf
        erros:
          type: array
          description: >-
            Lista de erros. Presente só quando o JSON enviado está malformado ou
            tem um valor de tipo errado.
          items:
            type: object
            properties:
              codigo:
                type: string
                description: Código estável do erro
                example: Validation.InvalidFormat
              mensagem:
                type: string
                description: Mensagem em português
                example: O valor informado para 'valorVeiculo' não é um número válido.
              campo:
                type: string
                nullable: true
                description: Campo inválido, quando houver
                example: cpf
      additionalProperties: false
  responses:
    IntegrationInactive:
      description: >-
        Integração do parceiro inativa ou não encontrada
        (`Integration.Access.Inactive`,
        `Integration.Access.OrganizationNotFound`)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Cabeçalho de autenticação Bearer no formato `Bearer <token>` onde
        `<token>` é seu TOKEN de autenticação

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.