Registrar
Este método genera y registra una factura 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}}/factura/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}}/factura/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}}/factura/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}}/factura/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}}/factura/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. codigoEstablecimiento | Requerido | string Tamaño: [4]. Caracteres: [0-9]. | Código del establecimiento anexo desde donde se emite el comprobante. Si se emite desde el establecimiento principal o casa matriz el código es 0000 |
| documento. cabecera. serie | Requerido | string Tamaño: [4] | Contiene la serie del documento, debe comenzar por F. |
| 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. |
| documento. cabecera. fechaVencimiento | Opcional | string Tamaño: [10] Formato: YYYY-MM-DD | Contiene la fecha de vencimiento del documento. |
| documento. cabecera. tipoMoneda | Requerido | string Tamaño: [3] Catálogo SUNAT: 02 | Contiene el código del tipo de moneda del documento. |
| documento. cabecera. tipoCambio | CondicionalRequerido si tipo de moneda es diferente de PEN | string Tamaño: [1...9] Formato: Decimal Enteros: [1...2] Decimales: [3...6] | Contiene el tipo de cambio. |
| documento. cabecera. numeroOrden | Opcional | string Tamaño: [1...20] | Contiene el número de la orden o servicio. |
| documento. cabecera. tipoOperacion | Requerido | string Tamaño: [2] Caracteres: [0-9] Catálogo EMITE: 01 | Tipo de operación del documento. |
| documento. cabecera. subTipoOperacion | Requerido | string Tamaño: [2] Caracteres: [0-9] Catálogo EMITE: 02 | Subtipo de operación del documento. |
| documento. cabecera. adquiriente | Requerido | object | Información de la Persona Jurídica a quien se emite el documento. |
| documento. cabecera. adquiriente. numeroIdentidad | Requerido | string Numérico de 11 dígitos | Contiene el número de RUC. |
| documento. cabecera. adquiriente. tipoIdentidad | Requerido | string Tamaño: [1] Catálogo SUNAT: 06 | Tipo de documento de identidad, para facturas el valor debe ser 6. Si el tipo de operación es 02, el tipo de identidad debe ser 0, excepto cuando el subtipo de operación es 05, en cuyo caso el tipo de identidad puede ser 6 o 0. |
| documento. cabecera. adquiriente. nombre | Requerido | string Tamaño: [1...100] | Razón social. |
| documento. cabecera. adquiriente. nombreComercial | Opcional | string Tamaño: [1...100] | Nombre comercial de la Persona Jurídica. |
| documento. cabecera. adquiriente. direccion | Requerido | object | Contiene los datos de la dirección de la Persona Jurídica. |
| documento. cabecera. adquiriente. direccion. descripcion | Requerido | string Tamaño: [1...100] | Dirección exacta. |
| documento. cabecera. adquiriente. direccion. ubigeo | Opcional | string Tamaño: [6] Catálogo SUNAT: 13 | Código de ubigeo. |
| documento. cabecera. adquiriente. direccion. urbanizacion | Opcional | string Tamaño: [1...25] | Nombre de la urbanización. |
| documento. cabecera. adquiriente. direccion. departamento | Opcional | string Tamaño: [1...30] | Nombre del departamento. |
| documento. cabecera. adquiriente. direccion. provincia | Opcional | string Tamaño: [1...30] | Nombre de la provincia. |
| documento. cabecera. adquiriente. direccion. distrito | Opcional | string Tamaño: [1...30] | Nombre del distrito. |
| documento. cabecera. adquiriente. direccion. codigoPais | Opcional | string Tamaño: [2] Catálogo SUNAT: 04 | Código del país. |
| documento. cabecera. adquiriente. | Opcional | string | Email de la persona. A este email se notificará el documento. |
| documento. cabecera. adquiriente. placaVehiculo | Opcional | string Tamaño: [6...8] Solo letras y números Sin espacios en blanco Sin carácteres especiales | Placa del vehículo. |
| documento. cabecera. igv | Requerido | object | Contiene los datos del IGV. |
| documento. cabecera. igv. monto | Requerido | string Tamaño: [1...15] Formato: Decimal Enteros: [1...12] Decimales: 2 | Importe total del IGV.igv.monto = [((Σ(detalle[i].igv.monto), desde i = 0 hasta i = n) - (Σ(anticipos[i].montoIgv), desde i = 0 hasta i = n)) redondeado a 2 decimales]. |
| documento. cabecera. igv. montoGratuito | CondicionalRequerido si existe al menos un ítem de venta con afectación gratuita | string Tamaño: [1...15] Formato: Decimal Enteros: [1...12] Decimales: 2 | Indica el monto del impuesto como crédito fiscal para el cliente.igv.montoGratuito = [(Σ(detalle[i].igv.montoGratuito), desde i = 0 hasta i = n) redondeado a 2 decimales]. |
| documento. cabecera. icbper | CondicionalRequerido si existe al menos un ítem de venta sujeto al ICBPER | object | Contiene los datos del ICBPER (Impuesto al Consumo de las Bolsas de Plástico). |
| documento. cabecera. icbper. monto | CondicionalRequerido si existe al menos un ítem de venta sujeto al ICBPER | string Tamaño: [1...15] Formato: Decimal Enteros: [1...12] Decimales: 2 | Importe total del ICBPER (cantidad total de unidades de productos sujetos al ICBPER por tasa actual del ICBPER).icbper.monto = [(icbper.cantidad × factorICBPER) redondeado a 2 decimales]. |
| documento. cabecera. icbper. cantidad | CondicionalRequerido si existe al menos un ítem de venta sujeto al ICBPER | integer | Indica la cantidad total de unidades de productos sujetos al ICBPER. |
| documento. cabecera. importes | Requerido | object | Contiene los montos globales del documento. |
| documento. cabecera. importes. importeTotal | Requerido | string Tamaño: [1...15] Formato: Decimal Enteros: [1...12] Decimales: 2 | Importe total del documento.importes.importeTotal = [(operacionGravada + operacionInafecta + operacionExonerada + operacionExportacion + igv.monto + icbper.monto + importes.otrosCargosNAB) redondeado a 2 decimales]. |
| documento. cabecera. importes. descuentosGlobales | CondicionalRequerido si se aplica descuento global a la base imponible | string Tamaño: [1...15] Formato: Decimal Enteros: [1...12] Decimales: 2 | Descuento global aplicado a la base imponible del documento (importe sin IGV). |
| documento. cabecera. importes. otrosCargosNAB | CondicionalRequerido si se aplican otros cargos al total del documento | string Tamaño: [1...15] Formato: Decimal Enteros: [1...12] Decimales: 2 | Importe total de otros cargos que no afectan la base imponible. |
| documento. cabecera. importes. retencion | CondicionalRequerido si se aplica retención de IGV | string Tamaño: [1...15] Formato: Decimal Enteros: [1...12] Decimales: 2 | Importe total de la retención de IGV.factorRetencion = Taza de retención de IGV / 100.importes.retencion = [(importes.importeTotal × factorRetencion) redondeado a 2 decimales].La factura no puede tener reteción y detracción a la vez, cuando se da el caso se usa la del porcetaje (%) superior. |
| documento. cabecera. importes. valorAnticipado | CondicionalRequerido si se trata de un cierre de anticipos | string Tamaño: [1...15] Formato: Decimal Enteros: [1...12] Decimales: 2 | Sumatoria de importes totales de los anticipos (no incluye IGV).importes.valorAnticipado = [(Σ(anticipos[i].operacionGravada + anticipos[i].operacionExonerada + anticipos[i].operacionInafecta + anticipos[i].operacionExportacion), desde i = 0 hasta i = n) redondeado a 2 decimales]. |
| documento. cabecera. importes. importeAnticipado | CondicionalRequerido si se trata de un cierre de anticipos | string Tamaño: [1...15] Formato: Decimal Enteros: [1...12] Decimales: 2 | Sumatoria de importes totales de los anticipos (incluye IGV).importes.importeAnticipado = [(Σ(anticipos[i].operacionGravada + anticipos[i].operacionExonerada + anticipos[i].operacionInafecta + anticipos[i].operacionExportacion + anticipos[i].montoIgv), desde i = 0 hasta i = n) redondeado a 2 decimales]. |
| documento. cabecera. anticipos | CondicionalRequerido si se trata de un cierre de anticipos | array[object] | Lista de documentos de anticipo. |
| documento. cabecera. anticipos[i]. tipoDocumento | CondicionalRequerido si se trata de un cierre de anticipos | string Tamaño: [2] Catálogo SUNAT: 01 | Tipo de documento del anticipo (debe ser del mismo tipo que el del documento de cierre). |
| documento. cabecera. anticipos[i]. serie | CondicionalRequerido si se trata de un cierre de anticipos | string Tamaño: [4] | Serie del documento de anticipo. |
| documento. cabecera. anticipos[i]. correlativo | CondicionalRequerido si se trata de un cierre de anticipos | integer Tamaño: [1...8] | Correlativo del documento de anticipo. |
| documento. cabecera. anticipos[i]. fechaEmision | CondicionalRequerido si se trata de un cierre de anticipos | string Tamaño: [10] Formato: YYYY-MM-DD | Fecha de emisión del documento de anticipo. |
| documento. cabecera. anticipos[i]. fechaPago | CondicionalRequerido si se trata de un cierre de anticipos | string Tamaño: [10] Formato: YYYY-MM-DD | Fecha del pago del anticipo. |
| documento. cabecera. anticipos[i]. horaPago | CondicionalRequerido si se trata de un cierre de anticipos | string Tamaño: [8] Formato: HH:MM:SS | Hora del pago del anticipo. |
| documento. cabecera. anticipos[i]. valorPrepagado | CondicionalRequerido si se trata de un cierre de anticipos | string Tamaño: [1...15] Formato: Decimal Enteros: [1...12] Decimales: 2 | importe pagado del anticipo sin incluir IGV. |
| documento. cabecera. anticipos[i]. importePrepagado | CondicionalRequerido si se trata de un cierre de anticipos | string Tamaño: [1...15] Formato: Decimal Enteros: [1...12] Decimales: 2 | importe pagado del anticipo incluyendo IGV. |
| documento. cabecera. montoEnLetras | Requerido | string | Importe total en letras. |
| documento. cabecera. guiasRemision | Opcional | array[object] | Lista de Guías de Remisión asociadas al documento. |
| documento. cabecera. guiasRemision[i]. numero | CondicionalRequerido si se agregan guias de remisión | string Tamaño: [...30] Formato: [serie]-[correlativo] | Número del documento relacionado. |
| documento. cabecera. guiasRemision[i]. tipo | CondicionalRequerido si se agregan guias de remisión | string Tamaño: [2] Catálogo SUNAT: 01 | Tipo del documento relacionado (09 o 31). |
| documento. cabecera. huesped | CondicionalRequerido si tipo de operación es 02 y subtipo de operación es 02 o 05 | object | Contiene los datos de la persona hospedada. |
| documento. cabecera. huesped. tipoDocumento | CondicionalRequerido si tipo de operación es 02 y subtipo de operación es 02 o 05 | string Tamaño: [1] Catálogo SUNAT: 06 | Código de tipo de documento de identidad del huesped. |
| documento. cabecera. huesped. numeroDocumento | CondicionalRequerido si tipo de operación es 02 y subtipo de operación es 02 o 05 | string Tamaño: [11] | Número de documento del huesped. |
| documento. cabecera. huesped. nombres | CondicionalRequerido si tipo de operación es 02 y subtipo de operación es 02 o 05 | string Tamaño: [1...100] | Apellidos y Nombres o denominación o razón social del huesped. |
| documento. cabecera. huesped. paisEmisionPasaporte | CondicionalRequerido si tipo de operación es 02 y subtipo de operación es 02 o 05 | string Tamaño: [2] Catálogo SUNAT: 04 | Código país de emisión del pasaporte. |
| documento. cabecera. huesped. paisResidencia | CondicionalRequerido si tipo de operación es 02 y subtipo de operación es 02 | string Tamaño: [2] Catálogo SUNAT: 04 | Código del país de residencia del sujeto no domiciliado. |
| documento. cabecera. huesped. fechaArrivo | CondicionalRequerido si tipo de operación es 02 y subtipo de operación es 02 | string Tamaño: [10] Formato: YYYY-MM-DD | Fecha de Ingreso al país. |
| documento. cabecera. huesped. fechaIngreso | CondicionalRequerido si tipo de operación es 02 y subtipo de operación es 02 | string Tamaño: [10] Formato: YYYY-MM-DD | Fecha de Ingreso al Establecimiento. |
| documento. cabecera. huesped. fechaSalida | CondicionalRequerido si tipo de operación es 02 y subtipo de operación es 02 | string Tamaño: [10] Formato: YYYY-MM-DD | Fecha de salida del Establecimiento. |
| documento. cabecera. huesped. fechaConsumo | CondicionalRequerido si tipo de operación es 02 y subtipo de operación es 02 | string Tamaño: [10] Formato: YYYY-MM-DD | Fecha de consumo. |
| documento. cabecera. operacionGravada | CondicionalRequerido si tipo de operación es 01 o 10 y existe al menos un ítem de venta con afectación gravada | string Caracteres: [0-9] Tamaño: [15] Enteros: [1...12] Decimales: 2 | Monto en decimales de la operación.operacionGravada = [(((Σ(detalle[i].valorVenta (con afectacion gravada)), desde i = 0 hasta i = n) - (Σ(anticipos[i].operacionGravada), desde i = 0 hasta i = n)) - importes.descuentosGlobales) redondeado a 2 decimales]. |
| documento. cabecera. operacionInafecta | CondicionalRequerido si tipo de operación es 01 o 10 y existe al menos un ítem de venta con afectación inafecta | string Caracteres: [0-9] Tamaño: [15] Enteros: [1...12] Decimales: 2 | Monto en decimales de la operación.operacionInafecta = [((Σ(detalle[i].valorVenta (con afectacion inafecta)), desde i = 0 hasta i = n) - (Σ(anticipos[i].operacionInafecta), desde i = 0 hasta i = n)) redondeado a 2 decimales]. |
| documento. cabecera. operacionExonerada | CondicionalRequerido si tipo de operación es 01 o 10 y existe al menos un ítem de venta con afectación exonerada | string Caracteres: [0-9] Tamaño: [15] Enteros: [1...12] Decimales: 2 | Monto en decimales de la operación.operacionExonerada = [((Σ(detalle[i].valorVenta (con afectacion exonerada)), desde i = 0 hasta i = n) - (Σ(anticipos[i].operacionExonerada), desde i = 0 hasta i = n)) redondeado a 2 decimales]. |
| documento. cabecera. operacionGratuita | CondicionalRequerido si tipo de operación es 01 o 10 y existe al menos un ítem de venta con afectación gratuita | string Caracteres: [0-9] Tamaño: [18] Enteros: 15 Decimales: 2 | Monto en decimales de la operación.operacionGratuita = [(Σ(detalle[i].valorVenta (con afectacion gratuita)), desde i = 0 hasta i = n) redondeado a 2 decimales]. |
| documento. cabecera. operacionExportacion | CondicionalRequerido si tipo de operación es 02 | string Caracteres: [0-9] Tamaño: [15] Enteros: [1...12] Decimales: 2 | Monto en decimales de la operación.operacionExportacion = [((Σ(detalle[i].valorVenta (con afectacion exportacion)), desde i = 0 hasta i = n) - (Σ(anticipos[i].operacionExportacion), desde i = 0 hasta i = n)) redondeado a 2 decimales]. |
| documento. cabecera. detraccion | CondicionalRequerido si tipo de operación es 10 | object | Contiene la información de la detracción a realizar. Obligatorio cuando la operación está sujeta a detracción. La factura no puede tener reteción y detracción a la vez, cuando se da el caso se usa la del porcetaje (%) superior. |
| documento. cabecera. detraccion. codigo | CondicionalRequerido si tipo de operación es 10 | string Tamaño: [3] Caracteres: [0-9] Catálogo Detracciones. | Código del bien o servicio sujeto a detracción. |
| documento. cabecera. detraccion. porcentaje | CondicionalRequerido si tipo de operación es 10 | string Tamaño: [1...3] Caracteres: [0-9] Catálogo Detracciones. | Porcentaje de la detracción. |
| documento. cabecera. detraccion. monto | CondicionalRequerido si tipo de operación es 10 | string Caracteres: [0-9] Tamaño: [15] Enteros: [1...12] Decimales: 2 | Monto de la detracción.factorDetraccion = porcentaje de la detracción / 100.detraccion.monto = [(importes.importeTotal × factorDetraccion) redondeado a 2 decimales].Si la detracción es código 027 el calculo se debe hacer con el valorReferencial. detraccion.monto = [(detraccion.transporte.valorReferencial × factorDetraccion) redondeado a 2 decimales].El monto de la detraccion puede redondearse al entero mas cercano. |
| documento. cabecera. detraccion. tipoMoneda | CondicionalRequerido si tipo de operación es 10 y tipo de moneda de la venta es distinta a soles | string Tamaño: [3] Catálogo SUNAT: 02. | Contiene el código del tipo de moneda del documento. |
| documento. cabecera. detraccion. recursosHidrobiologicos | CondicionalRequerido si tipo de operación es 10 y codigo de la detracción es 004 | object | Si la detracción se realiza por venta de recursos hidrobiológicos. Obligatorio cuando la operación está sujeta a detracción por venta de recursos hidrobiológicos. |
| documento. cabecera. detraccion. recursosHidrobiologicos. matriculaEmbarcacion | CondicionalRequerido si tipo de operación es 10 y codigo de la detracción es 004 | string Tamaño: [1...15] | Matrícula de la embarcación pesquera. |
| documento. cabecera. detraccion. recursosHidrobiologicos. nombreEmbarcacion | CondicionalRequerido si tipo de operación es 10 y codigo de la detracción es 004 | string Tamaño: [1...50] | Nombre de la embarcación pesquera. |
| documento. cabecera. detraccion. recursosHidrobiologicos. descripcionEspecie | CondicionalRequerido si tipo de operación es 10 y codigo de la detracción es 004 | string Tamaño: [1...100] | Descripción del tipo de la especie vendida. |
| documento. cabecera. detraccion. recursosHidrobiologicos. lugarDescarga | CondicionalRequerido si tipo de operación es 10 y codigo de la detracción es 004 | string Tamaño: [1...200] | Lugar de descarga de la especie vendida. |
| documento. cabecera. detraccion. recursosHidrobiologicos. fechaDescarga | CondicionalRequerido si tipo de operación es 10 y codigo de la detracción es 004 | string Tamaño: [10] Formato: YYYY-MM-DD | fecha de descarga de la especie vendida. |
| documento. cabecera. detraccion. recursosHidrobiologicos. cantidadEspecie | CondicionalRequerido si tipo de operación es 10 y codigo de la detracción es 004 | string Tamaño: [1...15] Formato: Decimal Decimales: 2 | Cantidad de la especie vendida. |
| documento. cabecera. detraccion. transporte | CondicionalRequerido si tipo de operación es 10 y código de la detracción es 027 | object | Si la detracción se realiza por servicio de transportes de bienes. Obligatorio cuando la operación está sujeta a detracción por servicios de transporte carga. |
| documento. cabecera. detraccion. transporte. valorReferencial | CondicionalRequerido si tipo de operación es 10 y código de la detracción es 027 | string Tamaño: [1...15] Formato: Decimal Decimales: 2 | Valor referencial del servicio de transporte de bienes realizado por vía terrestre, determinado por el DS Nº010-2006-MTC. |
| documento. cabecera. detraccion. transporte. valorReferencialCargaEfectiva | CondicionalRequerido si tipo de operación es 10 y codigo de la detracción es 027 | string Tamaño: [1...15] Formato: Decimal Decimales: 2 | Valor referencial sobre la carga efectiva. |
| documento. cabecera. detraccion. transporte. valorReferencialCargaUtil | CondicionalRequerido si tipo de operación es 10 y código de la detracción es 027 | string Tamaño: [1...15] Formato: Decimal Decimales: 2 | Valor referencial sobre la carga útil nominal. |
| documento. cabecera. detraccion. transporte. ubigeoOrigen | CondicionalRequerido si tipo de operación es 10 y código de la detracción es 027 | string | Código de ubigeo del punto de origen del servicio. |
| documento. cabecera. detraccion. transporte. puntoOrigen | CondicionalRequerido si tipo de operación es 10 y código de la detracción es 027 | string | Punto de origen del servicio. |
| documento. cabecera. detraccion. transporte. ubigeoDestino | CondicionalRequerido si tipo de operación es 10 y código de la detracción es 027 | string | Código de ubigeo del punto de destino del servicio. |
| documento. cabecera. detraccion. transporte. puntoDestino | CondicionalRequerido si tipo de operación es 10 y código de la detracción es 027 | string | Punto de destino del servicio. |
| documento. cabecera. detraccion. transporte. tramoViaje | CondicionalRequerido si tipo de operación es 10 y código de la detracción es 027 | string | Descripción del tramo del viaje. |
| documento. cabecera. formaPago | Requerido | object | Información de la forma de pago del comprobante (de contado o a crédito), si no se envía la forma de pago se declarará como de contado. |
| documento. cabecera. formaPago. tipo | Requerido | string Caracteres: [1-2] Tamaño: [1] | Tipo de forma de pago De contado: 1 A crédito: 2. |
| documento. cabecera. formaPago. monto | CondicionalRequerido si tipo de forma de pago es a crédito (2) | string Caracteres: [0-9] Tamaño: [15] Enteros: [1...12] Decimales: 2 | Monto neto pendiente de pago (importe total menos retenciones o detracciones).formaPago.monto = importes.importeTotal - (importes.retencion + detraccion.monto).La factura no puede tener reteción y detracción a la vez, cuando se da el caso se usa la del porcetaje (%) superior. |
| documento. cabecera. cuotas | CondicionalRequerido si tipo de forma de pago es a crédito (2) | array[object] | Información de las cuotas de crédito a pagar. |
| documento. cabecera. cuotas[i]. monto | CondicionalRequerido si tipo de forma de pago es a crédito (2) | string Caracteres: [0-9] Tamaño: [15] Enteros: [1...12] Decimales: 2 | Monto de la cuota a pagar. La sumatoria de los montos de las cuotas debe ser igual a formaPago.monto |
| documento. cabecera. cuotas[i]. fechaVencimiento | CondicionalRequerido si tipo de forma de pago es a crédito (2) | string Tamaño: [10] Formato: YYYY-MM-DD | Contiene la fecha de vencimiento de la cuota a pagar. Deben ser posteriores a la fecha de emisión de la factura. |
| 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. detalle | Requerido | array[object] | Listado de ítems de venta del documento. |
| documento. detalle[i]. orden | Requerido | integer Tamaño: [1...3] | Número de orden del ítem. |
| documento. detalle[i]. descripcion | Requerido | string Tamaño: [1...250] | Descripción del producto o servicio. |
| documento. detalle[i]. multiDescripcion | Opcional | array[string] Tamaño: [1...250] por cada posición del arreglo | Descripción adicional del producto o servicio. Cada posición del arreglo será una nueva línea. |
| documento. detalle[i]. codigoProducto | Opcional | 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 | CondicionalRequerido si tipo de operación es 02 | 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 | Requerido | string Tamaño: [1...3] Catálogo SUNAT: 03 | Código de unidad de medida. |
| documento. detalle[i]. cantidad | Requerido | string Tamaño: [1...23] Formato: Decimal Enteros: [1...12] Decimales: 10 | Cantidad de unidades de medida del producto o servicio. |
| documento. detalle[i]. igv | Requerido | object | Contiene los datos del IGV. |
| documento. detalle[i]. igv. monto | Requerido | string Tamaño: [1...15] Formato: Decimal Decimales: 2 | Indica el monto del impuesto. Sí igv.codigoTipoAfectacionIgv es 10 factorIGV será igual a 1 + (%IGV / 100).Sí igv.codigoTipoAfectacionIgv es diferente de 10 factorIGV será igual a 1.igv.monto = [((valorVenta × factorIGV) - valorVenta) redondeado a 2 decimales]. |
| documento. detalle[i]. igv. montoGratuito | CondicionalRequerido si la afectación de IGV del ítem es gratuita | string Tamaño: [1...15] Formato: Decimal Enteros: [1...12] Decimales: 2 | Indica el monto del impuesto como crédito fiscal para el cliente. Sí igv.codigoTipoAfectacionIgv esta entre 11 y 19 factorIGV será igual a 1 + (%IGV / 100).Sí igv.codigoTipoAfectacionIgv no esta entre 11 y 19 factorIGV será igual a 1.igv.montoGratuito = [((valorVenta × factorIGV) - valorVenta) redondeado a 2 decimales]. |
| documento. detalle[i]. igv. codigoTipoAfectacionIgv | Requerido | string Catálogo SUNAT: 07 | Código de tipo de afectación del IGV (si tipo de operación es 02 el código de tipo de afectación debe ser 40). |
| documento. detalle[i]. igv. factorTributo | CondicionalRequerido si la taza de IGV a usar es diferente de 18% | string Tamaño: [4...5] Formato: Decimal Enteros: [1...2] Decimales: 2 | %IGV a utilizar en el documento ejemplo: 18.00, debe ser el misma para todo el documento, si no se envia se tomara 18.00 por defecto. |
| documento. detalle[i]. valorUnitario | Requerido | string Tamaño: [1...23] Formato: Decimal Decimales: 10 | Valor unitario por item (no incluye IGV). |
| documento. detalle[i]. importeTotal | Requerido | string | Importe total de ítem (incluye IGV).importeTotal = [(valorVenta + igv.monto) redondeado a 2 decimales]. |
| documento. detalle[i]. valorVenta | Requerido | string Tamaño: [1...23] Formato: Decimal Decimales: 10 | Valor venta por item (no incluye IGV).valorVenta = [((valorUnitario * cantidad) - montoDescuento) redondeado a 10 decimales]. |
| documento. detalle[i]. montoDescuento | CondicionalRequerido si se aplica descuento al ítem de venta | string Tamaño: [1...12] Formato: Decimal Decimales: 2 | Monto de descuento por ítem (no incluye IGV). |
| documento. detalle[i]. precioVentaUnitario | Requerido | string Tamaño: [1...15] Formato: Decimal Decimales: 2 | Precio unitario del ítem (incluye IGV). Sí igv.codigoTipoAfectacionIgv es 10 factorIGV será igual a 1 + (%IGV / 100).Sí igv.codigoTipoAfectacionIgv es diferente de 10 factorIGV será igual a 1.precioVentaUnitario = [(valorUnitario × factorIGV) redondeado a 2 decimales]. |
| documento. detalle[i]. adicionales | Opcional | 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": 1,
"nombreEstado": "NO PROCESADO",
"xml": {
"name": "20600323751-01-F001-1.xml",
"content": "contenido-del-archivo",
"contentType": "text/xml"
},
"pdf": {
"name": "20600323751-01-F001-1.pdf",
"content": "contenido-del-archivo",
"contentType": "application/pdf"
}
}
| 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. |
| 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. |
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": "La Factura << F001-1 >> ya fue registrada 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 EMITE N° 01
Código de tipo de operación
| Código | Descripción |
|---|---|
| 01 | Venta lnterna |
| 02 | Exportación |
| 10 | Detracciones |
Catálogo EMITE N° 02
Código de sub tipo de operación
| Tipo Operación | Código | Descripción | Documento asociado |
|---|---|---|---|
| 01 | 01 | Venta interna | Factura, Boletas |
| 02 | 00 | Exportación de Bienes | Factura |
| 02 | 01 | Exportación de Servicios – Prestación servicios realizados íntegramente en el país | Factura |
| 02 | 02 | Exportación de Servicios – Prestación de servicios de hospedaje No Domiciliado | Factura |
| 02 | 05 | Exportación de Servicios - Servicios que conformen un Paquete Turístico | Factura |
| 10 | 01 | Operación Sujeta a Detracción | Factura |
| 10 | 02 | Operación Sujeta a Detracción- Servicios recursos hidrobiologicos | Factura |
| 10 | 04 | Operación Sujeta a Detracción- Servicios de Transporte Carga | Factura |
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° 02
Código de tipo de monedas
| Código | Descripción |
|---|---|
| PEN | Soles |
| USD | Dólar americano |
Archivo XLS con todos los tipos de moneda
Archivo XML con todos los tipos de moneda
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° 04
Códigos de países
| Código | Descripción |
|---|---|
| PE | PERU |
| US | UNITED STATES |
Archivo HTML con los códigos de paises
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° 07
Código de tipo de afectación del IGV
| Código | Descripción |
|---|---|
| 10 | Gravado - Operación Onerosa |
| 11 | Gravado – Retiro por premio |
| 12 | Gravado – Retiro por donación |
| 13 | Gravado – Retiro |
| 14 | Gravado – Retiro por publicidad |
| 15 | Gravado – Bonificaciones |
| 16 | Gravado – Retiro por entrega a trabajadores |
| 17 | Gravado - IVAP |
| 20 | Exonerado - Operación Onerosa |
| 21 | Exonerado - Transferencia gratuita |
| 30 | Inafecto - Operación Onerosa |
| 31 | Inafecto – Retiro por Bonificación |
| 32 | Inafecto – Retiro |
| 33 | Inafecto – Retiro por Muestras Médicas |
| 34 | Inafecto - Retiro por Convenio Colectivo |
| 35 | Inafecto – Retiro por premio |
| 36 | Inafecto - Retiro por publicidad |
| 37 | Inafecto - Transferencia gratuita |
| 40 | Exportación de Bienes o Servicios |
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)
Catálogo Detracciones
Códigos de bienes y servicios sujetos a detraccion con sus porcentajes (%)
| Código | Descripción | Porcentaje |
|---|---|---|
| 001 | AZÚCAR Y MELAZA DE CAÑA | 10 |
| 004 | RECURSOS HIDROBIOLÓGICOS | 1.5 |
| 005 | MAÍZ AMARILLO DURO | 1.5 |
| 008 | MADERA | 4 |
| 009 | ARENA Y PIEDRA | 10 |
| 010 | RESIDUOS, SUBPRODUCTOS, DESECHOS, RECORTES, DESPERDICIOS Y FORMAS PRIMARIAS DERIVADAS DE LOS MISMOS | 15 |
| 011 | BIENES GRAVADOS CON EL IGV, POR RENUNCIA A LA EXONERACIÓN | 10 |
| 012 | INTERMED. LABORAL Y TERCERIZACIÓN | 12 |
| 014 | CARNES Y DESPOJOS COMESTIBLES | 4 |
| 019 | ARRENDAMIENTO BIENES | 10 |
| 020 | MANTEN. / REPARACIÓN BIENES MUEBLES | 12 |
| 021 | MOVIMIENTO DE CARGA | 10 |
| 022 | OTROS SERVICIOS EMPRESARIALES | 12 |
| 024 | COMISIÓN MERCANTIL | 10 |
| 025 | FABRICACIÓN DE BIENES POR ENCARGO | 10 |
| 027 | TRANSPORTE DE BIENES | 4 |
| 030 | CONTRATO DE CONSTRUCCIÓN | 4 |
| 031 | ORO GRAVADO CON EL IGV | 10 |
| 034 | MINERALES METÁLICOS NO AURÍFEROS | 10 |
| 035 | BIENES EXONERADOS DEL IGV | 1.5 |
| 037 | DEMÁS SERVICIOS GRAVADOS CON EL IGV | 12 |
| 039 | MINERALES NO METÁLICOS | 10 |
| 040 | PRIMERA VENTA DE INMUEBLES GRAVADOS CON EL I.G.V. | 4 |
| 045 | MINERALES DE ORO Y SUS CONCENTRADOS GRAVADOS CON EL IGV | 10 |
| 099 | LEY N° 30737 | 1.5 |