Operações pós-cessão

Saídas de operações do fundo fora do fluxo normal de liquidação. Cobre recompra, renegociação e reversão de cessão — cada uma com sua regra de quem paga o fundo e como o ativo é removido da carteira. Todos os endpoints retornam confirmação assíncrona via webhook.

POST /api/loan/repurchase · PATCH /api/loan/renegotiate

1. Quando usar este fluxo

Use os endpoints pós-cessão sempre que uma operação ativa no fundo precisar sair da carteira antes de ser liquidada normalmente. As razões são variadas — inadimplência prolongada, cancelamento da venda, refinanciamento, fraude, erro operacional — e cada uma tem regras próprias sobre quem ressarce o fundo e qual o instrumento jurídico aplicado.

📘

Princípio

A API expõe dois endpoints. POST /api/loan/repurchase recebe um campo type que diferencia o tipo de saída do ativo, além de um repurchase_value e de um reason (texto livre, para auditoria). PATCH /api/loan/renegotiate trata refinanciamentos.

2. Categorias suportadas (type)

typeQuando usarEndpoint
standard (recompra padrão)Originador recompra o ativo por inadimplência, violação de elegibilidade, fraude ou solicitaçãoPOST /api/loan/repurchase com type=standard
compulsory_acquisition (aquisição compulsória)Aquisição compulsória do ativo conforme regra do fundoPOST /api/loan/repurchase com type=compulsory_acquisition
compulsory_repurchase (recompra compulsória)Recompra compulsória pelo originador conforme regra do fundoPOST /api/loan/repurchase com type=compulsory_repurchase
renegociaçãoRefinanciamento — contrato atual é baixado e um novo contrato é cedidoPATCH /api/loan/renegotiate
🚧

reason é texto livre, não enum

O motivo de negócio (ex.: reversão de cessão, resolução, inadimplência) vai no campo reason como texto livre — ele não altera o comportamento do endpoint. Quem determina o comportamento é o type.

3. Atores envolvidos

AtorPapel no fluxo
IntegradorDetecta o gatilho da operação pós-cessão e chama o endpoint correspondente
IORQ (gestora)Valida a solicitação, registra a saída do ativo, sinaliza ADM, emite webhooks
administradoraGera termo correspondente à categoria, coleta assinaturas, processa o evento financeiro
Bancarizador (quando aplicável)Em reversões de cessão, devolve o valor diretamente ao fundo

4. Fluxo end-to-end

sequenceDiagram
    participant INT as Integrador
    participant IORQ as IORQ
    participant ADM as Administradora

    INT->>IORQ: POST /api/loan/repurchase (type + repurchase_value)
    IORQ-->>INT: 201 Created
    IORQ->>IORQ: Valida operação
    IORQ->>ADM: Sinaliza saída do ativo (com motivo)
    ADM->>ADM: Gera termo correspondente
    ADM->>IORQ: Confirma processamento
    IORQ->>INT: Webhook LOAN_UPDATE (status: approved/rejected)

5. Passo a passo

5.1 Recompra, reversão e resolução

Todas as categorias de saída do ativo exceto renegociação usam o mesmo endpoint, diferenciadas pelo campo type.

POST /api/loan/repurchase · application/json

Campos do payload

CampoTipoDescrição
fund_idUUIDFIDC da operação
originator_proposal_codestringIdentificador da operação
typeenumstandard, compulsory_acquisition, compulsory_repurchase
repurchase_valuedecimalObrigatório. Valor da recompra
reasonstringTexto livre com o motivo (auditoria)

Exemplo — recompra padrão:

curl -X POST 'https://hs-receiver-app-production.iorq.com.br/api/loan/repurchase' \
  -H 'Authorization: Bearer eyJhbGciOi...' \
  -H 'Content-Type: application/json' \
  -d '{
    "fund_id": "374485cf-f6df-467c-b91d-9f14082c6f36",
    "originator_proposal_code": "OP-001",
    "type": "standard",
    "repurchase_value": 2540.00,
    "reason": "Inadimplência > 90 dias"
  }'

Resposta (201):

{
  "status": "created",
  "message": "Loan repurchase received successfully"
}
📘

Valor da recompra

repurchase_value é obrigatório — a IORQ não calcula o valor automaticamente. Informe o valor conforme a regra acordada para o fundo e o tipo da operação.

5.2 Renegociação

Em uma renegociação, a operação atual é recomprada pelo originador na curva e uma nova operação é cedida no lugar com novos termos. A API trata isso como uma única transação atômica.

Há duas variantes: PATCH /api/loan/ (JSON puro) e PATCH /api/loan/renegotiate (multipart, quando há novos documentos de lastro). O corpo usa renegotiated_loans (as operações originais) e new_loan (a nova operação, no mesmo formato de uma cessão).

PATCH /api/loan/renegotiate · application/json ou multipart/form-data

Exemplo:

curl -X PATCH 'https://hs-receiver-app-production.iorq.com.br/api/loan/' \
  -H 'Authorization: Bearer eyJhbGciOi...' \
  -H 'Content-Type: application/json' \
  -d '{
    "fund_id": "374485cf-f6df-467c-b91d-9f14082c6f36",
    "renegotiated_loans": [ { "originator_proposal_code": "OP-001" } ],
    "new_loan": {
      "originator_proposal_code": "OP-001-R1",
      "banker_cnpj": "...",
      "product_type": "financing",
      "number_of_installments": 18,
      "acquisition_value": 2200.00,
      "installments": [ ]
    }
  }'

Após a renegociação, a operação original sai da carteira (mesmo efeito de repurchase) e a nova operação entra no fluxo normal de cessão — passa por elegibilidade, gera termo e desembolso.

5.3 Webhooks de confirmação

Como todo o restante, a confirmação vem em um webhook LOAN_UPDATE com o resultado em data.status:

data.statusQuando dispara
approvedRecompra/renegociação aceita e processada
approved_renegotiationRenegociação aprovada (nova operação na carteira)
rejectedRecompra/renegociação recusada — ver data.reason

6. Estados terminais pós-cessão

stateDiagram-v2
    active --> repurchased: POST /api/loan/repurchase
    active --> renegotiated: PATCH /api/loan/renegotiate
    active --> settled: Liquidação normal (ver Liquidação)
    repurchased --> [*]
    renegotiated --> [*]
    settled --> [*]

Todos os estados pós-cessão são terminais. Uma operação que sai por qualquer um deles não volta para active. No caso de renegociação, a operação original termina e uma nova operação (com novo originator_proposal_code) é criada.

7. Próximos fluxos