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

# Emissão de contrato

## Geração do Contrato — Modalidade Leilão

Nesta etapa, o parceiro deve utilizar o endpoint de **geração de contrato** para originar a **Cédula de Crédito Bancário (CCB)** do **E-Consignado Trabalhador**, no contexto da **modalidade Leilão**.

***

## Pré-requisitos

* Aceite da proposta pelo trabalhador no aplicativo da CTPS;
* Trabalhador previamente cadastrado;
* Empregador previamente cadastrado;
* Consulta de dados do vínculo realizada com sucesso;
* Margem consignável disponível validada para o vínculo selecionado.

> **Importante:**\
> A geração do contrato **valida o valor da parcela** em relação à **margem consignável disponível**, conforme o resultado da última consulta de vínculo. Caso a consulta esteja em cache, será considerada a informação armazenada, com validade de **24 horas**.

***

## Regras de Negócio

* O contrato deve ser **gerado, assinado e enviado para averbação dentro da competência correspondente**;
  * Caso o envio para averbação ocorra fora da competência, será necessário:
    * Gerar um novo contrato;
    * Realizar nova assinatura;
    * Enviar novamente para averbação;
* O contrato gerado deve ser **obrigatoriamente assinado com biometria facial** do trabalhador;
* A assinatura deve ser enviada por meio do endpoint:
  * **POST** `/contrato/oferta-leilao/averbar-contrato`.

***

## Endpoint

**POST** `/contrato/oferta-leilao/gerar-contrato`

<Accordion title="Descrição dos campos da requisição">
  <ParamField path="numeroSolicitacao" type="string" required>
    Identificador da solicitação recebido no webhook de evento de novas solicitações de leilão.
  </ParamField>

  <ParamField path="valorLiberado" type="number">
    Valor líquido do crédito proposto para a solicitação do trabalhador. O valor da parcela será calculado pela BMP com base neste valor.
  </ParamField>

  <ParamField path="valorParcela" type="number">
    Valor da parcela proposta para a solicitação do trabalhador. O valor liberado será calculado pela BMP com base neste valor
  </ParamField>

  <warning>
    Deve ser informado apenas um dos campos: `valorLiberado` ou `valorParcela`. Caso nenhum ou ambos sejam enviados, a requisição será rejeitada
  </warning>

  <ParamField path="numeroParcelas" type="number" required>
    Quantidade de parcelas proposta para a solicitação do trabalhador.
  </ParamField>

  <ParamField path="valorTaxaMensal" type="number" required>
    Taxa de juros mensal aplicada para a operação.

    * Deve ser maior que 0.01 e menor que 4.98;
    * Deve ser menor ou igual a taxa de juros mensal informada no lance
  </ParamField>

  <ParamField path="valorSeguro" type="number">
    Valor do seguro aplicado na operação.
  </ParamField>

  <ParamField path="numeroApolice" type="string">
    Número da apólice do seguro da operação. Preenchimento obrigatório caso `valorSeguro` seja preenchido.
  </ParamField>

  <ParamField path="tipoContrato" type="string">
    Tipo do contrato utilizado para especificar o fundo da operação.
  </ParamField>

  <ParamField path="cpfAgenteCredito" type="string" required>
    CPF do agente de crédito responsável pela operação.
  </ParamField>

  <ParamField path="chavePIX" type="string">
    Chave PIX do cliente para pagamento do empréstimo. Pode ser CPF, e-mail, telefone ou chave aleatória.
  </ParamField>

  <Info>
    Apenas `chavePIX` **ou** `propostaContaPagamento` deve ser informado na requisição.
  </Info>

  <ParamField path="propostaContaPagamento" type="object" required>
    Dados da conta do cliente para pagamento.

    <ParamField path="tipoConta" type="number" required>
      1. Para conta poupança;
      2. Para conta corrente.
    </ParamField>

    <ParamField path="agencia" type="string" required>
      Número da agência.
    </ParamField>

    <ParamField path="agenciaDig" type="string" required>
      Dígito da agência.
    </ParamField>

    <ParamField path="conta" type="string" required>
      Número da conta.
    </ParamField>

    <ParamField path="contaDig" type="string" required>
      Dígito da conta.
    </ParamField>

    <ParamField path="numeroBanco" type="string" required>
      Número do banco.
    </ParamField>
  </ParamField>

  <ParamField path="garantias" type="object">
    Informações relacionadas às garantias da operação. Este objeto é opcional, então caso não informado, a operação será processada sem garantias. Caso informado, todos os seus campos são obrigatórios.

    <ParamField path="garantias.valorSaldoDisponivelGarantiaFgts" type="number" required>
      Saldo FGTS disponível. Valor até 10% do valor líquido do FGTS do vínculo vigente. Aplicável somente em demissão sem justa causa (inclusive indireta), culpa recíproca ou força maior.
    </ParamField>

    <ParamField path="garantias.valorMultaRescisoriaGarantiaFgts" type="number" required>
      Multa Rescisória associada ao FGTS. Valor - Até 100% da multa rescisória (equivalente a 40% do FGTS). Aplicável somente em demissão sem justa causa (inclusive indireta), culpa recíproca ou força maior.
    </ParamField>

    <ParamField path="garantias.percVerbaRescisoriaGarantia" type="number" required>
      Percentual das verbas rescisórias que será considerado como garantia. O percentual disponível de verbas rescisórias é informado na consulta de dados de vínculo e pode variar entre 0 e 35.
    </ParamField>
  </ParamField>
</Accordion>

<RequestExample>
  ```shellscript Exemplo de requisição theme={null}
  curl --location --request POST 'https://econsignadotrabalhador.moneyp.dev.br/contrato/oferta-leilao/gerar-contrato' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer {Token}' \
  --data '{
    "numeroSolicitacao": "30756591",
    "valorLiberado": 4500,
    "numeroParcelas": 24,
    "valorTaxaMensal": 2.4,
    "cpfAgenteCredito": "53153153124",
    "chavePIX": null
    "propostaContaPagamento": {
      "tipoConta": 1,
      "agencia": "0001",
      "agenciaDig": "8",
      "conta": "1234",
      "contaDig": "5",
      "numeroBanco": "274"
    },
    "garantias": {
      "valorSaldoDisponivelGarantiaFgts": 1000,
      "valorMultaRescisoriaGarantiaFgts": 400,
      "percVerbaRescisoriaGarantia": 20
    }
  }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
  	"codigoRequisicao": "9d95c8b1-26ed-43f4-b40e-c9d413abcd0f"
  }
  ```
</ResponseExample>

***

## Webhook de geração de CCB

Após a requisição de geração de contrato, a BMP origina a Cédula de Crédito Bancário (CCB) e envia um webhook contendo os dados do contrato gerado. Esse evento retorna, entre outras informações:

* Número da CCB;
* Código da proposta (utilizado para impressão da CCB e continuidade da formalização).

<AccordionGroup>
  <Accordion title="Webhook de geração de CCB">
    ```json theme={null}
    {
      "CodigoRequisicao": "13318a89-2e2a-4575-98b8-e5c3eaeb4d54",
      "Endpoint": "/oferta-leilao/gerar-contrato",
      "Payload": {
        "NumeroCCB": "5234034",
        "ValorCETAnual": 3.7624,
        "ValorCETMensal": 0.30825,
        "ValorEmprestimo": 1135.49,
        "ValorIOF": 24.49,
        "ValorParcela": 103.3,
        "ValorTaxaAnual": 0.12007,
        "ValorTaxaMensal": 0.01,
        "ValorSeguro": 0,
        "CodigoProposta": "5c83c565-ec06-44d8-ae27-74319f4d0318"
      }
    }
    ```
  </Accordion>

  <Accordion title="Descrição dos campos do webhook de geração de CCB">
    <ResponseField name="NumeroCCB" type="string">
      Número da CCB.
    </ResponseField>

    <ResponseField name="ValorCETAnual" type="number">
      Percentual da CET anual.
    </ResponseField>

    <ResponseField name="ValorCETMensal" type="number">
      Percentual da CET mensal.
    </ResponseField>

    <ResponseField name="ValorEmprestimo" type="number">
      Valor do empréstimo. Corresponde ao valor liberado + IOF + Seguro.
    </ResponseField>

    <ResponseField name="ValorIOF" type="number">
      Valor do IOF.
    </ResponseField>

    <ResponseField name="ValorParcela" type="number">
      Valor de parcela.
    </ResponseField>

    <ResponseField name="ValorTaxaAnual" type="number">
      Valor da taxa de juros anual.
    </ResponseField>

    <ResponseField name="ValorTaxaMensal" type="number">
      Valor da taxa de juros mensal.
    </ResponseField>

    <ResponseField name="ValorSeguro" type="number">
      Valor do seguro.
    </ResponseField>

    <ResponseField name="CodigoProposta" type="string">
      Código da proposta. Este código é utilizado para impressão do arquivo da CCB.
    </ResponseField>
  </Accordion>
</AccordionGroup>

***

## Comportamento Esperado

Após o envio da requisição:

* A BMP realizará a **originação da CCB**;
* O parceiro deverá **aguardar o callback de Geração de CCB**;
* O retorno assíncrono conterá as informações necessárias para:
  * Impressão da CCB;
  * Continuidade do fluxo de assinatura biométrica;
  * Envio para averbação.

***

## Considerações Técnicas

* A geração do contrato **não conclui a operação de crédito**;
* A **assinatura biométrica** e a **averbação** são etapas **obrigatórias** para liberação do crédito;
* Divergências de margem, dados cadastrais ou parâmetros da simulação podem resultar em **falha na geração do contrato**;
* Todo o acompanhamento do fluxo deve ser realizado por meio de **callbacks**.
