Visão Geral
Para emitir uma CCB com múltiplos assinantes, o fluxo é dividido em três etapas sequenciais:
1. Cadastro da pessoa (Person / Business)
↓
2. Associação como assinante.
↓
3. Criação da CCB com os papéis definidos
O sistema não exige um "cadastro de assinante" prévio isolado. O vínculo acontece no momento da criação da Application, onde cada entidade já cadastrada recebe um papel (role) que define sua responsabilidade na operação.
Etapa 1 — Cadastro da Pessoa
Antes de incluir qualquer assinante na CCB, a entidade deve existir no sistema como Person (Pessoa Física) ou Business (Pessoa Jurídica).
Pessoa Física
POST /banking/originator/persons
{
"name": "Felipe Tavares",
"taxpayer_id": "12345678900",
"birth_date": "1990-01-15",
"email": "[email protected]",
"phone": "+5511999999999"
}Pessoa Jurídica
POST /banking/originator/businesses
{
"company_name": "Empresa Exemplo LTDA",
"taxpayer_id": "12345678000100",
"email": "[email protected]",
"phone": "+5511999999999",
"signers": [
{
"person_id": "uuid-do-representante"
}
]
}Quando o papel for desempenhado por uma Empresa, o sistema busca automaticamente os indivíduos configurados como
signersvinculados a ela e os inclui na lista de assinantes da CCB. Por isso, os representantes da empresa devem estar cadastrados comoPersonpreviamente.
O retorno de ambos os endpoints inclui o id da entidade criada — esse ID é usado nos campos de assinantes no payload da Application.
Etapa 2 — Papéis de Assinantes Suportados
Cada entidade associada à Application recebe um papel que determina sua responsabilidade jurídica na operação.
Papel (role) | Campo no payload | Descrição |
|---|---|---|
| Emitente | borrower | Tomador principal do crédito. Sempre obrigatório |
| Avalista | guarantors | Garantidor pessoal da operação |
| Interveniente anuente | co_signers | Assina concordando com os termos, sem responsabilidade direta |
| Coobrigado | co_debtors | Compartilha a responsabilidade da dívida com o tomador |
| Garantidor real | collateral_providers | Fornece garantias colaterais (bem imóvel, veículo etc.) |
| Representante | representatives | Assina legalmente por uma empresa |
| Fiador | sureties | Fiador pessoal da operação |
Além dos envolvidos diretos, o sistema verifica automaticamente se o Produto ou o Fundo
Etapa 3 — Criação da CCB com Assinantes
Endpoint
POST /banking/originator/applications
Payload Completo
{
"product": {
"id": "d4f2f4a1-477e-4fa6-a3d0-0fa2628cbdc3"
},
"borrower": {
"id": "0bd03cc0-9b62-42ad-b3fb-f3a3e3132729"
},
"funding": {
"id": "ecc143f4-e1cc-499b-ae1f-be6a47004dca"
},
"simulation_id": "{{simulationId}}",
"signature_provider": "ZAPSIGN",
"signature_collect_method": "LINK",
"signature_authentication_options": {
"mode": "FACIAL_BIOMETRICS"
},
"signature_collect_options": {
"require_self_photo": false,
"require_selfie_validation": false
},
"guarantors": [
{
"guarantor_id": "53f390d5-b960-49a4-968c-56c8e7cbd4ab",
"type": "PERSON"
},
{
"guarantor_id": "b4d9eb62-14d2-4d28-8e98-c9d95c707a7b",
"type": "PERSON"
}
],
"co_signers": [],
"co_debtors": [
{
"co_debtor_id": "62218881-0e34-41d9-bf0c-c0cf4e6bda03",
"type": "PERSON"
}
],
"collateral_providers": [
{
"collateral_provider_id": "0a7b6e06-82b1-4ebe-a380-ab64392be72f",
"type": "PERSON"
}
],
"representatives": [
{
"representative_id": "6d6aafc6-41e2-45ce-aece-e588199867f8",
"type": "PERSON"
}
],
"sureties": [
{
"surety_id": "ad277aa0-845b-41cf-8c6f-8009d0aa35e6",
"type": "PERSON"
}
],
"investors": [],
"custom_variables": {
"variavel_exemplo_1": "valor 1",
"variavel_exemplo_2": "valor 2"
}
}Referência de Campos
Campos raiz
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
product.id | uuid | sim | ID do produto configurado |
borrower.id | uuid | sim | ID do tomador (emitente) da CCB |
funding.id | uuid | sim | ID do fundo/originador |
simulation_id | uuid | sim | Retornado pelo endpoint /preview |
signature_provider | enum | sim | Provedor de assinatura. Ver tabela de provedores |
signature_collect_method | enum | sim | Método de envio do link. Ver tabela de provedores |
signature_authentication_options | object | não | Configurações de autenticação na assinatura |
signature_collect_options | object | não | Configurações adicionais da coleta |
guarantors | array | não | Lista de avalistas |
co_signers | array | não | Lista de intervenientes anuentes |
co_debtors | array | não | Lista de coobrigados |
collateral_providers | array | não | Lista de garantidores reais |
representatives | array | não | Lista de representantes legais |
sureties | array | não | Lista de fiadores |
investors | array | não | Lista de investidores |
custom_variables | object | não | Variáveis customizadas injetadas no template do contrato |
Estrutura de cada assinante
Todos os arrays de assinantes seguem a mesma estrutura, variando apenas o nome do campo de ID:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
{role}_id | uuid | sim | ID da entidade cadastrada (ex: guarantor_id, co_debtor_id) |
type | enum | sim | Tipo da entidade: PERSON para pessoa física · BUSINESS para pessoa jurídica |
Objeto signature_authentication_options
signature_authentication_options| Campo | Tipo | Descrição |
|---|---|---|
mode | enum | FACIAL_BIOMETRICS exige reconhecimento facial durante a assinatura · NONE sem autenticação adicional |
Objeto signature_collect_options
signature_collect_options| Campo | Tipo | Descrição |
|---|---|---|
require_self_photo | boolean | Exige foto do documento durante a assinatura |
require_selfie_validation | boolean | Exige selfie como etapa de validação |
custom_variables
custom_variablesObjeto livre de chave-valor usado para injetar informações personalizadas no template do contrato. As chaves devem corresponder às variáveis configuradas no template do produto.
"custom_variables": {
"nome_da_variavel": "valor",
"outra_variavel": "outro valor"
}Provedores de Assinatura
signature_provider | signature_collect_method compatível | Observação |
|---|---|---|
ZAPSIGN | LINK | WHATSAPP | EMAIL | Recomendado para fluxos digitais |
CELCOIN | LINK | WHATSAPP | EMAIL | Verificar disponibilidade por produto |
UNICO | LINK | WHATSAPP | SMS | Validação biométrica — não suporta EMAIL |
CLICKSIGN | LINK | WHATSAPP | EMAIL | Suporte completo a métodos digitais |
Fluxo Interno de Assinaturas
Após a criação da Application, o sistema processa os assinantes automaticamente:
Application criada
→ Renderização do contrato (PDF via template + custom_variables)
→ Validação de KYC de todos os signatários
KYC APPROVED ou NOT_REQUIRED → avança
KYC REJECTED → CANCELED
→ Status: PENDING_SIGNATURE
→ Notificações disparadas a cada signatário via provedor
→ Todos assinam
→ ISSUED
Para cada signatário identificado, o sistema cria um registro interno com status PENDING. A CCB só avança para ISSUED após todos os registros de assinatura serem concluídos.
Observações Importantes
Empresas como assinantes — ao informar type: BUSINESS, o sistema não inclui a empresa diretamente como assinante, mas sim os indivíduos cadastrados como signers vinculados a ela. Certifique-se de que os representantes da empresa estão cadastrados e vinculados antes de criar a Application.
Arrays vazios — campos como co_signers, investors podem ser enviados como []. O sistema os ignora sem retornar erro.
simulation_id — expira após um período configurado no produto. Sempre crie a Application logo após a simulação.
Erros Comuns
| Situação | Causa provável |
|---|---|
| Assinante não encontrado | ID informado em guarantor_id, co_debtor_id etc. não existe no sistema |
| Empresa sem signatários | type: BUSINESS informado mas nenhum signer vinculado à empresa |
| KYC bloqueando assinatura | Signatário com KYC PENDING ou REJECTED — resolver antes de criar a Application |
simulation_id expirado | Tempo entre simulação e criação excedeu o limite configurado no produto |
| Variável não renderizada no contrato | Chave em custom_variables não corresponde à variável configurada no template do produto |