3RN Capital

Documentação API - Consignado Privado CLT

Simulação e Criação de Proposta - Contrato Novo

Provider: 950703 Produto: Consignado Privado CLT Modalidade: Contrato Novo Formato: REST JSON Autenticação: apiKey

Portal de integração

Visão Geral

Documentação técnica da API 3RN Capital para Consignado Privado CLT, com fluxo de simulação e criação de proposta na modalidade Contrato Novo.

API3RN Capital
ProdutoConsignado Privado CLT
Provider950703
ModalidadeContrato Novo
FormatoREST JSON
AutenticaçãoapiKey

Provider fixo

Use exclusivamente o provider_code 950703 nas rotas de criação de proposta.

Autenticação obrigatória

Todas as requisições devem enviar o header apiKey.

Persistência obrigatória

O simulation_id retornado na criação deve ser persistido e usado nas próximas etapas.

Base conceitual do fluxo

1

Criar proposta/simulação.

2

Consultar termo.

3

Assinar termo quando não estiver signed.

4

Calcular contrato.

5

Escolher uma condição com selected: true.

6

Confirmar com create_loans.

Escopo do documento

Este documento consolida a documentação de API para Consignado Privado CLT, considerando somente os itens 4, 4.1 e 4.1.1 da documentação de referência, com foco exclusivo no provedor 950703 - 3RN Capital.

  • Foram removidas referências a outros provedores.
  • A referência “3RN Capital” foi substituída por “3RN Capital”.
  • Os exemplos de rota com {{provider_code}} foram adaptados para o código fixo 950703.
  • Os exemplos foram mantidos com dados fictícios e devem ser substituídos pelos dados reais do tomador no ambiente de integração/produção.

Provedor

Provedor Código Uso
3RN Capital 950703 Simulação e cadastro de propostas CLT

Visão geral do Consignado Privado CLT

O Empréstimo Consignado CLT é uma modalidade de crédito destinada a trabalhadores do setor privado sob regime CLT.

O pagamento das parcelas ocorre por desconto em folha, sujeito às regras de margem consignável, elegibilidade do vínculo empregatício e políticas do provedor.

Contrato Novo

Na modalidade Contrato Novo - Consignado Privado CLT, é formalizada uma nova operação de crédito para colaboradores com vínculo empregatício CLT, sem vínculo com contrato anterior na instituição.

A concessão depende de margem consignável disponível e da elegibilidade do empregador/conveniado.

Fluxo da operação

Para cadastrar uma operação, deve-se criar uma simulação/proposta e utilizar o ID retornado (simulation_id) nas etapas seguintes. Esse ID referencia as condições da operação, como vínculo empregatício, margem disponível, cálculo, condição escolhida e confirmação final.

Etapa Endpoint Resultado esperado
1 POST /v3/loan-private-payroll-simulations/providers/950703 Cria proposta/simulação e consulta vínculos CLT.
2 GET /v3/loan-private-payroll-simulations/{{simulation_id}}/auth-term Consulta termo de autorização.
3 PUT /v3/signer/{{auth_term_key}}/accept Assina termo, se ainda não estiver assinado.
4 POST /v3/loan-private-payroll-simulations/{{simulation_id}}/calculation Calcula condições da operação.
5 PUT /v3/loan-private-payroll-simulations/{{simulation_id}} Seleciona a condição escolhida.
6 POST /v3/loan-private-payroll-simulations/{{simulation_id}}/actions Confirma a operação e gera a proposta.
1

Criar proposta e obter simulation_id.

2

Consultar termo de autorização.

3

Assinar termo quando necessário.

4

Calcular condições financeiras.

5

Selecionar condição escolhida.

6

Confirmar operação e gerar proposta.

Regra crítica

O simulation_id retornado na criação da proposta/simulação deve ser persistido e usado nas próximas etapas.

Autenticação

Todas as requisições devem usar uma API Key válida no cabeçalho apiKey.

HeaderValor
apiKey{{apiKey}}
apiKey: {{apiKey}}

Segurança

A API Key é pessoal e intransferível. Mantenha a chave em segurança.

Endpoint 1 - Criar Proposta para Contrato CLT

POST

Cria a proposta/simulação para o provedor 950703 e realiza a consulta dos vínculos empregatícios do tomador.

Caso o tomador não possua termo autorizado, será necessário consultar e assinar o termo antes de prosseguir.

MétodoRota
POST/v3/loan-private-payroll-simulations/providers/950703

Campos do body

CampoTipoObrigatórioDescrição
borrower.namestringSimNome completo do tomador
borrower.birthDatestring ISO 8601SimData de nascimento
borrower.identitystringSimCPF do tomador
borrower.phonestringSimTelefone com DDD
borrower.emailstringSimE-mail do tomador
borrower.sexstringSimSexo do tomador
borrower.motherNamestringSimNome da mãe
borrower.maritalStatusstringSimEstado civil
borrower.documentobjectSimDocumento de identificação
borrower.addressobjectSimEndereço completo
creditMethodnumberSimMétodo de crédito
creditBankAccountobjectSimDados bancários para crédito

Exemplo de body

{
  "borrower": {
    "name": "João Silva",
    "birthDate": "2006-02-21T03:00:00.000Z",
    "identity": "00000000000",
    "phone": "11999999999",
    "email": "cliente@exemplo.com",
    "sex": "Masculino",
    "motherName": "Nome da Mãe",
    "nationality": null,
    "maritalStatus": "Solteiro",
    "document": {
      "type": {
        "code": "rg",
        "name": "RG"
      },
      "number": "00.000.000-0",
      "issuingDate": "2009-01-23T02:00:00.000Z",
      "issuingEntity": "SSP",
      "issuingState": "SP"
    },
    "address": {
      "prefix": null,
      "street": "Rua",
      "number": "60",
      "complement": "",
      "district": "Vila",
      "city": "São Paulo",
      "state": "SP",
      "country": null,
      "zipCode": "00000-000"
    }
  },
  "creditMethod": 1,
  "creditBankAccount": {
    "type": 1,
    "bank": "1",
    "branch": "3348",
    "number": "989898",
    "digit": "9"
  }
}

Exemplo cURL

curl --location -g 'https://integration.ajin.io/v3/loan-private-payroll-simulations/providers/950703' \
  --header 'apiKey: {{apiKey}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "borrower": {
      "name": "João Silva",
      "birthDate": "2006-02-21T03:00:00.000Z",
      "identity": "00000000000",
      "phone": "11999999999",
      "email": "cliente@exemplo.com",
      "sex": "Masculino",
      "motherName": "Nome da Mãe",
      "maritalStatus": "Solteiro"
    },
    "creditMethod": 1,
    "creditBankAccount": {
      "type": 1,
      "bank": "1",
      "branch": "3348",
      "number": "989898",
      "digit": "9"
    }
  }'

Resposta esperada - resumo

{
  "id": "00000000-0000-0000-0000-000000000000",
  "code": 1533,
  "type": {
    "code": 30,
    "name": "Consignado Privado"
  },
  "provider": 950703,
  "borrower": {
    "name": "João Silva",
    "identity": "00000000000"
  },
  "status": {
    "code": 88,
    "name": "Saldo Retornado - Elegível"
  },
  "employmentRelationships": [
    {
      "registrationNumber": "0014641",
      "employerDocumentNumber": "00000000000000",
      "elegible": true,
      "workerCategoryCode": 101,
      "availableMarginValue": 46897.57,
      "admissionDate": "2019-09-17T00:00:00Z"
    }
  ],
  "eligible": true
}

Regras críticas

  • O campo id retornado representa o simulation_id e deve ser persistido para as próximas etapas.
  • O campo availableMarginValue retornado em employmentRelationships deve ser usado como installmentValue quando a intenção for simular o valor máximo de parcela disponível.

Endpoint 2 - Consultar Dados do Termo

GET

Consulta ou cria os dados do termo de autorização para a simulação.

Caso o termo já esteja assinado, retorna os dados existentes.

MétodoRota
GET/v3/loan-private-payroll-simulations/{{simulation_id}}/auth-term

Variável

VariávelDescrição
{{simulation_id}}UUID da simulação/proposta gerada anteriormente

Exemplo cURL

curl --location -g 'https://integration.ajin.io/v3/loan-private-payroll-simulations/{{simulation_id}}/auth-term' \
  --header 'apiKey: {{apiKey}}'

Resposta esperada - sucesso

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "simulationId": "00000000-0000-0000-0000-000000000000",
  "authTermKey": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "pending",
  "signedAt": null,
  "createdAt": "2024-01-15T10:30:00Z"
}

Regras críticas

  • Antes de calcular ou confirmar a operação, valide se o termo está assinado.
  • Se status for diferente de signed, execute a assinatura do termo usando authTermKey.

Endpoint 3 - Assinar Termo de Autorização

PUT

Assina o termo de autorização.

Execute somente quando o status do termo for diferente de signed.

MétodoRota
PUT/v3/signer/{{auth_term_key}}/accept

Campos do body

CampoTipoObrigatórioDescrição
position.latitudestringSimLatitude capturada no aceite
position.longitudestringSimLongitude capturada no aceite

Exemplo de body

{
  "position": {
    "latitude": "-235489",
    "longitude": "-466388"
  }
}

Exemplo cURL

curl --location --request PUT 'https://integration.ajin.io/v3/signer/{{auth_term_key}}/accept' \
  --header 'apiKey: {{apiKey}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "position": {
      "latitude": "-235489",
      "longitude": "-466388"
    }
  }'

Resposta esperada - resumo

{
  "id": "00000000-0000-0000-0000-000000000000",
  "title": "Termo de Autorização",
  "signer": {
    "name": "João da Silva",
    "identity": "00000000000"
  },
  "status": {
    "key": "signed",
    "name": "Assinado"
  },
  "signatureDate": "2000-01-01 00:00",
  "position": {
    "latitude": "0",
    "longitude": "0"
  }
}

Regras críticas

  • Não assine novamente um termo que já esteja com status signed.
  • Latitude e longitude devem ser capturadas no momento do aceite.

Endpoint 4 - Calculadora de Novo Contrato CLT

POST

Calcula as condições financeiras da operação.

Para simular o valor máximo disponível ao tomador, utilize o campo availableMarginValue, retornado em employmentRelationships, como valor de installmentValue.

MétodoRota
POST/v3/loan-private-payroll-simulations/{{simulation_id}}/calculation

Campos do body

CampoTipoObrigatórioDescrição
typenumberSimTipo de cálculo: 1 = parcela; 2 = desembolso líquido
identitystringSimCPF do tomador
ruleIdstring UUIDSimID da tabela de produto
termnumberSimPrazo em meses
ratenumberSimTaxa de juros mensal
installmentValuenumberSimValor da parcela desejada ou margem disponível
registrationNumberstringNãoMatrícula do tomador junto ao empregador
employerDocumentstringNãoCNPJ do empregador
employerNamestringNãoNome do empregador
isInitialCalculationbooleanNãotrue para primeiro cálculo; false para recálculo

Regra sobre cálculo em lote

Não há cálculo em lote.

Para testar múltiplos prazos e taxas, realize uma chamada por combinação.

Exemplo de body

{
  "type": 1,
  "identity": "00000000000",
  "ruleId": "00000000-0000-0000-0000-000000000000",
  "term": 84,
  "rate": 5.5,
  "installmentValue": 2000.00,
  "registrationNumber": "0014641",
  "employerDocument": "00000000000000",
  "employerName": "Nome do Empregador",
  "isInitialCalculation": true
}

Exemplo cURL

curl --location --request POST 'https://integration.ajin.io/v3/loan-private-payroll-simulations/{{simulation_id}}/calculation' \
  --header 'apiKey: {{apiKey}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "type": 1,
    "identity": "00000000000",
    "ruleId": "00000000-0000-0000-0000-000000000000",
    "term": 84,
    "rate": 5.5,
    "installmentValue": 2000.00,
    "registrationNumber": "0014641",
    "employerDocument": "00000000000000",
    "employerName": "Nome do Empregador",
    "isInitialCalculation": true
  }'

Resposta esperada - resumo

{
  "id": "00000000-0000-0000-0000-000000000000",
  "product": {
    "code": 17,
    "name": "Consignado Privado - Novo"
  },
  "provider": {
    "code": 950703,
    "name": "3RN Capital"
  },
  "simulationValue": 32453.15,
  "loanValue": 32453.15,
  "netValue": 31358.51,
  "installmentValue": 2000,
  "term": 84,
  "rate": 5.5,
  "totalEffectiveCostMonthly": 5.68,
  "totalEffectiveCostAnnual": 94.09,
  "registrationNumber": "0014641",
  "employerDocument": "00000000000000",
  "employerName": "Nome do Empregador",
  "selected": false,
  "isInitialCalculation": true
}

Regras críticas

  • Antes de calcular, o termo de autorização deve estar assinado.
  • Para simular valor máximo, installmentValue deve receber availableMarginValue retornado no vínculo empregatício.
  • Não existe cálculo em lote; cada combinação de prazo e taxa exige uma chamada.

Endpoint 5 - Escolha da Condição

PUT

Registra a condição escolhida pelo usuário, fixando valor, prazo e demais parâmetros do item selecionado para a confirmação final.

MétodoRota
PUT/v3/loan-private-payroll-simulations/{{simulation_id}}

Campos do body

CampoTipoObrigatórioDescrição
items[].idstring UUIDSimID do item de cálculo selecionado
items[].ruleIdstring UUIDSimID da tabela de produto
items[].termnumberSimPrazo em meses
items[].ratenumberSimTaxa de juros mensal
items[].loanValuenumberSimValor total do empréstimo
items[].installmentValuenumberSimValor da parcela
items[].netValuenumberSimValor líquido
items[].hasInsurancebooleanSimIndica se há seguro
items[].selectedbooleanSimDeve ser true para o item escolhido
items[].firstDueDatestringSimPrimeiro vencimento
items[].lastDueDatestringSimÚltimo vencimento
items[].totalEffectiveCostnumberSimCusto Efetivo Total
items[].isInitialCalculationbooleanSimIndica se é o cálculo inicial
items[].baseValuenumberSimValor base da operação
items[].additionalValuenumberSimValor adicional, se houver

Exemplo de body

{
  "items": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "ruleId": "00000000-0000-0000-0000-000000000000",
      "term": 84,
      "rate": 5.5,
      "loanValue": 32396.07,
      "installmentValue": 2000,
      "netValue": 31303.35,
      "hasInsurance": false,
      "registrationNumber": "0014641",
      "employerDocument": "00000000000000",
      "employerName": "Nome do Empregador",
      "firstDueDate": "2026-04-28",
      "lastDueDate": "2033-03-28",
      "totalEffectiveCost": 5.68,
      "selected": true,
      "isInitialCalculation": true,
      "baseValue": 31303.35,
      "additionalValue": 0
    }
  ]
}

Exemplo cURL

curl --location --request PUT 'https://integration.ajin.io/v3/loan-private-payroll-simulations/{{simulation_id}}' \
  --header 'apiKey: {{apiKey}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "items": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "ruleId": "00000000-0000-0000-0000-000000000000",
        "term": 84,
        "rate": 5.5,
        "loanValue": 32396.07,
        "installmentValue": 2000,
        "netValue": 31303.35,
        "hasInsurance": false,
        "selected": true,
        "isInitialCalculation": true,
        "baseValue": 31303.35,
        "additionalValue": 0
      }
    ]
  }'

Regras críticas

  • Enviar selected: true somente no item de condição escolhido.
  • A confirmação final só deve ser feita depois que a condição escolhida for registrada.

Endpoint 6 - Confirmação Final da Operação

POST

Executa a etapa final de confirmação da operação.

Em caso de sucesso, as validações operacionais são realizadas e a proposta é emitida.

MétodoRota
POST/v3/loan-private-payroll-simulations/{{simulation_id}}/actions

Campos do body

CampoTipoObrigatórioDescrição
commandstringSimUse create_loans para confirmar a operação

Exemplo de body

{
  "command": "create_loans"
}

Exemplo cURL

curl --location --request POST 'https://integration.ajin.io/v3/loan-private-payroll-simulations/{{simulation_id}}/actions' \
  --header 'apiKey: {{apiKey}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "command": "create_loans"
  }'

Resposta esperada - resumo

{
  "id": "00000000-0000-0000-0000-000000000000",
  "code": 1526,
  "type": {
    "code": 30,
    "name": "Consignado Privado"
  },
  "provider": 950703,
  "status": {
    "code": 88,
    "name": "Saldo Retornado - Elegível"
  },
  "items": [
    {
      "product": {
        "code": 17,
        "name": "Consignado Privado - Novo"
      },
      "provider": 950703,
      "loanValue": 32396.07,
      "installmentValue": 2000,
      "term": 84,
      "rate": 5.5,
      "selected": true
    }
  ],
  "eligible": true
}

Regra crítica

Confirmar a operação usando command: create_loans apenas após a escolha da condição.

Erros comuns

StatusExemploSignificado
400{ "messages": [ { "code": "9001002", "text": "Parâmetros inválidos" } ] }Campos obrigatórios ausentes, inválidos ou fora do formato esperado.
400{ "messages": [ { "code": "1010001", "text": "Empréstimo não encontrado" } ] }Simulação/proposta não localizada ou chave inválida para a etapa solicitada.

Erro 9001002

Indica parâmetros inválidos.

Possíveis causas:

  • campo obrigatório ausente;
  • campo em formato inválido;
  • objeto obrigatório não enviado;
  • valor numérico inválido;
  • dados fora do formato esperado.

Erro 1010001

Indica empréstimo/simulação não encontrado.

Possíveis causas:

  • simulation_id inválido;
  • auth_term_key inválido;
  • tentativa de executar etapa fora da ordem;
  • simulação/proposta inexistente;
  • chave inválida para a etapa solicitada.

Checklist de implementação

Validação

Use esta lista como controle antes de publicar a integração em produção.

Observações técnicas finais

23.1 Ordem das etapas

A integração deve seguir a ordem documentada.

Não calcular antes de validar o termo.

Não confirmar antes de selecionar a condição.

Não perder o simulation_id.

23.2 Persistência

A aplicação deve persistir:

  • simulation_id;
  • authTermKey;
  • status do termo;
  • vínculo empregatício selecionado;
  • condição calculada;
  • condição escolhida;
  • status final da proposta.

23.3 Termo de autorização

Antes de cálculo e confirmação:

  • consultar termo;
  • verificar status;
  • assinar somente se status for diferente de signed.

23.4 Margem disponível

Quando o objetivo for simular o máximo disponível:

installmentValue = employmentRelationships[].availableMarginValue

23.5 Cálculos múltiplos

Não existe cálculo em lote.

Para múltiplas combinações:

1 prazo + 1 taxa = 1 chamada de cálculo

23.6 Seleção de condição

Somente uma condição deve ser escolhida.

O item escolhido deve ter:

{
  "selected": true
}

23.7 Confirmação

A confirmação final deve usar:

{
  "command": "create_loans"
}

Observação

Não altere a sequência do fluxo e não utilize provider diferente de 950703 nesta modalidade.