ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
2
FORMATO DE ESPECIFICACION DE SERVICIO RESTObs
3
4
Descripción del RecursoPermite realizar el envío del comprobante
5
6
Método HTTPPOST
7
URI pública
https://api-cpe.sunat.gob.pe/v1/contribuyente/gem/comprobantes/{numRucEmisor}-{codCpe}-{numSerie}-{numCpe}
8
9
10
REQUEST
11
12
Request URI
13
Parámetros de EntradaDescripciónFormatoTipo datoCondición
14
numRucEmisorRUC del contribuyente Emisoralfanumerico (11)stringM
15
codCpeSolo se permite
09: Guía de Remisión Remitente - Electrónica
31: Guía de Remisión Transportista - Electrónica
alfanumerico (2)stringM
16
numSerieNumero de serie de comprobante:
Solo se permite:
Si codCpe 09:
T###
Si codCpe 31:
V###
alfanumerico (4)stringM
17
numCpeNúmero de comprobante
De 1 hasta 8 valores numéricos
numérico (1..8)numberM
18
19
Request Header
20
ParámetrosValor
21
AuthorizationBearer + token(*)
22
(*) El token debe ser obtenido a través de la invocación del servicio api-seguridad descrito en el "Manual de servicios web Plataforma Nueva GRE"
23
24
Request Body
25
Parámetros de EntradaDescripcionFormatoTipo datoCondición
26
archivoobjectM
27
archivo.nomArchivoNombre del archivo zip enviado.
Estructura: RRRRRRRRRRR-TT-SSSS-NNNNNNNN.zip
Donde:
RRRRRRRRRR: Número de RUC, de 11 valores numéricos
TT: Tipo de comprobante, solo se permite 09 y 31
SSSS: Serie del comprobante, solo se permite T### y V###
NNNNNNNN: Número de comprobante, se permite de 1 hasta 8 valores numéricos
stringM
28
archivo.arcGreZipBase 64 del archivo zip enviadostringM
29
archivo.hashZipHash del archivo zip enviado
Debe calcularse el hash del archivo zip haciendo uso del algoritmo SHA-256.
stringM
30
31
Ejemplo Request
32
JSON en el body
33
{
"archivo" : {
"nomArchivo" : "20480072872-31-VA28-407.zip",
"arcGreZip" : "UEsDBBQAAAAIAHd8i1QWA3AR2QwAAPVNAAAbAAAAMjA0ODAwNzI4NzItMzEtVkEyOC00MDcueG1s7RztcqM28Hc703dQ3T/tD59t",
"hashZip" : "bAAAAMjA0ODAwNzI4NzItMzEtVkEyOC00MDcueG1s7RztcqM28Hc703dQ3T/tD59t"
}
}
34
35
36
37
38
RESPONSE
39
40
Response Header
41
Parámetrosvalor
42
HTTP status200
43
Content-Typeapplication/json
44
45
46
Response Body
47
Parámetros de SalidaDescripcionFormatoTipo dato
48
numTicketNúmero de ticket (UUID) generado por el envío realizado.
UUID se expresa mediante 32 dígitos hexadecimales divididos en cinco grupos separados por guiones de la forma 8-4-4-4-12. Ejemplo:
550e8400-e29b-41d4-a716-446655440026
alfanumericostring
49
fecRecepcionFecha de recepción de envío del comprobante.
Formato: 'yyyy-mm-dd,'T','hh:ii:ss'
Datestring
50
51
Ejemplo JSON Response Body
52
{
"numTicket": "7f7b00ab-4fee-4ae2-9e04-fbd16ca18677",
"fecRecepcion": "2022-04-11T15:37:41"
}
53
54
Formato de mensaje de ERROR 500
55
56
Response Header
57
Parámetrosvalor
58
HTTP statusRevisar la tabla de codigos de Error
59
Content-Typeapplication/json
60
61
Response Body
62
Parámetros de SalidaDescripciónFormatoTipo dato
63
codcodigo de error(Revisar la tabla de codigos de Error)String
64
msgmensaje de error para el usuarioString
65
exctraza del errorString
66
67
Ejemplo de Response
68
{
"cod":"500",
"msg":"Internal Server Error - Se presento una condicion inesperada que impidio completar el Request",
"exc":"java.lang.NullPointerException at ..."
}
69
70
71
Formato de mensaje de ERROR 422
72
73
Response Header
74
ParámetrosValor
75
HTTP statusRevisar la tabla de codigos de Error
76
Content-Typeapplication/json
77
78
Response Body
79
Parámetros de SalidaDescripciónFormatoTipo dato
80
codCódigo de error(Revisar la tabla de codigos de Error)number
81
msgMensaje de error para el usuarioString
82
errorsArray de errores y descripcion del errorString
83
errors.codCódigo de error encontradonumber
84
errors.msgDescripción de error encontradostring
85
86
Ejemplo de Response
87
{
"cod": 422,
"msg": "Unprocessable Entity - Se presentaron errores de validación que impidieron completar el Request",
"errors": [
{
"cod": 501,
"msg": "El valor de codCpe no permitido o no válido"
}
]
}
88
89
90
91
92
Cuadro de mensajes de Error
93
CampoValidaciónÁmbitoCódigo y descripción del mensaje de errorCondición
94
codCpeSolo se permite
09: Guía de Remisión Remitente - Electrónica
31: Guía de Remisión Transportista - Electrónica
Validaciones de forma501 : El valor de codCpe no permitido o no válidoM
95
numSerieNumero de serie de comprobante:
Solo se permite:
Si codCpe 09:
T###
Si codCpe 31:
V###
Validaciones de forma502 : El valor de numSerie no permitido o no válidoM
96
archivo.nomArchivoEl valor no enviado o es vacioValidaciones de obligatoriedad503 : El campo nomArchivo no enviado o es vacíoM
97
archivo.nomArchivoDebe tener el siguiente formato:
{numRucEmisor}-{codCpe}-{numSerie}-{numCpe}.zip
La extension ".zip" en minusculas, y
Debe coincidir con los datos del comprobante que viene en la URL del servicio.
Validaciones de forma
504 : El campo nomArchivo no cumple con el formato establecido o nombre incorrecto
M
98
archivo.arcGreZipEl valor no enviado o es vacioValidaciones de obligatoriedad505 : El campo arcGreZip no enviado o es vacíoM
99
archivo.hashZipEl valor no enviado o es vacioValidaciones de obligatoriedad506 : El campo hashZip no enviado o es vacíoM
100
archivo.hashZipEl valor Hash no coincide con el archivo zip enviadoValidaciones de forma507 : El valor Hash no coincide con el archivo zip enviadoM