API de N1

Archivos de los documentos

Qué archivos tiene N1 para cada documento y cómo descargarlos con URLs firmadas.


Cada documento (factura electrónica, nota crédito, cuenta de cobro o factura del exterior) trae un objeto files que describe los archivos que N1 tiene para él, y el imported_file_id del archivo cargado del que proviene:

"files": {
  "original": { "available": true, "file_name": "FE-10422.zip", "extension": "zip", "content_type": "application/zip", "size": 48213 },
  "pdf": { "status": "on_demand", "source": "n1" }
}
  • original es el archivo tal como llegó a N1 (por carga manual, correo, API o importación DIAN): XML, ZIP o PDF. available: false significa que el documento no tiene archivo (por ejemplo, una cuenta de cobro creada a mano o importada desde Excel).
  • pdf.status indica la representación en PDF: available cuando el archivo original ya es un PDF (source: "original"); on_demand cuando N1 la extrae del ZIP o la genera a partir del XML al descargarla (source: "n1"); none cuando no existe.

Qué PDF puede ofrecer N1 según el tipo de documento:

DocumentoOriginal XMLOriginal ZIPOriginal PDF
Factura electrónicaSe genera la representación gráfica DIANSe usa el PDF del ZIP o se genera desde el XMLEl mismo archivo
Nota créditoSin PDFSe usa el PDF incluido en el ZIP, si lo hayEl mismo archivo
Cuenta de cobroEl mismo archivo
Factura del exteriorEl mismo archivo

Descarga con GET /companies/{id}/<recurso>/{document_id}/original y .../pdf. Ambas rutas responden 302 con Location a una URL firmada de Amazon S3 válida por una hora: sigue la redirección sin reenviar el encabezado Authorization (con curl, usa -L) y no guardes la URL. Si la variante no existe, o on_demand no se pudo generar, la respuesta es 404 file_not_available; el documento existe y no hace falta reintentar.

El archivo de una carga (POST /files, correo o importación DIAN) se descarga con GET /companies/{id}/files/{file_id}/content, con el mismo comportamiento.