Buenas tardes!
Estoy intentando integrar el servicio web de Verifactu de la AEAT para el envío de facturas y estoy teniendo problemas con el campo ObligadoEmision.
El error que obtengo es:
Código:
Codigo[4102].El XML no cumple el esquema. Falta informar campo obligatorio.: ObligadoEmision
Mi implementación:
Estoy enviando una petición SOAP al endpoint de pruebas: prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP
Con los siguientes headers:
Código:
Content-Type: text/xml;charset=UTF-8
SOAPAction: "www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/RegFactuSistemaFacturacion"
Accept: text/xml, application/xml, application/soap+xml
Y este es el XML que envío:
Código:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="schemas.xmlsoap.org/soap/envelope/"
xmlns:sum="www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd"
xmlns:sum1="www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
<soapenv:Header/>
<soapenv:Body>
<sum:RegFactuSistemaFacturacion>
<sum:Cabecera>
<sum1:IDVersion>1.0</sum1:IDVersion> Esto no va aqui, va solo en el registro de alta, seguramente al detectar esto indica el error que falta obligado emisor que es lo p rimero a encontrar, pruebe e indiqueme si vario algo.
<sum1:ObligadoEmision>
<NombreRazon>EMPRESA DE PRUEBA S.L.</NombreRazon> Las etiquetas son limpias.
<NIF>A39200019</NIF>
</sum1:ObligadoEmision>
<sum1:RemisionVoluntaria>
<sum1:Incidencia>N</sum1:Incidencia>
</sum1:RemisionVoluntaria>
</sum:Cabecera>
<sum:RegistroFactura>
<sum1:RegistroAlta>
<sum1:IDVersion>1.0</sum1:IDVersion>
<sum1:IDFactura>
<sum1:IDEmisorFactura>A39200019</sum1:IDEmisorFactura>
<sum1:NumSerieFactura>FACT2025-001</sum1:NumSerieFactura>
<sum1:FechaExpedicionFactura>16-04-2025</sum1:FechaExpedicionFactura>
</sum1:IDFactura>
<sum1:RefExterna>FACT2025-001</sum1:RefExterna>
<sum1:NombreRazonEmisor>EMPRESA DE PRUEBA S.L.</sum1:NombreRazonEmisor>
<sum1:Subsanacion>N</sum1:Subsanacion>
<sum1:RechazoPrevio>N</sum1:RechazoPrevio>
<sum1:TipoFactura>F1</sum1:TipoFactura>
<sum1:DescripcionOperacion>Venta de servicios software</sum1:DescripcionOperacion>
<sum1:Destinatarios>
<sum1:IDDestinatario>
<sum1:NombreRazon>CLIENTE PRUEBA SL</sum1:NombreRazon>
<sum1:NIF>89890002E</sum1:NIF>
</sum1:IDDestinatario>
</sum1:Destinatarios>
<sum1:Desglose>
<sum1:DetalleDesglose>
<sum1:Impuesto>01</sum1:Impuesto>
<sum1:ClaveRegimen>01</sum1:ClaveRegimen>
<sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion>
<sum1:TipoImpositivo>21.00</sum1:TipoImpositivo>
<sum1:BaseImponibleOimporteNoSujeto>1500.00</sum1:BaseImponibleOimporteNoSujeto>
<sum1:CuotaRepercutida>315.00</sum1:CuotaRepercutida>
</sum1:DetalleDesglose>
</sum1:Desglose>
<sum1:ImporteTotal>1815.00</sum1:ImporteTotal>
<sum1:CuotaTotal>315.00</sum1:CuotaTotal>
<sum1:SistemaInformatico>
<sum1:NombreRazon>EMPRESA DE PRUEBA S.L.</sum1:NombreRazon>
<sum1:NIF>A39200019</sum1:NIF>
<sum1:NombreSistemaInformatico>Sistema Prueba</sum1:NombreSistemaInformatico>
<sum1:IdSistemaInformatico>77</sum1:IdSistemaInformatico>
<sum1:Version>1.0.03</sum1:Version>
<sum1:NumeroInstalacion>A39200019</sum1:NumeroInstalacion>
<sum1:TipoUsoPosibleSoloVerifactu>N</sum1:TipoUsoPosibleSoloVerifactu>
<sum1:TipoUsoPosibleMultiOT>S</sum1:TipoUsoPosibleMultiOT>
<sum1:IndicadorMultiplesOT>S</sum1:IndicadorMultiplesOT>
</sum1:SistemaInformatico>
<sum1:FechaHoraHusoGenRegistro>2025-04-16T18:07:57+01:00</sum1:FechaHoraHusoGenRegistro>
<sum1:TipoHuella>01</sum1:TipoHuella>
</sum1:RegistroAlta>
</sum:RegistroFactura>
</sum:RegFactuSistemaFacturacion>
</soapenv:Body>
</soapenv:Envelope>
He revisado que:
-El certificado digital es válido y se está enviando correctamente
-Los namespaces están definidos correctamente
-El campo ObligadoEmision está presente en la cabecera con NombreRazon y NIF
-La estructura del XML sigue el esquema de ejemplo proporcionado por la AEAT
He modificado mi XML para incluir:
- La sección RemisionVoluntaria en la Cabecera (que antes me faltaba)
- Los campos Subsanacion y RechazoPrevio en el RegistroAlta
- La sección Desglose antes de ImporteTotal y CuotaTotal
A pesar de estas modificaciones, sigo recibiendo el mismo error sobre ObligadoEmision.
¿Alguien ha tenido un problema similar o puede indicarme qué estoy haciendo mal?
Gracias de antemano y disculpad mi ignorancia, pero me estoy volviendo loco con esto.