# Salida del comprobante

> PDF, XML del sobre, y el QR que arma el gateway

## PDF (representación impresa)

```
GET /v1/companies/{rut}/invoices?id={cfeId}
```

Devuelve el PDF del CFE. El `cfeId` es el `id` interno que devuelve la emisión (o
`GET .../sentCfes`). Responde `200` con `content-type: application/pdf`. El PDF
se **genera en el gateway**, no se pide a DGI, y requiere que la empresa tenga
logo cargado.

## Verificación pública por QR

El gateway **arma el QR por vos**: la emisión ya devuelve `qrUrl` y `securityCode`
(los primeros 6 del `sentXmlHash`) - el integrador no construye la URL. Su forma:

```
{baseConsultaQR}?{rutEmisor},{cfeType},{serie},{nro},{montoPagar},{fchEmis},{hashURLencoded}
```

El endpoint público que resuelve esa URL:

```
GET /consultaQR/cfe?{rutEmisor},{cfeType},{serie},{nro},{monto},{fecha},{hash}
```

<Note>
Este endpoint **no se publica** en la referencia: quien lo llama es la persona que escanea
el ticket, no el integrador. La forma de la URL, que es lo que sí necesitás, es la de
arriba.
</Note>

- **Match válido** → `200 application/pdf` (la representación impresa del CFE).
- **No existe** → `412 UNEXISTENT_INSTANCE`.

Es **público** (sin sesión): es la URL que DGI exige codificar en el QR impreso.

## XML del sobre + adenda

```
GET /v1/companies/{rut}/sentCfes/{cfeType}/{serie}/{number}/sobreAdenda
```

Devuelve el sobre firmado tal como viajó a DGI, en `application/xml`.

<Note>
Existe además `GET /v1/companies/{rut}/sentSobreXml`, que devuelve el XML de los
sobres enviados, pero **no está en la superficie publicada**. Si lo necesitás
para tu integración, pedilo y se evalúa; no lo uses a partir de esta mención.
</Note>
