Error 3136 SUNAT: El XML no contiene el tag de numero de documentos del huesped
Fuente: Reglas de validación de SUNAT, actualizado al 26.08.2026. Los mensajes y las condiciones son textos oficiales de SUNAT.
Qué significa
SUNAT devuelve el código 3136 con el mensaje «El XML no contiene el tag de numero de documentos del huesped.».
Es un error: SUNAT rechaza el comprobante y no tiene validez tributaria.
Aparece en: Factura.
Cuándo aparece
Estas son las reglas de validación de SUNAT que devuelven el código 3136, con su texto oficial:
FacturaError
Dato: Número de documento del sujeto no domiciliado Código de tipo de documento de identidad del sujeto no domiciliado Código país de emisión del pasaporte Apellidos y Nombres o denominación o razón social del sujeto no domiciliado Código del país de residencia del sujeto no domiciliado
Tag UBL:
/Invoice/cac:InvoiceLine/cac:Item/cac:AdditionalItemProperty/cbc:NameCode (Código del concepto)Condición: Si 'Tipo de operación' es '0202 Exportación de servicios – prestación de servicios de hospedaje No Dom', y no existe el tag con valor '4009'
FacturaError
Dato: Apellidos y Nombres o denominación o razón social del huesped Número de documento del huesped Código de tipo de documento de identidad del huesped Código país de emisión del pasaporte
Tag UBL:
/Invoice/cac:InvoiceLine/cac:Item/cac:AdditionalItemProperty/cbc:NameCode (Código del concepto)Condición: Si 'Tipo de operación' es '0205 Exportación de servicios - Servicios que conformen un Paquete Turístico', y no existe el tag con código '4009'
Cómo resolverlo
Revisa el dato y el tag UBL que indica la regla y corrígelo para que no se cumpla la condición de SUNAT.
Si SUNAT ya rechazó el comprobante, su número queda usado: no lo reenvíes igual. Corrige los datos y emite un comprobante nuevo.
Cómo lo ves en API SUNAT
Con API SUNAT no armas el XML: envías la venta en JSON y la API lo genera, lo firma y lo envía a SUNAT. Si SUNAT rechaza el comprobante, la emisión responde con status "rejected" y el código en sunat.errorCode y sunat.errorMessage; las observaciones llegan con status "accepted_with_observations".
También puedes recibirlo por webhook (document.rejected o document.observed). Ver los estados en la documentación.
