> ## 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.

# Como o Lerian SPB funciona

> A sequência de onboarding, os fluxos de transferência, liquidez e liquidação, e as consultas assíncronas que compõem a superfície de mensagens STR.

O Lerian SPB expõe a superfície de mensagens STR como um conjunto de operações tipadas. Cada fluxo persiste o trabalho antes do envio, retorna um estado aceito mas ainda não liquidado, e concilia com a resposta assíncrona do BACEN.

## Onboarding

***

Você rotaciona o certificado ICP-Brasil, ativa-o no BACEN com o GEN0006 e testa a conectividade com um eco do GEN0001. A requisição de ativação não traz código do certificador: o trilho o lê do emissor do certificado rotacionado. A prontidão não espera a confirmação do GEN0006 nem o eco do GEN0001.

Os comandos de transferência bancária, devolução, cancelamento, IBS repasse, Conta PI, transferência automática, moeda eletrônica, redesconto e movimentação de compulsório verificam a prontidão do trilho antes de registrar qualquer coisa. `READY` e `DEGRADED` admitem comandos. `PENDING_CONFIGURATION` e `UNAVAILABLE` os bloqueiam. A prontidão avalia a configuração do canal e o estado do certificado. A configuração do canal precisa de um ISPB de participante explícito. Enquanto a conexão com o queue manager está fora do ar, o trilho recusa cada requisição que enviaria uma nova mensagem STR com `503` e `SPB-1001`.

## Transferências bancárias

***

Você declara as partes remetente e destinatária tipadas. A plataforma deriva o código de transferência STR: STR0004, STR0005, STR0006, STR0007 ou STR0008. Ela persiste a operação e o trabalho de saída, e apenas então envia. O trilho retorna o status `SUBMITTED`. Ele aceitou a requisição, mas o BACEN ainda não a liquidou.

## Devoluções e cancelamentos

***

Uma devolução e um cancelamento são ambos sub-recursos de uma operação pai. O id da operação pai no caminho da requisição vincula cada um a essa operação pai.

* Uma **devolução** (STR0010) devolve um crédito TED que você recebeu. A operação pai é o crédito recebido, no estado `DELIVERED`. A devolução leva o valor integral do crédito. Enquanto uma devolução do crédito está vigente, o trilho recusa uma segunda. Depois que o STR liquida a devolução, o crédito termina em `RETURNED`, e o trilho recusa qualquer devolução posterior dele.
* Um **cancelamento** (STR0011) exige uma operação pai que não liquidou: `ACCEPTED`, `SUBMITTED`, `SENT` ou `DELIVERED`. Quando o BACEN o aceita, a transferência e o cancelamento terminam em `CANCELLED`. Se o trilho ainda não enviou a transferência, ele a cancela localmente e não envia nenhum STR0011. O trilho recusa um cancelamento enquanto um envio está sem resolução. Uma transferência que aguarda aprovação termina quando um operador a nega.

O trilho recusa uma requisição contra o estado errado da operação pai.

Um crédito TED que o Lerian SPB não recebeu não tem operação pai. Para devolvê-lo, declare o número de controle, o valor integral e o ISPB que o enviou. O trilho recusa um crédito com data posterior ao primeiro dia em que o Lerian SPB recebeu um crédito TED.

## IBS repasse

***

Um **IBS repasse** (STR0053) transfere valores de liquidação do IBS da conta Reservas Bancárias para o comitê gestor. O trilho traduz a requisição para a mensagem STR0053, a persiste e a envia. O BACEN confirma de forma assíncrona.

## Liquidez da Conta PI

***

Duas operações movem liquidez entre a conta Reservas Bancárias/de liquidação de uma instituição e sua Conta PI:

* O **Aporte** (LPI0001) financia a Conta PI a partir da conta Reservas Bancárias.
* O **Resgate** (LPI0003) recolhe os fundos de volta para a conta Reservas Bancárias.

Com o tipo de conta `CCME`, as mesmas duas direções usam o LPI0002 e o LPI0004 e movimentam apenas os fundos da própria instituição.

Ambas retornam `PENDING`. A resposta de liquidação recebida (LPI0001R1 a LPI0004R1) move a operação para `SETTLED` ou `REJECTED`. O Lerian SPB projeta o valor da resposta literalmente. As grades de janela operacional do GEN0021 são persistidas e consultáveis. Elas não impõem uma rejeição genérica de todo envio fora de uma janela operacional. A regra de admissão explícita ligada ao cronograma é a RLPI0007: durante a janela de aporte adicional, um aporte para a Conta PI de outra instituição é rejeitado. Aportes para a própria Conta PI da instituição e resgates continuam permitidos.

## Política de transferência automática

***

Com o LPI0005, você declara a regra de transferência automática STR para as duas classes de conta, RB/CL e CCME, em cada mensagem: um percentual ou um valor. Um zero desabilita a transferência automática para essa classe, e uma nova regra substitui a anterior. O BACEN confirma o recebimento (LPI0005R1) e depois relata cada transferência automática que faz (LPI0006). O Lerian SPB repassa os valores relatados literalmente e não faz nenhum cálculo sobre eles.

## Fila de aprovação para emissões de alto valor

***

O trilho classifica cada valor declarado em relação a faixas configuradas semiabertas e pode aplicar uma substituição para um tipo de mensagem específico. A regra selecionada determina o estado: `requiredSignatures` igual a `0` envia a emissão para `SUBMITTED`. Um valor diferente de zero a envia para `PENDING_APPROVAL`. No teto de uma faixa, aplica-se a próxima faixa. Acima de todos os tetos, aplica-se o requisito do nível mais alto.

Um operador pode assinar ou negar uma emissão em fila. Cada assinatura vem de um operador diferente, nunca de quem criou a emissão. Um operador substitui as faixas e as substituições por tipo pela API de governança, e a mudança se aplica sem reinício.

## Composição curada de mensagens

***

Uma superfície de composição controlada por catálogo monta um tipo de mensagem STR presente na allowlist (STR0004, STR0005, STR0006, STR0007, STR0008, STR0046, STR0047, STR0048, STR0052 ou STR0053). O tipo escolhido deve ser resolvido no catálogo de capacidades e deve ser publicamente submetível. Caso contrário, o trilho recusa a requisição.

## Consultas assíncronas de parte única

***

Leituras de posição de reserva e de cronograma retornam um id de correlação com `PENDING`. A resposta do BACEN chega de forma assíncrona. Você a lê de volta por esse id de correlação. O Lerian SPB projeta o que o BACEN envia e não calcula nenhuma posição própria.

| Consulta | Código STR | Retorno |
| - | - | - |
| Saldo da conta Reservas Bancárias | STR0013 | Id de correlação + `PENDING`, depois o saldo relatado pelo BACEN |
| Extrato da conta Reservas Bancárias | STR0014 | Id de correlação + `PENDING`, depois o extrato no modo mensagem |
| Cronograma operacional do STR | STR0001 | Id de correlação + `PENDING`, depois as grades de janela operacional |

## Moeda eletrônica

***

As movimentações de moeda eletrônica (SME) movem fundos para dentro e para fora da conta correspondente a moeda eletrônica (CCME) que um emissor de moeda eletrônica mantém no BACEN. Você declara o tipo, e a plataforma deriva o código:

* O **Depósito** (SME0001) financia a CCME a partir da conta Reservas Bancárias ou de liquidação.
* A **Retirada** (SME0002) recolhe fundos da CCME.
* A **Devolução** (SME0004) devolve um lançamento recebido por engano. Ela cita o número de controle STR do lançamento original.

Uma movimentação retorna `PENDING`. A resposta do STR a move para `SETTLED`, `REJECTED` ou `CANCELLED`. Uma consulta SME0003 retorna o extrato da CCME de forma assíncrona.

## Redesconto

***

Um redesconto (RDC) é um empréstimo do BACEN garantido por títulos federais registrados no Selic. Você declara o tipo, e a plataforma deriva o código RDC.

| Tipo | Códigos RDC |
| - | - |
| Contratação | RDC0002 intradia, RDC0003 de um dia útil, RDC0004 vinculado a uma compra no Selic, RDC0009 vinculado a uma liberação de garantia, RDC0013 consolidação |
| Pagamento | RDC0007 em dinheiro, RDC0008 com a venda dos títulos dados em garantia |
| Conversão | RDC0005 |
| Cancelamento | RDC0014, para uma solicitação que o Selic ainda retém |

A operação começa como `PENDING`, antes de o BACEN responder. `ACCEPTED` significa que o BACEN registrou a solicitação, mas ela não foi liquidada e nenhum fato de liquidação é emitido. `SETTLED` significa que existe um lançamento na conta Reservas Bancárias, com uma referência de liquidação.

Quando a sua conversão (RDC0005) liquida, o redesconto que ela converte termina em `CONVERTED`. No fechamento do STR, o BACEN converte um redesconto intradia não pago pelo RDC0015. O trilho termina esse redesconto em `CONVERTED` e registra o novo redesconto de um dia útil.

Duas consultas retornam o preço unitário de um título elegível (RDC0001) e os redescontos em aberto do dia (RDC0006).

## Depósitos compulsórios

***

* Uma **movimentação** transfere fundos entre os depósitos compulsórios da instituição no BACEN e sua conta Reservas Bancárias: uma retirada (RCO0010) ou um depósito (RCO0011). Ela retorna `PENDING`, e a resposta do BACEN define seu estado final.
* Uma **declaração** (RCO0002) informa o demonstrativo de compulsório de um período de cálculo. O trilho recusa um dia fora do período declarado. Cada dia do demonstrativo traz `mode`: `I` informa o dia pela primeira vez e `A` altera um dia que você já informou. Um código de item tem exatamente quatro caracteres. Quando a resposta do BACEN traz a exigibilidade que o BACEN calcula, o trilho registra a exigibilidade no período.
* As **consultas** retornam o calendário de períodos (RCO0001), a releitura de uma declaração (RCO0003), o extrato de movimentações (RCO0005), a posição de cumprimento (RCO0006) e o registro de custos (RCO0007).

## Lançamentos do BACEN

***

O trilho registra cada aviso SLB do BACEN e lista as cobranças ainda devidas.

* Um pagamento **SLB0002** autoriza o pagamento de uma cobrança. O valor deve ser igual ao total da cobrança. O trilho recusa uma cobrança liquidada ou retirada.
* Um pagamento **SLB0007** paga ao BACEN um valor que nenhuma cobrança exigiu, inclusive a devolução de um crédito SLB0005.
* Uma consulta **SLB0006** pede os lançamentos de uma data, um lançamento ou todos os lançamentos com vencimento a partir de hoje.

Quando a regra de aprovação para o valor exige assinaturas, um pagamento SLB aguarda em `PENDING_APPROVAL`.

## Liquidação de câmaras de compensação

***

O Lerian SPB liquida obrigações de câmaras de compensação no STR. A plataforma deriva os ISPBs do participante e da câmara de compensação e a data do movimento.

* Liquidação multilateral **LDL**: o LDL0004 liquida a posição líquida devedora do participante em um ciclo. O LDL0006 devolve fundos transferidos por engano. O LDL0008 financia a liquidação de eventos e emissões de ativos. O LDL0011 move a conta corrente da câmara de compensação para a sua conta de liquidação. O LDL0014 financia um depósito na câmara de compensação.
* O **LDL0022** faz um depósito operacional no SILOC em resposta a um aviso de exigência de depósito do SILOC. O trilho recebe avisos apenas quando `LDL_ADVISORY_CONSUMER_ENABLED` está habilitado. A requisição informa apenas o aviso, e o trilho obtém dele o valor e o período. Depois que o STR rejeita, cancela ou recusa um depósito, ou depois que o trilho o fecha sem enviá-lo, você pode depositar o aviso novamente. O trilho recusa um depósito enquanto outro depósito do mesmo aviso está ativo ou liquidado, ou depois que uma rodada de recálculo posterior substituiu o aviso.
* Liquidação bruta ou bilateral **LTR**: o LTR0003 move reservas para outra instituição e faz o STR notificar a câmara de compensação. O LTR0004 liquida o resultado de negociação do participante na conta da câmara de compensação. O LTR0006 devolve fundos transferidos por engano.

O trilho recusa um campo de detalhe que o código escolhido não carrega. Ele recusa um número de controle com espaços no início ou no fim, ou um que outra mensagem de saída já carrega. Ele também recusa um LTR0004 para um resultado de negociação que já tem um LTR0004 ativo ou liquidado. O resultado chega na resposta R1 de cada código.

Uma resposta do STR pode chegar ao trilho depois que dois operadores fecharam uma perna LDL ou LTR. Quando essa resposta diz que o STR liquidou a perna ou ainda a mantém, o trilho não emite nenhum fato e abre um caso para um operador. Um depósito LDL0022 ou um pagamento LTR0004 que a resposta mostra liquidado ou retido conta como ativo pelas regras acima, então o trilho recusa um novo para ele.

## Avisos recebidos e roster

***

* O trilho registra **avisos** (GEN0001, GEN0004, GEN0005, GEN0016R2, GEN0017R2) em um log de avisos consultável.
* **Transmissões de cronograma** (GEN0021) atualizam as grades de janela operacional. Uma grade reanunciada para a mesma data de referência substitui a anterior.
* Uma submissão de **responsável roster** (GEN0019) substitui completamente o roster do participante.

Para cada família de mensagens de entrada, veja [Mensageria de entrada do BACEN](https://docs.lerian.studio/pt/rails/spb/spb-inbound-messaging.md).

## Conciliação e recuperação

***

O trilho abre um caso de conciliação quando um envio falha ou tem um resultado incerto. Ele também abre um caso quando coloca um frame de entrada em quarentena, e quando uma resposta dividida do BACEN ainda não tem uma parte 30 minutos depois da primeira (`PARTITIONED_MESSAGE_INCOMPLETE`). Os operadores registram ações de `ACKNOWLEDGE`, `RESOLVE`, `DISMISS` ou `INVESTIGATE` em um caso. Um caso terminal não aceita mais ações. Uma visão entre trilhos de operações travadas lista os itens que precisam de atenção. Ela expõe apenas as ações que o trilho pode executar.

* Um operador pode reprocessar um frame de entrada em quarentena pelo caminho de entrada. O reprocessamento não envia nenhum aviso próprio ao BACEN.
* Dois operadores podem fechar como falha uma mensagem que passou do seu prazo de liquidação sem resposta final do BACEN, como uma TED, uma transferência Conta PI, uma mensagem SME, RDC, RCO ou SLB, ou uma perna LDL ou LTR. Um operador pede e um operador diferente aprova. O BACEN não é notificado. Um caso sobre uma resposta dividida incompleta não impede esse fechamento. O fechamento responde `409` enquanto a grade do STR do dia de movimento da mensagem está aberta. Uma TED agendada continua aberta até o fechamento da grade AGE01 do dia agendado. Um RDC0005 informa a falha do empréstimo e a falha do pagamento `-PGTO`. Uma perna LDL, um depósito LDL0022 e um pagamento LTR0004 informam o seu fato de falha `spb.ldl`, com `refusal.railClose` igual a `OPERATORS_CLOSED`. Uma perna LTR0003 ou LTR0006 informa `settlement.failed`.
* Quando o trilho reteve sem ler a resposta do STR a uma perna LDL ou LTR, por situação desconhecida ou campo malformado, a lista de operações travadas a mostra em `detail.parkedAnswers`. Os operadores então declaram a perna a partir dessa resposta com `parkedAnswerId`, `outcome` (`SETTLED` ou `FAILED`) e, para `SETTLED`, `settledAt`, um instante no passado. `FAILED` fecha a perna como descrito acima. `SETTLED` aplica o resultado liquidado e emite o fato que a resposta teria produzido: `settlement-confirmed`, `deposit-confirmed` ou `settlement.settled` para uma perna LTR0003 ou LTR0006. Uma declaração que cita a resposta retida de outra mensagem responde `409`.
* Uma devolução fechada como falha não fica vigente, então você pode devolver o crédito de novo. Se as duas devoluções liquidarem, o trilho abre um caso de conciliação que identifica as duas devoluções e os valores delas.


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