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

# Dados e relatórios

> Consulte os campos de dados e os ciclos de vida de status disponíveis para transferências TED, usados em conciliação, trilhas de auditoria e relatórios de conformidade.

Cada transferência gera uma trilha de auditoria completa. Esta página descreve os dados disponíveis para relatórios, conciliação e conformidade.

## Quais dados são registrados por transferência

***

| Campo | O que significa |
| - | - |
| `transferId` | Sua referência interna para esta transferência |
| `confirmationNumber` | Referência legível por humanos (por exemplo 20260205001). Mostre isso aos clientes |
| `controlNumber` | Referência do JD SPB. Use para a conciliação bancária |
| `type` | `TED_OUT`, `TED_IN`, um tipo de [crédito ao cliente](https://docs.lerian.studio/pt/interfaces/ted-jd/ted-in.md#customer-credits) (`TED_IN_STR0005` a `TED_IN_STR0051`), `P2P`, `CROSS_CORE` (um [TED entre cores](https://docs.lerian.studio/pt/interfaces/ted-jd/ted-cross-core.md) enviado) ou `CROSS_CORE_IN` (um crédito ou uma devolução entre cores recebidos) |
| `status` | Estado atual da transferência |
| `organizationId` | A organização do Midaz em que a transferência está registrada |
| `ledgerId` | O ledger do Midaz em que a transferência está registrada. Em um P2P entre dois ledgers, o ledger do pagador |
| `recipientLedgerId` | Em um P2P entre dois ledgers, o ledger do destinatário |
| `ledgerGroupId` | Em um P2P entre dois ledgers, o grupo de ledgers do Midaz do lançamento. Ausente em uma devolução de P2P |
| `amount` | Valor antes da tarifa. Para TED IN, o valor creditado depois da tarifa. Um reembolso de devolução que devolve a tarifa também credita a tarifa, que `metadata.feeRefundedAmount` registra |
| `feeAmount` | Tarifa cobrada |
| `totalAmount` | O valor debitado do remetente: `amount` mais qualquer tarifa cobrada por cima dele. Para TED IN, o valor recebido |
| `senderAccountId` | Conta de origem no seu sistema. Sempre presente. Para TED IN, em que o remetente é um banco externo sem conta local, é um identificador sintético derivado de forma determinística do documento do remetente |
| `recipientAccountId` | Conta do destinatário no Midaz, quando o destinatário é representado internamente |
| `recipient` | Banco, agência, número da conta e nome do titular do destinatário |
| `originalTransferId` | Em uma devolução, a transferência que ela devolve: o TED OUT que um reembolso de devolução (um `TED_IN`) compensa, o TED IN que uma devolução voluntária (um `TED_OUT`) envia de volta, o P2P que uma devolução de P2P estorna, ou o TED entre cores (um `CROSS_CORE`) que uma devolução entre cores recebida (um `CROSS_CORE_IN`) devolve |
| `devolutionCode` | Código de motivo de devolução do BACEN, quando aplicável |
| `feeContext` | O rótulo de tarifa que a iniciação levou. [Get Transfer](https://docs.lerian.studio/pt/reference/interfaces/ted-jd/retrieve-transfer.md) o retorna, e List Transfers não |
| `createdAt` | Quando a transferência foi iniciada |
| `completedAt` | Quando a liquidação foi confirmada |

## Ciclo de vida do status da transferência

***

### TED OUT

![Diagrama da máquina de estados da TED OUT](https://mintcdn.com/lerian-49cb71fc/mQLt-YZp8XbLULFD/images/pt/d2/ted-state-machine-ted-out.svg?fit=max\&auto=format\&n=mQLt-YZp8XbLULFD\&q=85\&s=b4c97c53cceec9cd89418c7d5b110dea)

* **Cliente confirmou** (`CREATED`): o plugin criou a transferência e aplicou uma retenção sobre valor + tarifa
* **Preparando o envio** (`PENDING`): o plugin prepara a mensagem para a JD
* **Processamento bancário** (`PROCESSING`): o plugin enviou a transferência à JD e aguarda o resultado da liquidação. Um timeout mantém a transferência aqui enquanto a conciliação pergunta o resultado à JD. Uma transferência que a JD ainda responde como pendente depois de 24 horas em conciliação fica aqui com a retenção (status de conciliação `MANUAL_REVIEW`)
* **Liquidada** (`COMPLETED`): o STR liquidou a transferência e o plugin confirmou a retenção
* **Rejeitada** (`REJECTED`): a JD ou o STR rejeitou a transferência, e o plugin liberou a retenção
* **Falhou** (`FAILED`): o ledger recusou a retenção, ou a conciliação não conseguiu liquidar a transferência. Quando a conciliação para depois da última tentativa, a retenção continua em vigor e um operador resolve a transferência (status de conciliação `MANUAL_REVIEW`)
* **Cancelada** (`CANCELLED`): a transferência foi cancelada a partir de `CREATED` ou `PENDING`, e o plugin liberou a retenção

### TED IN

![Diagrama da máquina de estados da TED IN](https://mintcdn.com/lerian-49cb71fc/acz_224gNiM7aYvL/images/pt/d2/ted-state-machine-ted-in.svg?fit=max\&auto=format\&n=acz_224gNiM7aYvL\&q=85\&s=818a9b698fcf4d6b2a7ce08b0f89f944)

* **Transferência detectada** (`RECEIVED`): mensagem de entrada persistida, pendente de processamento interno
* **Destinatário validado** (`PROCESSING`): o sistema credita a conta do destinatário
* **Valor creditado** (`COMPLETED`): conta do destinatário creditada com sucesso
* **Falhou** (`FAILED`): o ledger recusou o crédito, ou o banco remetente fez o chargeback de um crédito concluído

### P2P

![Diagrama da máquina de estados do P2P](https://mintcdn.com/lerian-49cb71fc/mQLt-YZp8XbLULFD/images/pt/d2/ted-state-machine-ted-p2p.svg?fit=max\&auto=format\&n=mQLt-YZp8XbLULFD\&q=85\&s=e571502db058bb06e977c608ff5a9b01)

* **Confirmada** (`CREATED`): o cliente confirmou a transferência entre contas internas
* **Processando** (`PROCESSING`): transação Midaz em andamento
* **Liquidada** (`COMPLETED`): as duas contas atualizadas com sucesso
* **Falhou** (`FAILED`): o ledger recusou o lançamento

## Revisão da tarifa antes da confirmação

***

Para TED OUT e P2P, os clientes passam por um fluxo de duas etapas:

![Diagrama do ciclo de vida do PaymentInitiation](https://mintcdn.com/lerian-49cb71fc/acz_224gNiM7aYvL/images/pt/d2/ted-state-machine-initiation.svg?fit=max\&auto=format\&n=acz_224gNiM7aYvL\&q=85\&s=e18de4103828f31835b4f71215a6be82)

* **Aguardando confirmação**: o plugin calculou e apresentou a tarifa. O cliente ainda não confirmou
* **Processada**: o cliente confirmou e o plugin criou a transferência
* **Expirada**: a iniciação expirou sem confirmação. Uma iniciação é válida por 24 horas. Uma iniciação de TED OUT expira antes, no fechamento da janela de operação daquele dia

Os clientes podem revisar a tarifa antes de confirmar a transferência.

## Histórico de status

***

O plugin registra cada transição de status. [Obter transferência](https://docs.lerian.studio/pt/reference/interfaces/ted-jd/retrieve-transfer.md) as retorna em `statusHistory`, cada uma com o status anterior, o novo status, a data e hora e um motivo, quando houver.

## Campos de conciliação

***

Use estes campos para casar os registros de transferência com seus extratos bancários:

| Campo | Usar para |
| - | - |
| `controlNumber` | Casar com os registros do JD SPB |
| `confirmationNumber` | Referência voltada ao cliente |
| `transferId` | Consultas internas do sistema |
| `originalTransferId` | Ligar uma devolução à transferência que ela devolve |
| `devolutionCode` | Classificar o motivo do BACEN para uma devolução |
| `createdAt` | Filtrar por data de início |
| `completedAt` | Filtrar por data de liquidação |
| `reconciliationStatus` | Encontrar transferências que a conciliação retém, por exemplo `MANUAL_REVIEW` |

## Retenção de dados

***

> [!WARNING]
>
> Não apague registros de transferência. O plugin nunca os apaga nem os expira, então a retenção é sua responsabilidade. Guarde os registros de transferência e de auditoria por pelo menos 5 anos, conforme os requisitos de guarda de registros do BACEN.

## Consultando seus dados

***

Use [Listar transferências](https://docs.lerian.studio/pt/reference/interfaces/ted-jd/list-transfers.md) para consultar transferências com os seguintes filtros:

* **Por data de criação**: `createdFrom` e `createdTo`
* **Por tipo**: `TED_OUT`, `TED_IN`, um tipo de crédito ao cliente, `P2P`, `CROSS_CORE` ou `CROSS_CORE_IN`. `TED_IN` não seleciona os créditos ao cliente nem os créditos entre cores
* **Por status**: por exemplo, apenas transferências `COMPLETED` para conciliação, ou `FAILED` para investigação
* **Por status de conciliação**: `reconciliationStatus`
* **Por valor**: `minAmount` e `maxAmount`
* **Por ledger**: `ledgerId`. Ele corresponde ao ledger do pagador ou, em um P2P entre dois ledgers, ao ledger do destinatário

## Para desenvolvedores

***

### Armazenamento

O plugin armazena os dados de transferência no PostgreSQL. O campo `recipientAccountId` referencia uma conta Midaz quando o destinatário é interno. A organização é o filtro principal.

### Deduplicação de TED de entrada

Antes de processar uma transferência TED IN, o plugin armazena a mensagem bruta da JD. Isso permite ao plugin recuperar transferências de entrada se o serviço falhar durante o processamento.

Cada mensagem armazenada é única pelo `NumCabSeq` da JD. Se a JD reentregar a mesma mensagem, o plugin a identifica como duplicata e a ignora.

### O que o plugin envia ao Midaz

O plugin envia cada movimento liquidado ao Midaz como uma transação no ledger, mas o Midaz registra o lançamento contábil, não os detalhes bancários da transferência. A identidade da contraparte (banco, agência, conta, nome e documento do titular) e as referências do BACEN (`controlNumber`, `clearingControlNumber`) ficam apenas no registro `Transfer` do plugin. Para uma TED IN, o crédito entra no ledger a partir da conta `@external/BRL`. A identidade do remetente não é codificada na transação Midaz.

O plugin grava apenas metadados de correlação na transação Midaz:

| Chave de metadado | Valor |
| - | - |
| `contractVersion` | `2` |
| `plugin` | `br-bank-transfer` |
| `rail` | `TED`, ou `INTERNAL` para P2P |
| `flow` | `CASH_OUT` (TED OUT ou TED entre cores), `CASH_IN` (TED IN ou crédito entre cores), `P2P` ou `REFUND` (um reembolso de devolução, uma compensação de chargeback, a retenção de uma devolução voluntária de TED IN ou uma devolução entre cores) |
| `direction` | `OUT` ou `IN`. Ausente no P2P |
| `aggregateId` | O identificador de transferência do plugin: o ponto de retorno ao registro completo |
| `originalAggregateId` | Em `REFUND`, a transferência que o reembolso devolve |
| `providerMessageId`, `providerMessageCode` | A mensagem da JD que produziu um crédito de TED IN ou um reembolso de devolução |
| `crossCoreKey` | Em um TED, crédito ou devolução entre cores, a chave dele na conta `@intercore` |
| `feeContext` | O rótulo de tarifa da iniciação, quando ela levou um |

A correlação funciona nos dois sentidos:

* O registro da transferência armazena `midazTransactionId`, então [Obter transferência](https://docs.lerian.studio/pt/reference/interfaces/ted-jd/retrieve-transfer.md) retorna o detalhe bancário completo de qualquer lançamento do ledger.
* A transação Midaz armazena o identificador da transferência em `metadata.aggregateId`, então você pode filtrar transações Midaz por ele para achar o lançamento do ledger de uma transferência.

Os metadados personalizados que você passa ao iniciar uma transferência TED OUT ou P2P nunca chegam ao Midaz. O plugin os armazena na transferência e os retorna como `clientMetadata`.

### Relacionamentos entre entidades

O modelo de domínio da TED segue estes relacionamentos:

* Cada `Transfer` pertence a uma única organização Midaz e pode ter vários registros `TransferStatusHistory`.
* As transferências TED OUT e P2P se originam de uma `PaymentInitiation` no fluxo de transferência em duas etapas.
* Cada `JDIncomingMessage` pode criar no máximo um `Transfer` do tipo `TED_IN`.

![Diagrama de relacionamentos entre entidades](https://mintcdn.com/lerian-49cb71fc/acz_224gNiM7aYvL/images/pt/d2/ted-entity-relationships.svg?fit=max\&auto=format\&n=acz_224gNiM7aYvL\&q=85\&s=309b7a59056096c34fc3ea64cf63a04d)


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