Liquidação
Registre o pagamento (total ou parcial) de uma parcela de uma operação ativa no FIDC. Liquidações podem ser na curva (data prevista), antecipadas (parcela ou contrato inteiro) ou a menor (cliente pagou abaixo do valor previsto). A IORQ processa a baixa, atualiza o estoque do fundo e devolve a confirmação via webhook.
POST /api/installment/settle · POST /api/installment/prepayment
1. Quando usar este fluxo
Use os endpoints de liquidação quando o tomador da operação efetuou o pagamento de uma ou mais parcelas, em qualquer canal (débito automático, boleto, Pix, transferência). A IORQ não recebe o pagamento diretamente — ela apenas registra a baixa no estoque do fundo a partir da notificação do integrador.
PrincípioA IORQ confia na notificação do integrador. A conciliação entre o que entrou na conta vinculada do fundo e o que foi notificado é uma etapa posterior, conduzida pela administradora junto ao custodiante — não exposta nesta API.
Tipos de liquidação
| Tipo | Quando usar | Endpoint |
|---|---|---|
| Liquidação na curva | Cliente pagou a parcela na data prevista ou após (com encargos) | POST /api/installment/settle |
| Liquidação antecipada | Cliente quitou uma ou mais parcelas antes do vencimento | POST /api/installment/prepayment |
| Liquidação a menor / parcial | Cliente pagou abaixo do valor previsto (acordo, desconto) | POST /api/installment/settle com paid_amount menor que o valor da parcela e is_partial_payment: true |
2. Atores envolvidos
| Ator | Papel no fluxo | Implementa? |
|---|---|---|
| Integrador | Recebe o pagamento e notifica a IORQ. Consome webhooks de confirmação | Sender + Receiver |
| IORQ (gestora) | Recebe a notificação, processa a baixa no estoque, atualiza indicadores, emite webhooks | já implementado |
| Administradora | Confirma a baixa no livro do fundo a partir da sinalização da IORQ | via integração IORQ ↔ ADM |
3. Fluxo end-to-end
sequenceDiagram
participant TOMADOR as Tomador
participant INT as Integrador
participant IORQ as IORQ
participant ADM as Administradora
TOMADOR->>INT: Paga parcela (débito, boleto, Pix...)
INT->>INT: Registra o pagamento internamente
INT->>IORQ: POST /api/installment/settle
IORQ-->>INT: 201 Created
IORQ->>IORQ: Processa baixa + atualiza estoque
IORQ->>INT: Webhook LOAN_UPDATE (status: settled_installment)
IORQ->>ADM: Sinaliza baixa
4. Pré-requisitos
- Operação ativa no fundo (já cedida e desembolsada — ver cessão)
- Pagamento recebido e identificado pelo integrador
- Token Bearer JWT válido (ver Autenticação)
- Endpoint HTTPS público para receber webhooks de confirmação
5. Passo a passo
5.1 Notificar liquidação de parcela
Para cada parcela paga (na curva, com atraso ou a menor), envie uma chamada para POST /api/installment/settle. Cada chamada registra a liquidação de uma parcela.
POST /api/installment/settle · application/json
Campos do payload
| Campo | Tipo | Descrição |
|---|---|---|
fund_id | UUID | FIDC da operação |
originator_proposal_code | string | Identificador da operação (o mesmo usado na cessão) |
code | string | Código da parcela liquidada (consistente com o campo code enviado em installments na cessão) |
nosso_numero | string | Nosso número da parcela |
paid_amount | decimal | Valor efetivamente recebido. Use o valor real — pode ser menor (a menor) ou maior (com encargos) que o valor previsto |
payment_date | date | Data efetiva do pagamento (ISO 8601). Datas futuras são rejeitadas |
is_partial_payment | boolean | Opcional (default false). true para pagamento parcial |
Exemplo de request:
curl -X POST 'https://hs-receiver-app-production.iorq.com.br/api/installment/settle' \
-H 'Authorization: Bearer eyJhbGciOi...' \
-H 'Content-Type: application/json' \
-d '{
"fund_id": "374485cf-f6df-467c-b91d-9f14082c6f36",
"originator_proposal_code": "OP-001",
"code": "1",
"nosso_numero": "00012345",
"paid_amount": 280.00,
"payment_date": "2026-05-30",
"is_partial_payment": false
}'Resposta (201):
{
"status": "settled",
"message": "Installment settled successfully"
}5.2 Liquidação antecipada
Use POST /api/installment/prepayment quando o tomador antecipa pagamento — quita uma ou mais parcelas futuras antes do vencimento. A IORQ recalcula juros e identifica quais parcelas foram quitadas pelo valor antecipado. Há também POST /api/installment/prepayment/v2 para antecipação envolvendo múltiplas operações em uma chamada.
POST /api/installment/prepayment · application/json
Campos do payload
| Campo | Tipo | Descrição |
|---|---|---|
fund_id | UUID | FIDC da operação |
identifier | object | { originator_proposal_code?, banker_proposal_code? } — identifica a operação |
code | string | Código da parcela base |
nosso_numero | string | Opcional |
due_date | date | Data de vencimento de referência |
total_prepayment_amount | decimal | Valor total antecipado |
prepayment_installments | array | Parcelas antecipadas — cada item: { nosso_numero, prepayment_amount } |
Exemplo de request:
curl -X POST 'https://hs-receiver-app-production.iorq.com.br/api/installment/prepayment' \
-H 'Authorization: Bearer eyJhbGciOi...' \
-H 'Content-Type: application/json' \
-d '{
"fund_id": "374485cf-f6df-467c-b91d-9f14082c6f36",
"identifier": { "originator_proposal_code": "OP-001" },
"code": "6",
"due_date": "2026-06-15",
"total_prepayment_amount": 1500.00,
"prepayment_installments": [
{ "nosso_numero": "00012350", "prepayment_amount": 300.00 }
]
}'Resposta (201):
{
"status": "prepaid",
"message": "Installment prepaid successfully"
}
Quitação totalSe o
total_prepayment_amountcobre o saldo remanescente da operação, ela é marcada como liquidada — todas as parcelas restantes recebem baixa e a operação sai da carteira ativa.
5.3 Receber webhooks de confirmação
Após processar a baixa, a IORQ envia um webhook LOAN_UPDATE para o endpoint registrado. O tipo de mudança vem no campo data.status:
data.status | Quando dispara | O que fazer |
|---|---|---|
settled_installment | Parcela marcada como liquidada | Atualizar status interno da parcela |
received_prepayment | Liquidação antecipada aceita | Atualizar status das parcelas antecipadas |
invalid | Falha (estado inválido, valor divergente, etc.) | Ver data.reason e tratar |
Exemplo de webhook recebido (o corpo do POST é o objeto payload):
{
"event": "update",
"data": {
"entity_id": "OP-001",
"status": "settled_installment",
"nosso_numero": "00012345",
"installment_code": "1"
}
}
Modelo de eventosA IORQ envia um único tipo de mensagem (
LOAN_UPDATE); o discriminador édata.status. Ver o Catálogo de eventos para todos os valores possíveis.
6. Estados da parcela
stateDiagram-v2
[*] --> active: Operação ativa
active --> paid: POST /api/installment/settle
active --> partially_paid: Pagamento parcial
active --> prepaid: POST /api/installment/prepayment
active --> late: Vencida sem pagamento
late --> paid_late: Pagamento com atraso
paid --> settled
settled --> [*]
prepaid --> [*]
Os estados reais da parcela (InstallmentStates) incluem active, late, paid, paid_late, partially_paid, prepaid, settled (entre outros de processamento com a administradora). A IORQ atualiza estados automaticamente conforme recebe as notificações e o ciclo da operação avança.
7. Cenários de erro
| HTTP | Quando ocorre | O que fazer |
|---|---|---|
400 | Campo obrigatório ausente, formato inválido, parcela inexistente | Corrigir e reenviar |
401 | Token expirado ou inválido | Renovar via POST /oauth2/token |
404 | originator_proposal_code não encontrado no fundo | Verificar se a operação foi efetivamente cedida e desembolsada |
409 | Parcela já liquidada | Verificar duplicidade interna |
422 | Operação em estado inválido (ex: liquidação após recompra) | Consultar status atual via GET /api/loan/?originator_proposal_code={código} |
429 | Rate limit excedido | Aplicar backoff exponencial |
8. Próximos fluxos
Operações que não seguem o caminho de liquidação normal entram em outros fluxos:
