BongoFact · Auditoría de conformidad SIF Veri*Factu y Facturae/FACe Fecha: 2026-09-29T21:56:38.964Z Resultado global: PASS Controles: 31 · PASS: 27 · N/A: 4 · FAIL: 0 Alcance: Análisis de código, contratos XML, encadenamiento, remisión, representación gráfica, Facturae 3.2.2 y controles de despliegue. Limitación: Autoverificación técnica reproducible del productor; no equivale a homologación, certificación de la AEAT ni auditoría jurídica externa. [PASS] SHA256_HUELLA Área: Veri*Factu · huella Referencia: RD 1007/2023 art. 12 · Orden HAC/1177/2024 art. 13 Requisito: Calcular SHA-256 sobre el subconjunto y formato oficial de campos. Método: Vector determinista y recálculo independiente con node:crypto. Evidencia: veriFactuService.mjs Resultado: Huella SHA-256 hex 64 mayúsculas coincidente (38C89D610219…). [PASS] XML_ALTA_ANULACION Área: Veri*Factu · registros Referencia: RD 1007/2023 arts. 10 y 11 · Orden HAC/1177/2024 arts. 10 y 11 Requisito: Generar altas y anulaciones XML UTF-8 con estructura y contenido reglamentarios. Método: Generación de ambos tipos y comprobación de nodos críticos. Evidencia: veriFactuService.mjs Resultado: XML RegistroAlta y RegistroAnulacion contienen Huella, encadenamiento y estructura mínima. [PASS] ENCADENAMIENTO Área: Veri*Factu · trazabilidad Referencia: RD 1007/2023 art. 8.2.b · Orden HAC/1177/2024 art. 7 Requisito: Encadenar cada alta/anulación con el registro cronológicamente anterior. Método: Cadena de dos registros y prueba negativa con huella alterada. Evidencia: veriFactuService.mjs Resultado: Encadenamiento: huella N depende de N-1; genesis vacío en cadena; ruptura detectada. [PASS] QR_AEAT Área: Veri*Factu · QR Referencia: Orden HAC/1177/2024 arts. 20 y 21 Requisito: Construir la URL QR oficial exclusivamente con NIF, serie/número, fecha e importe. Método: Parseo de URL y comparación exacta de parámetros. Evidencia: qrGenerator.mjs · veriFactuService.mjs Resultado: QR apunta a ValidarQR AEAT (prod/www2) con los cuatro parámetros oficiales y sin datos adicionales. [PASS] INALTEABILIDAD_CUMP01 Área: Veri*Factu · inalterabilidad Referencia: RD 1007/2023 art. 8.2.a · Orden HAC/1177/2024 art. 6 Requisito: Impedir modificación o eliminación de registros sellados. Método: Sonda RPC real o verificación de migración cuando no hay credenciales. Evidencia: prevent_invoice_tampering Resultado: BD bloqueó UPDATE con huella: Veri*Factu: no se puede modificar base_imponible en factura emitida. Use anulación. [PASS] EMISION_ATOMICA_CUMP02 Área: Veri*Factu · concurrencia Referencia: RD 1007/2023 art. 8.2.a–b Requisito: Serializar numeración y encadenamiento para evitar carreras. Método: Sonda de existencia RPC o inspección de migración FOR UPDATE. Evidencia: aplicar_emision_verifactu_atomica Resultado: RPC aplicar_emision_verifactu_atomica desplegada (responde a sonda). [PASS] SIF_IDENTIDAD_VERSION_PRODUCTOR Área: Veri*Factu · identificación SIF Referencia: Orden HAC/1177/2024, anexo 2.6 y art. 15.1 a–j Requisito: Los registros deben identificar de forma coherente productor, código, versión e instalación del SIF. Método: Inspección estática reproducible del código incluido en el release. Evidencia: server/servicios/veriFactuService.mjs · src/config/sifRelease.json Resultado: Productor, NIF y versión 1.0.29 son coherentes entre registro y release. [PASS] MODO_EXCLUSIVO_VERIFACTU Área: Veri*Factu · modalidad Referencia: RD 1007/2023 art. 16 · Orden HAC/1177/2024 arts. 15.1.e y 16 Requisito: Si se declara uso exclusivo VERI*FACTU, la emisión debe enlazar con la remisión efectiva a AEAT. Método: Inspección estática reproducible del código incluido en el release. Evidencia: veriFactuService.mjs · emitirBorradorFacturaSaas.mjs Resultado: El registro declara SoloVerifactu=S y el flujo de un tenant VERIFACTU remite tras sellar. [N/A] FIRMA_REGISTROS_NO_VERIFACTU Área: Veri*Factu · firma de registros Referencia: RD 1007/2023 arts. 12 y 16.3 · Orden HAC/1177/2024 art. 14 Requisito: Los registros no VERI*FACTU se firman con XAdES y certificado cualificado; los VERI*FACTU están dispensados. Método: Inspección estática reproducible del código incluido en el release. Evidencia: TipoUsoPosibleSoloVerifactu=S Resultado: No aplicable por diseño exclusivamente VERI*FACTU; permanece obligatoria la huella SHA-256. [N/A] REGISTRO_EVENTOS_NO_VERIFACTU Área: Veri*Factu · registro de eventos Referencia: Orden HAC/1177/2024 art. 9 Requisito: Los sistemas no VERI*FACTU registran eventos de inicio/fin, anomalías, restauración y exportación. Método: Inspección estática reproducible del código incluido en el release. Evidencia: TipoUsoPosibleSoloVerifactu=S · FAQ técnica AEAT Resultado: No aplicable mientras el producto solo pueda operar como VERI*FACTU. [PASS] SIF_MULTIPLES_OBLIGADOS Área: Veri*Factu · identificación SIF Referencia: Orden HAC/1177/2024 art. 15.1.f y anexo 2.6 Requisito: La capacidad de prestar servicio a varios obligados tributarios debe declararse coherentemente. Método: Inspección estática reproducible del código incluido en el release. Evidencia: veriFactuService.mjs · migración agency_relations Resultado: La capacidad multiobligado está declarada de forma coherente. [N/A] AUTORIZACION_NO_APLICACION Área: Veri*Factu · supuestos especiales Referencia: Orden HAC/1177/2024 art. 12 Requisito: Consignar el número de registro de autorizaciones o resoluciones de no aplicación cuando existan. Método: Inspección estática reproducible del código incluido en el release. Evidencia: No se declara ninguna autorización o resolución especial para BongoFact. Resultado: No aplicable al release auditado; si un obligado dispone de resolución, deberá habilitarse y verificarse antes de su uso. [N/A] RENUNCIA_MODALIDAD_VERIFACTU Área: Veri*Factu · modalidad Referencia: Orden HAC/1177/2024 art. 17 Requisito: Una eventual renuncia a la remisión respeta plazo, campo oficial y mantenimiento hasta fin de año. Método: Inspección estática reproducible del código incluido en el release. Evidencia: Declaración de producto exclusivamente VERI*FACTU. Resultado: No aplicable: el producto no ofrece cambio a modalidad no VERI*FACTU. [PASS] ALTA_SIMULTANEA_EXPEDICION Área: Veri*Factu · registro de alta Referencia: RD 1007/2023 arts. 9 y 10 · Orden HAC/1177/2024 art. 10 Requisito: Generar automáticamente el registro de alta simultáneamente o inmediatamente antes de expedir la factura. Método: Inspección estática reproducible del código incluido en el release. Evidencia: emitirBorradorFacturaSaas.mjs Resultado: El flujo de emisión construye/persiste el XML y aplica numeración, huella y estado mediante operación atómica. [PASS] CORRECCION_MEDIANTE_NUEVO_REGISTRO Área: Veri*Factu · inalterabilidad Referencia: RD 1007/2023 art. 8.2.a y art. 11 Requisito: Las correcciones o anulaciones no alteran el original: generan un registro posterior. Método: Inspección estática reproducible del código incluido en el release. Evidencia: veriFactuService.mjs · migraciones CUMP-01/CUMP-02 Resultado: Existe registro de anulación encadenado y bloqueo de mutación de registros sellados. [PASS] TRAZABILIDAD_BIDIRECCIONAL_UI Área: Veri*Factu · trazabilidad Referencia: Orden HAC/1177/2024 art. 7.h Requisito: Desde cualquier registro debe poder saltarse al anterior y posterior, mostrando validez de hash y orden temporal. Método: Inspección estática reproducible del código incluido en el release. Evidencia: src/components/facturacion/InvoiceTraceabilityTimeline.tsx Resultado: La interfaz ofrece navegación anterior/posterior y valida encadenamiento. [PASS] CONSERVACION_ACCESO_EXPORTACION Área: Veri*Factu · conservación Referencia: RD 1007/2023 art. 8.2.c y art. 14 · Orden HAC/1177/2024 art. 8 Requisito: Conservar y permitir acceso, consulta y copia electrónica legible de los registros. Método: Inspección estática reproducible del código incluido en el release. Evidencia: exportarDatosUsuario.mjs · /api/exportar-datos · almacenamiento facturas_xml Resultado: La exportación autenticada reúne facturas y XML conservados en un ZIP tenant-scoped. [PASS] REMISION_AEAT_SEGURA_FEHACIENTE Área: Veri*Factu · remisión Referencia: RD 1007/2023 arts. 8.1 y 16 · Orden HAC/1177/2024 arts. 4, 5 y 16 Requisito: Remisión continuada, segura, correcta, íntegra, automática, consecutiva, instantánea y fehaciente. Método: Inspección estática reproducible del código incluido en el release. Evidencia: aeatVerifactuRemision.mjs · procesarRemisionRegistroVerifactu.mjs Resultado: Transporte HTTPS/mTLS, certificado y parser de respuesta AEAT presentes. [PASS] PRODUCCION_AEAT_ENTORNO Área: Veri*Factu · despliegue Referencia: Orden HAC/1177/2024 art. 16 · separación de entornos AEAT Requisito: Un release de producción debe auditarse contra configuración productiva explícita, nunca preproducción/mock. Método: Inspección estática reproducible del código incluido en el release. Evidencia: VERIFACTU_ENV · VERIFACTU_ENDPOINT_URL · release-prod-gate Resultado: El gate usa entorno prod y endpoint oficial agenciatributaria.gob.es. [PASS] REMISION_CONTROL_FLUJO Área: Veri*Factu · remisión Referencia: Orden HAC/1177/2024 art. 16.2 Requisito: Respetar el tiempo de espera inicialmente de 60 segundos, su actualización por AEAT y el máximo de registros por envío. Método: Inspección estática reproducible del código incluido en el release. Evidencia: aeatVerifactuRemision.mjs · verifactuFlowControl.mjs · migraciones verifactu_remision_control(_rpc) Resultado: Se detecta control de flujo durable (RPC + TiempoEsperaEnvio) y tamaño máximo de lote 1000. [PASS] REMISION_REINTENTO_INMUTABLE Área: Veri*Factu · inalterabilidad y contingencia Referencia: RD 1007/2023 art. 8.2.a · Orden HAC/1177/2024 art. 16.4 Requisito: Reenviar un registro sellado conserva XML, FechaHoraHusoGenRegistro y huella, marcando la incidencia solo en el sobre. Método: Inspección estática reproducible del código incluido en el release. Evidencia: remitirFacturaAeatManual.mjs · procesarRemisionRegistroVerifactu.mjs · prepararXmlRemisionConVentanaAeat.mjs Resultado: El reenvío usa el XML firmado conservado, verifica su hash y no recalcula la huella. [PASS] REMISION_REINTENTO_HORARIO_AVISO Área: Veri*Factu · contingencia Referencia: Orden HAC/1177/2024 art. 16.4 Requisito: Reintentar al menos cada hora y mantener aviso visible mientras existan registros pendientes. Método: Inspección estática reproducible del código incluido en el release. Evidencia: server/index.mjs · procesarRemisionRegistroVerifactu.mjs · frontend Resultado: Existe worker horario y aviso persistente de pendientes. [PASS] RESPUESTA_AEAT_CSV_ERRORES Área: Veri*Factu · remisión Referencia: Orden HAC/1177/2024 art. 16.3 y 16.5 Requisito: Interpretar aceptación, CSV, registro erróneo y código de error sin confundir HTTP 200 con aceptación. Método: Inspección estática reproducible del código incluido en el release. Evidencia: aeatVerifactuRemision.mjs · tests/aeatVerifactuRemision.test.mjs Resultado: El parser separa estado de envío/registro, CSV y errores de negocio. [PASS] REMISION_MARCA_INCIDENCIA Área: Veri*Factu · contingencia Referencia: Orden HAC/1177/2024 art. 16.4 y anexo 4 Requisito: Marcar en el mensaje los registros remitidos fuera de plazo por una incidencia técnica. Método: Inspección estática reproducible del código incluido en el release. Evidencia: aeatVerifactuRemision.mjs · verifactuFlowControl.mjs · migraciones verifactu_remision_control(_rpc) Resultado: Se detecta el campo Incidencia en SOAP y persistencia de incidencia técnica por tenant. [PASS] QR_REPRESENTACION_GRAFICA Área: Veri*Factu · factura Referencia: Orden HAC/1177/2024 arts. 20 y 21 Requisito: Incluir QR legible de 30–40 mm y la mención VERI*FACTU; en factura electrónica, la URL. Método: Inspección estática reproducible del código incluido en el release. Evidencia: invoiceTemplate.mjs · qrGenerator.mjs Resultado: Las plantillas sitúan al inicio un QR de 30 mm con «QR tributario:» y la mención legal, sin exigir certificado al receptor. [PASS] DECLARACION_RESPONSABLE_ART15 Área: Veri*Factu · declaración responsable Referencia: RD 1007/2023 art. 13 · Orden HAC/1177/2024 art. 15 Requisito: Declaración visible por versión, con apartados obligatorios 1.a–1.l en orden y anexo explicativo. Método: Inspección estática reproducible del código incluido en el release. Evidencia: scripts/generate-declaracion.mjs · public/legal/declaracion-responsable.html Resultado: Se comprueba estructuralmente el generador, no una firma externa ni una homologación de la AEAT. [PASS] FACTURAE_322_ESTRUCTURA Área: Facturae/FACe · formato Referencia: Ley 25/2013 · formato Facturae 3.2.2 publicado por FACe Requisito: Generar Facturae 3.2.2 con cabecera, partes, impuestos, totales, líneas y pago coherentes. Método: Generación determinista de una factura de prueba y comprobación de estructura/valores. Evidencia: facturaeXmlService.mjs · tests/facturaeXml.test.mjs Resultado: La muestra usa namespace/esquema 3.2.2 y totaliza 100,00 + 21,00 = 121,00. [PASS] FACTURAE_DIR3_FACE Área: Facturae/FACe · centros administrativos Referencia: Especificación FACe / Facturae 3.2.2 Requisito: Incluir oficina contable (01), órgano gestor (02) y unidad tramitadora (03) en BuyerParty. Método: Inspección estática reproducible del código incluido en el release. Evidencia: facturaeXmlService.mjs Resultado: La muestra contiene los tres centros DIR3 con sus RoleTypeCode. [PASS] FACTURAE_FIRMA_XADES_POLICY Área: Facturae/FACe · firma Referencia: Política de firma Facturae v3.1 · XAdES-EPES Requisito: Firmar el XML con certificado cualificado, referencia enveloped y política Facturae exigida por FACe. Método: Inspección estática reproducible del código incluido en el release. Evidencia: facturaeSigner.mjs · facturaeXmlService.mjs Resultado: El motor y el preflight exigen XAdES-EPES y el digest de política; no se usa un certificado real en CI. [PASS] FACTURAE_IDENTIDAD_CERTIFICADO Área: Facturae/FACe · identidad Referencia: Política de firma Facturae/FACe Requisito: Comprobar que el certificado pertenece al emisor o a un representante válido de la persona jurídica. Método: Inspección estática reproducible del código incluido en el release. Evidencia: facturaeXmlService.mjs · pkcs12Identidad.mjs Resultado: El preflight compara SellerParty con identidad y organizationIdentifier del certificado. [PASS] FACE_TRANSPORTE_RESPUESTA Área: Facturae/FACe · remisión Referencia: Servicios web FACe y WSDL oficial Requisito: Enviar factura firmada, interpretar código de resultado y conservar número de registro. Método: Inspección estática reproducible del código incluido en el release. Evidencia: faceWebService.mjs · tests/aeatVerifactuRemision.test.mjs Resultado: Existe cliente SOAP y parser que no considera éxito sin código/registro válido. Todos los controles superados.