Registrar
Este método genera y registra una guía de remisión transportista electrónica.
Valores
| Variable | Descripción | Prod | Demo |
|---|---|---|---|
URL_API | URL base de la API | https://api.emite.pe | https://api.demo.emite.pe |
EMITE_ID | Identificador asignado a la empresa | Proporcionado por Emite | Proporcionado por Emite |
EMITE_KEY | API Key asignada a la empresa | Proporcionado por Emite | Proporcionado por Emite |
Request
POST {{URL_API}}/guia-remision-transportista/registrar
Headers
emite_id: {{EMITE_ID}}
emite_key: {{EMITE_KEY}}
Content-Type: application/json
Estructura Body
El objeto documento representa el CPE a generar.
cabecera: contiene la información general del comprobante, totales, serie, correlativo, adquiriente, etc.detalle: contiene la lista de ítems o líneas de venta del comprobante.
{
"documento": {
"cabecera": {...},
"detalle": [
{...},
{...}
]
}
}
La estructura completa del body se detalla en la tabla Propiedades Body.
Implementación
- Shell
- Node
- Java
- PHP
curl "{{URL_API}}/guia-remision-transportista/registrar" -X POST \
-H "emite_id: {{EMITE_ID}}" \
-H "emite_key: {{EMITE_KEY}}" \
-H "Content-Type: application/json" \
-d "{\"documento\":{\"cabecera\":{...},\"detalle\":[{...},{...}]}}"
const axios = require('axios');
const data = {
documento: {
cabecera: {
// ...
},
detalle: [
{
// ...
},
{
// ...
}
]
}
};
axios.post('{{URL_API}}/guia-remision-transportista/registrar', data, {
headers: {
emite_id: '{{EMITE_ID}}',
emite_key: '{{EMITE_KEY}}',
'Content-Type': 'application/json'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error.response?.data || error.message);
});
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class Main {
public static void main(String[] args) throws Exception {
URL url = new URL("{{URL_API}}/guia-remision-transportista/registrar");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("emite_id", "{{EMITE_ID}}");
conn.setRequestProperty("emite_key", "{{EMITE_KEY}}");
conn.setRequestProperty("Content-Type", "application/json");
conn.setDoOutput(true);
String json = """
{
"documento": {
"cabecera": {
},
"detalle": [
{
},
{
}
]
}
}
""";
try (OutputStream os = conn.getOutputStream()) {
byte[] input = json.getBytes("utf-8");
os.write(input, 0, input.length);
}
int statusCode = conn.getResponseCode();
System.out.println("HTTP Status: " + statusCode);
}
}
<?php
$data = (object)[
'documento' => (object)[
'cabecera' => (object)[
// ...
],
'detalle' => [
(object)[
// ...
],
(object)[
// ...
]
]
]
];
$ch = curl_init('{{URL_API}}/guia-remision-transportista/registrar');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'emite_id: {{EMITE_ID}}',
'emite_key: {{EMITE_KEY}}',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error: ' . curl_error($ch);
} else {
echo $response;
}
curl_close($ch);
Propiedades Body
| Propiedad | Obligatoriedad | Tipo | Descripción |
|---|---|---|---|
| documento. cabecera | Requerido | object | Contiene los datos de la cabecera del documento. |
| documento. cabecera. serie | Requerido | string Tamaño: [4] | Contiene la serie del documento, debe comenzar por V. |
| documento. cabecera. correlativo | Requerido | integer Tamaño: [1...8] | Contiene el correlativo del documento. |
| documento. cabecera. fechaEmision | Requerido | string Tamaño: [10] Formato: YYYY-MM-DD | Contiene la fecha de emisión del documento. |
| documento. cabecera. horaEmision | Opcional | string Tamaño: [8] Formato: HH:MM:SS | Contiene la hora de emisión del documento, si la fecha de emisión es del día actual la hora debe ser menor o igual a la hora actual. |
| documento. cabecera. remitente | Requerido | object | Información del remitente. Si hay uno o más documentos relacionados y tipo de documento relacionado es 09 (con serie electrónica) el remitente debe ser el mismo emisor del documento (guía remitente) relacionado.El remitente debe ser diferente del emisor de la guía transportista. |
| documento. cabecera. remitente. numeroIdentidad | Requerido | string Si tipo de identidad es 1: Numérico hasta 8 dígitos Si tipo de identidad es 6: Numérico de 11 dígitos Si tipo de identidad es diferente de 1 y de 6: Alfanumérico hasta 15 caracteres | Contiene el número de identidad del remitente. Si hay uno o más documentos relacionados y tipo de documento relacionado es 09 (con serie electrónica) el remitente debe ser el mismo emisor del documento (guía remitente) relacionado.El remitente debe ser diferente del emisor de la guía transportista. |
| documento. cabecera. remitente. tipoIdentidad | Requerido | string Tamaño: [1] Catálogo SUNAT: 06 | Tipo de documento de identidad del remitente. Si hay uno o más documentos relacionados y tipo de documento relacionado es 09 (con serie electrónica) el remitente debe ser el mismo emisor del documento (guía remitente) relacionado.El remitente debe ser diferente del emisor de la guía transportista. |
| documento. cabecera. remitente. nombre | Requerido | string Tamaño: [1...100] | Nombre o Razón social del remitente. Si hay uno o más documentos relacionados y tipo de documento relacionado es 09 (con serie electrónica) el remitente debe ser el mismo emisor del documento (guía remitente) relacionado.El remitente debe ser diferente del emisor de la guía transportista. |
| documento. cabecera. remitente. direccion | Requerido | object | Contiene los datos de la dirección del remitente. Si hay uno o más documentos relacionados y tipo de documento relacionado es 09 (con serie electrónica) el remitente debe ser el mismo emisor del documento (guía remitente) relacionado.El remitente debe ser diferente del emisor de la guía transportista. |
| documento. cabecera. remitente. direccion. descripcion | Requerido | string Tamaño: [1...100] No se permite solo espacios en blanco | Dirección exacta del remitente. Si hay uno o más documentos relacionados y tipo de documento relacionado es 09 (con serie electrónica) el remitente debe ser el mismo emisor del documento (guía remitente) relacionado.El remitente debe ser diferente del emisor de la guía transportista. |
| documento. cabecera. destinatario | Requerido | object | Información del destinatario. Si hay uno o más documentos relacionados y tipo de documento relacionado es 09 (con serie electrónica) el destinatario debe ser el mismo destinatario del documento (guía remitente) relacionado.El destinatario debe ser diferente del emisor de la guía transportista. |
| documento. cabecera. destinatario. numeroIdentidad | Requerido | string Si tipo de identidad es 1: Numérico hasta 8 dígitos Si tipo de identidad es 6: Numérico de 11 dígitos Si tipo de identidad es diferente de 1 y de 6: Alfanumérico hasta 15 caracteres | Contiene el número de identidad del destinatario. Si hay uno o más documentos relacionados y tipo de documento relacionado es 09 (con serie electrónica) el destinatario debe ser el mismo destinatario del documento (guía remitente) relacionado.El destinatario debe ser diferente del emisor de la guía transportista. |
| documento. cabecera. destinatario. tipoIdentidad | Requerido | string Tamaño: [1] Catálogo SUNAT: 06 | Tipo de documento de identidad del destinatario. Si hay uno o más documentos relacionados y tipo de documento relacionado es 09 (con serie electrónica) el destinatario debe ser el mismo destinatario del documento (guía remitente) relacionado.El destinatario debe ser diferente del emisor de la guía transportista. |
| documento. cabecera. destinatario. nombre | Requerido | string Tamaño: [1...100] | Nombre o Razón social del destinatario. Si hay uno o más documentos relacionados y tipo de documento relacionado es 09 (con serie electrónica) el destinatario debe ser el mismo destinatario del documento (guía remitente) relacionado.El destinatario debe ser diferente del emisor de la guía transportista. |
| documento. cabecera. destinatario. direccion | Requerido | object | Contiene los datos de la dirección del destinatario. Si hay uno o más documentos relacionados y tipo de documento relacionado es 09 (con serie electrónica) el destinatario debe ser el mismo destinatario del documento (guía remitente) relacionado.El destinatario debe ser diferente del emisor de la guía transportista. |
| documento. cabecera. destinatario. direccion. descripcion | Requerido | string Tamaño: [1...100] No se permite solo espacios en blanco | Dirección exacta del destinatario. Si hay uno o más documentos relacionados y tipo de documento relacionado es 09 (con serie electrónica) el destinatario debe ser el mismo destinatario del documento (guía remitente) relacionado.El destinatario debe ser diferente del emisor de la guía transportista. |
| documento. cabecera. traslado | Requerido | object | Información del traslado. |
| documento. cabecera. traslado. pesoBruto | Requerido | string Tamaño: [1...16] Formato: Decimal Enteros: [1...12] Decimales: [0...3]. | Peso bruto total de la guía. |
| documento. cabecera. traslado. unidadPesoBruto | Requerido | string Tamaño: [3] | Unidad de medida del peso bruto. KGM (Kilogramo) o TNE (Tonelada). |
| documento. cabecera. traslado. pagadorFlete | Requerido | string Tamaño: [1] R RemitenteS SubcontratadorT Tercero | Indicador de pagador del flete. |
| documento. cabecera. traslado. subcontrata | Opcional | object | Información del subcontratista para el traslado. En caso de ser enviado se activará automaticamente el indicador de transporte subcontratado. |
| documento. cabecera. traslado. subcontrata. numeroIdentidad | CondicionalRequerido si se envía traslado.subcontrata | string Tamaño: [11] Formato: Numérico de 11 dígitos | Número del documento de identidad del subcontratista. Debe ser diferente al número de identidad del emisor. |
| documento. cabecera. traslado. subcontrata. nombre | CondicionalRequerido si se envía traslado.subcontrata | string Tamaño: [3...250] Formato: no se permite solo espacios en blanco ni saltos de línea | Nombre del subcontratista. |
| documento. cabecera. traslado. retornoVehiculoEnvaseVacio | Opcional | boolean | Indica si el vehiculo retornará con los envases de transporte vacíos. true si se desea indicar que el vehículo retornará con los envases de transporte de mercancía vacíos, si no se envía se toma como false por defecto. |
| documento. cabecera. traslado. retornoVehiculoVacio | Opcional | boolean | Indica si el vehiculo retornará vacío. true si se desea indicar que el vehículo retornará vacío, si no se envía se toma como false por defecto. |
| documento. cabecera. traslado. fechaTraslado | Requerido | string Formato: YYYY-MM-DD | Fecha de inicio del traslado. |
| documento. cabecera. traslado. partida | Requerido | object | Información del punto de partida del traslado. |
| documento. cabecera. traslado. partida. ubigeo | Requerido | string Tamaño: [6] Catálogo SUNAT: 13 | Código ubigeo del punto de partida. |
| documento. cabecera. traslado. partida. direccion | Requerido | string Tamaño: [3...500] Formato: no se permite solo espacios en blanco ni saltos de línea | Dirección del punto de partida. |
| documento. cabecera. traslado. destino | Requerido | object | Información del punto de destino del traslado. |
| documento. cabecera. traslado. destino. ubigeo | Requerido | string Tamaño: [6] Catálogo SUNAT: 13 | Código ubigeo del punto de destino. |
| documento. cabecera. traslado. destino. direccion | Requerido | string Tamaño: [3...500] Formato: no se permite solo espacios en blanco ni saltos de línea | Dirección del punto de destino. |
| documento. cabecera. traslado. conductores | Requerido | array[object] | Contiene la información de los conductores. |
| documento. cabecera. traslado. conductores[i]. numeroLicencia | Requerido | string Tamaño: [9...10] Formato: Solo letras mayúsculas y números, no se permiten espacios, no puede ser solo ceros (0) | Contiene el número de licencia del conductor. |
| documento. cabecera. traslado. conductores[i]. tipoIdentidad | Requerido | string Tamaño: [1] Catálogo SUNAT: 06 | Contiene el tipo de documento de identidad del conductor. |
| documento. cabecera. traslado. conductores[i]. numeroIdentidad | Requerido | string Si tipo de identidad es 1: Numérico hasta 8 dígitos Si tipo de identidad es diferente de 1: Alfanumérico hasta 15 caracteres | Contiene el número de identidad del conductor. Debe ser un número de documento real. |
| documento. cabecera. traslado. conductores[i]. nombres | Requerido | string Tamaño: [1...250] | Contiene los nombres del conductor. |
| documento. cabecera. traslado. conductores[i]. apellidos | Requerido | string Tamaño: [1...250] | Contiene los apellidos del conductor. |
| documento. cabecera. traslado. vehiculos | Requerido | array[object] | Contiene la información de los vehículos. |
| documento. cabecera. traslado. vehiculos[i]. placa | Requerido | string Tamaño: [6...8] Formato: Solo letras mayúsculas y números, no se permiten espacios ni guiones (-), no puede ser solo ceros (0) | Contiene la placa del vehículo. |
| documento. cabecera. traslado. vehiculos[i]. registro | Opcional | string Tamaño: [10...15] Formato: Solo letras mayúsculas y números, no se permiten espacios, no puede ser solo ceros (0) | Contiene el número de registro del vehículo. |
| documento. cabecera. adicionales | Opcional | array[object] | Lista de campos adicionales a agregar en la representación impresa. |
| documento. cabecera. adicionales[i]. codigo | CondicionalRequerido si se agregan adicionales | string | Código a consignar en la representación impresa, este código es definido por el usuario. |
| documento. cabecera. adicionales[i]. valor | CondicionalRequerido si se agregan adicionales | string | Valor del dato adicional que se imprimirá en la representación impresa según el código asignado. |
| documento. cabecera. observaciones | Opcional | array[string] Tamaño: [1...250] por cada posición del arreglo | Descripciones adicionales del documento. Cada posición del arreglo será una nueva línea. |
| documento. cabecera. documentosRelacionados | Opcional | array[object] | Contiene la información de los documentos relacionados. Sólo un documento relacionado en caso que tipoDocumento sea 01, 03 o 09 (con serie física). Máximo 2 documentos relacionados si uno de ellos es tipoDocumento 31. Más de 2 documentos relacionados siempre que sean de tipoDocumento 09 (todos con serie electrónica) y todos con el mismo número de RUC del emisor. |
| documento. cabecera. documentosRelacionados[i]. tipoDocumento | CondicionalRequerido si existen documentosRelacionados | string Tamaño: [2] Catálogo SUNAT: 01 | Código del tipo de documento relacionado. |
| documento. cabecera. documentosRelacionados[i]. numeroDocumento | CondicionalRequerido si existen documentosRelacionados | string Tamaño: [6...13] Formato: [serie]-[correlativo] | Número de documento relacionado, contiene la concatenación de serie + "-" + correlativo, por ejemplo: F001-1 (Nota de factura), B001-1 (Nota de boleta), T001-1 (Guía de remisión remitente) o V001-1 (Guía de remisión transportista). |
| documento. cabecera. documentosRelacionados[i]. numeroRucEmisor | CondicionalRequerido si existen documentosRelacionados | string Tamaño: [11] Formato: numérico de 11 dígitos | Contiene el número de RUC del emisor del documento relacionado. |
| documento. cabecera. traslado. trasladoTotalBienes | CondicionalRequerido si existen documentosRelacionados | boolean | true si se traslada la totalidad de los bienes de los documentos relacionados, false en caso contrario. |
| documento. detalle | Requerido | array[object] | Listado de ítems del documento, si existen documentosRelacionados y traslado.trasladoTotalBienes es true se debe enviar un array vacío []. |
| documento. detalle[i]. orden | CondicionalRequerido si traslado.trasladoTotalBienes es false | integer Tamaño: [1...3] | Número de orden del ítem. |
| documento. detalle[i]. descripciones | CondicionalRequerido si traslado.trasladoTotalBienes es false | array[string] Tamaño: [1...250] por cada posición del arreglo | Descripciones del producto o servicio. Cada posición del arreglo será una nueva línea. |
| documento. detalle[i]. codigoProducto | Opcional Puede enviarse si traslado.trasladoTotalBienes es false | string Tamaño: [1...30] Caracteres: [a-zA-z0-9] | Código del producto. Este código es definido por el usuario. |
| documento. detalle[i]. codigoSunat | Opcional Puede enviarse si traslado.trasladoTotalBienes es false | string Tamaño: [8] Catálogo SUNAT: 25 | Código SUNAT según Segmento, Familia, Clase y Producto del bien o servicio. |
| documento. detalle[i]. unidadMedida | CondicionalRequerido si traslado.trasladoTotalBienes es false | string Tamaño: [1...3] Catálogo SUNAT: 03 | Código de unidad de medida. |
| documento. detalle[i]. cantidad | CondicionalRequerido si traslado.trasladoTotalBienes es false | string Tamaño: [1...23] Formato: Decimal Enteros: [1...12] Decimales: 10 | Cantidad de unidades de medida del producto o servicio. |
| documento. detalle[i]. adicionales | Opcional Puede enviarse si traslado.trasladoTotalBienes es false | array[object] | Lista de campos adicionales a agregar en la representación impresa. |
| documento. detalle[i]. adicionales[a]. codigo | CondicionalRequerido si se agregan adicionales al ítem | string | Código a consignar en la representación impresa. Este código es definido por el usuario. |
| documento. detalle[i]. adicionales[a]. valor | CondicionalRequerido si se agregan adicionales al ítem | string | Valor del dato adicional que se imprimirá en la representación impresa según el código asignado. |
Response
Si el código de estado es 200 la petición anterior retorna un JSON estructurado de la siguiente manera:
200 — Cuando el proceso se ejecute correctamente.
{
"ticketPeticion": "1537486212351-1024216",
"codigoHash": "JIkdG2WPEgcfALGPziUEA8wnBBY=",
"estado": 3,
"nombreEstado": "ACEPTADO",
"informacionQR": "https://e-factura.sunat.gob.pe/v1/contribuyente/gre/comprobantes/descargaqr?hashqr=8W8FIjURVQeF....bgy+xMrGgT5w==",
"pdf": {
"name": "20600323751-31-V001-1.pdf",
"content": "contenido-del-archivo",
"contentType": "application/pdf"
},
"xml": {
"name": "20600323751-31-V001-1.xml",
"content": "contenido-del-archivo",
"contentType": "text/xml"
},
"cdr": {
"name": "CDR_20600323751-31-V001-1.xml",
"content": "contenido-del-archivo",
"contentType": "text/xml"
},
}
| Propiedad | Condición | Tipo | Descripción |
|---|---|---|---|
| ticketPeticion | Siempre | string | Código identificador de la petición. |
| codigoHash | Siempre | string | Código HASH del valor resumen de la firma digital al XML del CPE. |
| estado | Siempre | integer | Código interno de estado del documento. |
| nombreEstado | Siempre | string | Descripción de estado interno del documento. |
| informacionQR | Cuando estadoSunat es 3 (ACEPTADO) | string | Contenido del QR del documento que representa su aceptación en SUNAT. |
| Siempre | object | Contiene los datos del archivo PDF. | |
| pdf. name | Siempre | string | Nombre del archivo. |
| pdf. content | Siempre | stringBase64 | Contenido del byte[] representado en Base64. |
| pdf. contentType | Siempre | stringapplication/pdf | Nombre del mime type del archivo. |
| xml | Siempre | object | Contiene los datos del archivo XML. |
| xml. name | Siempre | string | Nombre del archivo. |
| xml. content | Siempre | stringBase64 | Contenido del byte[] representado en Base64. |
| xml. contentType | Siempre | stringtext/xml | Nombre del mime type del archivo. |
| cdr. name | Cuando estadoSunat es 3 (ACEPTADO) | string | Nombre del archivo. |
| cdr. content | Cuando estadoSunat es 3 (ACEPTADO) | stringBase64 | Contenido del byte[] representado en Base64. |
| cdr. contentType | Cuando estadoSunat es 3 (ACEPTADO) | stringtext/xml | Nombre del mime type del archivo. |
Si el código de estado es 400, 401, 402, 403, 404 o 500 la petición anterior retorna un JSON estructurado de la siguiente manera:
400 - ERROR DE ESTRUCTURA JSON O EN LOS PARÁMETROS ENVIADOS.
401 - ERROR DE AUTORIZACIÓN.
402 - ERROR POR FALTA DE PAGO.
403 - ERROR POR VALIDACIONES.
404 - RECURSO NO ENCONTRADO.
500 - ERROR EN EL SERVIDOR.
{
"ticketPeticion": "1537486212351-1024216",
"estado": "FORBIDDEN",
"mensaje": "El documento << V001-1 >> ya fue registrado anteriormente en nuestro sistema"
}
| Propiedad | Condición | Tipo | Descripción |
|---|---|---|---|
| ticketPeticion | Siempre | string | Código identificador de la petición. |
| estado | Siempre | string | Nombre del estado HTTP retornado:BAD_REQUESTUNAUTHORIZEDPAYMENT_REQUIREDFORBIDDENNOT_FOUNDINTERNAL_SERVER_ERROR. |
| mensaje | Siempre | string | Descripción del resultado o error retornado por la API. |
Catálogo SUNAT N° 01
Código de tipo de documento
| Código | Descripción |
|---|---|
| 01 | Factura |
| 03 | Boleta de venta |
| 07 | Nota de crédito |
| 08 | Nota de débito |
| 09 | Guía de remisión remitente |
| 20 | Comprobante de retención |
| 31 | Guía de remisión transportista |
| 40 | Comprobante de Percepción |
Catálogo SUNAT N° 03
Código de tipo de unidad de medida comercial
| Código | Descripción |
|---|---|
| NIU | UNIDADES BIENES |
| ZZ | UNIDADES SERVICIOS |
Archivo XLS con las unidades de medida
Catálogo SUNAT N° 06
Código de tipo de documento de identidad
| Código | Descripción |
|---|---|
| 0 | DOC.TRIB.NO.DOM.SIN.RUC |
| 1 | Documento Nacional de Identidad |
| 4 | Carnet de extranjería |
| 6 | Registro Unico de Contributentes |
| 7 | Pasaporte |
| A | Cédula Diplomática de identidad |
| B | DOC.IDENT.PAIS.RESIDENCIA-NO.D |
| D | Identification Number - IN – Doc Trib PP. JJ |
| F | Permiso Temporal de Permanencia - PTP |
| H | Carné Permiso Temp. Perman. - CPP |
Catálogo SUNAT N° 13
Código de ubicación geográfica (UBIGEO)
Códigos de unicación geografica
Catálogo SUNAT N° 25
Código de producto SUNAT
Sistema de Codificación Común de las Naciones Unidas - UNSPSC v14_0801 (nivel 3)