Pular para o conteúdo principal

💳 API de Empréstimo Pessoal Lojista

Este guia apresenta o passo a passo para integração com o serviço de empréstimo pessoal em estabelecimentos lojistas, incluindo contratação, gestão de contas, contratos e parcelas.

🎯 Visão Geral

A API de Empréstimo Pessoal Lojista permite que você:

  • Verifique elegibilidade do cliente para empréstimo
  • 🔍 Simule planos com taxas, IOF e CET
  • 🏦 Gerencie contas bancárias do cliente
  • 📄 Gere pré-contratos para aceite do cliente
  • 💳 Efetive empréstimos e agende transferências
  • 📅 Consulte e cancele agendamentos
  • 📋 Consulte parcelas com status de pagamento
  • 📑 Obtenha contratos em PDF

URLs Base:

  • Homologação: https://apihml.credsystem.com.br/emprestimo-pessoal-lojista/api/v1
  • Produção: https://api.credsystem.com.br/emprestimo-pessoal-lojista/api/v1
📚 Recursos Adicionais

🔐 Autenticação

Esta API utiliza Oracle IDCS com o fluxo Client Credentials (servidor para servidor).

Todos os endpoints requerem autenticação via Bearer Token (JWT) no header:

Authorization: Bearer <seu_token_jwt>
PropriedadeValor
SistemaOracle IDCS
Fluxo OAuth2Client Credentials
TipoServidor para Servidor (sem usuário)
TokenAccess Token (JWT)
Atenção

Tokens inválidos ou expirados retornarão erro 401 Unauthorized.

🔑 Como obter o token?

📚 Endpoints Disponíveis

1️⃣ Verificar Elegibilidade do Cliente

Verifica se o cliente é elegível para contratar um empréstimo pessoal, retornando valores mínimo/máximo, taxa e datas de vencimento disponíveis.

Endpoint: POST /elegibilidade

Headers:

HeaderTipoObrigatórioDescrição
AuthorizationstringBearer token JWT
cpfClientestringCPF do cliente (apenas números)

Corpo da Requisição:

CampoTipoObrigatórioDescrição
codigoClienteintegerCódigo identificador do cliente
numeroBinintegerNúmero do BIN do cartão
idCanalintegerIdentificador do canal (ex: 1 = Loja)
codigoEstabelecimentointegerCódigo do estabelecimento
origemLojistabooleanOrigem da contratação (default: false)

Exemplos de requisição:

curl -X POST "https://apihml.credsystem.com.br/emprestimo-pessoal-lojista/api/v1/elegibilidade" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "cpfCliente: 12345678901" \
-H "Content-Type: application/json" \
-d '{
"codigoCliente": 123456,
"numeroBin": 123456789,
"idCanal": 1,
"codigoEstabelecimento": 2,
"origemLojista": false
}'

Exemplo de resposta (201 Created):

{
"valorMaximoEmprestimo": 5000.00,
"valorMinimoEmprestimo": 300.00,
"taxaMes": 2.49,
"flagContratosExistentes": true,
"flagAgendamentosExistentes": false,
"dataPrimeiroVencimentoMinimo": "2026-05-10",
"dataPrimeiroVencimentoMaximo": "2026-06-10"
}

Campos da resposta:

CampoTipoDescrição
valorMaximoEmprestimonumberValor máximo disponível para empréstimo
valorMinimoEmprestimonumberValor mínimo disponível
taxaMesnumberTaxa de juros mensal
flagContratosExistentesbooleanSe o cliente já possui contratos ativos
flagAgendamentosExistentesbooleanSe o cliente possui agendamentos
dataPrimeiroVencimentoMinimodateData mínima do primeiro vencimento
dataPrimeiroVencimentoMaximodateData máxima do primeiro vencimento
Melhor Prática

Se flagContratosExistentes for true, informe ao operador que o cliente já possui empréstimos ativos antes de prosseguir com nova contratação.


2️⃣ Simular Planos de Empréstimo

Retorna a simulação dos planos disponíveis ao cliente com valores de parcela, taxas, IOF e CET para cada opção de parcelamento.

Endpoint: GET /simulacao-plano

Parâmetros (Header):

HeaderTipoObrigatórioDescrição
AuthorizationstringBearer token JWT
cpfClientestringCPF do cliente
valorTransacaonumberValor do empréstimo desejado
incluirSegurobooleanIncluir seguro na simulação (default: false)

Exemplos de requisição:

curl -X GET "https://apihml.credsystem.com.br/emprestimo-pessoal-lojista/api/v1/simulacao-plano" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "cpfCliente: 12345678901" \
-H "valorTransacao: 3000" \
-H "incluirSeguro: false"

Exemplo de resposta (200 OK):

{
"plano": [
{
"numeroDeParcela": 3,
"valorParcela": 1025.42,
"dataPrimeiroVencimento": "2026-05-27",
"diasPrimeioVencimento": 30,
"valorTarifa": 0,
"valorTotalJuros": 15.39,
"valorTotalIof": 10.87,
"valorTotal": 3076.26,
"taxaMes": 1.00,
"taxaAno": 12.68,
"aliqIof": 0.38,
"iofAdicional": 0.0082,
"cetMensal": 1.32,
"cetAnual": 17.04,
"valorTotalSeguro": 0
},
{
"numeroDeParcela": 12,
"valorParcela": 272.01,
"dataPrimeiroVencimento": "2026-05-27",
"diasPrimeioVencimento": 30,
"valorTarifa": 0,
"valorTotalJuros": 202.59,
"valorTotalIof": 60.87,
"valorTotal": 3264.12,
"taxaMes": 1.00,
"taxaAno": 12.68,
"aliqIof": 0.38,
"iofAdicional": 0.0082,
"cetMensal": 1.32,
"cetAnual": 17.04,
"valorTotalSeguro": 0
}
]
}
Melhor Prática

Exiba os planos ordenados por quantidade de parcelas e destaque o CET (Custo Efetivo Total), pois é o indicador mais transparente para o cliente comparar opções.


3️⃣ Listar Bancos Habilitados

Retorna a lista de bancos que podem receber TED/transferência do empréstimo pessoal.

Endpoint: GET /banco

Parâmetros (Header):

HeaderTipoObrigatórioDescrição
AuthorizationstringBearer token JWT
ativoSpbbooleanFiltrar bancos ativos no SPB (default: false)

Exemplos de requisição:

curl -X GET "https://apihml.credsystem.com.br/emprestimo-pessoal-lojista/api/v1/banco" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "ativoSpb: true"

Exemplo de resposta (200 OK):

[
{
"codigoCompe": "001",
"nomeInstituicao": "BANCO DO BRASIL S.A.",
"listaPrincipal": true
},
{
"codigoCompe": "341",
"nomeInstituicao": "ITAÚ UNIBANCO S.A.",
"listaPrincipal": true
},
{
"codigoCompe": "260",
"nomeInstituicao": "NU PAGAMENTOS S.A.",
"listaPrincipal": false
}
]
Boas práticas
  • Exiba primeiro os bancos com listaPrincipal: true (mais utilizados).
  • Utilize o codigoCompe retornado ao registrar uma conta ou gerar o pré-contrato.

4️⃣ Gerenciar Contas Bancárias

Consultar Contas do Cliente

Lista contas bancárias ativas vinculadas ao CPF do cliente.

Endpoint: GET /conta

Headers:

HeaderTipoObrigatórioDescrição
AuthorizationstringBearer token JWT
cpfClientestringCPF do cliente
curl -X GET "https://apihml.credsystem.com.br/emprestimo-pessoal-lojista/api/v1/conta" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "cpfCliente: 12345678901"

Exemplo de resposta (200 OK):

[
{
"codigoCompe": "001",
"nomeInstituicao": "BANCO DO BRASIL S.A.",
"numeroAgencia": "0001",
"numeroConta": "12345",
"dvConta": "6",
"tipoConta": "CC",
"status": "A"
}
]

Valores de tipoConta: CC (Conta Corrente), PP (Poupança) Valores de status: A (Ativa), I (Inativa), R (Rejeitada)


Registrar Nova Conta

Registra uma nova conta bancária para o cliente receber o crédito do empréstimo.

Endpoint: POST /conta

Headers:

HeaderTipoObrigatórioDescrição
AuthorizationstringBearer token JWT
cpfClientestringCPF do cliente

Corpo da Requisição:

CampoTipoObrigatórioDescrição
codigoClienteintegerCódigo do cliente
codigoCompestringCódigo do banco (COMPE)
nomeInstituicaostringNome do banco
numeroAgenciastringNúmero da agência
numeroContastringNúmero da conta
dvContastringDígito verificador
ispbstringCódigo ISPB do banco
tipoContastringCC ou PP
statusstringStatus da conta
curl -X POST "https://apihml.credsystem.com.br/emprestimo-pessoal-lojista/api/v1/conta" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "cpfCliente: 12345678901" \
-H "Content-Type: application/json" \
-d '{
"codigoCliente": 123456,
"codigoCompe": "001",
"nomeInstituicao": "BANCO DO BRASIL S.A.",
"numeroAgencia": "1234",
"numeroConta": "123456",
"dvConta": "7",
"ispb": "00000000",
"tipoConta": "CC",
"status": "A"
}'

Exemplo de resposta (201 Created):

{
"idConta": 123456
}

5️⃣ Gerar Pré-Contrato

Gera o pré-contrato com todas as condições do empréstimo para o cliente visualizar antes de efetivar. Retorna o documento em PDF codificado em Base64.

Endpoint: GET /precontrato

Parâmetros (Header):

HeaderTipoObrigatórioDescrição
AuthorizationstringBearer token JWT
cpfClientestringCPF do cliente
valorEmprestimonumberValor líquido do empréstimo
valorTotalIofnumberValor total do IOF
valorTotalnumberValor total final
taxaMesnumberTaxa de juros mensal
taxaAnonumberTaxa de juros anual
taxaCetMesnumberCET mensal
taxaCetAnonumberCET anual
codigoCompestringCódigo do banco
numeroAgenciastringNúmero da agência
numeroContastringNúmero da conta
tipoContastringCC ou PP
numeroParcelaintegerQuantidade de parcelas
dataVencimentoParceladatetimeData da 1ª parcela
valorParcelanumberValor de cada parcela
valorTotalSeguronumberValor do seguro (0 se não contratado)
curl -X GET "https://apihml.credsystem.com.br/emprestimo-pessoal-lojista/api/v1/precontrato" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "cpfCliente: 12345678901" \
-H "valorEmprestimo: 5000" \
-H "valorTotalIof: 326" \
-H "valorTotal: 5826" \
-H "taxaMes: 2.99" \
-H "taxaAno: 42.58" \
-H "taxaCetMes: 3.15" \
-H "taxaCetAno: 45.20" \
-H "codigoCompe: 001" \
-H "numeroAgencia: 1234" \
-H "numeroConta: 123456-7" \
-H "tipoConta: CC" \
-H "numeroParcela: 12" \
-H "dataVencimentoParcela: 2026-05-28T00:00:00.000Z" \
-H "valorParcela: 485.50" \
-H "valorTotalSeguro: 0"

Exemplo de resposta (200 OK):

{
"numeroContrato": 123,
"pdfBase64": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlL...",
"dataEmissao": "2026-04-27T19:54:31.995Z"
}
Importante

O pré-contrato é gerado em PDF Base64 e deve ser apresentado ao cliente para leitura e aceite. O cliente deve concordar com os termos antes da efetivação.


6️⃣ Efetivar Empréstimo

Realiza a efetivação de um empréstimo pessoal para o cliente, gerando o contrato e iniciando a transferência.

Endpoint: POST /efetivacao

Headers:

HeaderTipoObrigatórioDescrição
AuthorizationstringBearer token JWT
cpfClientestringCPF do cliente

Corpo da Requisição:

CampoTipoObrigatórioDescrição
codigoClienteintegerCódigo do cliente
idCanalintegerCanal de contratação
codigoEstabelecimentointegerCódigo do estabelecimento
numeroBinintegerBIN do cartão
idAppintegerID do aplicativo
valornumberValor do empréstimo
quantidadeParcelaintegerQuantidade de parcelas
dataHoraContratacaodatetimeData/hora da contratação
idEmprestimoPessoalintegerID do empréstimo
codigoCartaostringCódigo do cartão
dataHoraAceitedatetimeData/hora do aceite do cliente
ContaobjectDados da conta (ver abaixo)
origemLojistabooleanOrigem (default: false)
seguroAceitobooleanSeguro contratado (default: false)

Objeto Conta:

CampoTipoObrigatórioDescrição
codigoCompestringCódigo do banco
numeroAgenciastringAgência
numeroContastringConta
dvContastringDígito verificador
tipoContastringCC ou PP
curl -X POST "https://apihml.credsystem.com.br/emprestimo-pessoal-lojista/api/v1/efetivacao" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "cpfCliente: 12345678901" \
-H "Content-Type: application/json" \
-d '{
"codigoCliente": 12345,
"idCanal": 1,
"codigoEstabelecimento": 1234567,
"numeroBin": 12345678,
"idApp": 1,
"valor": 3000.00,
"quantidadeParcela": 12,
"dataHoraContratacao": "2026-04-13T23:54:45.686Z",
"idEmprestimoPessoal": 16,
"codigoCartao": "12345678",
"dataHoraAceite": "2026-04-13T23:54:45.686Z",
"Conta": {
"codigoCompe": "001",
"numeroAgencia": "1234",
"numeroConta": "12345",
"dvConta": "6",
"tipoConta": "CC"
},
"origemLojista": false,
"seguroAceito": false
}'

Exemplo de resposta (201 Created):

{
"numeroContrato": 987654,
"valorParcela": 272.01,
"dataPrimeiroVencimento": "2026-05-10"
}
Empréstimo Efetivado!

O valor será transferido para a conta do cliente. O contrato está criado e as parcelas já estão agendadas.


7️⃣ Consultar Empréstimos do Cliente

Lista todos os empréstimos pessoais efetivados do cliente, incluindo ativos, cancelados, rejeitados e liquidados.

Endpoint: GET /efetivacao

Headers:

HeaderTipoObrigatórioDescrição
AuthorizationstringBearer token JWT
cpfClientestringCPF do cliente
curl -X GET "https://apihml.credsystem.com.br/emprestimo-pessoal-lojista/api/v1/efetivacao" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "cpfCliente: 12345678901"

Exemplo de resposta (200 OK):

[
{
"idEmprestimoPessoal": 123,
"codigoCliente": 123456789,
"numeroBin": 12345678,
"valorContratacao": 3000.00,
"valorPrestacao": 272.01,
"quantidadeParcela": 12,
"dataHoraContratacao": "2026-04-13T23:54:45.686Z",
"dataHorasTransferencia": "2026-04-13T23:54:45.686Z",
"codigoEstabelecimento": 123456,
"nomeFantasia": "LOJA PARCEIRA",
"canalContratacao": "Loja",
"statusEmprestimo": "A",
"numeroContrato": 5678901,
"valorTotalJuros": 202.59,
"valorTotalIof": 60.87,
"taxaMes": 1.00,
"cetMensal": 1.32,
"flagPagamentoEmAtraso": false,
"flagSeguroAceito": false,
"diaVencimento": 10,
"Conta": {
"codigoCompe": "001",
"numeroAgencia": "1234",
"numeroConta": "12345",
"dvConta": "6",
"tipoConta": "CC",
"nomeInstituicao": "BANCO DO BRASIL S.A."
}
}
]

Status do Empréstimo (statusEmprestimo):

CódigoDescrição
AAtivo
CCancelado
RRejeitado
LLiquidado
TCancelado (Transferência)
DCancelado (Desistência)

8️⃣ Consultar Agendamentos

Lista os agendamentos de empréstimo pessoal de um cliente.

Endpoint: GET /agendamento

Headers:

HeaderTipoObrigatórioDescrição
AuthorizationstringBearer token JWT
cpfClientestringCPF do cliente
curl -X GET "https://apihml.credsystem.com.br/emprestimo-pessoal-lojista/api/v1/agendamento" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "cpfCliente: 12345678901"

Exemplo de resposta (200 OK):

[
{
"idEmprestimoPessoal": 123456,
"codigoCliente": 1234567,
"numeroBin": 12345678,
"valorContratacao": 3000.00,
"valorPrestacao": 272.01,
"quantidadeParcela": 12,
"dataHoraPrevisaoProcessamento": "2026-04-13T23:54:45.686Z",
"dataHoraContratacao": "2026-04-13T12:45:45.686Z",
"codigoEstabelecimento": 123,
"nomeFantasia": "LOJA PARCEIRA",
"canalContratacao": "LOJA",
"diaVencimento": 10,
"Conta": {
"codigoCompe": "001",
"numeroAgencia": "1234",
"numeroConta": "12345",
"dvConta": "6",
"tipoConta": "CC",
"nomeInstituicao": "BANCO DO BRASIL S.A."
}
}
]

Cancelar Agendamento

Realiza o cancelamento de um agendamento de empréstimo pessoal. Permitido apenas para agendamentos não efetivados.

Endpoint: POST /agendamento/cancelamento

Corpo da Requisição:

CampoTipoObrigatórioDescrição
idAgendamentointegerID do agendamento a cancelar
idCanalintegerCanal do agendamento
origemLojistabooleanOrigem (default: false)
curl -X POST "https://apihml.credsystem.com.br/emprestimo-pessoal-lojista/api/v1/agendamento/cancelamento" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "Content-Type: application/json" \
-d '{
"idAgendamento": 123456,
"idCanal": 123,
"origemLojista": false
}'

Exemplo de resposta (201 Created):

{
"mensagem": "Cancelamento realizado com sucesso"
}
Atenção

O cancelamento é irreversível. Só é possível cancelar agendamentos que ainda não foram processados.


9️⃣ Consultar Parcelas

Retorna as parcelas de um empréstimo pessoal com status de pagamento e boleto.

Endpoint: GET /parcela

Headers:

HeaderTipoObrigatórioDescrição
AuthorizationstringBearer token JWT
numeroContratointegerNúmero do contrato
curl -X GET "https://apihml.credsystem.com.br/emprestimo-pessoal-lojista/api/v1/parcela" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "numeroContrato: 987654321"

Exemplo de resposta (200 OK):

[
{
"numeroParcela": 1,
"valor": 272.01,
"dataVencimento": "05/05/2026",
"dataRegistroBoleto": "05/04/2026",
"flagRegistroBoleto": true,
"dataPagamento": "05/05/2026",
"valorPagamento": 272.01,
"flagPagamentoRealizado": true
},
{
"numeroParcela": 2,
"valor": 272.01,
"dataVencimento": "05/06/2026",
"dataRegistroBoleto": "05/05/2026",
"flagRegistroBoleto": true,
"dataPagamento": null,
"valorPagamento": null,
"flagPagamentoRealizado": false
}
]

🔟 Consultar Contrato (PDF)

Retorna todos os detalhes de um contrato específico de empréstimo, incluindo o documento em PDF codificado em Base64.

Endpoint: GET /contrato

Headers:

HeaderTipoObrigatórioDescrição
AuthorizationstringBearer token JWT
numeroContratointegerNúmero do contrato
curl -X GET "https://apihml.credsystem.com.br/emprestimo-pessoal-lojista/api/v1/contrato" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "numeroContrato: 987654321"

Exemplo de resposta (200 OK):

{
"numeroContrato": 900016363,
"pdfBase64": "JVBERi0xLjQKJaqrrK0KMSAwIG9...",
"dataEmissao": "2026-04-24T15:08:52.165Z"
}

⚠️ Respostas de Erro

Todos os endpoints retornam erros no seguinte formato:

{
"error": {
"message": "Bad Request",
"detail": "Código do cliente é inválido",
"code": 400,
"instance": "20260413020409"
}
}
HTTP StatusDescriçãoAção recomendada
400Requisição inválidaVerifique campos obrigatórios e formatos
401Token inválido/expiradoRenove o token JWT
503Serviço indisponívelAguarde e tente novamente (retry com backoff)
🔧 Problemas?

Consulte o Guia de Troubleshooting para soluções detalhadas por endpoint.