sunat-catalogs v1.0.7
Instalación y uso
npm install --save sunat-catalogs
const Catalogs = require('sunat-catalogs');
Atributos Estáticos (Statics Attributes)
Todos los catálogos definidos en la sección "Definición de Catálogos", tendrán los siguientes atributos estáticos, los cuales nos permitiran acceder a los metadatos del catálogo.
Atributo | Descripción |
---|---|
numeroCat | Número de catálogo |
tituloCat | Título del catálogo |
nombreCat | Nombre del catálogo definida por la agencia |
agenciaCat | Agencia del catálogo |
uriCat | URI del catálogo |
const { TipoTributo } = require('sunat-catalogs');
console.log(TipoTributo.numeroCat);
// Resultado: 05
console.log(TipoTributo.tituloCat);
// Resultado: Código de tipos de tributos y otros conceptos
console.log(TipoTributo.nombreCat);
// Resultado: Codigo de tributos
console.log(TipoTributo.agenciaCat);
// Resultado: PE:SUNAT
console.log(TipoTributo.uriCat);
// Resultado: urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo05
console.log(`Catálogo Nro. ${TipoTributo.numeroCat} - ${TipoTributo.tituloCat}`);
// Resultado: Catálogo Nro. 05 - Código de tipos de tributos y otros conceptos
IMPORTANTE:
Los métodos estáticos se llaman sin crear instancias de su clase y tampoco son invocables cuando se instancia la clase.
Funciones
Todos los catálogos definidos en la sección "Definición de Catálogos", tendrán definida la función
descripcion()
para acceder a la descripción de los códigos de los catálogos.
Cada catálogo también cuenta con funciones propias.
const { TipoTributo } = require('sunat-catalogs');
const tributo = new TipoTributo(TipoTributo.ICBPER);
console.log(tributo.descripcion());
// Resultado: Impuesto al Consumo de las bolsas de plástico
console.log(tributo.nombre());
// Resultado: ICBPER
console.log(tributo.categoria());
// Resultado: S
console.log(tributo.codigo());
// Resultado: OTH
Definición de Catálogos
Catálogo Nro. 01 - Código de Tipo de Documento
Para este catálogo se ha definido la clase de nombre TipoDocumeto
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del tipo de documento
const { TipoDocumento } = require('sunat-catalogs');
const documento = new TipoDocumento(TipoDocumento.FA);
console.log(documento.descripcion());
// Resultado: Factura
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
FA | 01 | Factura |
BV | 03 | Boleta de Venta |
NC | 07 | Nota de Crédito |
ND | 08 | Nota de Débito |
GRR | 09 | Guía de Remisión Remitente |
CPER | 20 | Comprobante de Retención |
GRT | 31 | Guía de Remisión Transportista |
CPEP | 40 | Comprobante de Percepción |
Catálogo Nro. 02 - Código de Tipo de Monedas
Para este catálogo se ha definido la clase de nombre TipoMoneda
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del tipo de moneda
const { TipoMoneda } = require('sunat-catalogs');
const moneda = new TipoMoneda(TipoMoneda.SOL);
console.log(moneda.descripcion());
// Resultado: Sol
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
SOL | PEN | Sol |
DOLAR | USD | US Dollar |
EURO | EUR | Euro |
Catálogo Nro. 03 - Códigos de Tipo de Unidad de Medida
Para este catálogo se ha definido la clase de nombre TipoUnidadMedida
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del tipo de unidad de medida
const { TipoUnidadMedida } = require('sunat-catalogs');
const medida = new TipoUnidadMedida(TipoUnidadMedida.UNIDAD_INTERNACIONAL);
console.log(medida.descripcion());
// Resultado: Número de unidades internacionales
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
UNIDAD_INTERNACIONAL | NIU | Número de unidades internacionales |
UNIDAD_MEDIDA_ACORDADA | ZZ | Unidad de medida acordada entre dos partes |
Catálogo Nro. 04 - Código de País
Para este catálogo se ha definido la clase de nombre Pais
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del país
const { Pais } = require('sunat-catalogs');
const pais = new Pais(Pais.PERU);
console.log(pais.descripcion());
// Resultado: Perú
En la siguiente tabla se describen las constantes disponibles:
Constante | Codigo | Descripción |
---|---|---|
PERU | PE | Perú |
Catálogo Nro. 05 - Código de Tipos de Tributos
Para este catálogo se ha definido la clase de nombre TipoTributo
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del tipo de tributonombre()
- Permite obtener el nombre del tipo de tributocategoria()
- Permite obtener la categoría del tipo de tributocodigo()
- Permite obtener el código internacional del tipo de tributo
const { TipoTributo } = require('sunat-catalogs');
const tributo = new TipoTributo(TipoTributo.IGV);
console.log(tributo.descripcion());
// Resultado: IGV Impuesto General a las Ventas
console.log(tributo.nombre());
// Resultado: IGV
console.log(tributo.categoria());
// Resultado: S
console.log(tributo.codigo());
// Resultado: VAT
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
IGV | 1000 | Impuesto General a las Ventas |
IVAP | 1016 | Impuesto a la Venta Arroz Pilado |
ISC | 2000 | Impuesto al Consumo de las Bolsas de Plástico |
ICBPER | 7152 | Impuesto a la Bolsa Plastica |
EXP | 9995 | Exportación |
GRA | 9996 | Gratuito |
EXO | 9997 | Exonerado |
INA | 9998 | Inafecto |
OTROS | 9999 | Otros Tributos |
Catálogo Nro. 06 - Código de Tipo de Documento de Identidad
Para este catálogo se ha definido la clase de nombre TipoDocumentoIdentidad
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del documento de identidad
const { TipoDocumentoIdentidad } = require('sunat-catalogs');
const documento = new TipoDocumentoIdentidad(TipoDocumentoIdentidad.DNI);
console.log(documento.descripcion());
// Resultado: Documento Nacional de Identidad
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
NO_DOMICILIADO | 0 | DOC.TRIB.NO.DOM.SIN.RUC |
DNI | 1 | Documento Nacional de Identidad |
CARNET_EXTRANJERIA | 4 | Carnet de extranjería |
RUC | 6 | Registro Unico de Contributentes |
PASAPORTE | 7 | Pasaporte |
TIN | C | TIN - Doc Trib PP.NN |
IN | D | IN - Doc Trib PP. JJ |
TAM | E | TAM - Tarjeta Andina de Migración |
Catálogo Nro. 07 - Código de Tipo de Afectación del IGV
Para este catálogo se ha definido la clase de nombre TipoAfectacionIgv
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del tipo de afectacióncodTributo(onerosa)
- Permite obtener el código del tributo relacionado al tipo de afectaciónonerosa
- Definir comotrue
si la operación es onerosa yfalse
si la operación es gratuita
const { TipoAfectacionIgv } = require('sunat-catalogs');
const afectacion = new TipoAfectacionIgv(TipoAfectacionIgv.GRAVADO_IVAP);
console.log(afectacion.descripcion());
// Resultado: Gravado - IVAP
console.log(afectacion.codTributo(true));
// Resultado: 1016
console.log(afectacion.codTributo(false));
// Resultado: 9996
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
GRAVADO_ONEROSA | 10 | Gravado - Operación Onerosa |
GRAVADO_PREMIO | 11 | Gravado - Retiro por premio |
GRAVADO_DONACION | 12 | Gravado - Retiro por donación |
GRAVADO_RETIRO | 13 | Gravado - Retiro |
GRAVADO_PUBLICIDAD | 14 | Gravado - Retiro por publicidad |
GRAVADO_BONIFICACIONES | 15 | Gravado - Bonificaciones |
GRAVADO_ENTREGA_TRABAJADORES | 16 | Gravado - Retiro por entrega a trabajadores |
GRAVADO_IVAP | 17 | Gravado - IVAP |
EXONERADO_ONEROSA | 20 | Exonerado - Operación Onerosa |
EXONERADO_GRATUITA | 21 | Exonerado - Transferencia gratuita |
INAFECTO_ONEROSA | 30 | Inafecto - Operación Onerosa |
INAFECTO_BONIFICACION | 31 | Inafecto - Retiro por Bonificación |
INAFECTO_RETIRO | 32 | Inafecto - Retiro |
INAFECTO_MUESTRAS_MEDICAS | 33 | Inafecto - Retiro por Muestras Médicas |
INAFECTO_CONVENIO_COLECTIVO | 34 | Inafecto - Retiro por Convenio Colectivo |
INAFECTO_PREMIO | 35 | Inafecto - Retiro por premio |
INAFECTO_PUBLICIDAD | 36 | Inafecto - Retiro por publicidad |
INAFECTO_GRATUITA | 37 | Inafecto - Transferencia gratuita |
EXPORTACION | 40 | Exportación de Bienes o Servicios |
Catálogo Nro. 08 - Código de Tipos de Sistema de Cálculo del ISC
Para este catálogo se ha definido la clase de nombre TipoSistemaIsc
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del tipo de sistema de cálculo
const { TipoSistemaIsc } = require('sunat-catalogs');
const documento = new TipoSistemaIsc(TipoSistemaIsc.SISTEMA_VALOR);
console.log(documento.descripcion());
// Resultado: Sistema al valor
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
SISTEMA_VALOR | 01 | Sistema al valor |
APLICACION_MONTO_FIJO | 02 | Aplicación del monto fijo |
SISTEMA_PRECIO_PUBLICO | 03 | Sistema de precios de venta al público |
Catálogo Nro. 09 - Códigos de Tipo de Nota de Crédito
Para este catálogo se ha definido la clase de nombre TipoNotaCredito
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del tipo de nota de crédito
const { TipoNotaCredito } = require('sunat-catalogs');
const nc = new TipoNotaCredito(TipoNotaCredito.ANULACION_OPERACION);
console.log(nc.descripcion());
// Resultado: Anulación de la operación
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
ANULACION_OPERACION | 01 | Anulación de la operación |
ANULACION_ERROR_RUC | 02 | Anulación por error en el RUC |
CORRECCION_ERROR_DESCRIPCION | 03 | Corrección por error en la descripción |
DESCUENTO_GLOBAL | 04 | Descuento global |
DESCUENTO_ITEM | 05 | Descuento por ítem |
DEVOLUCION_TOTAL | 06 | Devolución total |
DEVOLUCION_ITEM | 07 | Devolución por ítem |
BONIFICACION | 08 | Bonificación |
DISMINUCION_VALOR | 09 | Disminución en el valor |
OTROS_CONCEPTOS | 10 | Otros Conceptos |
AJUSTES_OPERACION_EXPORTACION | 11 | Ajustes de operaciones de exportación |
AJUSTES_AFECTOS_IVAP | 12 | Ajustes afectos al IVAP |
Catálogo Nro. 10 - Códigos de Tipo de Nota de Débito
Para este catálogo se ha definido la clase de nombre TipoNotaDebito
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del tipo de nota de débito
const { TipoNotaDebito } = require('sunat-catalogs');
const nd = new TipoNotaDebito(TipoNotaDebito.INTERESES_MORA);
console.log(nd.descripcion());
// Resultado: Intereses por mora
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
INTERESES_MORA | 01 | Intereses por mora |
AUMENTO_VALOR | 02 | Aumento en el valor |
PENALIDADES | 03 | Penalidades/ otros conceptos |
AJUSTES_OPERACION_EXPORTACION | 11 | Ajustes de operaciones de exportación |
AJUSTES_AFECTOS_IVAP | 12 | Ajustes afectos al IVAP |
Catálogo Nro. 12 - Código de Documentos Relacionados
Para este catálogo se ha definido la clase de nombre DocumentoRelacionado
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del documento relacionado
const { DocumentoRelacionado } = require('sunat-catalogs');
const documento = new DocumentoRelacionado(DocumentoRelacionado.FA_ANTICIPO);
console.log(documento.descripcion());
// Resultado: Factura - emitida por anticipos
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
FA_CORREGIR_RUC | 01 | Factura - emitida para corregir error en el RUC |
FA_ANTICIPO | 02 | Factura - emitida por anticipos |
BV_ANTICIPO | 03 | Boleta de Venta - emitida por anticipos |
TICKET_SALIDA_ENAPU | 04 | Ticket de Salida - ENAPU |
CODIGO_SCOP | 05 | Código SCOP |
OTROS | 99 | Otros |
Catálogo Nro. 16 - Código de Tipo de Precio de Venta (TipoPrecioVenta)
Para este catálogo se ha definido la clase de nombre DocumentoRelacionado
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del documento relacionado
const { DocumentoRelacionado } = require('sunat-catalogs');
const documento = new DocumentoRelacionado(DocumentoRelacionado.FA_ANTICIPO);
console.log(documento.descripcion());
// Resultado: Factura - emitida por anticipos
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
PRECIO_UNITARIO | 01 | Precio unitario (incluye el IGV) |
VALOR_REFERENCIAL_UNITARIO | 02 | Valor referencial unitario en operaciones no onerosas (Gratuitas) |
TARIFAS_REGULADAS | 03 | Tarifas reguladas |
Catálogo Nro. 19 - Código de Estado del Ítem
Para este catálogo se ha definido la clase de nombre EstadoItem
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del estado de ítem
const { EstadoItem } = require('sunat-catalogs');
const estado = new EstadoItem(EstadoItem.ADICIONAR);
console.log(estado.descripcion());
// Resultado: Adicionar
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
ADICIONAR | 1 | Adicionar |
MODIFICAR | 2 | Modificar |
ANULADO | 3 | Anulado |
Catálogo Nro. 22 - Código de Regimen de Percepciones
Para este catálogo se ha definido la clase de nombre RegimenPercepcion
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción de la percepcióntasa()
- Permite obtener la tasa de percepción
const { RegimenPercepcion } = require('sunat-catalogs');
const percepcion = new RegimenPercepcion(RegimenPercepcion.VENTA_INTERNA);
console.log(percepcion.descripcion());
// Resultado: Percepción venta interna
console.log(percepcion.tasa());
// Resultado: 2.00
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
VENTA_INTERNA | 01 | Percepción venta interna |
ADQUISICION_COMBUSTIBLE | 02 | Percepción a la adquisición de combustible |
TASA_ESPECIAL | 03 | Percepción realizada al agente de percepción con tasa especial |
Catálogo Nro. 23 - Código de Regimen de Retenciones
Para este catálogo se ha definido la clase de nombre RegimenRetencion
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción de la retencióntasa()
- Permite obtener la tasa de retención
const { RegimenRetencion } = require('sunat-catalogs');
const retencion = new RegimenRetencion(RegimenRetencion.TASA_3);
console.log(retencion.descripcion());
// Resultado: Tasa 3%
console.log(retencion.tasa());
// Resultado: 3.00
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
TASA_3 | 01 | Tasa 3% |
TASA_6 | 02 | Tasa 6% |
Catálogo Nro. 51 - Códigos de Tipo de Operación
Para este catálogo se ha definido la clase de nombre TipoOperacion
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del tipo de operación
const { TipoOperacion } = require('sunat-catalogs');
const operacion = new TipoOperacion(TipoOperacion.VENTA_INTERNA);
console.log(operacion.descripcion());
// Resultado: Venta interna
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
VENTA_INTERNA | 0101 | Venta interna |
VENTA_INTERNA_GASTOS_DEDUCIBLES | 0112 | Sustenta gastos deducibles PPNN |
VENTA_INTERNA_NRUS | 0113 | NRUS |
EXPORTACION_BIENES | 0200 | Exportación de Bienes |
EXPORTACION_SERVICIOS_INTEGRAMENTE_PAIS | 0201 | Prestación servicios realizados íntegramente en el país |
EXPORTACION_SERVICIOS_HOSPEDAJE_NO_DOMICILIADO | 0202 | Prestación de servicios de hospedaje no domiciliado |
EXPORTACION_SERVICIOS_TRANSPORTE_NAVIERAS | 0203 | Transporte de navieras |
EXPORTACION_SERVICIOS_NAVES_AERONAVES_EXTRANJERAS | 0204 | Servicios a naves y aeronaves de bandera extranjera |
EXPORTACION_SERVICIOS_PAQUETE_TURISTICO | 0205 | Servicios que conformen un paquete turístico |
EXPORTACION_SERVICIOS_TRANSPORTE_CARGA | 0206 | Servicios complementarios al transporte de carga |
EXPORTACION_SERVICIOS_SUMINISTRO_ELECTRICO_ZED | 0207 | Suministro de energía eléctrica domiciliados en ZED |
EXPORTACION_SERVICIOS_PARCIALMENTE_EXTRANJERO | 0208 | Prestación servicios realizados parcialmente en el extranjero |
OPERACIONES_CARTA_PORTE_AEREO | 0301 | Operaciones con carta de porte aéreo |
OPERACIONES_TRANSPORTE_FERROVIARIO | 0302 | Operaciones de transporte ferroviario de pasajeros |
OPERACIONES_REGALIA_PETROLEO | 0303 | Operaciones de pago de regalía petrolera |
VENTA_NO_DOMICILIADA_NO_CALIFICA_EXPORTACION | 0401 | Ventas no domiciliados que no califican como exportación |
OPERACION_DETRACCION | 1001 | Operación sujeta a detracción |
OPERACION_DETRACCION_RECURSOS_HIDROBIOLOGICOS | 1002 | Recursos hidrobiológicos |
OPERACION_DETRACCION_TRANSPORTE_PASAJEROS | 1003 | Servicios de transporte pasajeros |
OPERACION_DETRACCION_TRANSPORTE_CARGA | 1004 | Servicios de transporte carga |
OPERACION_PERCEPCION | 2001 | Operación sujeta a percepción |
Catálogo Nro. 53 - Códigos de Cargos o Descuentos
Para este catálogo se ha definido la clase de nombre CargoDescuento
, la misma que cuenta con las siguientes funciones:
descripcion()
- Permite obtener la descripción del cargo o descuentoindicador()
- Permite saber si el código corresponde a un cargo (true) o un descuento (false)nivel()
- Permite obtener el nivel relacionado al código (item o global)esCargoDet()
- Determina si corresponde a un cargo por detalle (true o false)esDescuentoDet()
- Determina si corresponde a un descuento por detalle (true o false)esCargoGlb()
- Determina si corresponde a un cargo global (true o false)esDescuentoGlb()
- Determina si corresponde a un descuento global (true o false)
const { CargoDescuento } = require('sunat-catalogs');
const operacion = new CargoDescuento(CargoDescuento.DCTOS_ITEM_AFECTA_BASE_IGV_IVAP);
console.log(operacion.descripcion());
// Resultado: Descuentos que afectan la base imponible del IGV/IVAP
En la siguiente tabla se describen las constantes disponibles:
Constante | Código | Descripción |
---|---|---|
DCTOS_ITEM_AFECTA_BASE_IGV_IVAP | 00 | Descuentos que afectan la base imponible del IGV/IVAP |
DCTOS_ITEM_NO_AFECTA_BASE_IGV_IVAP | 01 | Descuentos que no afectan la base imponible del IGV/IVAP |
DCTOS_GLOBAL_AFECTA_BASE_IGV_IVAP | 02 | Descuentos globales que afectan la base imponible del IGV/IVAP |
DCTOS_GLOBAL_NO_AFECTA_BASE_IGV_IVAP | 03 | Descuentos globales que no afectan la base imponible del IGV/IVAP |
CARGOS_ITEM_AFECTA_BASE_IGV_IVAP | 47 | Cargos que afectan la base imponible del IGV/IVAP |
CARGOS_ITEM_NO_AFECTA_BASE_IGV_IVAP | 48 | Cargos que no afectan la base imponible del IGV/IVAP |
CARGOS_GLOBAL_AFECTA_BASE_IGV_IVAP | 49 | Cargos globales que afectan la base imponible del IGV/IVAP |
CARGOS_GLOBAL_NO_AFECTA_BASE_IGV_IVAP | 50 | Cargos globales que no afectan la base imponible del IGV/IVAP |