Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual de Autorizacion PDF
Manual de Autorizacion PDF
DEL PROGRAMADOR
RS 097-2012/SUNAT
~2~
Manual del programador v. 1.0
INDICE
~3~
Manual del programador v. 1.0
B.4 cbc:ID................................................................................................... 32
B.10 cbc:Note............................................................................................... 34
C. Ejemplos ................................................................................................... 39
~4~
Manual del programador v. 1.0
~5~
Manual del programador v. 1.0
~6~
Manual del programador v. 1.0
1 Documentos electrnicos
~7~
Manual del programador v. 1.0
Ejemplos:
Ejemplos:
~8~
Manual del programador v. 1.0
~9~
Manual del programador v. 1.0
https:// www.sunat.gob.pe/ol-ti-itcpfegem/billService
https://www.sunat.gob.pe/ol-ti-itcpgem-sqa/billService
https:// www.sunat.gob.pe/ol-it-wsconscpegem/billConsultService
X.509 certificates
Kerberos tickets
UserID/Password credentials
SAML-Assertion
Custom defined token
~ 10 ~
Manual del programador v. 1.0
<soapenv:Header>
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>20100066603MODDATOS</wsse:Username>
<wsse:Password>moddatos</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
Como la modalidad UsernameToken solo permite consignar dos campos que son
Username y Password y sin embargo la Clave SOL est compuesta de 3 campos que
son RUC, usuario y contrasea, se debe concatenar los campos RUC y usuario en el
campo Username. La contrasea se consignar en el campo Password.
La clave SOL que se utilizar debe cumplir con los siguientes requisitos:
- Debe ser una clave de tipo secundaria
- Tener asignado el perfil de Envo de documentos electrnicos-Grandes
emisores
Adems se har uso del protocolo SSL en conjunto con HTTPS, con el cual la
informacin que se transfiera desde el servidor del emisor electrnico hacia el servidor
de SUNAT, viajar en forma cifrada.
~ 11 ~
Manual del programador v. 1.0
Envo Sncrono
En este tipo de envo, el servicio web de SUNAT procesa el documento remitido
por el emisor y responde inmediatamente con una constancia de recepcin
(CDR) que puede ser de aceptacin o rechazo. Bajo esta modalidad se
procesarn las facturas y las notas de crdito y dbito asociadas.
Envo Asncrono
Este tipo de envo ser utilizado para el caso del Resumen diario de Boletas de
Venta y sus notas de crdito y debito asociadas as como la Comunicacin de
Baja. El servicio web de SUNAT recibir el archivo a procesar y devolver un
nmero de ticket de atencin, con el cual el emisor podr consultar el resultado
del proceso.
~ 12 ~
Manual del programador v. 1.0
- sendBill, este mtodo recibe un archivo ZIP con un nico documento XML de
comprobante y devuelve un archivo Zip que contiene un documento XML que
es la constancia de aceptacin rechazo.
sendBill
El mtodo sendBill recibe como parmetro un nombre de archivo especificado por la
SUNAT y el contenido de un archivo ZIP con un nico documento XML de comprobante
y devuelve un archivo Zip que contiene un documento XML que es la constancia de
aceptacin rechazo.
Parmetros de entrada
~ 13 ~
Manual del programador v. 1.0
Retorno
Tipo Comentario
byte[] Devuelve un arreglo de bytes que es un archivo ZIP que
contiene el documento XML de la constancia de aceptacin o
rechazo.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ser="http://service.sunat.gob.pe" xmlns:wsse="http://docs.oasis-
open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<soapenv:Header>
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>20100066603MODDATOS</wsse:Username>
<wsse:Password>moddatos</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<ser:sendBill>
<fileName>20100066603-01-F001-1.zip</fileName>
<contentFile>cid:20100066603-01-F001-1.zip</contentFile>
</ser:sendBill>
</soapenv:Body>
</soapenv:Envelope>
sendSummary
El mtodo sendSummary recibe como parmetro un nombre de archivo especificado
por la SUNAT y el contenido de un archivo ZIP con un nico documento XML de
resmenes, ya sea resumen de boletas o resumen de bajas. Devuelve un ticket con el
que posteriormente utilizando el mtodo getStatus se puede obtener la constancia de
~ 14 ~
Manual del programador v. 1.0
aceptacin o rechazo.
Parmetros de entrada
Tipo Parmetro Comentario
String Nombre del archivo Se debe consignar el nombre del
archivo de acuerdo a la especificacin
de la SUNAT. Por ejemplo:
20100066603-RC-20110522.ZIP
byte[] Contenido del archivo ZIP Se debe consignar el contenido del
archivo ZIP en un arreglo de bytes.
Retorno
Tipo Comentario
String Retorna el ticket de proceso, con el que posteriormente
utilizando el mtodo getStatus se puede obtener el archivo
Zip que contiene un documento XML que es la constancia de
aceptacin o rechazo
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ser="http://service.sunat.gob.pe" xmlns:wsse="http://docs.oasis-
open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<soapenv:Header>
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>20100066603MODDATOS</wsse:Username>
<wsse:Password>moddatos</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<ser:sendSummary>
<fileName>20100066603-RC-20110522-1.zip</fileName>
<contentFile>cid:20100066603-RC-20110522-1.zip</contentFile>
</ser:sendSummary>
</soapenv:Body>
</soapenv:Envelope>
~ 15 ~
Manual del programador v. 1.0
getStatus
El mtodo getStatus recibe como parmetro el nmero de ticket de procesamiento y
devuelve un objeto que indica el estado del proceso y en caso de haber terminado
correctamente o con errores, adjunta la constancia de aceptacin o rechazo
respectivamente.
Parmetros de entrada
Tipo Parmetro Comentario
String ticket Es el ticket de
procesamiento que fue
devuelto por algn
mtodo asncrono, como
lo es sendSummary.
Retorno
Tipo Comentario
StatusResponse Es un objeto que contiene la respuesta del procesamiento. El
objeto StatusResponse tiene dos atributos:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ser="http://service.sunat.gob.pe" xmlns:wsse="http://docs.oasis-
open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
~ 16 ~
Manual del programador v. 1.0
<soapenv:Header>
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>20100066603MODDATOS</wsse:Username>
<wsse:Password>moddatos</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<ser:getStatus>
<ticket>201100000011227</ticket>
</ser:getStatus>
</soapenv:Body>
</soapenv:Envelope>
getStatusCdr
El mtodo getStatusCdr recibe como parmetro los datos de Comprobante de pago
(ruc del emisor, tipo de comprobante, serie y numero de comprobante) y devuelve un
objeto que indica el estado del Cdr y en caso de haber terminado correctamente,
adjunta la Cdr.
Parmetros de entrada
Tipo Parmetro Comentario
String rucComprobante Es el ruc del emisor del
comprobante de pago a consultar.
String tipoComprobante Es el tipo de comprobante a
consultar.
01: Factura.
07: Nota de crdito.
08: Nota de dbito.
String serieComprobante Es la serie del comprobante a
consultar.
String numeroComprobante Es el nmero de comprobante a
~ 17 ~
Manual del programador v. 1.0
consultar.
Retorno
Tipo Comentario
byte[] Devuelve un arreglo de bytes que es un archivo ZIP que
contiene el documento XML de la constancia de recepcin
(CDR).
~ 18 ~
Manual del programador v. 1.0
</ns2:getStatusCdrResponse>
</S:Body>
</S:Envelope>
Sin embargo, para el sistema, los tres tipos de constancias son iguales, es decir,
tienen la misma estructura y por lo tanto, contienen la misma informacin.
- Formato y estructura:
Tendr formato XML basado en el documento ApplicationResponse de UBL
versin 2.0. En el Anexo 1 del presente manual se encuentra el detalle de
los elementos utilizados para el caso peruano.
- Nombre:
La constancia de recepcin es devuelta por el servicio web de SUNAT
dentro de un archivo zip. Al desempaquetar dicho archivo, se encontrar la
constancia con el siguiente formato de nombre:
Ejemplos:
Archivo XML enviado Constancia de Recepcin
20199872761-01-FR92-9882.xml R-20199872761-01-FR92-9882.xml
20199872761-07-FC92-762.xml R-20199872761-07-FC92-762.xml
20199872761-RC-20120601-1.xml R-20199872761-RC-20120601-1.xml
~ 19 ~
Manual del programador v. 1.0
20199872761-RA-20120601-1.xml R-20199872761-RA-20120601-1.xml
- Firma digital:
Todas las constancias se encontrarn firmadas digitalmente por SUNAT.
~ 20 ~
Manual del programador v. 1.0
3 Firma Digital
~ 21 ~
Manual del programador v. 1.0
<ext:ExtensionContent>
<sac:AdditionalInformation>
<sac:AdditionalMonetaryTotal>
<cbc:ID>1001</cbc:ID>
<cbc:PayableAmount currencyID="PEN">348199.15</cbc:PayableAmount>
</sac:AdditionalMonetaryTotal>
<sac:AdditionalProperty>
<cbc:ID>1000</cbc:ID>
<cbc:Value>CUATROCIENTOS VEINTITRES Y 00/100</cbc:Value>
</sac:AdditionalProperty>
</sac:AdditionalInformation>
</ext:ExtensionContent>
</ext:UBLExtension>
<ext:UBLExtension>
<ext:ExtensionContent>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
~ 22 ~
Manual del programador v. 1.0
4 Procedimientos especficos
1. Excepciones:
3. Observaciones
~ 23 ~
Manual del programador v. 1.0
~ 24 ~
Manual del programador v. 1.0
~ 25 ~
Manual del programador v. 1.0
El objetivo de este anexo es describir las normas de uso que usar SUNAT cuando
construya el documento de respuesta al proceso de recepcin de documentos
electrnicos. Este documento est basado en el esquema del documento
ApplicationResponse del estndar UBL versin 2.0.
a caracter alfabtico
n caracter numrico
an caracter alfanumrico
a3 3 caracteres alfabticos de longitud fija
n3 3 caracteres numricos de longitud fija
an3 3 caracteres alfa-numricos de longitud fija
a..3 hasta 3 caracteres alfabticos
n..3 hasta 3 caracteres numricos
an..3 hasta 3 caracteres alfa-numricos
M: Mandatorio u obligatorio
C: Condicional u opcional
~ 26 ~
Manual del programador v. 1.0
~ 27 ~
Manual del programador v. 1.0
~ 28 ~
Manual del programador v. 1.0
./cac:PartyName 0..n 1
./cbc:Name Nombre de la parte firmante 1 1
./cac:DigitalSignatureAttachment Asociacin con la firma codificada (en formato XMLDSIG, por ejemplo) 0..1 1
./cac:ExternalReference Informacin acerca de un documento vinculado. 0..1 1
Identificador de Recurso Uniforme (o URI) que identifica la localizacin
./cbc:URI de la firma 0..1 1
~ 29 ~
Manual del programador v. 1.0
~ 30 ~
Manual del programador v. 1.0
B.1 ext:UBLExtensions
Contenedor de Componentes de extensin. Para el caso peruano se utilizar para
consignar la informacin correspondiente a la firma digital.
~ 31 ~
Manual del programador v. 1.0
B.2 cbc:UBLVersionID
Versin del esquema UBL utilizado para la elaboracin de la constancia de recepcin.
Para el caso peruano se ha utilizado la versin 2.0.
<cbc:UBLVersionID>2.0</cbc:UBLVersionID>
B.3 cbc:CustomizationID
Identifica una personalizacin de UBL definida para un uso especfico. Para nuestro
caso corresponder a la versin 1.0. Por cada variacin o adecuacin del esquema se
deber de aumentar la versin.
<cbc:CustomizationID>1.0</cbc:CustomizationID>
B.4 cbc:ID
Nmero nico asignado por SUNAT para identificar el proceso de recepcin.
B.5 cbc:IssueDate
Fecha de recepcin del documento electrnico enviado por el contribuyente. El tipo de
dato corresponde con el tipo Date de XML por lo que el formato deber ser yyyy-mm-
dd.
<cbc:IssueDate>2012-06-01</cbc:IssueDate>
B.6 cbc:IssueTime
Hora de recepcin del documento electrnico enviado por el contribuyente. El
documento puede ser un comprobante de pago, nota electrnica, resumen diario o
~ 32 ~
Manual del programador v. 1.0
comunicacin de baja. El tipo de dato corresponde con el tipo Time de XML por lo que
el formato deber ser hh:mm:ss.
<cbc:IssueTime>15:12:23</cbc:IssueTime>
B.7 cbc:ResponseDate
Fecha de generacin de la constancia de recepcin. El tipo de dato corresponde con el
tipo Date de XML por lo que el formato deber ser yyyy-mm-dd.
<cbc:ResponseDate>2012-06-01</cbc:ResponseDate>
B.8 cbc:ResponseTime
Hora de generacin de la constancia de recepcin. El tipo de dato corresponde con el
tipo Time de XML por lo que el formato deber ser hh:mm:ss.
<cbc:ResponseTime>15:13:00</cbc:ResponseTime>
B.9 cac:Signature
Utilizado para identificar al firmante y otro tipo de informacin relacionada con la firma
digital. Su uso se da principalmente para especificar la ubicacin de la firma digital.
~ 33 ~
Manual del programador v. 1.0
B.10 cbc:Note
Los mensajes o notas almacenados en este elemento, correspondern a advertencias
sobre inconsistencias detectadas en el proceso de recepcin del documento
electrnico, pero que no representan rechazos. Estos mensajes se consignarn con el
siguiente formato:
~ 34 ~
Manual del programador v. 1.0
<cac:SenderParty>
<cac:PartyIdentification>
<cbc:ID>20131312955</cbc:ID>
</cac:PartyIdentification>
</cac:SenderParty>
~ 35 ~
Manual del programador v. 1.0
<RA>-<YYYYMMDD>-<NNNNN>
<RB>-<YYYYMMDD>-<NNNNN>
~ 36 ~
Manual del programador v. 1.0
~ 37 ~
Manual del programador v. 1.0
Ejemplo:
<cac:DocumentResponse>
<cac:Response>
<cbc:ReferenceID>F001-747</cbc:ReferenceID>
<cbc:ResponseCode>0</cbc:ResponseCode>
<cbc:Description> La factura numero F001-747, ha sido aceptada
</cbc:Description>
</cac:Response>
<cac:DocumentReference>
<cbc:ID> F001-747</cbc:ID>
</cac:DocumentReference>
<cac:RecipientParty>
<cbc:ID>06-20100088982</cbc:ID>
</cac:RecipientParty>
</cac:DocumentResponse>
~ 38 ~
Manual del programador v. 1.0
C. Ejemplos
~ 39 ~
Manual del programador v. 1.0
Bv1Vj8nEfoy+y9758KTc7n6yF3GJOIUUpzDQJ65iaIrL6CIlbyHHPhNIcrS2iDvYskqjamiI4Qzs
Kcm+qcFRf7UZWYNPCA9w9QISByv5KqVfDQtgZGRh3Uved9BR15mpbdVvs9tJhLYrTHw7Fb8=</ds:X509Cert
ificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.0</cbc:UBLVersionID>
<cbc:CustomizationID>1.0</cbc:CustomizationID>
<cbc:ID>201200000230061</cbc:ID>
<cbc:IssueDate>2012-06-12</cbc:IssueDate>
<cbc:IssueTime>10:09:27</cbc:IssueTime>
<cbc:ResponseDate>2012-06-12</cbc:ResponseDate>
<cbc:ResponseTime>10:09:30</cbc:ResponseTime>
<cbc:Note>4031 - Debe indicar el nombre comercial</cbc:Note>
<cbc:Note>4001 - El numero de RUC del receptor no existe.</cbc:Note>
<cac:Signature>
<cbc:ID>SignSUNAT</cbc:ID>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>20131312955</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><![CDATA[SUNAT]]></cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>#SignSUNAT</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:SenderParty>
<cac:PartyIdentification>
<cbc:ID>20131312955</cbc:ID>
</cac:PartyIdentification>
</cac:SenderParty>
<cac:ReceiverParty>
<cac:PartyIdentification>
<cbc:ID>20150147718</cbc:ID>
</cac:PartyIdentification>
</cac:ReceiverParty>
<cac:DocumentResponse>
<cac:Response>
<cbc:ReferenceID>FA01-981</cbc:ReferenceID>
<cbc:ResponseCode>0</cbc:ResponseCode>
<cbc:Description><![CDATA[La Factura numero FA01-981, ha sido
aceptada]]></cbc:Description>
</cac:Response>
<cac:DocumentReference>
<cbc:ID>FA01-981</cbc:ID>
</cac:DocumentReference>
<cac:RecipientParty>
<cac:PartyIdentification>
<cbc:ID>6-20997898754</cbc:ID>
</cac:PartyIdentification>
</cac:RecipientParty>
</cac:DocumentResponse>
</ar:ApplicationResponse>
~ 40 ~
Manual del programador v. 1.0
REQUISITO CASO 2
Nmero identificador del proceso de recepcin 201200000230098
Fecha de recepcin del documento electrnico procesado 2012-06-13
Hora de recepcin del documento electrnico procesado 13:20:37
Fecha de generacin del documento de respuesta 2012-06-13
Hora de generacin del documento de respuesta 13:21:38
Mensajes o notas asociados al documento de respuesta
Nmero de RUC del Emisor de la constancia de recepcin 20131312955
(SUNAT)
Nmero de RUC del Emisor del documento electrnico 20150147718
procesado
Nmero de RUC del Receptor del documento electrnico 20196582743
procesado
Identificador del documento enviado FT01-982
Cdigo de respuesta del envo 2047
Descripcin de la respuesta del envo Es obligatorio al menos un
AdditionalMonetaryTotal con codigo 1001,
1002 o 1003
Identificador del documento procesado FA01-981
Firma Digital
~ 41 ~
Manual del programador v. 1.0
aI/t44usI0QbNJSp8w9Yl01XyO+ewnBzJNOKJtL3M8LiawjRoz0DSa8uPJQEMgQXvgJeipAe+IO7
yLMiYA3rOaG1nSXcBYUaRTh6AGeWW+pIheThhcq+Z7uHXMoqbBkIzpUuflkZKPAZFFkSQTUYyhrB
Bv1Vj8nEfoy+y9758KTc7n6yF3GJOIUUpzDQJ65iaIrL6CIlbyHHPhNIcrS2iDvYskqjamiI4Qzs
Kcm+qcFRf7UZWYNPCA9w9QISByv5KqVfDQtgZGRh3Uved9BR15mpbdVvs9tJhLYrTHw7Fb8=</ds:X509Cert
ificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.0</cbc:UBLVersionID>
<cbc:CustomizationID>1.0</cbc:CustomizationID>
<cbc:ID>201200000230098</cbc:ID>
<cbc:IssueDate>2012-06-13</cbc:IssueDate>
<cbc:IssueTime>13:20:37</cbc:IssueTime>
<cbc:ResponseDate>2012-06-13</cbc:ResponseDate>
<cbc:ResponseTime>13:21:38</cbc:ResponseTime>
<cac:Signature>
<cbc:ID>SignSUNAT</cbc:ID>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>20131312955</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><![CDATA[SUNAT]]></cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>#SignSUNAT</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<cac:SenderParty>
<cac:PartyIdentification>
<cbc:ID>20131312955</cbc:ID>
</cac:PartyIdentification>
</cac:SenderParty>
<cac:ReceiverParty>
<cac:PartyIdentification>
<cbc:ID>20150147718</cbc:ID>
</cac:PartyIdentification>
</cac:ReceiverParty>
<cac:DocumentResponse>
<cac:Response>
<cbc:ReferenceID>FT01-982</cbc:ReferenceID>
<cbc:ResponseCode>2047</cbc:ResponseCode>
<cbc:Description><![CDATA[Es obligatorio al menos un AdditionalMonetaryTotal
con codigo 1001, 1002 o 1003]]></cbc:Description>
</cac:Response>
<cac:DocumentReference>
<cbc:ID>FT01-982</cbc:ID>
</cac:DocumentReference>
<cac:RecipientParty>
<cac:PartyIdentification>
<cbc:ID>6-20196582743</cbc:ID>
</cac:PartyIdentification>
</cac:RecipientParty>
</cac:DocumentResponse>
</ar:ApplicationResponse>
~ 42 ~
Manual del programador v. 1.0
~ 43 ~