Consulta de Margem & Simulação de Crédito

Consulta de margem

A consulta de margem permite identificar o valor máximo que o tomador pode comprometer mensalmente com um empréstimo consignado.

GET: https://platform.flowfinance.com.br/banking/originator/guarantee/{product-id}/get-balance

Parâmetros

CampoDescriçãoTipo
taxpayer_idCPF do tomador (somente números)String
{
  "links": [
    {
      "employer": {
        "code": "123456", 
        "document": "95818221485", 
        "name": "Empresa Exemplo LTDA"
      },
      "employee": {
        "code": "1564882125",
        "document": "90110651669", 
        "name": "João da Silva"
      },
      "config": {
        "agency": "3a7e1beb-c64f-4936-8555-b9edb42c3328",
        "consignee": "468f5087-d35f-45dd-96db-3cf71a83fe08"
      },
      "products": [
        {
          "balance_check_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "authorization": {
            "details": [
              {
                "type_product": "LOAN",
                "authorized": true,
                "validity": "2025-12-31"
              }
            ],
            "portability": [
              {
                "authorized": false,
                "available_balance": 0,
                "type_product": "LOAN",
                "validity": "2025-12-31",
                "contract_port": {
                  "contract_id": "PORT123",
                  "document": "12345678900",
                  "name_consignee": "BANCO XYZ"
                }
              }
            ]
          },
          "rubric": {
            "code": "RUB001",
            "description": "Rubrica de Empréstimo"
          },
          "agreement": "AG001",
          "available_balance": 5000.75
        }
      ],
      "meta_data": {
        "nationality_country": {
          "description": "Brasil",
          "code": "BR"
        },
        "termination_reason_code": "TRC001",
        "birth_date": "1985-08-06",
        "worker_category_code": "101",
        "termination_date": "2025-06-01",
        "prior_notice_date": "2025-05-15",
        "prior_notice_end_date": "2025-06-15",
        "gender": {
          "description": "Masculino",
          "code": 1
        },
        "job_code": {
          "description": "Analista de Sistemas",
          "code": "21240"
        },
        "economic_activity_code": {
          "description": "Atividades de tecnologia",
          "code": "6201-5/01"
        },
        "politically_exposed_person": {
          "description": "Não",
          "code": 0
        },
        "unauthorization_reason": {
          "description": "Nenhum",
          "code": 0
        },
        "base_margin_value": "3000.00",
        "alerts": [
          {
            "absence_reason_code": "A001",
            "alert_type": {
              "description": "Licença Médica",
              "code": 1
            },
            "absence_date": "2025-01-10",
            "absence_end_date": "2025-01-25",
            "reference_date": "2025-01",
            "event_id": "EVT123",
            "termination_reason_code": "TRC001"
          }
        ],
        "amount_loans_assets_suspended": "2",
        "admission_date": "2010-03-15",
        "total_earnings": "8500.00",
        "legacy_loans": [
          {
            "financial_institution_code": 123,
            "contract": "CON123456789",
            "contract_start_date": "2021-01-01",
            "contract_end_date": "2026-01-01",
            "installment_amount": 350.25,
            "loan_amount": 10000.00,
            "net_amount": 9500.00,
            "update_date_time": "2025-08-01T10:00:00Z",
            "interest_tax": 1.85,
            "monthly_cet": 2.1,
            "installment_quantity": 60,
            "paid_installments_quantity": 30,
            "debtor_balance_amount": 5000.00,
            "contract_type": {
              "description": "Crédito Consignado",
              "code": 1
            }
          }
        ],
        "employer_activity_start_date": "2005-01-01",
        "mother_name": "Maria de Lourdes"
      },
      "balance_check_date": "2025-08-05"
    }
  ],
  "message": "Verificação de margem realizada com sucesso"
}

Parâmetros

CampoDescriçãoTipo
employer.documentDocumento (CNPJ) do empregadorString
employer.nameNome do empregadorString
employee.codeCódigo do empregadoString
employee.documentDocumento (CPF) do empregadoString
employee.nameNome do empregadoString
config.agencyIdentificador da agência ou origem da consultaString
config.consigneeIdentificador da consignatáriaString
products[].balance_check_idID da verificação de saldoString
products[].authorization.details[].type_productTipo de produto autorizadoString
products[].authorization.details[].authorizedIndica se está autorizadoboolean
products[].authorization.details[].validityData de validade da autorizaçãodate
products[].authorization.portability[].authorizedIndica se a portabilidade está autorizadaboolean
products[].authorization.portability[].available_balanceSaldo disponível para portabilidadenumber
products[].authorization.portability[].type_productTipo de produto de portabilidadestring
products[].authorization.portability[].validityValidade da portabilidadedate
products[].authorization.portability[].contract_port.contract_idID do contrato de portabilidadestring
products[].authorization.portability[].contract_port.documentDocumento da instituição portadorastring
products[].authorization.portability[].contract_port.name_consigneeNome da instituição portadorastring
products[].rubric.codeCódigo da rubricastring
products[].rubric.descriptionDescrição da rubricastring
products[].agreementCódigo do convêniostring
products[].available_balanceSaldo disponível para créditonumber
meta_data.nationality_country.descriptionDescrição da nacionalidadestring
meta_data.nationality_country.codeCódigo da nacionalidadestring
meta_data.termination_reason_codeCódigo do motivo de desligamentostring
meta_data.birth_dateData de nascimentodate
meta_data.worker_category_codeCódigo da categoria do trabalhadorstring
meta_data.termination_dateData de desligamentodate
meta_data.prior_notice_dateData do aviso préviodate
meta_data.prior_notice_end_dateData fim do aviso préviodate
meta_data.gender.descriptionDescrição do gênerostring
meta_data.gender.codeCódigo do gêneronumber
meta_data.job_code.descriptionDescrição do cargostring
meta_data.job_code.codeCódigo do cargostring
meta_data.economic_activity_code.descriptionDescrição da atividade econômicastring
meta_data.economic_activity_code.codeCódigo da atividade econômicastring
meta_data.politically_exposed_person.descriptionPessoa politicamente expostastring
meta_data.politically_exposed_person.codeCódigo PEPnumber
meta_data.unauthorization_reason.descriptionDescrição da razão de não autorizaçãostring
meta_data.unauthorization_reason.codeCódigo da razão de não autorizaçãonumber
meta_data.base_margin_valueValor base da margem consignávelstring
meta_data.alerts[].absence_reason_codeCódigo do motivo de ausênciastring
meta_data.alerts[].alert_type.descriptionDescrição do tipo de alertastring
meta_data.alerts[].alert_type.codeCódigo do tipo de alertanumber
meta_data.alerts[].absence_dateData de início da ausênciadate
meta_data.alerts[].absence_end_dateData de fim da ausênciadate
meta_data.alerts[].reference_dateData de referência do alertastring
meta_data.alerts[].event_idID do eventostring
meta_data.alerts[].termination_reason_codeCódigo do motivo de desligamento no alertastring
meta_data.amount_loans_assets_suspendedQuantidade de empréstimos ativos/suspensosnumber
meta_data.admission_dateData de admissãodate
meta_data.total_earningsTotal de rendimentosstring
meta_data.legacy_loans[].financial_institution_codeCódigo da instituição financeiranumber
meta_data.legacy_loans[].contractNúmero do contratostring
meta_data.legacy_loans[].contract_start_dateData de início do contratodate
meta_data.legacy_loans[].contract_end_dateData de fim do contratodate
meta_data.legacy_loans[].installment_amountValor da parcelanumber
meta_data.legacy_loans[].loan_amountValor total do empréstimonumber
meta_data.legacy_loans[].net_amountValor líquido do empréstimonumber
meta_data.legacy_loans[].update_date_timeData/hora da última atualizaçãodatetime
meta_data.legacy_loans[].interest_taxTaxa de jurosnumber
meta_data.legacy_loans[].monthly_cetCET mensalnumber
meta_data.legacy_loans[].installment_quantityQuantidade de parcelasnumber
meta_data.legacy_loans[].paid_installments_quantityQuantidade de parcelas pagasnumber
meta_data.legacy_loans[].debtor_balance_amountSaldo devedornumber
meta_data.legacy_loans[].contract_type.descriptionDescrição do tipo de contratostring
meta_data.legacy_loans[].contract_type.codeCódigo do tipo de contratonumber
meta_data.employer_activity_start_dateData de início da atividade do empregadordate
meta_data.mother_nameNome da mãe do trabalhadorstring
balance_check_dateData da verificação de margemdate

Retorno de erro:

  1. Caso seja realizada a consulta de margem sem ter completado com sucesso o fluxo de autorização de
    consulta dos dados do tomador, será emitido um erro indicando que a autorização ainda não foi concedida.:
{
  "message": "Erro na requisição",
  "detail": {
    "authorization_file": [
      "Arquivo inválido ou ausente"
    ],
    "taxpayer_id": [
      "CPF inválido"
    ],
    "product_id": [
      "ID do produto não encontrado"
    ]
  }
}


Validação da CET (Custo Efetivo Total)

Em conformidade com as regras operacionais vigentes do ecossistema Crédito do Trabalhador, será aplicada uma validação obrigatória da variação do CET em relação à taxa de juros nominal da operação.

O objetivo dessa validação é garantir que o custo efetivo mensal da operação permaneça dentro do limite permitido durante o processo de simulação e contratação.

Para essa validação, comparamos os campos:

  • monthly_effective_interest_rate → representa o CET mensal da operação
  • interest_rate → representa a taxa de juros nominal mensal da operação

Regra aplicada

O valor de monthly_effective_interest_rate não poderá exceder em mais de 1 ponto percentual o valor de interest_rate.

monthly_effective_interest_rate \leq interest_rate + 1%


Etapas onde a validação será aplicada

Essa validação será executada nas seguintes etapas da API:

  • Requisições de simulação
  • Requisições de criação de CCB

Exemplo

interest_ratemonthly_effective_interest_rateResultado
3.00%3.80%Operação válida
3.00%4.20%Operação rejeitada

Retorno de erro

Caso a operação ultrapasse o limite permitido, a requisição será rejeitada e a API retornará o seguinte erro:

{
  "message": "O CET mensal calculado excede o limite legal de 1 p.p. sobre a taxa de juros da operação."
}

Importante

Essa validação complementa as regras já existentes relacionadas ao cálculo da taxa de juros e do CET, passando a ser um critério obrigatório para aprovação das operações.




Resposta Assíncrona (Limite de Requisição da Dataprev)

A Dataprev possui uma limitação de 25 requisições por segundo. Caso, no momento da requisição, a Dataprev retorne que o limite daquele segundo foi atingido, nosso sistema responderá a consulta de margem de forma assíncrona.

Resposta assíncrona

{
    "message": "Request accepted for asynchronous processing"
}

Isso indica que a solicitação foi aceita e será processada posteriormente.

Notificação via Webhook
Quando a consulta for concluída, o resultado será enviado ao originador por meio de um webhook com o evento GuaranteeBalanceUpdate.

{
  "event": "GuaranteeBalanceUpdate",
  "payload": "{\"id\":\"655e18fc-a964-426e-827c-01907f9fe677\",\"links\":[{\"employer\":{\"code\":\"1\",\"document\":\"12690785000150\",\"name\":\"da Mota - ME\"},\"employee\":{\"code\":\"6672271467\",\"document\":\"71643905252\",\"name\":\"Jade Cavalcante\"},\"config\":{\"agency\":\"3a7e1beb-c64f-4936-8555-b9edb42c3328\",\"consignee\":\"3b9be0e7-3af9-4ca4-ad31-26233a58486a\"},\"products\":[{\"balance_check_id\":\"7761d327-d726-45f7-9a5d-c69c84624629\",\"authorization\":{\"details\":[{\"type_product\":\"LOAN\",\"authorized\":true}]},\"available_balance\":1909.25}],\"meta_data\":{\"nationality_country\":{\"description\":\"BRASIL\",\"code\":\"76\"},\"termination_reason_code\":\"0\",\"birth_date\":\"2002-10-16\",\"worker_category_code\":\"101\",\"gender\":{\"description\":\"Masculino\",\"code\":1},\"job_code\":{\"description\":\"AGENTE DE VIAGEM\",\"code\":\"354815\"},\"economic_activity_code\":{\"description\":\"CNAE não identificado\",\"code\":\"6391100\"},\"politically_exposed_person\":{\"description\":\"Pessoa Não Exposta Politicamente\",\"code\":0},\"base_margin_value\":\"5455\",\"amount_loans_assets_suspended\":\"0\",\"admission_date\":\"2018-11-10\",\"total_earnings\":\"5642\",\"employer_activity_start_date\":\"2021-02-11\",\"mother_name\":\"Catarina Inclusao Massa Extra\",\"has_disregarded_balance\":false},\"balance_check_date\":\"2026-04-07T19:41:34.4173361+00:00\"}],\"status\":\"SUCCESS\"}"
}

Atenção: o campo payload é entregue como uma string JSON serializada. É necessário fazer JSON.parse(event.payload) antes de acessar os campos internos.


Campos do JSON

CampoTipoDescriçãoExemplo
eventstringIdentificador do tipo de evento disparadoGuaranteeBalanceUpdate
payloadstring (JSON serializado)JSON serializado como string contendo os dados do evento. Deve ser parseado separadamente."{...}"

payload (após parse) — objeto raiz

CampoTipoDescriçãoExemplo
idstring (UUID)Identificador único da requisição de consulta de margem655e18fc-a964-426e-827c-01907f9fe677
statusstringStatus do processamento da consulta. Valores possíveis: SUCCESS, ERRORSUCCESS
linksarrayLista de vínculos empregatícios consultados, cada um com seus dados de margem e metadados

links[] — cada vínculo

employer — dados do empregador

CampoTipoDescriçãoExemplo
employer.codestringCódigo interno do empregador1
employer.documentstringCNPJ do empregador (somente dígitos)12690785000150
employer.namestringRazão social do empregadorda Mota - ME

employee — dados do colaborador

CampoTipoDescriçãoExemplo
employee.codestringMatrícula / código do funcionário6672271467
employee.documentstringCPF do colaborador (somente dígitos)71643905252
employee.namestringNome completo do colaboradorJade Cavalcante

config — configurações da conta

CampoTipoDescriçãoExemplo
config.agencystring (UUID)Identificador da agência configurada3a7e1beb-c64f-4936-8555-b9edb42c3328
config.consigneestring (UUID)Identificador da consignatária3b9be0e7-3af9-4ca4-ad31-26233a58486a

Campos gerais do vínculo

CampoTipoDescriçãoExemplo
balance_check_datestring (ISO 8601)Data e hora em que a consulta de margem foi realizada2026-04-07T19:41:34.417+00:00
productsarrayProdutos elegíveis para o vínculo, com autorização e saldo disponível

links[].products[] — cada produto

CampoTipoDescriçãoExemplo
balance_check_idstring (UUID)Identificador único desta consulta de saldo7761d327-d726-45f7-9a5d-c69c84624629
available_balancenumberSaldo / margem disponível para o produto, em reais1909.25
authorizationobjectResultado da autorização para os produtos do vínculo
authorization.detailsarrayLista de autorizações por tipo de produto
authorization.details[].type_productstringTipo de produto avaliado. Ex.: LOAN, CREDIT_CARDLOAN
authorization.details[].authorizedbooleanIndica se o colaborador está autorizado para este tipo de produtotrue

links[].meta_data — dados cadastrais do colaborador

CampoTipoDescriçãoExemplo
nationality_country.descriptionstringNome do país de nascimentoBRASIL
nationality_country.codestringCódigo BACEN do país de nascimento76
termination_reason_codestringCódigo do motivo de rescisão. "0" = ativo / sem rescisão0
birth_datestring (YYYY-MM-DD)Data de nascimento do colaborador2002-10-16
admission_datestring (YYYY-MM-DD)Data de admissão na empresa2018-11-10
worker_category_codestringCódigo da categoria do trabalhador (tabela eSocial)101
gender.descriptionstringDescrição do gêneroMasculino
gender.codenumberCódigo do gênero: 1 = Masculino, 2 = Feminino1
job_code.descriptionstringDescrição da ocupação (CBO)AGENTE DE VIAGEM
job_code.codestringCódigo CBO da ocupação354815
economic_activity_code.descriptionstringDescrição da atividade econômica (CNAE)CNAE não identificado
economic_activity_code.codestringCódigo CNAE do empregador6391100
politically_exposed_person.descriptionstringDescrição da condição de PEPPessoa Não Exposta Politicamente
politically_exposed_person.codenumberCódigo PEP: 0 = não exposta0
base_margin_valuestringValor da margem base do colaborador, em reais5455
total_earningsstringTotal de rendimentos brutos do colaborador, em reais5642
amount_loans_assets_suspendedstringValor total de empréstimos com parcelas suspensas0
employer_activity_start_datestring (YYYY-MM-DD)Data de início das atividades do empregador2021-02-11
mother_namestringNome da mãe do colaboradorCatarina Inclusao Massa Extra
has_disregarded_balancebooleanIndica se há saldo desconsiderado no cálculo de margem disponívelfalse

Tipos de alertas que podemos receber da Dataprev na consulta de margem


Simulação de Crédito

Nesta etapa, o originador deverá enviar os dados necessários para realizar a simulação da operação de crédito, com base nas condições comerciais previamente configuradas no produto. Essa simulação tem como objetivo apresentar ao tomador as opções de crédito.

Comportamento da API

A API retornará a simulação, contendo:

  • Valor das parcelas;
  • CET (Custo Efetivo Total);
  • Valor total a pagar;
  • Data de vencimento;
  • Informações sobre carência, amortização e taxas.

📘

Validação da Data da Primeira Parcela

O campo first_payment_date é obrigatório na simulação. O valor informado será validado com base no calendário vigente da Dataprev

Regras de validação:

  • Caso o campo não seja informado, será retornado HTTP 400 com a mensagem: first_payment_date is required.
  • Caso a data informada seja incompatível com o calendário permitido para averbação, será retornado HTTP 400 com a mensagem:
    Incompatibility between the first installment due date and registration date. Considering the disbursement date, the first installment due date should be from XXX onwards

Recomendamos que valide previamente a data de primeira parcela conforme o calendário aplicável antes de realizar a simulação.