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

# Criar proposta

> Cria uma proposta a partir de uma simulação feita com `cnpjLoja`. A simulação precisa pertencer ao parceiro e ter
sido feita em uma loja de integração vinculada a ele. O cliente precisa estar com o cadastro completo
(endereço, tipo de ocupação e renda).


Cria a proposta a partir da opção de simulação escolhida pelo cliente. A análise de crédito começa em seguida.

**Exemplo:**

```json theme={null}
{
  "cpf": "12345678909",
  "simulacaoId": "123e4567-e89b-12d3-a456-426614174000"
}
```

> [!TIP]
>
> Use um `id_simulacao` de uma simulação feita com `cnpjLoja`, e o cliente precisa estar com o cadastro completo (endereço, ocupação e renda). Senão, a API retorna `Simulation.Access.NotFromStore` ou `Customer.Account.Incomplete`.

> [!NOTE]
>
> Cada `id_simulacao` gera uma única proposta. Reutilizar um `simulacaoId` já usado retorna `422` com `Proposal.SimulationAlreadyActivated`; uma simulação expirada retorna `Proposal.SimulationAlreadyExpired`.

> [!TIP]
>
> Assim, um timeout não cria duas propostas. Veja [Erros e idempotência](https://documentacao.credicarro.com.br/pages/errors.md#reenvio-seguro-com-idempotency-key).

> [!NOTE]
>
> Acompanhe a proposta pelo [webhook de proposta](https://documentacao.credicarro.com.br/pages/v2/webhooks.md) ou pela [consulta](https://documentacao.credicarro.com.br/pages/v2/proposal/get.md).


## OpenAPI

````yaml POST /v2/proposal
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:
    post:
      tags:
        - Proposta
      summary: Criar uma nova proposta
      description: >
        Cria uma proposta a partir de uma simulação feita com `cnpjLoja`. A
        simulação precisa pertencer ao parceiro e ter

        sido feita em uma loja de integração vinculada a ele. O cliente precisa
        estar com o cadastro completo

        (endereço, tipo de ocupação e renda).
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - cpf
                - simulacaoId
              additionalProperties: false
              properties:
                cpf:
                  minLength: 11
                  type: string
                  description: >-
                    CPF do cliente, com ou sem pontuação (11 dígitos). Os
                    dígitos verificadores são validados.
                  example: '12345678909'
                simulacaoId:
                  type: string
                  format: uuid
                  description: >-
                    Identificador da simulação escolhida (retornado em
                    `id_simulacao`)
                  example: bea8d060-f93d-48eb-b6c4-45f64483cdd9
      responses:
        '201':
          description: Proposta criada com sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  id_proposta:
                    type: string
                    format: uuid
                    description: Identificador único da proposta
                    example: bea8d060-f93d-48eb-b6c4-45f64483cdd9
        '400':
          description: Erro na requisição
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          $ref: '#/components/responses/IntegrationInactive'
        '404':
          description: >-
            Cliente, simulação ou loja não encontrados para este parceiro
            (`Customer.Account.NotFound`, `Simulation.Access.NotFound`,
            `Store.Integration.NotFound`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '409':
          description: >-
            A Idempotency-Key já foi usada com outro conteúdo
            (`Proposal.IdempotencyKeyReused`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '422':
          description: >-
            Regra de negócio não atendida (`Customer.Account.Incomplete`,
            `Simulation.Access.NotFromStore`,
            `Store.Integration.Intermediation`,
            `Proposal.SimulationAlreadyExpired`,
            `Proposal.SimulationAlreadyActivated` ou
            `Proposal.BuyerAgeNotAllowed`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - bearerAuth: []
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      description: >
        Chave opcional (1 a 200 caracteres) para repetir a requisição com
        segurança. Reenviar a mesma chave com o mesmo

        conteúdo devolve o resultado original sem duplicar o registro;
        reutilizá-la com outro conteúdo retorna erro.
      schema:
        type: string
        maxLength: 200
        example: 6f1c9a2e-3b7d-4e2a-9c51-0d8f3a7b2e10
  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.