Descargar Logs
Exportar contenido
Exporta un archivo CSV con el historial completo de envíos a VeriFactu.
- Ve a VeriFactu Dashboard.
- Aplica filtros si quieres exportar un subset — ej: solo errores del último mes.
- Clic en “Descargar Logs CSV” en la sección Acciones.
- El archivo se descarga automáticamente — nombre:
verifactu-logs-FECHA.csv.
Contenido del CSV
Sección titulada «Contenido del CSV»| Columna | Descripción |
|---|---|
| Número | Número de factura (ej: FAC-000123) |
| Fecha | Fecha de emisión (YYYY-MM-DD) |
| Negocio | Nombre del negocio |
| Cliente | Nombre del cliente |
| Total | Importe total de la factura |
| Estado | Estado de la factura (sent, paid, etc) |
| VeriFactu Status | SENT, ERROR, PENDING_RETRY, FAILED, N/A |
| CSV | Código Seguro de Verificación (si existe) |
| Error Code | Código de error AEAT (si existe) |
| Error Description | Descripción del error (si existe) |
Ejemplo de CSV
Sección titulada «Ejemplo de CSV»Número,Fecha,Negocio,Cliente,Total,Estado,VeriFactu Status,CSV,Error Code,Error DescriptionFAC-000123,2026-02-15,Mi Empresa SL,Cliente ABC,1250.50,sent,SENT,1A2B3C4D5E6F,N/A,N/AFAC-000124,2026-02-16,Mi Empresa SL,Cliente XYZ,890.00,sent,ERROR,N/A,9999,"Timeout de conexión"Usos del CSV
Sección titulada «Usos del CSV»| Uso | Descripción |
|---|---|
| Auditoría | Registro de todos los envíos realizados |
| Análisis de errores | Identificar patrones en errores |
| Informe para asesor | Documentación para gestión fiscal |
| Backup | Copia de seguridad de datos VeriFactu |
Como se que lo hice bien
Sección titulada «Como se que lo hice bien»- Archivo
verifactu-logs-2026-02-16.csvdescargado. - Toast de confirmación: “Logs descargados”.
- Al abrir el CSV, aparecen las facturas con sus datos VeriFactu.
Detalles tecnicos — Descargar Logs
Sección titulada «Detalles tecnicos — Descargar Logs»Función: handleDownloadLogs
Ubicación: VeriFactuDashboard.tsx
Flujo:
// Generar CSVconst csv = [ // Cabecera ["Número", "Fecha", "Negocio", "Cliente", "Total", "Estado", "VeriFactu Status", "CSV", "Error Code", "Error Description"].join(","),
// Filas de datos ...invoices.map(i => [ i.invoice_number, i.issue_date, i.businesses.name, i.customers.name, i.total_amount, i.status, i.verifactu_status || "N/A", i.verifactu_csv || "N/A", i.verifactu_error_code || "N/A", `"${(i.verifactu_error_description || "N/A").replace(/"/g, '""')}"`, // Escapar comillas ].join(","))].join("\n");
// Crear blob y descargarconst blob = new Blob([csv], { type: "text/csv;charset=utf-8;" });const url = URL.createObjectURL(blob);const a = document.createElement("a");a.href = url;a.download = `verifactu-logs-${new Date().toISOString().split('T')[0]}.csv`;a.click();URL.revokeObjectURL(url);Escapado de comillas:
// Descripción de error: Error de "validación" del NIF// Se escapa como: "Error de ""validación"" del NIF"`"${description.replace(/"/g, '""')}"`Query SQL equivalente
SELECT i.invoice_number as "Número", i.issue_date as "Fecha", b.name as "Negocio", c.name as "Cliente", i.total_amount as "Total", i.status as "Estado", COALESCE(i.verifactu_status, 'N/A') as "VeriFactu Status", COALESCE(i.verifactu_csv, 'N/A') as "CSV", COALESCE(i.verifactu_error_code, 'N/A') as "Error Code", COALESCE(i.verifactu_error_description, 'N/A') as "Error Description"FROM invoices iJOIN businesses b ON b.id = i.business_idJOIN customers c ON c.id = i.customer_idWHERE i.business_id = '<business_id>' AND i.status != 'draft'ORDER BY i.issue_date DESC;Exportación con psql:
psql -h <db-host> -U <user> -d <db> -c "COPY (SELECT ...) TO STDOUT WITH CSV HEADER" > verifactu-logs.csv