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

> Este endpoint é responsável pela emissão do contrato de crédito consignado no modelo de oferta ativa, realizando a originação da Cédula de Crédito Bancário (CCB).

## Endpoint

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

### Regras de negócio

* 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;
* A geração do contrato realiza a **validação do 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**.

<AccordionGroup>
  <Accordion title="Descrição dos campos da requisição">
    <ParamField path="cpfTrabalhador" type="string" required>
      CPF do trabalhador.
    </ParamField>

    <ParamField path="matricula" type="string" required>
      Matrícula do trabalhador junto ao empregador.
    </ParamField>

    <ParamField path="codigoInscricaoEmpregador" type="number" required>
      Código do tipo de inscrição do empregador (1 - CNPJ, 2 - CPF).
    </ParamField>

    <ParamField path="numeroInscricaoEmpregador" type="string" required>
      Número de inscrição do empregador. Deve ser idêntico ao retornado na consulta de lista de vínculos.
    </ParamField>

    <ParamField path="valorLiberado" type="number">
      Valor líquido do crédito da operação. Quando informado, a BMP calculará o valor da parcela da operação com base no valor liberado e nas demais condições financeiras da requisição.
    </ParamField>

    <ParamField path="valorParcela" type="number">
      Valor de parcela da operação. Quando informado, a BMP calculará o valor liberado ao cliente com base no valor da parcela e nas demais condições financeiras da requisição.
    </ParamField>

    <Info>
      Apenas `valorLiberado` **ou** `valorParcela` deve ser informado na requisição. O envio simultâneo ou a ausência de ambos resultará em erro de validação.
    </Info>

    <ParamField path="numeroParcelas" type="number" required>
      Quantidade de parcelas da operação.
    </ParamField>

    <ParamField path="valorTaxaMensal" type="number" required>
      Taxa de juros mensal da operação, informada em percentual. Exemplo: 1.99 representa 1,99% ao mês. Deve ser maior que 0.01 e menor que 4.98.
    </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. Consulte a implantação da BMP para os tipos de contrato habilitados para sua integração.
    </ParamField>

    <ParamField path="propostaLancamentos" type="array">
      Lista de lançamentos financeiros adicionais (TED ou boleto).
    </ParamField>

    <ParamField path="cpfAgenteCredito" type="string" required>
      CPF do agente de crédito responsável pela operação. Este deve ser certificado e deve estar previamente cadastrado na BMP.
    </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">
      Dados da conta do cliente para pagamento do empréstimo.

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

  <Accordion title="Descrição dos campos do retorno">
    <ResponseField name="codigoRequisicao" type="string">
      Identificador da requisição. Este código será retornado no webhook após a conclusão de geração da CCB.
    </ResponseField>

    O código de requisição não representa aprovação da operação. A conclusão da geração da CCB ocorre de forma assíncrona e será comunicada via webhook.
  </Accordion>
</AccordionGroup>

<RequestExample>
  ```shellscript Exemplo de requisição theme={null}
  curl --request POST \
    --url https://econsignadotrabalhador.moneyp.dev.br/contrato/oferta-ativa/gerar-contrato \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <token>' \
    --data '{
    "Matricula": "<string>",
    "NumeroInscricaoEmpregador": "<string>",
    "CpfTrabalhador": "<string>",
    "ValorTaxaMensal": 123,
    "CodigoInscricaoEmpregador": 1,
    "ValorLiberado": 123,
    "ValorParcela": 123,
    "NumeroParcelas": 123,
    "TipoContrato": "<string>",
    "ValorSeguro": 123,
    "NumeroApolice": "<string>",
    "chavePIX": "<string>",
    "PropostaContaPagamento": {
      "TipoConta": 123,
      "Agencia": "<string>",
      "AgenciaDig": "<string>",
      "Conta": "<string>",
      "ContaDig": "<string>",
      "NumeroBanco": "<string>"
    },
    "garantias": {
      "valorSaldoDisponivelGarantiaFgts": 1000,
      "valorMultaRescisoriaGarantiaFgts": 400,
      "percVerbaRescisoriaGarantia": 20
    },
    "PropostaLancamentos": [
      {
        "CampoId": "<string>",
        "DocumentoFederal": "<string>",
        "NomePagamento": "<string>",
        "VlrTransacao": 123,
        "DtPagamento": "2023-11-07T05:31:56Z",
        "NumeroBanco": "<string>",
        "TipoConta": 123,
        "Agencia": "<string>",
        "AgenciaDig": "<string>",
        "Conta": "<string>",
        "ContaDig": "<string>",
        "LinhaDigitavel": "<string>"
      }
    ],
    "CpfAgenteCredito": "<string>"
  }'
  ```
</RequestExample>

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

  ```json 400 theme={null}
  {
  	"Erros": [
  		"Matrícula é obrigatório.",
  		"Número inscrição empregador é obrigatório.",
  		"Parâmetro codigoInscricaoEmpregador é obrigatório.",
  		"CPF Trabalhador é obrigatório.",
  		"CPF Agente Crédito é obrigatório.",
  		"Valor da taxa mensal deve ser maior que zero.",
  		"O desembolso deve ser feito por dados bancários ou chave PIX. 'propostaContaPagamento' ou 'ChavePIX' deve ser informado na requisição.",
  		"Simulação deve ser por valor liberado ou valor de parcela"
  	]
  }
  ```
</ResponseExample>

### Objeto `propostaLancamentos`

Este objeto permite a **inclusão de lançamentos** (ou "splits") como TED e boleto no momento da geração do contrato.

A funcionalidade foi desenvolvida para atender cenários em que **parte do valor do empréstimo deve ser direcionada a terceiros** antes do desembolso do valor liberado ao trabalhador.

* É permitida a inclusão de mais de um split;
* A soma dos valores informados em `propostaLancamentos` deve ser **menor ou igual ao valor liberado**;
* É necessária **configuração prévia de splits pela equipe BMP** para inclusão de splits.

#### Split do tipo boleto

```json theme={null}
{
  "propostaLancamentos": [
    {
      "campoID": "BOLETO1",
      "linhaDigitavel": "27490.00101 90000.000175 30789.456701 7 11640000098872",
      "documentoFederal": "49451375000167",
      "nomePagamento": "Nome"
    }
  ]
}
```

#### Split do tipo TED

```json theme={null}
{
  "propostaLancamentos": [
    {
      "campoID": "TED1",
      "documentoFederal": "49451375000167",
      "nomePagamento": "Nome",
      "vlrTransacao": 2222,
      "numeroBanco": "237",
      "tipoConta": 1,
      "agencia": "0008",
      "agenciaDig": "1",
      "conta": "4321",
      "contaDig": "0"
    }
  ]
}
```

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

<AccordionGroup>
  <Accordion title="Webhook de geração de CCB">
    ```json theme={null}
    {
      "CodigoRequisicao": "13318a89-2e2a-4575-98b8-e5c3eaeb4d54",
      "Endpoint": "/oferta-ativa/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>

***

## Considerações

* A emissão do contrato **origina a CCB**, mas não conclui a operação;
* O retorno assíncrono deve ser tratado para:
  * Impressão da CCB;
  * Continuidade do fluxo de formalização;
* Inconsistências de margem, dados cadastrais ou divergências em relação à simulação podem resultar em **falha na geração do contrato**.
