> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Mensageria de entrada do BACEN

> Como o Lerian SPB consome as respostas de liquidação STR de entrada (R-legs), os créditos que ele não iniciou e os avisos que chegam do BACEN pela RSFN.

O Lerian SPB consome as respostas de liquidação STR de entrada (R-legs) e os avisos que chegam do BACEN pela RSFN. Um status liquidado no R-leg move a mensagem STR da transferência para `CONFIRMED`, e um status rejeitado a move para `REJECTED`. Um status pendente mantém a transferência aberta, porque o STR ainda retém o lançamento. Quando o BACEN aceita o seu STR0011, ou quando o STR cancela o lançamento por conta própria, a transferência passa para `CANCELLED`. Um status fora do domínio do BACEN abre um caso de conciliação.

As movimentações de Conta PI, moeda eletrônica, redesconto e depósito compulsório relatam uma resposta liquidada como `SETTLED`. O Lerian SPB projeta os campos de liquidação do BACEN literalmente.

Um crédito de transferência STR (uma resposta R2 ou R3) que não corresponde a nenhuma transferência que o trilho enviou é um crédito que outra instituição iniciou. O trilho o registra como uma operação de entrada e publica `str.operation.received` para que seu ledger o registre.

Para cada aviso de entrada, o trilho publica `str.message.received`. Alguns avisos também mudam o estado do trilho e publicam um evento dedicado.

| Mensagem de entrada | O que o trilho faz | Evento dedicado |
| - | - | - |
| GEN0001 | Responde ao eco e registra o aviso | — |
| GEN0004 | Registra o erro de transmissão | `str.transmission.errorReceived` |
| GEN0005 | Registra o aviso administrativo | `str.admin.noticeReceived` |
| GEN0007, GEN0018, GEN0022 | Atualiza o estado do certificado da contraparte | `str.certificate.counterpartyChanged` |
| GEN0021 | Atualiza as grades de janela operacional | `str.schedule.changed` |
| STR0015, STR0017 | Relata o fechamento e a abertura do STR | `str.readiness.changed` |
| STR0016 | Relata o saldo de fechamento e a janela de aporte adicional | `str.balance.closingReported` |
| STR0018, STR0019 | Relata um participante que o BACEN excluiu, incluiu ou alterou | `str.participant.directoryChanged` |
| LPI0006 | Relata uma transferência automática | `str.autoTransfer.reported` |
| RCO0014 | Relata uma exigibilidade de compulsório recalculada | `str.compulsory.requirementRecalculated` |
| RCO0019 | Relata um depósito compulsório que um terceiro fez | `str.compulsory.depositAdvised` |
| SLB0001, SLB0003, SLB0005, SLB0008 | Registra a cobrança, a cobrança retirada, o crédito ou o débito direto | `str.slb.entryNotified` |
| RDC0015, RDC0016 | Converte ou cancela os redescontos em aberto no fechamento do STR | — |
| SME0001R2, SME0002R2, SME0004R2 | Registra o aviso de moeda eletrônica | `str.emoney.transferAdvised` |

O trilho coloca em quarentena um frame de entrada que ele não pode transformar em uma mensagem e abre um caso de conciliação para ele.

O BACEN pode dividir uma resposta em partes numeradas. O trilho retém cada parte até que todas tenham chegado, em qualquer ordem, e então processa a resposta inteira uma única vez. As partes de uma resposta que nunca se completa ficam em quarentena para um operador. Quando uma parte ainda falta 30 minutos depois que a primeira parte chegou, o trilho abre um caso de conciliação para a mensagem. O motivo é `PARTITIONED_MESSAGE_INCOMPLETE` e a ação recomendada é `INVESTIGATE`. O caso lista as partes recebidas e as partes que faltam. Ele não fecha nada: uma parte que chega depois ainda completa a resposta. O trilho abre no máximo um caso desse tipo para uma mensagem.

O objeto `data` do evento `str.emoney.transferAdvised` sempre inclui `messageCode`, `numCtrlSTR`, `dtHrBC`, `vlrLanc` e `dtMovto`. Dependendo da perna do aviso, ele também pode incluir `debitedIspb`, `creditedIspb`, `numCtrlSTROr`, `hist`, `ispbIFCredtd`, `agCredtd` e `ctCredtd`. O evento não expõe `CNPJCliCredtd`. Deduplique esse evento por `(eventType, data.numCtrlSTR)`, não por `ce-id`: uma nova tentativa pode gerar um `ce-id` novo, enquanto o mesmo número de controle identifica o mesmo movimento.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.