# Recuperar el último comprobante

Esta guía explica cómo recuperar o volver a imprimir el comprobante de la última transacción desde un TPV Integrado con la operación `GetLastVoucher`. El comportamiento es el mismo en USB y red (Network).

## ¿Qué es el último comprobante?

El **último comprobante** es el contenido del recibo de la transacción más reciente en el terminal TPV (una venta o una cancelación). `GetLastVoucher` dispara una reimpresión o devuelve ese contenido sin volver a ejecutar la transacción. Es útil cuando se pierde el recibo, falla la impresión o el cliente pide un duplicado.

## Antes de comenzar

Antes de recuperar el último comprobante:

* Debes crear y validar un Connector con `Polling`
* El Modo TPV Integrado debe estar activo
* Debe haber al menos una transacción completada en el terminal

## Paso 1: Ejecutar la solicitud

Para recuperar o volver a imprimir el comprobante de la última transacción, llama a la operación `GetLastVoucher`. Puedes imprimirlo directamente en el TPV o recibir el contenido en la respuesta.

Los siguientes parámetros están disponibles para la operación `GetLastVoucher`:

| Parámetro | Tipo | Obligatorio | Descripción |
| :--- | :--- | :--- | :--- |
| `PrintOnPos` | Boolean | No | Si es `true`, el TPV imprime el comprobante. Si es `false`, el contenido del recibo se devuelve en `ReceiptContent`. |
| `SkipReceipt` | Boolean | No | Si es `true`, el recibo del cliente no se imprime; si es `false` (predeterminado), se imprime. Se ignora cuando `PrintOnPos` es `false`. |

El siguiente ejemplo muestra cómo solicitar una reimpresión del último comprobante directamente en el terminal TPV:

```csharp
var request = new LastTransactionRequest
{
    PrintOnPos = true,
    SkipReceipt = false
};

var voucherResult = await connector.GetLastVoucherAsync(request);
```

## Paso 2: Manejar la respuesta

Al finalizar, el TPV devuelve una respuesta estructurada con el estado de la operación y, si lo solicitas, el contenido del recibo. A continuación hay un ejemplo de un objeto de respuesta exitosa:

```json
{
  "Code": 0,
  "Message": "APPROVED",
  "ReceiptContent": null
}
```

<Callout type="note">

La respuesta contiene solo `Code`, `Message` y `ReceiptContent`. Aquí `ReceiptContent` es `null` porque la solicitud definió `PrintOnPos` como `true`. Cuando `PrintOnPos` es `false`, `ReceiptContent` devuelve un objeto estructurado con los campos del recibo — consulta [Responsabilidad de impresión](/es/integrated-pos/core-concepts-pos/printing-responsibility).

</Callout>

Verifica siempre el `Code` y el `Message` antes de procesar el `ReceiptContent`.

## Consideraciones importantes

Ten en cuenta lo siguiente:

* Solo puedes recuperar el comprobante de la transacción más reciente (venta o cancelación).
* La operación no reprocesa ni revierte la transacción.
* Si la última transacción fue un informe (Report), no se imprime ningún comprobante y se devuelve un mensaje explicativo.

## Siguientes pasos

* [Responsabilidad de impresión](/es/integrated-pos/core-concepts-pos/printing-responsibility) — PrintOnPos y ReceiptContent.