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

# Transferências entre cores

> Envie um TED para uma conta que o outro core da sua instituição detém, e receba os créditos dele, pelo relay do JD Courier.

A sua instituição pode operar dois cores em um ISPB. Uma conta desse ISPB pertence então a um dos dois cores. Um TED de uma conta do Bank Transfer para uma conta que o outro core detém é um TED entre cores. O plugin não o envia ao STR. Ele envia o crédito ao outro core pelo relay do [JD Courier](https://docs.lerian.studio/pt/interfaces/jd-courier/what-is-jd-courier.md). O outro core envia os TEDs entre cores dele ao Bank Transfer pelo mesmo relay.

## Quando um TED é entre cores

***

A política de tenant `onus.shared_ispb_gate_enabled` (padrão `false`) diz que o seu ISPB é compartilhado com outro core. Quando ela é `true`, ou ilegível, o plugin pergunta ao mapa de titularidade do JD Courier quem detém a conta do destinatário de cada TED para o seu ISPB:

| Detentor da conta do destinatário | Resultado |
| - | - |
| Este motor | Um [P2P](https://docs.lerian.studio/pt/interfaces/ted-jd/ted-p2p.md) |
| O outro core | Um TED entre cores, tipo `CROSS_CORE` |
| Nenhum motor | Recusado com `422 BTF-4003` |
| O mapa não responde | Recusado com `503 BTF-4000`, `502 BTF-4001` ou `503 BTF-4002` |

Com `false`, um TED para o seu próprio ISPB é um P2P, e o plugin não consulta o mapa.

## Enviar um TED entre cores

***

Um TED entre cores usa as mesmas duas chamadas de um TED OUT: [Initiate Transfer](https://docs.lerian.studio/pt/reference/interfaces/ted-jd/initiate-transfer.md) e [Process Transfer](https://docs.lerian.studio/pt/reference/interfaces/ted-jd/process-transfer.md).

1. **Iniciar.** O plugin calcula a tarifa da transferência como em um TED OUT: a tarifa é cobrada por cima do valor, e o destinatário recebe o valor inteiro. No modo de tarifa `native`, um pacote de tarifas que tira a tarifa do valor é recusado com `422 BTF-3002`. Como um P2P, um TED entre cores ignora a janela de operação do TED OUT.
2. **Processar.** O plugin verifica de novo o detentor da conta do destinatário. Ele retém o valor mais a tarifa na conta do remetente, com a conta de ledger `@intercore` como contrapartida. Depois, envia o crédito ao outro core pelo JD Courier.

A resposta decide o que acontece com a retenção:

| Resposta | Retenção | Status da transferência |
| - | - | - |
| O outro core creditou o destinatário | Confirmada | `COMPLETED` |
| Na primeira tentativa, o outro core recusou o crédito, ou o crédito não chegou a ele | Liberada. O `/process` responde `422 BTF-4005` | `REJECTED` |
| O resultado é desconhecido, por exemplo depois de um timeout | Mantida | `PROCESSING` |

O worker de conciliação reenvia um crédito com resultado desconhecido, dentro e fora da janela do TED OUT. Quando o outro core credita o destinatário, o plugin confirma a retenção. O plugin mantém a retenção e estaciona a transferência para um operador nestes casos:

* Depois de uma tentativa cujo resultado foi desconhecido, o outro core recusa o crédito, ou o JD Courier responde que o detentor da conta do destinatário mudou.
* Nenhuma resposta chega em 24 horas.
* A liberação da retenção não termina.

Uma transferência estacionada fica `PROCESSING`, com status de conciliação `MANUAL_REVIEW`. Encontre-a com [List Pending Reconciliation](https://docs.lerian.studio/pt/reference/interfaces/ted-jd/list-pending-reconciliation.md). Um operador a resolve como um TED OUT com [Resolve Transfer Reconciliation](https://docs.lerian.studio/pt/reference/interfaces/ted-jd/resolve-transfer-reconciliation.md): `SETTLE` confirma a retenção, e `REVERT` a libera.

Antes de colocar a retenção, o `/process` recusa a transferência nestes casos:

* `422 BTF-4003`: o detentor da conta do destinatário mudou depois da iniciação. A transferência fica `FAILED`.
* `503 BTF-4000`: o mapa de titularidade não mostra a conta do remetente como mantida por este motor. Envie a confirmação de novo mais tarde.

## Receber créditos entre cores

***

O outro core envia os TEDs entre cores dele ao Bank Transfer pelo JD Courier. O plugin lança cada um no ledger do destinatário, sem tarifa:

* **Um crédito** debita `@intercore` e credita ao destinatário o valor inteiro, no vínculo de `CROSS_CORE_IN`.
* **Uma devolução de um TED entre cores que você enviou** debita `@intercore` e credita o remetente original, no vínculo de `CROSS_CORE_RETURN_IN`. Uma devolução pode ser parcial. O plugin recusa uma devolução acima do valor ainda não devolvido.

Os dois são transferências do tipo `CROSS_CORE_IN` com status `COMPLETED`, e os dois disparam `transfer_incoming.completed`.

## Configurar transferências entre cores

***

1. Defina a política de tenant `onus.shared_ispb_gate_enabled` como `true` pela Admin API.
2. Conecte o plugin ao JD Courier com as [variáveis do JD Courier](https://docs.lerian.studio/pt/interfaces/ted-jd/ted-environment-variables.md#jd-courier). Defina `COURIER_ACCOUNT_CLAIMS_ENABLED` como `true`, para que o plugin reivindique as contas deste motor no mapa de titularidade.
3. Crie uma conta com o alias `@intercore` em cada ledger que envia ou recebe TEDs entre cores. Um crédito do outro core a debita, então [permita saldo negativo](https://docs.lerian.studio/pt/products/midaz/balance-overdraft.md) no saldo dela.
4. Adicione os vínculos de `CROSS_CORE_OUT`, `CROSS_CORE_IN` e `CROSS_CORE_RETURN_IN` ao [roteamento do ledger](https://docs.lerian.studio/pt/interfaces/ted-jd/ted-configuration.md#ledger-routing). Cada ledger com um vínculo de `CROSS_CORE_OUT` também precisa de um vínculo de `CROSS_CORE_RETURN_IN`.
5. Configure o outro core como as páginas do [JD Courier](https://docs.lerian.studio/pt/interfaces/jd-courier/what-is-jd-courier.md) descrevem.

Antes de mover tráfego, chame [Check Ledger Routing Readiness](https://docs.lerian.studio/pt/reference/interfaces/ted-jd/check-ledger-routing-readiness.md). Ele lista cada vínculo ausente.


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