Crédito trabalhador - Leilão

Para o Crédito do Trabalhador, desenvolvemos dois modelos principais de operação. Um deles inclui uma etapa de leilão interno, que tem como objetivo selecionar a melhor oferta para ser apresentada ao trabalhador.

Nessa modalidade, o trabalhador acessa o ambiente da Carteira de Trabalho Digital (CTPS Digital), onde informa o valor desejado e a quantidade de parcelas. A Dataprev encaminha essa solicitação a diversas instituições financeiras conveniadas, sendo que cada instituição pode enviar apenas uma oferta por solicitação.

Ao receber a solicitação, a Celcoin distribui a demanda entre os originadores participantes. Cada originador envia sua oferta, e a plataforma realiza um leilão interno, selecionando automaticamente a melhor condição com base em critérios como: valor liberado, número de parcelas e menor Custo Efetivo Total (CET).

A oferta vencedora é apresentada pela Dataprev ao trabalhador dentro do ambiente da Carteira de Trabalho Digital (CTPS Digital), que poderá escolher a instituição que considerar mais vantajosa e seguir com a contratação.


Entenda as etapas

  1. Configuração do Webhook — O time de Implantação realiza o cadastro do webhook do originador para recebimento das solicitações.
  2. Solicitação do tomador — O tomador solicita ofertas de crédito por meio da CTPS Digital.
  3. Distribuição das solicitações aos originadores — A Celcoin envia as solicitações para os originadores via webhook.
  4. Envio da oferta pelo originador — Com base na solicitação, o originador retorna com a oferta e o link para complementação do cadastro.
  5. Leilão de Propostas — A Celcoin avalia as ofertas recebidas e seleciona a melhor condição.
  6. Aceite da oferta pelo tomador — O tomador aceita a oferta pelo app da CTPS.
  7. Emissão da CCB — O originador realiza as chamadas nas rotas pertinentes para emissão da CCB.
  8. Assinatura da CCB — O tomador realiza a assinatura digital do contrato.
  9. Averbação — O contrato é registrado no sistema oficial do Crédito do Trabalhador.
  10. Desembolso — O valor contratado é depositado na conta do tomador.
  11. Envio do contrato — O contrato assinado é enviado ao órgão do sistema oficial do Crédito do Trabalhador.

1. Configuração do Webhook

O time de Implantação da Celcoin realiza o cadastro da URL de webhook do originador durante a etapa de onboarding. Esse webhook é utilizado para recebimento de dois eventos distintos:

  • GeneratedWorkersCreditOrder — Notificação de nova solicitação de crédito do trabalhador
  • WorkersCreditAuctionResult — Resultado do leilão após envio da oferta

Certifique-se de que a URL configurada esteja disponível e retorne HTTP 200 para confirmação de recebimento.


2. Solicitação do tomador

O trabalhador (tomador) acessa o app da Carteira de Trabalho Digital (CTPS Digital) e informa o valor desejado e a quantidade de parcelas. A Dataprev encaminha essa solicitação às instituições financeiras conveniadas.


3. Distribuição das solicitações aos originadores

Assim que a Celcoin recebe a solicitação enviada pela Dataprev, ela é distribuída automaticamente para os originadores cadastrados via webhook.

Evento: GeneratedWorkersCreditOrder

POST https://{webhook-cadastrado}

Exemplo de payload recebido:

{
  "event": "GeneratedWorkersCreditOrder",
  "payload": {
    "id": "01d4889f-0000-0000-eb1b-7e3a4fc63649",
    "employee": {
      "code": "0123456789",
      "document": "39213513836",
      "name": "NOME DO TRABALHADOR"
    },
    "company": {
      "code": "1",
      "document": "416968000101",
      "name": "Nome da Empresa",
      "code_employee": "0123456789"
    },
    "birthday_date": "1987-10-06",
    "available_balance": 2000,
    "available_limit": 1500,
    "installment_quantity": 12,
    "request_date": "2025-05-30T18:49:10.000Z",
    "eligible_loan": true,
    "registration_date": "2020-01-01",
    "politically_exposed_person": false,
    "close_at": "2025-05-29T22:05:30.348Z"
  }
}

Parâmetros do payload:

CampoDescriçãoTipo
eventNome do evento enviado pelo webhookString
payload.idIdentificador único da solicitação de créditoUUID
payload.employee.codeCódigo interno do trabalhadorString
payload.employee.documentCPF do trabalhadorString
payload.employee.nameNome completo do trabalhadorString
payload.company.codeCódigo interno da empresaString
payload.company.documentCNPJ da empresaString
payload.company.nameNome da empresaString
payload.company.code_employeeCódigo do trabalhador na empresaString
payload.birthday_dateData de nascimento do trabalhadorYYYY-MM-DD
payload.available_balanceValor solicitado pelo tomadorNumber
payload.available_limitLimite máximo disponível para contrataçãoNumber
payload.installment_quantityQuantidade de parcelas solicitadasInteger
payload.request_dateData e hora da solicitaçãoISO 8601
payload.eligible_loanIndica se o trabalhador está elegível para o empréstimoBoolean
payload.registration_dateData de registro do trabalhador na empresaYYYY-MM-DD
payload.politically_exposed_personIndica se o trabalhador é pessoa politicamente expostaBoolean
payload.close_atPrazo limite para envio de ofertasISO 8601

Atenção: o campo close_at indica o prazo máximo para que o originador envie sua oferta. Propostas recebidas após esse horário serão desconsideradas.



4. Envio da oferta pelo originador

Com base na solicitação recebida, o originador envia sua oferta para o leilão. Cada originador pode enviar apenas uma oferta por solicitação.

POST /banking/originator/workers-credit/proposal/{id}

O {id} corresponde ao payload.id recebido no evento GeneratedWorkersCreditOrder.

Exemplo de payload:

{
  "installment_quantity": 10,
  "installment_amount": 200,
  "available_balance": 1200,
  "amount": 1500,
  "iof": 0,
  "annual_tax": 1.2,
  "cet": 1.1,
  "interest_tax": 0.1,
  "monthly_cet": 0.1,
  "insurance_amount": 12,
  "entry_url": "https://seusite.com.br/cadastro"
}

Parâmetros:

CampoDescriçãoTipo
installment_quantityQuantidade de parcelas da oferta(> O limite máximo de parcelas permitido no Crédito do trabalhador é de 96)Integer
installment_amountValor de cada parcelaNumber
available_balanceMargem disponível no momento da propostaNumber
amountValor total a ser liberado ao tomadorNumber
iofValor do IOF incluso na operaçãoNumber
annual_taxTaxa de juros anual (%)Number
cetCusto Efetivo Total anual (%)Number
interest_taxTaxa de juros nominal mensal (%)Number
monthly_cetCusto Efetivo Total mensal (%)Number
insurance_amountValor do seguro financiado incluso na operaçãoNumber
entry_urlURL de redirecionamento do tomador para complementação do cadastroString

O campo entry_url é obrigatório. Caso a oferta do originador seja a vencedora do leilão e o tomador a aceite, ele será redirecionado para essa URL para complementar o cadastro.


6. Leilão de Propostas

As ofertas recebidas dentro do prazo (close_at) são avaliadas automaticamente pela Celcoin. A plataforma seleciona a melhor condição com base nos critérios definidos (valor liberado, parcelas e CET). A oferta vencedora é encaminhada à Dataprev para ser apresentada ao trabalhador.

Após o encerramento do leilão, a Celcoin envia o resultado ao originador via webhook.

Evento: WorkersCreditAuctionResult

POST https://{webhook-cadastrado}

Exemplo de payload recebido:

{
  "event": "WorkersCreditAuctionResult",
  "payload": {
    "id": "01d48dd3-0000-0000-eb1b-7e3a4fc63649",
    "status": "APPROVED",
    "timestamp": "2025-06-12T15:39:13.251Z",
    "error_message": null
  }
}

Status possíveis:

StatusDescrição
APPROVEDOferta venceu o leilão e foi enviada ao tomador via Dataprev
DENIEDOferta não foi selecionada no leilão
ERROROferta foi aprovada, mas a Dataprev retornou erro ao tentar enviá-la ao tomador
CampoDescriçãoTipo
eventTipo do eventoString
payload.idID da proposta enviadaUUID
payload.statusResultado do leilãoString
payload.timestampData/hora da finalização do leilãoISO 8601
payload.error_messageDetalhe do erro (somente quando status = ERROR)String

7. Aceite da oferta pelo tomador

Após o envio da oferta vencedora à Dataprev, o tomador tem até 24 horas para aceitar uma das ofertas disponíveis no app da CTPS Digital.

Importante: o aceite da oferta pelo tomador não garante a emissão da CCB. Para que o empréstimo seja concluído com sucesso, ainda é necessário passar pelas etapas de KYC, assinatura do contrato, averbação e envio do contrato.


8. Emissão da CCB

POST /banking/originator/workers-credit/apply/{{id_proposta}}

Exemplo de payload:

{
  "borrower_id": "UIID,
  "product_id": "{{productId}}",
  "entry_url": "https://seusite.com.br/cadastro",
  "disbursement_date": "2026-04-20",
  "funding_id": "{{fundingId}}",
  "finance_fee": 0,
  "first_payment_date": "2026-06-11",
  "tac_amount": 0,
  "signature_collect_method": "LINK",
  "signature_provider": "UNICO",
  "insurance_amount": 100,
  "signature_authentication_options": {
    "mode": "DOC_SIGN"
  }
}

9. Assinatura da CCB

O tomador realiza a assinatura digital do contrato por meio do provedor de assinatura passado no payload de emissão, para saber sobre os possivels métodos de assinatura, consulte Assinaturas


10. Averbação

Após a assinatura, a Celcoin aciona automaticamente a Dataprev para confirmação da margem consignável. Esse processo é assíncrono — a plataforma aguarda a resposta da Dataprev antes de avançar para o desembolso.

A aplicação ficará no status PENDING_GUARANTEE durante essa etapa.


11. Desembolso

Com a averbação confirmada, o valor contratado é depositado na conta do tomador conforme os dados fornecidos. A aplicação avança para o status PENDING_DISBURSEMENT e, após a liquidação, para ISSUED.


12. Envio do contrato

Com o contrato devidamente assinado e a averbação confirmada, a Celcoin envia o documento ao sistema oficial do Crédito do Trabalhador via Dataprev.


Ciclo de vida da aplicação

AGREEMENT_RENDERING → KYC_PROCESSING → PENDING_SIGNATURE → PENDING_QUALIFICATION → PENDING_GUARANTEE → PENDING_DISBURSEMENT → ISSUED
StatusDescrição
AGREEMENT_RENDERINGContrato sendo gerado
KYC_PROCESSINGValidação de identidade do tomador em andamento
PENDING_SIGNATUREAguardando assinatura do contrato pelo tomador
PENDING_QUALIFICATIONAguardando Aprovação da operação (Status não é obrigatório)
PENDING_GUARANTEERealizando a averbação do contrato na Dataprev
PENDING_DISBURSEMENTRealizando o desembolso
ISSUEDCCB emitida e desembolso realizado

Erros e Comportamentos — Leilão Interno

Esta página descreve os possíveis erros e comportamentos do sistema durante o processo de leilão interno do Crédito do Trabalhador.


Resultado do Leilão via Webhook

Após o encerramento do leilão, a Celcoin envia o resultado ao originador pelo evento WorkersCreditAuctionResult. O campo status indica se a oferta foi aprovada, negada ou se houve erro.

StatusDescriçãoO que fazer
APPROVEDOferta venceu o leilão e foi enviada ao tomador via DataprevAguardar o aceite do tomador e iniciar o fluxo de emissão da CCB
DENIEDOferta não foi selecionada no leilãoNenhuma ação necessária. A operação encerra aqui para esse originador
ERROROferta foi aprovada no leilão, mas a Dataprev retornou erro ao tentar enviá-la ao tomadorVerificar o campo error_message para identificar o motivo

Exemplo de payload com erro:

{
  "event": "WorkersCreditAuctionResult",
  "payload": {
    "id": "01d48dd3-0000-0000-eb1b-7e3a4fc63649",
    "status": "ERROR",
    "timestamp": "2025-06-12T15:39:13.251Z",
    "error_message": "Request failed with status code 400"
  }
}

Erros ao Enviar a Oferta

Ao chamar o endpoint POST /banking/originator/workers-credit/proposal/{id}, a API pode retornar os seguintes erros HTTP:

HTTP StatusCausa provávelO que fazer
400 Bad RequestPayload inválido, campo obrigatório ausente ou fora do formato esperadoRevisar os campos enviados, especialmente cet, annual_tax, interest_tax e installment_amount
404 Not FoundO id da proposta não existe ou já expirou (close_at ultrapassado)Verificar se o id está correto e se o prazo da solicitação ainda está vigente
409 ConflictO originador já enviou uma oferta para essa solicitaçãoCada originador pode enviar apenas uma oferta por solicitação
422 Unprocessable EntityCampos com valores inconsistentes entre si (ex: CET mensal maior que anual)Revisar os valores financeiros informados

Erros Retornados pela Dataprev

Quando o status do leilão é ERROR, o campo error_message pode conter um código de erro originado da Dataprev. A tabela abaixo lista os códigos possíveis.

CódigoDescrição
AONome inválido
APCompetência de início de desconto ou data de início/fim de contrato inválida
AZValores de número de parcelas e valor da parcela são iguais aos valores atuais do empréstimo
BCRequisição sem CBC ou CBC inválido
BLValor da parcela inválido
BQValor liberado inválido
CACódigo do banco inválido
ESEmpregador suspenso para averbações de empréstimo
EVUm ou mais campos possuem valores inválidos
HTInício do desconto informado já ultrapassado
HUVínculo inelegível para empréstimo pelo trabalhador
HVQuantidade de parcelas inválida
HWMargem consignável excedida
HXEmpréstimo já cadastrado
HYEmpréstimo inexistente
IOValor do IOF inválido
MEMotivo de exclusão do empréstimo inválido
NCRequisição sem número de contrato
OHNúmero do contrato inválido
ONOperação não permitida
OTTamanho de um ou mais campos incorreto
OUTaxa de juros anual inválida ou menor que a taxa mensal
OVValor do custo efetivo (anual ou mensal) inválido
OZOperação suspensa
PIValor do empréstimo inválido. Deve ser maior que o valor de referência
SBIdentificador da proposta inválido
SFCPF ausente ou com dígito verificador inválido
SGCódigo de inscrição do empregador deve ser informado
SHNúmero de inscrição do empregador deve ser informado
SIMatrícula do trabalhador deve ser informada
SMProposta expirada
SNProposta já utilizada para averbação de empréstimo
TXValor da taxa de juros mensal inválido
TOTaxa de juros mensal maior que a informada na proposta
TPData do primeiro desconto inválida

Os erros da Dataprev são retornados no campo error_message do evento WorkersCreditAuctionResult quando o status é ERROR.


Instabilidade na API da Dataprev

Em casos de instabilidade temporária:

  • O sistema realiza tentativas automáticas de envio da oferta até o prazo close_at da solicitação.
  • Se o prazo for atingido sem sucesso, o leilão é encerrado sem aprovação da oferta desse originador.

Oferta fora do prazo

Solicitações enviadas após o horário indicado em close_at são automaticamente desconsideradas. Nenhuma resposta de erro é enviada — o originador simplesmente não receberá o evento WorkersCreditAuctionResult com status APPROVED.

Monitore o campo close_at recebido no evento GeneratedWorkersCreditOrder e garanta que sua oferta seja enviada com antecedência.

Diagrama de sequencia - Leilão