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.
950703apiKeyProvider 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
Criar proposta/simulação.
Consultar termo.
Assinar termo quando não estiver signed.
Calcular contrato.
Escolher uma condição com selected: true.
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 fixo950703. - 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. |
Criar proposta e obter simulation_id.
Consultar termo de autorização.
Assinar termo quando necessário.
Calcular condições financeiras.
Selecionar condição escolhida.
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.
| Header | Valor |
|---|---|
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
POSTCria 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étodo | Rota |
|---|---|
| POST | /v3/loan-private-payroll-simulations/providers/950703 |
Campos do body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| borrower.name | string | Sim | Nome completo do tomador |
| borrower.birthDate | string ISO 8601 | Sim | Data de nascimento |
| borrower.identity | string | Sim | CPF do tomador |
| borrower.phone | string | Sim | Telefone com DDD |
| borrower.email | string | Sim | E-mail do tomador |
| borrower.sex | string | Sim | Sexo do tomador |
| borrower.motherName | string | Sim | Nome da mãe |
| borrower.maritalStatus | string | Sim | Estado civil |
| borrower.document | object | Sim | Documento de identificação |
| borrower.address | object | Sim | Endereço completo |
| creditMethod | number | Sim | Método de crédito |
| creditBankAccount | object | Sim | Dados 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_ide deve ser persistido para as próximas etapas. - O campo
availableMarginValueretornado em employmentRelationships deve ser usado comoinstallmentValuequando a intenção for simular o valor máximo de parcela disponível.
Endpoint 2 - Consultar Dados do Termo
GETConsulta ou cria os dados do termo de autorização para a simulação.
Caso o termo já esteja assinado, retorna os dados existentes.
| Método | Rota |
|---|---|
| GET | /v3/loan-private-payroll-simulations/{{simulation_id}}/auth-term |
Variável
| Variável | Descriçã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 usandoauthTermKey.
Endpoint 3 - Assinar Termo de Autorização
PUTAssina o termo de autorização.
Execute somente quando o status do termo for diferente de signed.
| Método | Rota |
|---|---|
| PUT | /v3/signer/{{auth_term_key}}/accept |
Campos do body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| position.latitude | string | Sim | Latitude capturada no aceite |
| position.longitude | string | Sim | Longitude 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
POSTCalcula 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étodo | Rota |
|---|---|
| POST | /v3/loan-private-payroll-simulations/{{simulation_id}}/calculation |
Campos do body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| type | number | Sim | Tipo de cálculo: 1 = parcela; 2 = desembolso líquido |
| identity | string | Sim | CPF do tomador |
| ruleId | string UUID | Sim | ID da tabela de produto |
| term | number | Sim | Prazo em meses |
| rate | number | Sim | Taxa de juros mensal |
| installmentValue | number | Sim | Valor da parcela desejada ou margem disponível |
| registrationNumber | string | Não | Matrícula do tomador junto ao empregador |
| employerDocument | string | Não | CNPJ do empregador |
| employerName | string | Não | Nome do empregador |
| isInitialCalculation | boolean | Não | true 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,
installmentValuedeve receberavailableMarginValueretornado 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
PUTRegistra a condição escolhida pelo usuário, fixando valor, prazo e demais parâmetros do item selecionado para a confirmação final.
| Método | Rota |
|---|---|
| PUT | /v3/loan-private-payroll-simulations/{{simulation_id}} |
Campos do body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| items[].id | string UUID | Sim | ID do item de cálculo selecionado |
| items[].ruleId | string UUID | Sim | ID da tabela de produto |
| items[].term | number | Sim | Prazo em meses |
| items[].rate | number | Sim | Taxa de juros mensal |
| items[].loanValue | number | Sim | Valor total do empréstimo |
| items[].installmentValue | number | Sim | Valor da parcela |
| items[].netValue | number | Sim | Valor líquido |
| items[].hasInsurance | boolean | Sim | Indica se há seguro |
| items[].selected | boolean | Sim | Deve ser true para o item escolhido |
| items[].firstDueDate | string | Sim | Primeiro vencimento |
| items[].lastDueDate | string | Sim | Último vencimento |
| items[].totalEffectiveCost | number | Sim | Custo Efetivo Total |
| items[].isInitialCalculation | boolean | Sim | Indica se é o cálculo inicial |
| items[].baseValue | number | Sim | Valor base da operação |
| items[].additionalValue | number | Sim | Valor 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: truesomente 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
POSTExecuta 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étodo | Rota |
|---|---|
| POST | /v3/loan-private-payroll-simulations/{{simulation_id}}/actions |
Campos do body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| command | string | Sim | Use 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
| Status | Exemplo | Significado |
|---|---|---|
| 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_idinválido;auth_term_keyinvá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.