Ir al contenido

Descargar Logs

Exporta un archivo CSV con el historial completo de envíos a VeriFactu.

  1. Ve a VeriFactu Dashboard.
  2. Aplica filtros si quieres exportar un subset — ej: solo errores del último mes.
  3. Clic en “Descargar Logs CSV” en la sección Acciones.
  4. El archivo se descarga automáticamente — nombre: verifactu-logs-FECHA.csv.
ColumnaDescripción
NúmeroNúmero de factura (ej: FAC-000123)
FechaFecha de emisión (YYYY-MM-DD)
NegocioNombre del negocio
ClienteNombre del cliente
TotalImporte total de la factura
EstadoEstado de la factura (sent, paid, etc)
VeriFactu StatusSENT, ERROR, PENDING_RETRY, FAILED, N/A
CSVCódigo Seguro de Verificación (si existe)
Error CodeCódigo de error AEAT (si existe)
Error DescriptionDescripción del error (si existe)
Número,Fecha,Negocio,Cliente,Total,Estado,VeriFactu Status,CSV,Error Code,Error Description
FAC-000123,2026-02-15,Mi Empresa SL,Cliente ABC,1250.50,sent,SENT,1A2B3C4D5E6F,N/A,N/A
FAC-000124,2026-02-16,Mi Empresa SL,Cliente XYZ,890.00,sent,ERROR,N/A,9999,"Timeout de conexión"
UsoDescripción
AuditoríaRegistro de todos los envíos realizados
Análisis de erroresIdentificar patrones en errores
Informe para asesorDocumentación para gestión fiscal
BackupCopia de seguridad de datos VeriFactu
  • Archivo verifactu-logs-2026-02-16.csv descargado.
  • Toast de confirmación: “Logs descargados”.
  • Al abrir el CSV, aparecen las facturas con sus datos VeriFactu.
Función: handleDownloadLogs

Ubicación: VeriFactuDashboard.tsx

Flujo:

// Generar CSV
const 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 descargar
const 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 i
JOIN businesses b ON b.id = i.business_id
JOIN customers c ON c.id = i.customer_id
WHERE i.business_id = '<business_id>'
AND i.status != 'draft'
ORDER BY i.issue_date DESC;

Exportación con psql:

Ventana de terminal
psql -h <db-host> -U <user> -d <db> -c "COPY (SELECT ...) TO STDOUT WITH CSV HEADER" > verifactu-logs.csv