Visão Geral
O Crédito do Trabalhador é uma modalidade de crédito consignado privado com desconto em folha de pagamento. O fluxo sem leilão segue as etapas abaixo, do consentimento do tomador até a formalização da CCB.
AGREEMENT_RENDERING → KYC_PROCESSING → PENDING_SIGNATURE → PENDING_GUARANTEE → PENDING_DISBURSEMENT → ISSUED
↑
(pula se KYC já aprovado)
AGREEMENT_RENDERING → PENDING_SIGNATURE
Em caso de erro/cancelamento: qualquer status → CANCELED
Passo 1 — Termo de Consentimento
Antes de qualquer consulta de margem, o tomador deve autorizar o acesso aos seus dados junto ao Dataprev. Existem duas formas de coletar esse consentimento.
Opção A — Pela Esteira Celcoin
A plataforma envia o termo de consentimento diretamente ao tomador via WhatsApp ou e-mail.
POST /banking/originator/guarantee/authorization-permission
Authorization: Bearer {originator_access_token}
Content-Type: application/json
{
"taxpayer_id": "48123456789",
"product_id": "87a3767c-8d12-4164-80bf-5aa0ae796f06",
"name": "Felipe Tavares",
"mode": "WHATSAPP",
"email": "[email protected]",
"phone": {
"country_code": "+55",
"area_code": "11",
"number": "948891456"
}
}| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
taxpayer_id | string | Sim | CPF do tomador |
product_id | string (UUID) | Sim | ID do produto de crédito |
name | string | Sim | Nome completo do tomador |
mode | string | Sim | Canal de envio: WHATSAPP ou EMAIL |
email | string | Sim | E-mail do tomador (obrigatório mesmo quando mode: WHATSAPP) |
phone.country_code | string | Sim | Código do país (ex: +55) |
phone.area_code | string | Sim | DDD |
phone.number | string | Sim | Número do telefone |
Após o tomador assinar o termo, você receberá a confirmação via webhook previamente cadastrado.
Para mais informações sobre o webhook de consentimento, clique aqui.
Opção B — Consentimento Coletado pelo Originador
O originador coleta o consentimento do lado dele e envia apenas a evidência (string) para a plataforma.
POST /banking/originator/guarantee/authorization-file-permission-async
Authorization: Bearer {originator_access_token}
Content-Type: multipart/form-data
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
taxpayer_id | string | Sim | CPF do tomador |
product_id | string (UUID) | Sim | ID do produto de crédito |
authorization | string | Sim | Evidência do consentimento coletado pelo originador |
Retorno: 202 Accepted
A confirmação do processamento é enviada via webhook previamente cadastrado com o seguinte payload:
{
"event": "GuaranteeAuthorizationUpdate",
"payload": "{\"id\":\"247aabd3-255c-4c2e-9b06-2f6c943401d5\",\"status\":\"AUTHORIZED\",\"taxpayer_id\":\"08652947392\",\"valid_date\":\"2026-05-22T19:33:56.224117\",\"authorization_token\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2RpZ29Tb2xpY2l0YW50ZSI6IjY2OCIsImNwZiI6Ijg2NTI5NDczOTIiLCJkYXRhSW5jbHVzYW8iOjE3NzY4ODY0MzgsImV4cCI6MTc3OTUwNTE5OX0.nMPl0XVRrXamahNY0MW_2mBhISXTZbOFg09AM2ORWFk\"}"
}Para mais informações sobre o webhook de consentimento, clique aqui.
Passo 2 — Consulta do Token de Autorização
Após receber a confirmação do consentimento via webhook, consulte o token de autorização que será necessário para as próximas etapas.
POST /banking/originator/guarantee/authorization
Authorization: Bearer {originator_access_token}
Content-Type: application/json
{
"taxpayer_id": "20634897500",
"product": {
"id": "87a3767c-8d12-4164-80bf-5aa0ae796f06"
}
}Exemplo de resposta:
{
"authorization_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"authorization_validity_date": "2026-05-19T00:00:00Z",
"status": "AUTHORIZED"
}| Campo | Descrição |
|---|---|
authorization_token | Token JWT de autorização. Utilizado internamente pela plataforma nas consultas ao Dataprev |
authorization_validity_date | Data de validade da autorização |
status | Status da autorização:
|
Passo 3 — Consulta de Margem Consignável
Consulta a margem disponível do tomador junto ao Dataprev.
GET /banking/originator/guarantee/{product_id}/get-balance?taxpayer_id={taxpayer_id}
Authorization: Bearer {originator_access_token}
Exemplo de requisição:
curl --location 'https://sandbox.platform.flowfinance.com.br/banking/originator/guarantee/87a3767c-8d12-4164-80bf-5aa0ae796f06/get-balance?taxpayer_id=20634897500' \
--header 'Authorization: Bearer {originator_access_token}'Exemplo de resposta:
{
"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": "7",
"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",
"guarantee_info": {
"has_guarantees": true,
"available_rescission_allowance_percent": 20.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"
}Campos importantes para a próxima etapa:
| Campo | Descrição |
|---|---|
products[].balance_check_id | ID da consulta de margem. Obrigatório na criação da CCB |
products[].available_balance | Margem disponível do tomador por parcela em R$ |
products[].authorization.details[].authorized | Indica se o tomador está autorizado para o tipo de produto (LOAN) |
Comportamento assíncrono:Esta rota é síncrona por padrão. Caso o rate limit do Dataprev seja atingido, a resposta será entregue de forma assíncrona no webhook previamente cadastrado. Para mais informações, clique aqui.
Para um detalhamento completo dos campos retornados pelo Dataprev na consulta de margem de um Tomador, clique aqui.
Tabela de Erros
400 — CPF em formato inválido
{
"message": "400 - Document Invalid field. Check the length and only numbers are allowed.",
"is_retryable": false
}400 — Token não informado ou inválido
{
"message": "400 - Token não informado ou é inválido",
"is_retryable": false
}>
Passo 3.1 — Consulta de Saldo FGTS & Multa Rescisória FGTS (Opcional)
A consulta de dados do saldo FGTS do tomador de crédito, irá possibilitar que o originador verifique qual o valor de garantia irá atrelar a averbação.
Antes de realizar esta consulta é necessário que:
- A Celcoin seja Autorizada para Consultar Informações do FGTS. Esta autorização é feita no app CTPS pelo trabalhador. Esta autorização tem uma validade de 30 dias corridos e pode ser excluída a qualquer momento pelo trabalhador.
- Seja feita a Autorização para Consulta aos Dados do Vínculo Empregatício e Saldo FGTS
GET /banking/originator/guarantee/{productId}/get-balance-fgts
Authorization: Bearer {originator_access_token}
Exemplo de requisição:
curl --location 'https://sandbox.platform.flowfinance.com.br/banking/originator/guarantee/{productId}/get-balance-fgts?balance_check_id=5fba46e4-bdb5-4660-9156-3e0b289d6cbf' \
--header 'Authorization: Bearer {originator_access_token}'Exemplo de resposta:
{
"id": "1d9cccdb-6dce-4699-8263-cae9d735bb8a",
"consult_date_time": "2026-04-08T15:30:25",
"document": "68591203712",
"available_fgts_guarantee_balance": 3500,
"severance_fine_fgts_guarantee": 4680.3
}Passo 4 — Cadastro do Tomador
Cadastre o tomador na plataforma antes de prosseguir para a simulação. As informações de nome e CPF devem ser consistentes com os dados retornados na consulta de margem.
Para detalhes completos sobre o cadastro de tomador, clique aqui.
POST /banking/originator/persons
Authorization: Bearer {originator_access_token} Content-Type: application/json
{
"taxpayer_id": "20634897500",
"full_name": "Srta. Alexia Cavalcante",
"nationality": "Brasileiro",
"pep": false,
"birth_date": "1990-08-15",
"sex": "MALE",
"marital_status": "MARRIED",
"marital_property_system": "PARTIAL_COMMUNION",
"mothers_name": "Ana Lúcia Pereira",
"email_address": "[email protected]",
"occupation": "Analista de Sistemas",
"monthly_income": 5500,
"education_level": "HIGHER_COMPLETE",
"phone": {
"country_code": "55",
"area_code": "11",
"number": "987654321"
},
"id_document": {
"number": "45.678.912-3",
"issuer": "SSP/SP",
"issue_date": "2015-03-20",
"type": "RG"
},
"address": {
"street_name": "Avenida Presidente Vargas",
"street_number": 300,
"postal_code": "01010000",
"district": "Centro",
"city": "São Paulo",
"state_code": "SP",
"country_code": "BRA",
"extra_info": "Apartamento 42 – Bloco B"
},
"pix": {
"key": "4ca519ef-0ccc-4c41-b58b-c88f1f47d8ab",
"key_type": "ALEATORY_KEY"
}
}Passo 5 — Simulação da Operação
O available_balance retornado na consulta de margem representa a margem disponível por parcela. Por isso, recomendamos o uso da simulação com payment_value (valor da parcela) como parâmetro principal.
Atenção:A data do primeiro pagamento (1ª parcela) deve seguir o calendário operacional do Dataprev. Para mais informações,
O limite máximo de parcelas permitido no Crédito do trabalhador é de 96
Para detalhes completos sobre a simulação, clique aqui.
POST /banking/originator/products/{product_id}/preview
Authorization: Bearer {originator_access_token} Content-Type: application/json
{
"payment_value": 454,
"interest_rate": 0.04,
"tac_amount": 0,
"finance_fee": 0,
"iofType": "PERSON",
"num_payments": 12,
"first_payment_date": "2026-07-28",
"disbursement_date": "2026-04-18",
"borrower_type": "PERSON",
"schedule_type": "MONTHLY",
"interest_pre_type": "BASE_360",
"insurance_amount": 100
}| Campo | Descrição |
|---|---|
payment_value | Valor da parcela mensal. Deve ser ≤ available_balance retornado na consulta de margem |
interest_pre_type | Base de cálculo dos juros: BASE_360 ou BASE_365 |
insurance_amount | Valor do seguro por parcela, se aplicável |
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çãoRegra aplicada
O valor de
monthly_effective_interest_ratenão poderá exceder em mais de 1 ponto percentual o valor deinterest_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_rate monthly_effective_interest_rate Resultado 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.
Passo 6 — Formalização da CCB
Com o balance_check_id (consulta de margem) e o simulation_id (simulação) em mãos, crie a CCB.
POST /banking/originator/applications
Authorization: Bearer {originator_access_token} Content-Type: application/json
{
"borrower": {
"id": "d43cb69e-aaad-4392-9781-ac441196175b"
},
"product": {
"id": "87a3767c-8d12-4164-80bf-5aa0ae796f06"
},
"funding": {
"id": "e746ba58-8cfe-48e0-872a-a4109baba935"
},
"balance_check_id": "be20ac27-a93c-41c9-9cdf-e3a92a13c49d",
"simulation_id": "56ec99c0-04ea-4571-ba4f-3859c9b3cced",
"signature_collect_method": "LINK",
"signature_provider": "UNICO",
"signature_authentication_options": {
"mode": "DOC_SIGN"
},
"guarantee_info": {//Obrigatório apenas em operações com garantias
"guarantee_balance_fgts_id": "e746ba58-8cfe-48e0-872a-a4109baba935",
"available_fgts_guarantee_balance": 5000,
"severance_fine_fgts_guarantee": 0,
"available_rescission_allowance_percent": 35.00
}
}| Campo | Descrição |
|---|---|
borrower.id | person_id retornado no cadastro do tomador |
balance_check_id | ID retornado na consulta de margem (Passo 3) |
simulation_id | ID retornado na simulação (Passo 5) |
signature_collect_method | Método de coleta de assinatura: LINK, EMAIL, WHATSAPP, NONE |
signature_provider | Provedor de assinatura: UNICO, CLICKSIGN, ZAPSIGN, CELCOIN |
| guarantee_balance_fgts_id | Referência a uma consulta existente de FGTS |
| available_fgts_guarantee_balance | Valor do saldo FGTS requerido como garantia da consignação. |
| severance_fine_fgts_guarantee | Valor da multa rescisória FGTS requerida como garantia da consignação. |
| available_rescission_allowance_percent | Percentual de verbas rescisórias equerida como garantia da consignação. |
Para detalhes sobre os métodos e provedores de assinatura disponíveis, [clique aqui](https://developers.celcoin.com.br/reference/modalidades-de-assinaturas
Diagrama de sequencial - Sem Leilão