Ciclo de vida da operação
Uma operação de crédito passa por etapas bem definidas, da apuração de margem ao desembolso. Entender essa sequência é o que evita deixar entidades em estado inconsistente.
Visão geral do fluxo
Estados do empréstimo
Depois de emitido, o empréstimo caminha por uma máquina de estados. O campo
status informa onde ele está, e o hint proxima_acao (no GET /v1/emprestimos/{id} e na listagem) sugere o que fazer em seguida.
| Status | Significado | Próxima ação típica |
|---|---|---|
emitindo | Emissão aceita e em andamento (estado transitório, só aparece quando a emissão responde 202 — ver abaixo) | aguardar_emissao |
em_assinatura | CCB emitida, aguardando assinatura | enviar_assinatura (assinatura Socinal); na assinatura externa, registrar_assinatura (agrupada) ou iniciar_averbacao (diferida) |
aguardando_averbacao | Assinatura recebida, aguardando averbação | aguardar_validacao (assinatura Socinal — a validação e a averbação são internas); iniciar_averbacao na assinatura externa |
averbada | Margem reservada no consignante | desembolsar |
desembolso_agendado | PIX agendado | aguardar_desembolso |
desembolsada | Crédito liberado | — |
em_atraso | Parcelas em atraso | — |
liquidada | Contrato quitado | — |
refinanciada | Substituída por um novo contrato (refinanciamento) | — |
cancelada | Operação cancelada / excluída | — |
Use o proxima_acao como bússola. Em vez de codificar a máquina de estados
no seu lado, consulte o empréstimo e siga o hint que a API devolve.
Emissão em andamento (status: emitindo)
POST /v1/emprestimos responde 201 no caminho normal: a CCB já nasce
em_assinatura, com o número definitivo. Esse é o caso da esmagadora maioria das
emissões e nada muda para quem já integra.
Quando o sistema de liquidação da Socinal não confirma a proposta dentro da
requisição (timeout, indisponibilidade momentânea), a resposta é 202 Accepted:
{
"emprestimo_id": "6f1e2d3c-4b5a-6978-8a9b-0c1d2e3f4a5b",
"status": "emitindo",
"proxima_acao": "aguardar_emissao"
}O que isso significa, na prática:
- O empréstimo existe e é endereçável por
emprestimo_id— não é erro e não há nada a corrigir no seu pedido; - não reemita. Repetir a chamada com a mesma
Idempotency-Keydevolve esta mesma resposta (202); uma chave nova arriscaria uma segunda operação para o mesmo trabalhador; - o desfecho chega por webhook —
emprestimo.emitido(a CCB vai paraem_assinatura, com o número definitivo) ouemprestimo.emissao_falhou(o empréstimo é cancelado e aí sim você emite de novo, com uma chave nova); - a qualquer momento,
GET /v1/emprestimos/{id}mostra o estado atual. Enquanto durar,status: emitindoeproxima_acao: aguardar_emissao.
emitindo não é um estado para agir, é um estado para esperar. Não envie
para assinatura, não averbe e não desembolse um empréstimo em emitindo — o
número dele ainda pode mudar (o definitivo vem do sistema de liquidação).
O número devolvido na emissão só é definitivo quando o status é
em_assinatura. Se você recebeu 202, use emprestimo_id como chave de
correlação e grave o numero que vier no emprestimo.emitido.
Duas dimensões de estado
status e proxima_acao descrevem apenas o ciclo de vida da CCB — da emissão
à liquidação. A pendência de entrega de documentos ao Dataprev é uma dimensão
independente e vive em um bloco próprio:
{
"status": "averbada",
"proxima_acao": "desembolsar",
"docs_dataprev_status": "aguardando",
"docs_dataprev_prazo": "2026-06-08T00:31:12.500Z",
"entrega_docs_dataprev": {
"status": "aguardando",
"prazo": "2026-06-08T00:31:12.500Z",
"proxima_acao": "entregar_documentos_dataprev"
}
}Regras do contrato:
- Uma pendência de documentos nunca suprime uma ação pendente da CCB. Em
averbadacom documentos pendentes,proxima_acaocontinuadesembolsar. entrega_docs_dataprevénullquando não existe essa dimensão — ou seja, em tudo que não é assinatura externa com entrega diferida (entrega_docs_dataprev_diferida), e também nela enquanto a averbação ainda não abriu a necessidade. Tratenullcomo “não se aplica”, não como “entregue”.docs_dataprev_statusedocs_dataprev_prazocontinuam na raiz da resposta, com os mesmos valores do bloco, por compatibilidade com integrações existentes.
Matriz completa: status → proxima_acao, por modalidade
Esta é a tabela autoritativa da 1ª dimensão (ciclo de vida da CCB). As três
modalidades são configurações do parceiro, não escolhas por requisição:
Socinal (D4Sign) (assinatura_socinal=true), externa agrupada
(assinatura_socinal=false) e externa diferida (assinatura_socinal=false +
entrega_docs_dataprev_diferida=true).
status | Socinal (D4Sign) | Externa agrupada | Externa diferida |
|---|---|---|---|
emitindo | aguardar_emissao | aguardar_emissao | aguardar_emissao |
em_assinatura | enviar_assinatura | registrar_assinatura | iniciar_averbacao |
aguardando_averbacao | aguardar_validacao | iniciar_averbacao | iniciar_averbacao |
averbada | desembolsar | desembolsar | desembolsar |
desembolso_agendado | aguardar_desembolso | aguardar_desembolso | aguardar_desembolso |
desembolsada | null | null | null |
em_atraso | null | null | null |
liquidada | null | null | null |
refinanciada | null | null | null |
cancelada | null | null | null |
O vocabulário de proxima_acao é fechado — são exatamente estes sete valores
(mais null): aguardar_emissao, enviar_assinatura, registrar_assinatura,
iniciar_averbacao, aguardar_validacao, desembolsar, aguardar_desembolso.
Os aguardar_* significam “nada a fazer do seu lado”; os demais correspondem a uma
chamada sua. Se aparecer um valor que você não conhece, trate como
“aguardar/consultar” em vez de falhar.
Matriz da 2ª dimensão: entrega_docs_dataprev
Só a modalidade externa diferida tem as duas dimensões ao mesmo tempo — nas
outras duas o bloco é sempre null:
| Modalidade | docs_dataprev_status | status da CCB | proxima_acao (CCB) | entrega_docs_dataprev.proxima_acao |
|---|---|---|---|---|
| Socinal (D4Sign) | — (bloco null) | qualquer | conforme a matriz acima | — |
| Externa agrupada | — (bloco null) | qualquer | conforme a matriz acima | — |
| Externa diferida | null (bloco null) | emitindo / em_assinatura | aguardar_emissao / iniciar_averbacao | — |
| Externa diferida | aguardando | emitindo / em_assinatura | aguardar_emissao / iniciar_averbacao | aguardar_averbacao |
| Externa diferida | aguardando | aguardando_averbacao | iniciar_averbacao | aguardar_averbacao |
| Externa diferida | aguardando | averbada | desembolsar | entregar_documentos_dataprev |
| Externa diferida | aguardando | desembolso_agendado | aguardar_desembolso | entregar_documentos_dataprev |
| Externa diferida | aguardando | desembolsada / em_atraso / liquidada | null | entregar_documentos_dataprev |
| Externa diferida | aguardando | cancelada | null | aguardar_averbacao |
| Externa diferida | entregue | qualquer | conforme a matriz acima | null (nada a fazer) |
aguardar_averbacao no bloco de documentos significa: a necessidade já está
aberta, mas a entrega só é aceita depois de a averbação concluir — antes dela o
envio responde 409.
proxima_acao: null em desembolsada não significa “sem pendências”.
Confira entrega_docs_dataprev: a CCB pode estar liquidada e a entrega dos
documentos ao Dataprev ainda em aberto (com prazo correndo). São duas dimensões
— leia as duas.
Por que a ordem importa
- A simulação e a emissão do empréstimo dependem de uma consulta de margem válida
(
consulta_margem_id). Sem ela, a API respondeCONSULTA_MARGEM_NAO_ENCONTRADA(422). - O desembolso só é permitido com o empréstimo
averbada— tentar antes resulta em conflito. - A averbação é disparada automaticamente quando a assinatura é via
Socinal (D4Sign), mas é explícita (
POST .../averbacao) no fluxo de assinatura externa. Na variante de entrega diferida desse fluxo, averbar não exige documento algum: pode ser chamada com o empréstimo ainda emem_assinatura, e o pacote assinado é devolvido depois do desembolso.
Síncrono vs. assíncrono
Algumas etapas concluem na hora; outras rodam em segundo plano e respondem
202 Accepted:
- Assíncronas (
202): envio para assinatura, os três envios de documentos (POST /{id}/documentos,POST /{id}/documentos-dataprev,POST /{id}/documentos/{tipo}), averbação (e o retry) e desembolso. O resultado chega por webhook (recomendado) ou por consulta ao recurso. - Síncronas (
200/201): consulta de margem, simulação, emissão do empréstimo (201;202só quando ficaemitindo) e cancelamento da CCB (200, é a resposta do próprio consignante).
Aceite qualquer 2xx como sucesso. Ao integrar, compare o status por faixa
(>= 200 && < 300), nunca com um valor exato.
Veja Webhooks para reagir aos eventos assíncronos sem ficar consultando em loop.