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

# Revertir una Transacción

> Utilice este endpoint para revertir una transacción existente generando automáticamente una nueva en la dirección opuesta a la original.
La nueva transacción se vincula a la original usando el campo `parentTransactionId`, asegurando la trazabilidad completa entre ambas operaciones.
**Importante**:  Solo las transacciones con estado **APPROVED** pueden ser revertidas. Si la transacción original ya tiene un padre (es decir, ya fue revertida), la solicitud será rechazada.
Si la operación tiene éxito, este endpoint crea la transacción de reversión y devuelve un código 201 Created junto con el contenido de la transacción creada.



## OpenAPI

````yaml es/openapi/v3-current/ledger.yaml post /v1/organizations/{organization_id}/ledgers/{ledger_id}/transactions/{transaction_id}/revert
openapi: 3.1.0
info:
  title: API de Midaz Ledger
  description: >-
    Referencia completa de la API para los servicios de Midaz Ledger, incluyendo
    gestión de organizaciones, operaciones de ledger, activos, segmentos,
    portafolios, cuentas, tipos de cuenta, transacciones, operaciones, saldos,
    rutas de operación, rutas de transacción e índices de metadatos.
  version: 3.7.8
servers:
  - url: https://ledger.sandbox.lerian.net
security: []
tags:
  - name: Organizations API
  - name: Ledgers API
  - name: Assets API
  - name: Segments API
  - name: Portfolios API
  - name: Account Types API
  - name: Accounts API
  - name: Balances API
  - name: Transactions API
  - name: Operations API
  - name: Operation Routes API
  - name: Transaction Routes API
  - name: Metadata Indexes API
  - name: Holders API
  - name: Instruments API
  - name: Billing Packages API
  - name: Packages API
  - name: Billing Calculation API
  - name: Estimation API
  - name: Encryption API
  - name: Protection API
  - name: Asset Rates API
paths:
  /v1/organizations/{organization_id}/ledgers/{ledger_id}/transactions/{transaction_id}/revert:
    post:
      tags:
        - Transactions API
      summary: Revertir una Transacción
      description: >-
        Utilice este endpoint para revertir una transacción existente generando
        automáticamente una nueva en la dirección opuesta a la original.

        La nueva transacción se vincula a la original usando el campo
        `parentTransactionId`, asegurando la trazabilidad completa entre ambas
        operaciones.

        **Importante**:  Solo las transacciones con estado **APPROVED** pueden
        ser revertidas. Si la transacción original ya tiene un padre (es decir,
        ya fue revertida), la solicitud será rechazada.

        Si la operación tiene éxito, este endpoint crea la transacción de
        reversión y devuelve un código 201 Created junto con el contenido de la
        transacción creada.
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/LedgerId'
        - $ref: '#/components/parameters/TransactionId'
        - $ref: '#/components/parameters/XRequestId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/XIdempotency'
        - $ref: '#/components/parameters/XTTL'
      responses:
        '201':
          description: >-
            Indica que la solicitud fue exitosa y la respuesta contiene los
            datos esperados.


            La respuesta incluye el header `X-Idempotency-Replayed`.


            Si el valor es false, la transacción fue recién procesada. Si el
            valor es true, la respuesta es una repetición de una solicitud
            procesada anteriormente.


            Consulte [Reintentos e
            idempotencia](/es/reference/retries-idempotency) para más detalles.
          headers:
            X-Idempotency-Replayed:
              $ref: '#/components/headers/XIdempotencyReplayed'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RevertTransactionResponse'
        '400':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFormat'
              examples:
                Error0088:
                  $ref: '#/components/examples/Error0088'
                Error0089:
                  $ref: '#/components/examples/Error0089'
        '401':
          description: No autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFormat'
              examples:
                Error0041:
                  $ref: '#/components/examples/Error0041'
                Error0042:
                  $ref: '#/components/examples/Error0042'
        '403':
          description: Prohibido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFormat'
              examples:
                Error0043:
                  $ref: '#/components/examples/Error0043'
        '404':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFormat'
              examples:
                Error0007:
                  $ref: '#/components/examples/Error0007'
        '409':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFormat'
              examples:
                Error0087:
                  $ref: '#/components/examples/Error0087'
        '422':
          description: >-
            No procesable — la transacción no se puede revertir debido a una
            regla de negocio.

            Causas posibles: la transacción ya es una reversión, ya tiene un
            padre

            (ya fue revertida), no está en estado APPROVED, produce una
            reversión vacía,

            o la ruta de operación subyacente no es bidireccional.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFormat'
              examples:
                Error0088:
                  $ref: '#/components/examples/Error0088'
                Error0089:
                  $ref: '#/components/examples/Error0089'
                Error0150:
                  $ref: '#/components/examples/Error0150'
                Error0165:
                  $ref: '#/components/examples/Error0165'
        '500':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFormat'
              examples:
                Error0086:
                  $ref: '#/components/examples/Error0086'
components:
  parameters:
    OrganizationId:
      name: organization_id
      in: path
      description: El identificador único de la Organización asociada al Ledger.
      required: true
      example: 019c96a0-0a98-7287-9a31-786e0809c769
      schema:
        type: string
        format: uuid
    LedgerId:
      name: ledger_id
      in: path
      description: El identificador único del Ledger asociado.
      required: true
      example: 019c96a0-0ac0-7de9-9f53-9cf842a2ee5a
      schema:
        type: string
        format: uuid
    TransactionId:
      name: transaction_id
      in: path
      description: El identificador único de la transacción que desea recuperar.
      required: true
      example: 019c96a0-10ce-75fc-a273-dc799079a99c
      schema:
        type: string
        format: uuid
    XRequestId:
      name: X-Request-Id
      in: header
      description: Un identificador único utilizado para rastrear y seguir cada solicitud.
      required: false
      example: 019c96a0-0a98-7287-9a31-786e0809c769
      schema:
        type: string
        format: uuid
    Authorization:
      name: Authorization
      in: header
      required: false
      schema:
        type: string
      description: >
        Token JWT bearer para autenticación.

        Requerido cuando `PLUGIN_AUTH_ENABLED=true` (obligatorio en despliegues
        multiinquilino).

        Opcional en el modo OSS de inquilino único predeterminado.

        Formato: `Bearer <token>`
    XIdempotency:
      name: X-Idempotency
      in: header
      description: >-
        Una clave única que garantiza la idempotencia de la transacción. Si no
        se proporciona, el sistema genera automáticamente un hash SHA-256 basado
        en el cuerpo de la solicitud. Las claves están delimitadas por
        organización y ledger.


        Siempre valide el header de respuesta `X-Idempotency-Replayed` para
        distinguir transacciones nuevas de reproducciones en caché.


        Consulte [Reintentos e idempotencia](/es/reference/retries-idempotency)
        para mejores prácticas.
      required: false
      example: 019c96a0-10ce-75fc-a273-dc799079a99c
      schema:
        type: string
    XTTL:
      name: X-TTL
      in: header
      description: >-
        El tiempo de vida (TTL) de la clave de idempotencia, definido en
        segundos. Si no se proporciona, el valor predeterminado es 300 segundos
        (5 minutos). Solo se usa el TTL de la primera solicitud; cambiarlo en
        reintentos no tiene efecto.


        Consulte [Reintentos e idempotencia](/es/reference/retries-idempotency)
        para más detalles.
      required: false
      example: 3600
      schema:
        type: integer
  headers:
    XIdempotencyReplayed:
      description: >-
        Indica si la respuesta fue reproducida desde caché (`true`) o es una
        respuesta nueva de una transacción recién procesada (`false`). Siempre
        verifique este header para evitar procesar la misma transacción dos
        veces de su lado.


        Consulte [Reintentos e idempotencia](/es/reference/retries-idempotency)
        para más detalles.
      schema:
        type: boolean
      example: false
  schemas:
    RevertTransactionResponse:
      type: object
      properties:
        id:
          type: string
          description: El identificador único de la transacción.
          format: uuid
        parentTransactionId:
          type: string
          description: >-
            El identificador único de la transacción matriz/original para
            reversiones. Este campo es completado por el servidor cuando se
            revierte una transacción y los clientes deben tratarlo como de solo
            lectura.
        organizationId:
          type: string
          format: uuid
          description: El identificador único de la Organización.
        ledgerId:
          type: string
          description: El identificador único del Ledger.
          format: uuid
        description:
          type: string
          description: Descripción de la transacción.
        route:
          type: string
          description: Especifica la Ruta de Transacción asociada a la transacción.
        status:
          type: object
          description: El estado de la transacción (pendiente, completada, revertida).
          properties:
            code:
              type: string
              description: Código de estado de la transacción.
            description:
              type: string
              description: Descripción del estado de la transacción.
        amount:
          type: string
          description: El monto enviado.
        assetCode:
          type: string
          description: El nombre del activo utilizado en la operación.
        chartOfAccountsGroupName:
          type: string
          description: El nombre del grupo del plan de cuentas.
        source:
          type: array
          description: La lista de cuentas utilizadas como origen.
          items:
            type: string
        destination:
          type: array
          description: La lista de cuentas utilizadas como destino.
          items:
            type: string
        createdAt:
          type: string
          format: date-time
          description: Fecha y hora de creación (UTC).
        updatedAt:
          type: string
          format: date-time
          description: Fecha y hora de la última actualización (UTC).
        deletedAt:
          type: string
          format: date-time
          description: Fecha y hora de la eliminación lógica, si aplica (UTC).
          nullable: true
        operations:
          type: array
          items:
            $ref: '#/components/schemas/OperationResponse'
        metadata:
          $ref: '#/components/schemas/Metadata'
    ErrorFormat:
      type: object
      description: El mensaje de error de respuesta.
      required:
        - code
        - title
        - message
      properties:
        code:
          type: string
          description: Un identificador único y estable para el error.
        title:
          type: string
          description: Un breve resumen del problema.
        message:
          type: string
          description: Orientación detallada para resolver el error.
        entityType:
          type: string
          description: >-
            El tipo de entidad a la que se refiere el error (p. ej.
            organization, ledger, account, transaction). Opcional.
        fields:
          type: object
          additionalProperties: true
          description: Información adicional sobre los campos que causaron el error.
    OperationResponse:
      type: object
      properties:
        id:
          type: string
          description: El identificador único de la Operación.
          format: uuid
        transactionId:
          type: string
          format: uuid
          description: El identificador único de la Transacción.
        organizationId:
          type: string
          format: uuid
          description: El identificador único de la Organización.
        ledgerId:
          type: string
          description: El identificador único del Ledger.
          format: uuid
        accountId:
          type: string
          description: El identificador único de la Cuenta.
          format: uuid
        accountAlias:
          type: string
          description: El alias de la cuenta utilizada en la operación.
        balanceId:
          type: string
          description: El identificador único del Saldo.
        balanceKey:
          type: string
          description: El identificador de clave del Saldo.
        description:
          type: string
          description: Una descripción para la operación.
        type:
          type: string
          description: >-
            El tipo de la operación. `OVERDRAFT` identifica operaciones
            companion generadas por el sistema en el saldo interno `"overdraft"`
            — `direction` lleva entonces la semántica del ciclo de vida (`debit`
            para un draw, `credit` para un reembolso). `BLOCK` y `UNBLOCK`
            identifican operaciones producidas por los endpoints de transacción
            de bloqueo/desbloqueo; `direction` sigue llevando la semántica de
            débito/crédito.
          enum:
            - CREDIT
            - DEBIT
            - ON_HOLD
            - RELEASE
            - OVERDRAFT
            - BLOCK
            - UNBLOCK
        assetCode:
          type: string
          description: El código que identifica el activo enviado.
        chartOfAccounts:
          type: string
          description: El nombre del Plan de Cuentas al que pertenece la operación.
        route:
          type: string
          deprecated: true
          description: >-
            **Obsoleto.** Use `routeId` en su lugar. Se eliminará en la próxima
            versión mayor.
        routeId:
          type: string
          format: uuid
          description: >-
            El identificador único de la ruta de operación asociada a esta
            operación. Las operaciones companion de overdraft heredan este valor
            de la operación primaria que las generó.
        routeCode:
          type: string
          maxLength: 100
          description: >-
            Un código legible de la ruta de operación, útil para auditoría y
            rastreabilidad.
        routeDescription:
          type: string
          description: La descripción de la ruta de operación asociada a esta operación.
        direction:
          type: string
          enum:
            - debit
            - credit
          description: La dirección de la operación en la contabilidad de partida doble.
        amount:
          type: object
          description: >-
            Un objeto que contiene información sobre el monto utilizado en la
            operación.
          properties:
            value:
              type: string
              description: El monto que se enviará.
        balance:
          type: object
          description: >-
            Un objeto que contiene información sobre el saldo antes de la
            operación.
          properties:
            available:
              type: string
              description: Saldo disponible anterior.
            onHold:
              type: string
              description: Monto retenido/reservado.
            version:
              type: integer
              description: Versión del saldo, que se actualiza con cada transacción.
            overdraftUsed:
              type: string
              description: >-
                El overdraft consumido por este saldo antes de la operación,
                como string decimal. `"0"` para operaciones que no tocan el
                overdraft.
        balanceAfter:
          type: object
          description: >-
            Un objeto que contiene información sobre el saldo después de la
            operación.
          properties:
            available:
              type: string
              description: Saldo disponible actual.
            onHold:
              type: string
              description: Monto retenido/reservado.
            version:
              type: integer
              description: Versión del saldo, que se actualiza con cada transacción.
            overdraftUsed:
              type: string
              description: >-
                El overdraft consumido por este saldo después de la operación,
                como string decimal. `"0"` para operaciones que no tocan el
                overdraft.
        status:
          type: object
          description: El estado de la transacción (pendiente, completada, revertida).
          properties:
            code:
              type: string
              description: Código de estado de la transacción.
            description:
              type: string
              description: Descripción del estado de la transacción.
              nullable: true
        balanceAffected:
          type: boolean
          description: Indica si la operación tuvo impacto en el saldo de la cuenta.
        createdAt:
          type: string
          format: date-time
          description: Fecha y hora de creación (UTC).
        updatedAt:
          type: string
          format: date-time
          description: Fecha y hora de la última actualización (UTC).
        deletedAt:
          type: string
          format: date-time
          description: Fecha y hora de la eliminación lógica, si aplica (UTC).
          nullable: true
        metadata:
          $ref: '#/components/schemas/Metadata'
    Metadata:
      type: object
      additionalProperties:
        oneOf:
          - type: string
            maxLength: 2000
          - type: number
          - type: boolean
      description: >-
        Un objeto que contiene pares clave-valor para agregar como metadatos,
        donde el campo `name` es la clave y el campo `value` es el valor. Por
        ejemplo, para agregar un Centro de Costo, use `'costCenter':
        'BR_11101997'`.


        **Restricciones:** las claves deben tener como máximo 100 caracteres;
        los valores de cadena de texto, como máximo 2000 caracteres. No se
        permiten objetos anidados (los valores deben ser cadena de texto, número
        o booleano), la estructura no puede exceder una profundidad máxima de
        10, y se permite un máximo de 100 claves.
  examples:
    Error0088:
      value:
        code: 88
        title: Transaction is already a reversal
        message: Transaction is already a reversal. Please try again
      summary: Transaction is already a reversal
    Error0089:
      value:
        code: 89
        title: Transaction can't be reverted
        message: Transaction can't be reverted. Please try again
      summary: Transaction can't be reverted
    Error0041:
      summary: Token Missing
      value:
        code: '0041'
        title: Token Missing
        message: >-
          A valid token must be provided in the request header. Please include a
          token and try again.
    Error0042:
      summary: Invalid Token
      value:
        code: '0042'
        title: Invalid Token
        message: >-
          The provided token is expired, invalid or malformed. Please provide a
          valid token and try again.
    Error0043:
      summary: Insufficient Privileges
      value:
        code: '0043'
        title: Insufficient Privileges
        message: >-
          You do not have the necessary permissions to perform this action.
          Please contact your administrator if you believe this is an error.
    Error0007:
      value:
        code: '0007'
        title: Entity Not Found
        message: >-
          No entity was found for the given ID. Please make sure to use the
          correct ID for the entity you are trying to manage.
      summary: Entity Not Found
    Error0087:
      value:
        code: 87
        title: Transaction Revert already exist
        message: Transaction revert already exists. Please try again.
      summary: Transaction Revert already exist
    Error0150:
      summary: Route Not Bidirectional
      value:
        code: '0150'
        title: Route Not Bidirectional
        message: >-
          The operation route does not support bidirectional transactions. Only
          routes with type 'bidirectional' can be used for reversals.
    Error0165:
      summary: Revert Only Bidirectional
      value:
        code: '0165'
        title: Revert Only Bidirectional
        message: >-
          The revert scenario is only allowed for bidirectional operation
          routes.
    Error0086:
      value:
        code: 86
        title: Race condition detected
        message: >-
          A race condition was detected while processing your request. Please
          try again
      summary: Race condition detected

````