# Imprime un recibo

Esta guía muestra cómo imprimir tu propio contenido — recibos complementarios, cupones y similares — en la impresora del terminal con `printBitmap`.

## Cómo funciona

Envías un `Bitmap` a la impresora y recibes actualizaciones de estado mediante un callback. Esto aplica a las impresiones que controla tu aplicación, fuera de los recibos de venta automáticos del SDK.

## Antes de comenzar

El SDK debe haber completado el warm-up con `WarmUpStatus.Success`, y la impresora del terminal debe estar disponible.

## Imprime un bitmap

```kotlin
ApoloSdk.getClient().printBitmap(bitmap) { status ->
    when (status) {
        GetPrinterUseCaseState.OnIdle,
        GetPrinterUseCaseState.OnPrinting -> { /* printing in progress */ }
        GetPrinterUseCaseState.OnSuccess -> { /* print completed */ }
        is GetPrinterUseCaseState.OnError -> { /* status identifies the cause */ }
    }
}
```

## Estado de la impresora

El callback informa cada transición:

| Estado | Significado |
| :--- | :--- |
| `OnIdle` | Preparación inicial de la impresión. |
| `OnPrinting` | Impresión en curso. |
| `OnSuccess` | Impresión completada con éxito. |
| `OnError(status)` | La impresión falló. `status` es un `PosDigitalPrinterStatusEnum`, como `NO_PAPER`, `PAPER_JAM`, `OVERHEAT` o `LIFT_HEAD`. |

## Buenas prácticas

* Prepara el `Bitmap` en una resolución compatible con la impresora del terminal. Las imágenes demasiado grandes o con poco contraste degradan el resultado.
* Espera `OnSuccess` o `OnError` antes de iniciar otra impresión.

## Siguientes pasos

* [Referencia del resultado de la transacción](/es/getnet-toolbox/sdk-white-label/reference-sdk/transaction-result) — códigos de resultado y campos del payload.