El CDR (Constancia de Recepción) es el documento que emite el OSE como resultado de la validación de un comprobante o resumen. Confirma que el documento fue recibido y comprobado, y es la evidencia legal de que el proceso de emisión electrónica fue completado correctamente.
Características generales
- Formato XML basado en ApplicationResponse UBL 2.1
- Firmado digitalmente con el certificado digital del OSE registrado en SUNAT
- Incluye un número de autorización UUID v4 (estructura
8-4-4-4-12) único por comprobante
ResponseCode: 0 indica que el documento fue aceptado
- Puede incluir observaciones (códigos 4000+) sin invalidar el documento
Tipos de CDR
El OSE emite dos tipos de CDR según el método utilizado:
CDR Comprobante
Retornado por sendBill en el campo applicationResponse.
UBLVersionIDan..10Versión de UBL. Valor fijo: 2.1/ApplicationResponse/cbc:UBLVersionID
CustomizationIDan..10Versión del CDR OSE. Valor fijo: 1.0/ApplicationResponse/cbc:CustomizationID
ID (UUID)an..36Número de autorización. Estructura UUID v4: 8-4-4-4-12/ApplicationResponse/cbc:ID
IssueDatean..10Fecha de recepción por el OSE. Formato: YYYY-MM-DD/ApplicationResponse/cbc:IssueDate
IssueTimean..12Hora de recepción por el OSE. Formato: hh:mm:ss.sssss/ApplicationResponse/cbc:IssueTime
ResponseDatean..10Fecha de comprobación por el OSE. Formato: YYYY-MM-DD/ApplicationResponse/cbc:ResponseDate
ResponseTimean..12Hora de comprobación por el OSE. Formato: hh:mm:ss.sssss/ApplicationResponse/cbc:ResponseTime
SenderParty / CompanyIDan..15RUC del emisor o PSE que envió el comprobante/ApplicationResponse/cac:SenderParty/cac:PartyLegalEntity/cbc:CompanyID
ReceiverParty / CompanyIDan..11RUC del OSE. Debe corresponder a un OSE registrado en el padrón SUNAT/ApplicationResponse/cac:ReceiverParty/cac:PartyLegalEntity/cbc:CompanyID
ResponseCoden1Código de respuesta. Valor 0 = documento aceptado/ApplicationResponse/cac:DocumentResponse/cac:Response/cbc:ResponseCode
Descriptionan..250Descripción de la respuesta/ApplicationResponse/cac:DocumentResponse/cac:Response/cbc:Description
StatusReasonCoden4Código de observación (condicional). Códigos 4000+, no invalidan el documento/ApplicationResponse/cac:DocumentResponse/cac:Response/cac:Status/cbc:StatusReasonCode
StatusReasonan..1000Descripción de la observación (condicional)/ApplicationResponse/cac:DocumentResponse/cac:Response/cac:Status/cbc:StatusReason
DocumentReference / IDan..13Serie y número del comprobante. Formato: SSSS-NNNNNNNN/ApplicationResponse/cac:DocumentResponse/cac:DocumentReference/cbc:ID
DocumentReference / IssueDatean..10Fecha de emisión del comprobante. Formato: YYYY-MM-DD/ApplicationResponse/cac:DocumentResponse/cac:DocumentReference/cbc:IssueDate
DocumentReference / IssueTimean..12Hora de emisión del comprobante. Formato: hh:mm:ss.sssss/ApplicationResponse/cac:DocumentResponse/cac:DocumentReference/cbc:IssueTime
DocumentTypeCoden2Tipo de comprobante según Catálogo 01. Ejemplo: 01 (Factura), 03 (Boleta)/ApplicationResponse/cac:DocumentResponse/cac:DocumentReference/cbc:DocumentTypeCode
DocumentHashan..250Hash del comprobante para verificar integridad/ApplicationResponse/cac:DocumentResponse/cac:DocumentReference/cac:Attachment/cac:ExternalReference/cbc:DocumentHash
IssuerParty / CompanyIDan..15RUC del emisor del comprobante/ApplicationResponse/cac:DocumentResponse/cac:IssuerParty/cac:PartyLegalEntity/cbc:CompanyID
RecipientParty / CompanyIDan..15Número de documento de identidad del receptor/ApplicationResponse/cac:DocumentResponse/cac:RecipientParty/cac:PartyLegalEntity/cbc:CompanyID
CDR Resumen
Retornado por getStatus en el campo content tras un envío con sendSummary. Comparte la estructura base con el CDR Comprobante, con diferencias en los campos de referencia del documento.
UBLVersionIDan..10Versión de UBL. Valor fijo: 2.1/ApplicationResponse/cbc:UBLVersionID
CustomizationIDan..10Versión del CDR OSE. Valor fijo: 1.0/ApplicationResponse/cbc:CustomizationID
ID (UUID)an..36Número de autorización. Estructura UUID v4: 8-4-4-4-12/ApplicationResponse/cbc:ID
IssueDatean..10Fecha de recepción por el OSE. Formato: YYYY-MM-DD/ApplicationResponse/cbc:IssueDate
IssueTimean..12Hora de recepción por el OSE. Formato: hh:mm:ss.sssss/ApplicationResponse/cbc:IssueTime
ResponseDatean..10Fecha de comprobación por el OSE. Formato: YYYY-MM-DD/ApplicationResponse/cbc:ResponseDate
ResponseTimean..12Hora de comprobación por el OSE. Formato: hh:mm:ss.sssss/ApplicationResponse/cbc:ResponseTime
SenderParty / CompanyIDan..15RUC del emisor o PSE que envió el resumen/ApplicationResponse/cac:SenderParty/cac:PartyLegalEntity/cbc:CompanyID
ReceiverParty / CompanyIDan..11RUC del OSE que procesó el resumen/ApplicationResponse/cac:ReceiverParty/cac:PartyLegalEntity/cbc:CompanyID
ResponseCoden1Código de respuesta. Valor 0 = resumen aceptado/ApplicationResponse/cac:DocumentResponse/cac:Response/cbc:ResponseCode
Descriptionan..250Descripción de la respuesta/ApplicationResponse/cac:DocumentResponse/cac:Response/cbc:Description
StatusReasonCoden4Código de observación (condicional). No invalida el resumen/ApplicationResponse/cac:DocumentResponse/cac:Response/cac:Status/cbc:StatusReasonCode
StatusReasonan..1000Descripción de la observación (condicional)/ApplicationResponse/cac:DocumentResponse/cac:Response/cac:Status/cbc:StatusReason
DocumentReference / IDan..13Identificador del resumen. Formato: R#-########-#####/ApplicationResponse/cac:DocumentResponse/cac:DocumentReference/cbc:ID
DocumentReference / IssueDatean..10Fecha de emisión del resumen. Formato: YYYY-MM-DD/ApplicationResponse/cac:DocumentResponse/cac:DocumentReference/cbc:IssueDate
DocumentTypeCoden2Tipo de resumen según Catálogo 01. Ejemplo: RC (resumen diario), RA (baja), RR (reversión)/ApplicationResponse/cac:DocumentResponse/cac:DocumentReference/cbc:DocumentTypeCode
DocumentHashan..250Hash del resumen para verificar integridad/ApplicationResponse/cac:DocumentResponse/cac:DocumentReference/cac:Attachment/cac:ExternalReference/cbc:DocumentHash
IssuerParty / CompanyIDan..15RUC del emisor del resumen/ApplicationResponse/cac:DocumentResponse/cac:IssuerParty/cac:PartyLegalEntity/cbc:CompanyID
Códigos de respuesta
0AceptadoEl documento fue aceptado correctamente por el OSE y SUNAT
≠ 0RechazadoEl documento fue rechazado. Revisar el campo Description del CDR para el detalle
Un CDR puede incluir observaciones (campo StatusReasonCode, códigos 4000+) aunque el ResponseCode sea 0. Las observaciones no invalidan el documento — simplemente informan condiciones que el emisor debe considerar.
El CDR se retorna siempre codificado en Base64 en los campos applicationResponse (sendBill), content (getStatus) o document (getStatusCdr). Debes decodificarlo para obtener el XML.