Saltar al contenido principal

Envío Síncrono

El envío síncrono es el flujo utilizado para comprobantes que requieren confirmación inmediata: facturas, boletas, notas de crédito y débito, retenciones, percepciones y DAE. El emisor envía el documento mediante sendBill y recibe el CDR en la misma respuesta.

Flujo de envío síncrono: sendBill y getStatusCdr

Paso a paso

1. Emisión y envío (Emisor → OSE)

El emisor genera el XML del comprobante en formato UBL 2.1, lo firma con su certificado digital (propio o de un PSE), lo comprime en un archivo ZIP siguiendo la nomenclatura de archivos, y lo envía al OSE mediante el método sendBill.

2. Validación (OSE)

El OSE Gosocket ejecuta una cadena de validaciones secuenciales sobre el comprobante recibido:

  1. Valida autenticación — verifica las credenciales del emisor (RUC + usuario + contraseña asignados por Gosocket).
  2. Valida reglas generales — verifica la estructura general del envío (nomenclatura del archivo, formato del ZIP).
  3. Valida esquema XML — verifica que el XML cumpla con el esquema UBL 2.1 definido por SUNAT.
  4. Valida firma digital — verifica que el comprobante esté firmado correctamente con un certificado digital vigente.
  5. Valida contenido del XML — aplica las reglas de validación de contenido definidas por SUNAT (cálculos de IGV, totales, series, correlativos, etc.).

3. Resultado de la validación

Si el comprobante no es aceptado, el OSE rechaza el envío y el emisor recibe un mensaje de inconsistencia indicando el motivo del rechazo (ver sendBill — Respuesta de error).

Si el comprobante es aceptado, el OSE genera el CDR (Constancia de Recepción), lo firma con su propio certificado digital, y lo retorna al emisor en la misma respuesta de sendBill.

4. Reenvío a SUNAT

En paralelo, el OSE remite el comprobante junto con el CDR generado a SUNAT. SUNAT recepciona ambos documentos y devuelve un acuse de recibo al OSE. Este reenvío ocurre dentro de un plazo máximo de 1 hora desde la aceptación del comprobante, y es transparente para el emisor: no requiere ninguna acción de su parte.

Consulta posterior

Si el emisor necesita volver a obtener el CDR de un comprobante ya procesado (por ejemplo, tras un error de red al recibir la respuesta original), puede usar getStatusCdr indicando el RUC, tipo de comprobante, serie y número. El OSE retorna el CDR correspondiente en Base64, sin necesidad de reenviar el comprobante.

¿Cuándo usar este flujo?

Usa el envío síncrono para todo documento que represente una operación individual (una venta, una nota de crédito, una retención puntual) y que requiera confirmación inmediata de aceptación o rechazo. Para documentos de procesamiento diferido como resúmenes diarios o comunicaciones de baja, consulta el envío asíncrono.

Tiempo de respuesta

La validación y generación del CDR ocurre de forma síncrona dentro de la misma llamada SOAP. Si tu integración tiene timeouts configurados, asegúrate de que sean lo suficientemente amplios para cubrir el tiempo de procesamiento del OSE.