Saltar al contenido principal

Registrar

Este método genera y registra una factura electrónica.

Valores

VariableDescripciónProdDemo
URL_APIURL base de la APIhttps://api.emite.pehttps://api.demo.emite.pe
EMITE_IDIdentificador asignado a la empresaProporcionado por EmiteProporcionado por Emite
EMITE_KEYAPI Key asignada a la empresaProporcionado por EmiteProporcionado 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

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\":[{...},{...}]}}"

Propiedades Body

PropiedadObligatoriedadTipoDescripción
documento.
cabecera
RequeridoobjectContiene los datos de la cabecera del documento.
documento.
cabecera.
codigoEstablecimiento
Requeridostring
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
Requeridostring
Tamaño: [4]
Contiene la serie del documento, debe comenzar por F.
documento.
cabecera.
correlativo
Requeridointeger
Tamaño: [1...8]
Contiene el correlativo del documento.
documento.
cabecera.
fechaEmision
Requeridostring
Tamaño: [10]
Formato: YYYY-MM-DD
Contiene la fecha de emisión del documento.
documento.
cabecera.
horaEmision
Opcionalstring
Tamaño: [8]
Formato: HH:MM:SS
Contiene la hora de emisión del documento.
documento.
cabecera.
fechaVencimiento
Opcionalstring
Tamaño: [10]
Formato: YYYY-MM-DD
Contiene la fecha de vencimiento del documento.
documento.
cabecera.
tipoMoneda
Requeridostring
Tamaño: [3]
Catálogo SUNAT: 02
Contiene el código del tipo de moneda del documento.
documento.
cabecera.
tipoCambio
Condicional
Requerido 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
Opcionalstring
Tamaño: [1...20]
Contiene el número de la orden o servicio.
documento.
cabecera.
tipoOperacion
Requeridostring
Tamaño: [2]
Caracteres: [0-9]
Catálogo EMITE: 01
Tipo de operación del documento.
documento.
cabecera.
subTipoOperacion
Requeridostring
Tamaño: [2]
Caracteres: [0-9]
Catálogo EMITE: 02
Subtipo de operación del documento.
documento.
cabecera.
adquiriente
RequeridoobjectInformación de la Persona Jurídica a quien se emite el documento.
documento.
cabecera.
adquiriente.
numeroIdentidad
Requeridostring
Numérico de 11 dígitos
Contiene el número de RUC.
documento.
cabecera.
adquiriente.
tipoIdentidad
Requeridostring
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
Requeridostring
Tamaño: [1...100]
Razón social.
documento.
cabecera.
adquiriente.
nombreComercial
Opcionalstring
Tamaño: [1...100]
Nombre comercial de la Persona Jurídica.
documento.
cabecera.
adquiriente.
direccion
RequeridoobjectContiene los datos de la dirección de la Persona Jurídica.
documento.
cabecera.
adquiriente.
direccion.
descripcion
Requeridostring
Tamaño: [1...100]
Dirección exacta.
documento.
cabecera.
adquiriente.
direccion.
ubigeo
Opcionalstring
Tamaño: [6]
Catálogo SUNAT: 13
Código de ubigeo.
documento.
cabecera.
adquiriente.
direccion.
urbanizacion
Opcionalstring
Tamaño: [1...25]
Nombre de la urbanización.
documento.
cabecera.
adquiriente.
direccion.
departamento
Opcionalstring
Tamaño: [1...30]
Nombre del departamento.
documento.
cabecera.
adquiriente.
direccion.
provincia
Opcionalstring
Tamaño: [1...30]
Nombre de la provincia.
documento.
cabecera.
adquiriente.
direccion.
distrito
Opcionalstring
Tamaño: [1...30]
Nombre del distrito.
documento.
cabecera.
adquiriente.
direccion.
codigoPais
Opcionalstring
Tamaño: [2]
Catálogo SUNAT: 04
Código del país.
documento.
cabecera.
adquiriente.
email
OpcionalstringEmail de la persona. A este email se notificará el documento.
documento.
cabecera.
adquiriente.
placaVehiculo
Opcionalstring
Tamaño: [6...8]
Solo letras y números
Sin espacios en blanco
Sin carácteres especiales
Placa del vehículo.
documento.
cabecera.
igv
RequeridoobjectContiene los datos del IGV.
documento.
cabecera.
igv.
monto
Requeridostring
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
Condicional
Requerido 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
Condicional
Requerido si existe al menos un ítem de venta sujeto al ICBPER
objectContiene los datos del ICBPER (Impuesto al Consumo de las Bolsas de Plástico).
documento.
cabecera.
icbper.
monto
Condicional
Requerido 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
Condicional
Requerido si existe al menos un ítem de venta sujeto al ICBPER
integerIndica la cantidad total de unidades de productos sujetos al ICBPER.
documento.
cabecera.
importes
RequeridoobjectContiene los montos globales del documento.
documento.
cabecera.
importes.
importeTotal
Requeridostring
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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido si se trata de un cierre de anticipos
array[object]Lista de documentos de anticipo.
documento.
cabecera.
anticipos[i].
tipoDocumento
Condicional
Requerido 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
Condicional
Requerido si se trata de un cierre de anticipos
string
Tamaño: [4]
Serie del documento de anticipo.
documento.
cabecera.
anticipos[i].
correlativo
Condicional
Requerido si se trata de un cierre de anticipos
integer
Tamaño: [1...8]
Correlativo del documento de anticipo.
documento.
cabecera.
anticipos[i].
fechaEmision
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
RequeridostringImporte total en letras.
documento.
cabecera.
guiasRemision
Opcionalarray[object]Lista de Guías de Remisión asociadas al documento.
documento.
cabecera.
guiasRemision[i].
numero
Condicional
Requerido si se agregan guias de remisión
string
Tamaño: [...30]
Formato: [serie]-[correlativo]
Número del documento relacionado.
documento.
cabecera.
guiasRemision[i].
tipo
Condicional
Requerido 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
Condicional
Requerido si tipo de operación es 02 y subtipo de operación es 02 o 05
objectContiene los datos de la persona hospedada.
documento.
cabecera.
huesped.
tipoDocumento
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido si tipo de operación es 10
objectContiene 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido si tipo de operación es 10 y codigo de la detracción es 004
objectSi 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido si tipo de operación es 10 y código de la detracción es 027
objectSi 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido si tipo de operación es 10 y código de la detracción es 027
stringCódigo de ubigeo del punto de origen del servicio.
documento.
cabecera.
detraccion.
transporte.
puntoOrigen
Condicional
Requerido si tipo de operación es 10 y código de la detracción es 027
stringPunto de origen del servicio.
documento.
cabecera.
detraccion.
transporte.
ubigeoDestino
Condicional
Requerido si tipo de operación es 10 y código de la detracción es 027
stringCódigo de ubigeo del punto de destino del servicio.
documento.
cabecera.
detraccion.
transporte.
puntoDestino
Condicional
Requerido si tipo de operación es 10 y código de la detracción es 027
stringPunto de destino del servicio.
documento.
cabecera.
detraccion.
transporte.
tramoViaje
Condicional
Requerido si tipo de operación es 10 y código de la detracción es 027
stringDescripción del tramo del viaje.
documento.
cabecera.
formaPago
RequeridoobjectInformació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
Requeridostring
Caracteres: [1-2]
Tamaño: [1]
Tipo de forma de pago De contado: 1 A crédito: 2.
documento.
cabecera.
formaPago.
monto
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Condicional
Requerido 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
Opcionalarray[object]Lista de campos adicionales a agregar en la representación impresa.
documento.
cabecera.
adicionales[i].
codigo
Condicional
Requerido si se agregan adicionales
stringCódigo a consignar en la representación impresa, este código es definido por el usuario.
documento.
cabecera.
adicionales[i].
valor
Condicional
Requerido si se agregan adicionales
stringValor del dato adicional que se imprimirá en la representación impresa según el código asignado.
documento.
cabecera.
observaciones
Opcionalarray[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
Requeridoarray[object]Listado de ítems de venta del documento.
documento.
detalle[i].
orden
Requeridointeger
Tamaño: [1...3]
Número de orden del ítem.
documento.
detalle[i].
descripcion
Requeridostring
Tamaño: [1...250]
Descripción del producto o servicio.
documento.
detalle[i].
multiDescripcion
Opcionalarray[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
Opcionalstring
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
Condicional
Requerido 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
Requeridostring
Tamaño: [1...3]
Catálogo SUNAT: 03
Código de unidad de medida.
documento.
detalle[i].
cantidad
Requeridostring
Tamaño: [1...23]
Formato: Decimal
Enteros: [1...12]
Decimales: 10
Cantidad de unidades de medida del producto o servicio.
documento.
detalle[i].
igv
RequeridoobjectContiene los datos del IGV.
documento.
detalle[i].
igv.
monto
Requeridostring
Tamaño: [1...15]
Formato: Decimal
Decimales: 2
Indica el monto del impuesto.

igv.codigoTipoAfectacionIgv es 10 factorIGV será igual a 1 + (%IGV / 100).

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
Condicional
Requerido 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.

igv.codigoTipoAfectacionIgv esta entre 11 y 19 factorIGV será igual a 1 + (%IGV / 100).

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
Requeridostring
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
Condicional
Requerido 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
Requeridostring
Tamaño: [1...23]
Formato: Decimal
Decimales: 10
Valor unitario por item (no incluye IGV).
documento.
detalle[i].
importeTotal
RequeridostringImporte total de ítem (incluye IGV).

importeTotal = [(valorVenta + igv.monto) redondeado a 2 decimales].
documento.
detalle[i].
valorVenta
Requeridostring
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
Condicional
Requerido 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
Requeridostring
Tamaño: [1...15]
Formato: Decimal
Decimales: 2
Precio unitario del ítem (incluye IGV).

igv.codigoTipoAfectacionIgv es 10 factorIGV será igual a 1 + (%IGV / 100).

igv.codigoTipoAfectacionIgv es diferente de 10 factorIGV será igual a 1.

precioVentaUnitario = [(valorUnitario × factorIGV) redondeado a 2 decimales].
documento.
detalle[i].
adicionales
Opcionalarray[object]Lista de campos adicionales a agregar en la representación impresa.
documento.
detalle[i].
adicionales[a].
codigo
Condicional
Requerido si se agregan adicionales al ítem
stringCódigo a consignar en la representación impresa. Este código es definido por el usuario.
documento.
detalle[i].
adicionales[a].
valor
Condicional
Requerido si se agregan adicionales al ítem
stringValor 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:

Success

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"
}
}
PropiedadCondiciónTipoDescripción
ticketPeticionSiemprestringCódigo identificador de la petición.
codigoHashSiemprestringCódigo HASH del valor resumen de la firma digital al XML del CPE.
estadoSiempreintegerCódigo interno de estado del documento.
nombreEstadoSiemprestringDescripción de estado interno del documento.
pdfSiempreobjectContiene los datos del archivo PDF.
pdf.
name
SiemprestringNombre del archivo.
pdf.
content
Siemprestring
Base64
Contenido del byte[] representado en Base64.
pdf.
contentType
Siemprestring
application/pdf
Nombre del mime type del archivo.
xmlSiempreobjectContiene los datos del archivo XML.
xml.
name
SiemprestringNombre del archivo.
xml.
content
Siemprestring
Base64
Contenido del byte[] representado en Base64.
xml.
contentType
Siemprestring
text/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:

Bad Request

400 - ERROR DE ESTRUCTURA JSON O EN LOS PARÁMETROS ENVIADOS.

Unauthorized

401 - ERROR DE AUTORIZACIÓN.

Payment Required

402 - ERROR POR FALTA DE PAGO.

Forbidden

403 - ERROR POR VALIDACIONES.

Not Found

404 - RECURSO NO ENCONTRADO.

Internal Server Error

500 - ERROR EN EL SERVIDOR.

{
"ticketPeticion": "1537486212351-1024216",
"estado": "FORBIDDEN",
"mensaje": "La Factura << F001-1 >> ya fue registrada anteriormente en nuestro sistema"
}
PropiedadCondiciónTipoDescripción
ticketPeticionSiemprestringCódigo identificador de la petición.
estadoSiemprestringNombre del estado HTTP retornado:
BAD_REQUEST
UNAUTHORIZED
PAYMENT_REQUIRED
FORBIDDEN
NOT_FOUND
INTERNAL_SERVER_ERROR.
mensajeSiemprestringDescripción del resultado o error retornado por la API.


Catálogo EMITE N° 01

Código de tipo de operación

CódigoDescripción
01Venta lnterna
02Exportación
10Detracciones

Catálogo EMITE N° 02

Código de sub tipo de operación

Tipo OperaciónCódigoDescripciónDocumento asociado
0101Venta internaFactura, Boletas
0200Exportación de BienesFactura
0201Exportación de Servicios – Prestación servicios realizados íntegramente en el paísFactura
0202Exportación de Servicios – Prestación de servicios de hospedaje No DomiciliadoFactura
0205Exportación de Servicios  - Servicios que conformen un Paquete TurísticoFactura
1001Operación Sujeta a DetracciónFactura
1002Operación Sujeta a Detracción- Servicios recursos hidrobiologicosFactura
1004Operación Sujeta a Detracción- Servicios de Transporte CargaFactura

Catálogo SUNAT N° 01

Código de tipo de documento

CódigoDescripción
01Factura
03Boleta de venta
07Nota de crédito
08Nota de débito
09Guía de remisión remitente
20Comprobante de retención
31Guía de remisión transportista
40Comprobante de Percepción

Catálogo SUNAT N° 02

Código de tipo de monedas

CódigoDescripción
PENSoles
USDDó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ódigoDescripción
NIUUNIDADES BIENES
ZZUNIDADES SERVICIOS

Archivo XLS con las unidades de medida

Catálogo SUNAT N° 04

Códigos de países

CódigoDescripción
PEPERU
USUNITED STATES

Archivo HTML con los códigos de paises

Catálogo SUNAT N° 06

Código de tipo de documento de identidad

CódigoDescripción
0DOC.TRIB.NO.DOM.SIN.RUC
1Documento Nacional de Identidad
4Carnet de extranjería
6Registro Unico de Contributentes
7Pasaporte
ACédula Diplomática de identidad
BDOC.IDENT.PAIS.RESIDENCIA-NO.D
DIdentification Number - IN – Doc Trib PP. JJ
FPermiso Temporal de Permanencia - PTP
HCarné Permiso Temp. Perman. - CPP

Catálogo SUNAT N° 07

Código de tipo de afectación del IGV

CódigoDescripción
10Gravado - Operación Onerosa
11Gravado – Retiro por premio
12Gravado – Retiro por donación
13Gravado – Retiro
14Gravado – Retiro por publicidad
15Gravado – Bonificaciones
16Gravado – Retiro por entrega a trabajadores
17Gravado - IVAP
20Exonerado - Operación Onerosa
21Exonerado - Transferencia gratuita
30Inafecto - Operación Onerosa
31Inafecto – Retiro por Bonificación
32Inafecto – Retiro
33Inafecto – Retiro por Muestras Médicas
34Inafecto - Retiro por Convenio Colectivo
35Inafecto – Retiro por premio
36Inafecto - Retiro por publicidad
37Inafecto - Transferencia gratuita
40Exportació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ódigoDescripciónPorcentaje
001AZÚCAR Y MELAZA DE CAÑA10
004RECURSOS HIDROBIOLÓGICOS1.5
005MAÍZ AMARILLO DURO1.5
008MADERA4
009ARENA Y PIEDRA10
010RESIDUOS, SUBPRODUCTOS, DESECHOS, RECORTES, DESPERDICIOS Y FORMAS PRIMARIAS DERIVADAS DE LOS MISMOS15
011BIENES GRAVADOS CON EL IGV, POR RENUNCIA A LA EXONERACIÓN10
012INTERMED. LABORAL Y TERCERIZACIÓN12
014CARNES Y DESPOJOS COMESTIBLES4
019ARRENDAMIENTO BIENES10
020MANTEN. / REPARACIÓN BIENES MUEBLES12
021MOVIMIENTO DE CARGA10
022OTROS SERVICIOS EMPRESARIALES12
024COMISIÓN MERCANTIL10
025FABRICACIÓN DE BIENES POR ENCARGO10
027TRANSPORTE DE BIENES4
030CONTRATO DE CONSTRUCCIÓN4
031ORO GRAVADO CON EL IGV10
034MINERALES METÁLICOS NO AURÍFEROS10
035BIENES EXONERADOS DEL IGV1.5
037DEMÁS SERVICIOS GRAVADOS CON EL IGV12
039MINERALES NO METÁLICOS10
040PRIMERA VENTA DE INMUEBLES GRAVADOS CON EL I.G.V.4
045MINERALES DE ORO Y SUS CONCENTRADOS GRAVADOS CON EL IGV10
099LEY N° 307371.5