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

# Cancelar o devolver una TED

> Cancela una TED que el STR mantiene pendiente, o devuelve una TED acreditada a la institución remitente, por TED Lerian y Lerian SPB.

Cancela una TED que enviaste antes de que el STR la liquide, o devuelve una TED que recibió un cliente.

> [!NOTE]
>
> Los manuales del BACEN para el STR prevalecen sobre esta página. Tu institución valida el flujo y lo implementa sobre las API de Lerian. Consulta [cómo leer los diagramas](https://docs.lerian.studio/es/diagrams/introduction.md).

## Participantes

***

* **Tu institución.** Tu sistema. Cancela las TED que envió y devuelve las TED que recibió.
* **TED Lerian.** La interfaz de TED entre Midaz y Lerian SPB. Verifica cada solicitud, mueve el dinero en Midaz y publica los eventos. [Streaming Hub](https://docs.lerian.studio/es/platform/streaming-hub/what-is-streaming-hub.md) entrega los eventos a tu sistema.
* **Midaz.** El ledger. Guarda las cuentas de los clientes y sus saldos.
* **Lerian SPB.** La mensajería de Lerian para el STR. Envía y recibe los mensajes del STR e informa su liquidación.
* **STR (BACEN).** El sistema de transferencia de reservas del BACEN. Cancela asientos pendientes y liquida cada devolución.

## Antes de empezar

***

* Para cancelar una TED que el STR mantiene pendiente, esa cancelación tiene que estar activada para tu institución. Viene desactivada de forma predeterminada.
* Para devolver una TED, tienes el motivo oficial de la devolución: un código `CodDevTransf` del diccionario de dominios del SFN.

## Diagrama

***

### Cancelar una TED pendiente en el STR

![Cancelar o devolver una TED: Cancelar una TED pendiente en el STR](https://mintcdn.com/lerian-49cb71fc/l2YPqqB1Osw1XPuf/images/es/d2/id-cancel-or-return-a-ted-1.svg?fit=max\&auto=format\&n=l2YPqqB1Osw1XPuf\&q=85\&s=cee1425eca83ed6356282afc3ef116dd)

| # | Origen | Destino | Mensaje | API de Lerian | Qué ocurre |
| - | - | - | - | - | - |
| 1 | TED Lerian | Lerian SPB | Llamada interna | [`GET /v1/str/messages/{nuOp}`](https://docs.lerian.studio/es/reference/rails/spb/get-message-status) | TED Lerian consulta en el STR el estado de cada TED en `SUBMITTED`. |
| 2 | Lerian SPB | TED Lerian | Llamada interna | | El STR mantiene el asiento pendiente. |
| 3 | TED Lerian | Tu institución | Evento | Evento `transfer.pending_str` | La transferencia queda en `PENDING_STR`. La retención sigue en la cuenta de origen. |
| 4 | Tu institución | TED Lerian | Llamada a la API | [`POST /v1/transfers/{transferId}/cancel`](https://docs.lerian.studio/es/reference/interfaces/ted-lerian/cancel-a-transfer) | Pide la cancelación. Envía una clave en `X-Idempotency` y, opcionalmente, un `reason`. |
| 5 | TED Lerian | Lerian SPB | Llamada interna | [`POST /v1/str/operations/bank-transfers/{operationId}/cancellations`](https://docs.lerian.studio/es/reference/rails/spb/create-bank-transfer-cancellation-operation) | TED Lerian le pide a Lerian SPB que cancele el asiento. |
| 6 | TED Lerian | Tu institución | Respuesta de la API | Respuesta al paso 4 | `202`. |
| 7 | Lerian SPB | STR (BACEN) | `STR0011` | | Lerian SPB le pide al STR que cancele el asiento pendiente. |
| 8 | STR (BACEN) | Lerian SPB | `STR0011R1` | | El STR cancela el asiento y responde. |
| 9 | Lerian SPB | TED Lerian | Evento | | Lerian SPB informa con `settlement.failed` que la TED no se liquidará. |
| 10 | TED Lerian | Tu institución | Evento | Evento `transfer.cancelled` | La transferencia queda en `CANCELLED`. |
| 11 | TED Lerian | Midaz | Llamada interna | [`POST /v2/organizations/{organization_id}/ledgers/{ledger_id}/transactions/{transaction_id}/cancel`](https://docs.lerian.studio/es/reference/products/midaz/v2/cancel-transaction) | TED Lerian cancela la transacción pendiente. El monto retenido y la comisión vuelven al saldo disponible de la cuenta de origen. |

### Devolver una TED recibida

![Cancelar o devolver una TED: Devolver una TED recibida](https://mintcdn.com/lerian-49cb71fc/l2YPqqB1Osw1XPuf/images/es/d2/id-cancel-or-return-a-ted-2.svg?fit=max\&auto=format\&n=l2YPqqB1Osw1XPuf\&q=85\&s=ecfab46cd4eb9883e9d2110dc1037171)

| # | Origen | Destino | Mensaje | API de Lerian | Qué ocurre |
| - | - | - | - | - | - |
| 1 | Tu institución | TED Lerian | Llamada a la API | [`POST /v1/incoming-transfers/{incomingTransferId}/return`](https://docs.lerian.studio/es/reference/interfaces/ted-lerian/return-an-incoming-ted) | Pide la devolución. Envía `returnCode` y una `justification` de 10 a 500 caracteres, con una clave en `X-Idempotency`. |
| 2 | TED Lerian | Tu institución | Evento | Evento `incoming_return.requested` | TED Lerian registra la devolución. La TED queda en `RETURN_REQUESTED`. |
| 3 | TED Lerian | Midaz | Llamada interna | [`POST /v2/organizations/{organization_id}/ledgers/{ledger_id}/transactions/{transaction_id}/revert`](https://docs.lerian.studio/es/reference/products/midaz/v2/revert-transaction) | TED Lerian revierte el crédito. Midaz registra una nueva transacción de reversión, y el crédito original no cambia. |
| 4 | TED Lerian | Lerian SPB | Llamada interna | [`POST /v1/str/operations/bank-transfers/{operationId}/returns`](https://docs.lerian.studio/es/reference/rails/spb/create-bank-transfer-return-operation) | TED Lerian le pide a Lerian SPB que devuelva la TED con tu motivo. |
| 5 | TED Lerian | Tu institución | Respuesta de la API | Respuesta al paso 1 | `202` con la TED recibida en `RETURN_REQUESTED`. |
| 6 | Lerian SPB | STR (BACEN) | `STR0010` | | Lerian SPB envía la devolución al STR. |
| 7 | STR (BACEN) | Lerian SPB | `STR0010R1` | | El STR liquida la devolución y responde. |
| 8 | Lerian SPB | TED Lerian | Evento | | Lerian SPB informa la liquidación de la devolución con `settlement.settled`. |
| 9 | TED Lerian | Tu institución | Evento | Evento `incoming_return.returned` | La TED queda en `RETURNED`. El dinero volvió a la institución remitente. |

## Reglas

***

* TED Lerian cancela una transferencia en `CREATED` o `RESERVED` con `200` y libera cualquier retención. Mientras TED Lerian crea la retención o envía la transferencia, la respuesta es `409` con `TED-0061`.
* Para una transferencia en `PENDING_STR`, TED Lerian le pide al STR que cancele el asiento. La respuesta es `202`, y la retención sigue hasta que el STR responde. El resultado llega como `transfer.cancelled`, `transfer.settled` o `transfer.rejected`.
* Una transferencia ya en `CANCELLED` responde `200` de nuevo.
* TED Lerian rechaza la cancelación de una transferencia en `SUBMITTED`, `SETTLED` o `REJECTED`.
* Esta llamada devuelve solo una TED recibida en `CREDITED`, y siempre completa.

## Cómo saber que terminó

***

* **Cancelación.** El evento `transfer.cancelled`, o [`GET /v1/transfers/{transferId}`](https://docs.lerian.studio/es/reference/interfaces/ted-lerian/get-a-transfer) con `status` igual a `CANCELLED`.
* **Devolución.** El evento `incoming_return.returned`, o [`GET /v1/incoming-transfers/{incomingTransferId}`](https://docs.lerian.studio/es/reference/interfaces/ted-lerian/get-an-incoming-ted) con `status` igual a `RETURNED`.

## Qué puede salir mal

***

| Situación | Qué ves | Qué hacer |
| - | - | - |
| La cancelación de una TED pendiente está desactivada | `503` con `TED-1012` | Sigue la transferencia hasta que llegue a un estado final. |
| La transferencia no se puede cancelar en su estado | `409` con `TED-0061` | Consulta la transferencia. Para `AWAITING_RECONCILIATION` o `EXHAUSTED`, un operador la desbloquea con la evidencia del STR mediante [`POST /v1/transfers/{transferId}/unblock`](https://docs.lerian.studio/es/reference/interfaces/ted-lerian/unblock-a-transfer). |
| No se conoce la respuesta de Lerian SPB a la cancelación | `503` con `TED-1010` | Envía la solicitud de nuevo con la misma clave `X-Idempotency` y el mismo `reason`. |
| El saldo del cliente no puede pagar la reversión | `422` con `TED-1001` | Nada fue al STR, y el cliente conserva el crédito. La TED va a `MANUAL_REVIEW`. Decide con [`POST /v1/incoming-transfers/{incomingTransferId}/resolve-review`](https://docs.lerian.studio/es/reference/interfaces/ted-lerian/resolve-an-incoming-ted-review). |
| Midaz no confirma la reversión | `503` con `TED-1000` | Nada fue al STR. La TED va a `MANUAL_REVIEW`. Consulta la TED antes de actuar de nuevo. |
| La TED está en revisión manual | `409` con `TED-0062` | Devuelve la TED con [`POST /v1/incoming-transfers/{incomingTransferId}/resolve-review`](https://docs.lerian.studio/es/reference/interfaces/ted-lerian/resolve-an-incoming-ted-review) y la acción `RETURN`. |
| El STR rechaza la devolución | `incoming_return.failed` | La TED va a `MANUAL_REVIEW`. Decide con [`POST /v1/incoming-transfers/{incomingTransferId}/resolve-review`](https://docs.lerian.studio/es/reference/interfaces/ted-lerian/resolve-an-incoming-ted-review). |

La [lista de errores de TED Lerian](https://docs.lerian.studio/es/reference/interfaces/ted-lerian/ted-lerian-error-list.md) describe cada código.

## Relacionados

***

* [Enviar y recibir TED](https://docs.lerian.studio/es/diagrams/native-rails/send-and-receive-ted.md)
* [Revertir una transacción](https://docs.lerian.studio/es/diagrams/lerian-products/midaz-reverse-a-transaction.md)
* [Cómo funciona TED Lerian](https://docs.lerian.studio/es/interfaces/ted-lerian/ted-lerian-how-it-works.md)
* [Eventos de TED Lerian](https://docs.lerian.studio/es/interfaces/ted-lerian/ted-lerian-events.md)
* [Eventos e integración con el ledger de Lerian SPB](https://docs.lerian.studio/es/rails/spb/spb-events-and-ledger-integration.md)


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