PDF y envío por email
El PDF se genera automáticamente para cada comprobante pero se genera en segundo plano, unos segundos después. La respuesta del POST te da el CAE de inmediato; el archivo llega poco después.
Pedilo en el momento en que lo necesitás —cuando el usuario lo abre, lo imprime o lo adjunta—.
Si lo guardás, te obliga a resolver almacenamiento, backups, permisos de acceso, retención y de eso nos encargamos nosotros, estarías duplicando esfuerzo y costos. Lo que sí conviene guardar de la emisión son los identificadores: id, cae, voucherNumber, posNumber y voucherType. Con el id traés el PDF cuando haga falta, tantas veces como haga falta.
Obtener el PDF
GET /:id-empresa/invoices/:id/pdf?versions=1,2,3
versions selecciona las copias a estampar: 1 original, 2 duplicado, 3 triplicado. Por defecto 1. Se devuelven ordenadas.
curl "https://nanofactura.com/api/mi-empresa/invoices/14805/pdf?versions=1" \
-H "Authorization: Bearer PROD_tu_api_key" \
-o factura.pdf
Respuesta: application/pdf con Content-Disposition: attachment. El nombre del archivo sigue el formato {cuit}_{voucherType}_{posNumber}_{voucherNumber}.pdf — por ejemplo 20000000000_11_00001_00000045.pdf.
Si todavía no está
{ "ok": false, "code": "PDF_NOT_READY", "error": "El PDF del comprobante todavía se está generando" }
Es 409 y es transitorio: reintentá en unos segundos. Sólo lo vas a ver si pedís el PDF inmediatamente después de emitir — que es justamente lo que conviene no hacer.
No descargues el PDF al emitir "por las dudas". Poné un botón Descargar factura que llame a tu backend, y que tu backend llame a este endpoint en ese momento y transmita el archivo. Es una línea de código y te ahorra todo el almacenamiento.
Enviarlo por email
La API manda el comprobante por correo, con la plantilla y las copias que corresponden. No lo bajes para reenviarlo vos.
Al emitir
Es la forma recomendada: el envío sale solo, en segundo plano, sin bloquear la respuesta.
{
"emails": [
{
"name": "Pedro López",
"comments": "¡Gracias por su compra!",
"pdfVersions": [1]
}
]
}
| Campo | Obligatorio | Descripción |
|---|---|---|
email | Sí | Dirección del destinatario. |
name | No | Nombre del destinatario. |
comments | No | Texto a incluir en el cuerpo del correo. |
pdfVersions | No | Copias a adjuntar. Por defecto [1]. |
Enviar después de emitir
POST /:id-empresa/invoices/:id/emails
{
"name": "Estudio Contable",
"comments": "Copia para el estudio",
"pdfVersions": [1, 2]
}
Responde 201 con la cantidad acumulada de destinatarios. Requiere que el PDF ya esté generado (si no, 409).
Cuenta los de la emisión más los agregados después. Es suficiente para el caso real —el cliente, su contador y una copia interna— y evita que la API se use como lista de distribución.
Si mandás emails con una dirección no válida a POST /invoices, la validación falla antes de llamar a ARCA: no se emite nada. Asegurate de enviar direcciones de email válidas.
Regenerar el PDF
POST /:id-empresa/invoices/:id/pdf/regenerate
Vuelve a generar el archivo y reemplaza el anterior. No reenvía correos.
Es una reparación, para cuando la generación falló o el archivo salió mal. Tiene dos topes:
- Hasta 3 veces por comprobante.
- Sólo dentro de los 90 días de emitido.
Pasado ese plazo el PDF es un documento cerrado: la plantilla, el logo del punto de venta y hasta tus datos fiscales pudieron cambiar, así que regenerarlo devolvería un archivo distinto del que entregaste en su momento. Se responde 409:
{
"ok": false,
"code": "VALIDATION_ERROR",
"error": "El comprobante se emitió hace 124 días y sólo se puede regenerar el PDF dentro de los 90 días de emitido. Descargalo con GET /invoices/1485/pdf."
}
Descargar el PDF sigue funcionando siempre, sin límite de tiempo ni de cantidad. El tope es sólo para regenerarlo.
Personalizar el comprobante
El diseño no se configura por API: sale del punto de venta con el que emitís. Nombre de fantasía, logo, domicilio y leyenda se cargan una vez y se aplican a todos sus comprobantes. Ver Puntos de venta.