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

# Estornar uma transação (API)

> Crie o estorno de uma transação aprovada, uma nova transação no sentido inverso, pela API do Midaz.

Desfaça o efeito de uma transação aprovada. O Midaz lança uma nova transação no sentido inverso e mantém a transação original como ela está.

## Participantes

***

* **Sua instituição.** O seu sistema. Ele pede o estorno.
* **Midaz.** O ledger. Ele confere o pedido e lança o estorno.

## Antes de começar

***

* A transação a estornar está em `APPROVED`. Guarde o `id` dela.

## Diagrama

***

![Estornar uma transação](https://mintcdn.com/lerian-49cb71fc/WuRfbo_y9uSbzyyX/images/pt/d2/id-midaz-reverse-a-transaction.svg?fit=max\&auto=format\&n=WuRfbo_y9uSbzyyX\&q=85\&s=35aff8f69fe039bfe697c9dddcb416c1)

## Passo a passo pela API

***

| # | Origem | Destino | Mensagem | API da Lerian | O que acontece |
| - | - | - | - | - | - |
| 1 | Sua instituição | Midaz | Chamada de API | [`POST /v2/organizations/{organization_id}/ledgers/{ledger_id}/transactions/{transaction_id}/revert`](https://docs.lerian.studio/pt/reference/products/midaz/v2/revert-transaction) | Peça o estorno da transação. |
| 2 | Midaz | Midaz | Etapa interna | | O Midaz confere se a transação está em `APPROVED`, se ainda não tem estorno e se ela mesma não é um estorno. |
| 3 | Midaz | Midaz | Etapa interna | | O Midaz lança uma nova transação que move os valores da original no sentido inverso. O `parentTransactionId` dela é o `id` da original. |
| 4 | Midaz | Sua instituição | Resposta da API | | O Midaz responde `201` com o estorno. |
| 5 | Sua instituição | Midaz | Chamada de API | [`GET /v2/organizations/{organization_id}/ledgers/{ledger_id}/transactions/{transaction_id}`](https://docs.lerian.studio/pt/reference/products/midaz/v2/get-transaction) | Leia a transação original. |
| 6 | Midaz | Sua instituição | Resposta da API | | A transação original continua em `APPROVED`. |

## Regras

***

* Você não pode estornar um bloqueio ou um desbloqueio.
* Cada operação que usa uma rota de operação precisa de uma rota do tipo `bidirectional`.
* O estorno não cobra tarifa nova. Ele devolve as tarifas da transação original.

## Como saber que terminou

***

Leia o estorno com [`GET /v2/organizations/{organization_id}/ledgers/{ledger_id}/transactions/{transaction_id}`](https://docs.lerian.studio/pt/reference/products/midaz/v2/get-transaction). O status dele é `APPROVED`, e o `parentTransactionId` dele é o `id` da transação original.

## O que pode dar errado

***

| Situação | O que você vê | O que fazer |
| - | - | - |
| A transação já tem um estorno | `409` com `0087` | Não crie outro estorno. O primeiro continua no ledger. |
| A transação é ela mesma um estorno | `409` com `0088` | Para mover o valor de novo, lance uma nova transação. |
| A transação não está em `APPROVED` | `409` com `0099` | Cancele uma transação em `PENDING`. |
| Uma rota de operação da transação não é `bidirectional` | `422` com `0150` | O Midaz não pode estornar esta transação. |
| O ledger valida rotas, e nenhuma rota de operação da transação tem uma entrada contábil `revert` | `422` com `0157` | Adicione uma entrada `revert` às rotas de operação e estorne de novo. |
| O registro de dívida de tarifa da transação não está completo | `409` com `0529` | O Midaz não moveu nada. Tente de novo mais tarde. |
| A resposta não chega | Nenhuma resposta, ou um timeout | Envie o mesmo estorno de novo. Um `201` devolve o estorno. Um `409` com `0087` significa que o estorno existe. Depois de um `409` com `0084`, espere e envie o mesmo estorno de novo. |

## Relacionados

***

* [Montar um ledger e lançar a primeira transação](https://docs.lerian.studio/pt/diagrams/lerian-products/midaz-create-and-transact.md)
* [Liquidar a dívida de tarifa](https://docs.lerian.studio/pt/diagrams/lerian-products/midaz-settle-fee-debt.md)
* [Lista de erros do Midaz](https://docs.lerian.studio/pt/reference/products/midaz/error-list.md)


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