Skip to content

Repository files navigation

baseapi-cl — SDK oficial para integrar el SII de Chile en Node.js

npm versionnpm downloadsbundle sizetypes included

SDK oficial en TypeScript para BaseAPI.cl — la API de automatización del Servicio de Impuestos Internos (SII) de Chile. Emite facturas electrónicas (DTE), boletas de honorarios (BHE), boletas de terceros (BTE), consulta el Registro de Compras y Ventas (RCV), descarga la carpeta tributaria, declaraciones juradas (DJ), Formulario 22 y más, con una sola línea de código desde Node.js.

npm install baseapi-cl

¿Por qué usar este SDK?

  • API REST tipada — todos los endpoints del SII expuestos con TypeScript types completos. IntelliSense en tu editor para cada parámetro.
  • Cero dependencias — usa fetch nativo de Node 18+. Bundle minimalista.
  • Reintentos automáticos — backoff exponencial en errores 429 y 5xx, respeta Retry-After.
  • Errores tipadosRateLimitError, AuthenticationError, ValidationError, etc.
  • ESM + CJS — funciona en proyectos modernos y legacy.
  • Producción — usado por contadores, ERPs, plataformas SaaS, e-commerce y fintechs en Chile.

Casos de uso

Necesitas…EndpointSección
Emitir facturas electrónicas (DTE 33/34) automáticamentedte.emitir.facturaDTE
Anular un DTE con Nota de Crédito automáticadte.anularAnular DTE
Emitir boletas de honorarios (BHE)bhe.emisor.emitirBHE
Emitir boletas de terceros (BTE)bte.emitirBTE
Descargar Registro de Compras y Ventas (RCV)rcv.consultarRCV
Consultar facturas recibidas por períododte.recibidos.listarDTE Recibidos
Descargar PDF de un DTE por foliodte.consulta.pdfDTE Consulta
Validar credenciales SII de tus clientesauth.validarAuth
Obtener datos del receptor para autocompletardte.receptorDTE Otros
Consultar cesiones de factoring (factura cedida)cesiones.consultarCesiones
Descargar Carpeta Tributaria del contribuyentecarpetaTributaria.consultarCarpeta
Consultar el Formulario 22 (renta anual)f22.consultarF22
Listar Declaraciones Juradas del añodj.consultarDJ

Quick start

importBaseAPIfrom'baseapi-cl';constclient=newBaseAPI('sk_tu_api_key');// tu API key de baseapi.cl// 1. Validar credenciales SIIawaitclient.auth.validar({rut: '12345678-5',password: 'clave_sii'});// 2. Consultar RCV de compras del mesconstcompras=awaitclient.rcv.consultar('2026-03','compra',{rut: '12345678-5',password: 'clave_sii',});console.log(`${compras.totalRegistros} documentos recibidos`);// 3. Emitir una factura electrónica afecta (tipo 33)constfactura=awaitclient.dte.emitir.factura({rut: '12345678-5',password: 'clave_sii',rut_empresa: '76123456-7',clave_certificado: 'clave_cert',receptor: {rut: '76543210-3'},items: [{nombre: 'Servicio mensual',cantidad: 1,precio: 100000}],descargar_pdf: true,});console.log(`Folio ${factura.folio} - Total $${factura.totales?.total}`);// Folio 1109 - Total $119000

Requisitos

  • Node.js >= 18
  • API key de baseapi.cl (plan gratuito disponible — 50 consultas/mes a todos los endpoints)
  • Credenciales SII del contribuyente (RUT + clave) y, para emisión de DTE, certificado digital con clave

Endpoints disponibles

Auth

awaitclient.auth.validar({ rut, password });// { valid: true, rut: '12345678-5' }

Contribuyente

Información tributaria del contribuyente, situación pública, datos de receptor para autocompletar facturación.

awaitclient.contribuyente.informacion({ rut, password });awaitclient.contribuyente.situacionTributaria({ rut });// sin authawaitclient.contribuyente.datosReceptor({ rut, password, rut_receptor });

RCV (Registro de Compras y Ventas)

Descarga el detalle del libro de compras/ventas registrado en el SII, con cache automático para periodos pasados.

awaitclient.rcv.consultar('2026-03','compra',{ rut, password });awaitclient.rcv.consultar('2026-03','venta',{ rut, password });awaitclient.rcv.anual(2025,'compra',{ rut, password });awaitclient.rcv.boletasDiarias('2026-03',{ rut, password });awaitclient.rcv.boletasDetalle('2026-03',{ rut, password });awaitclient.rcv.pendientes('2026-03',{ rut, password });

BHE (Boletas de Honorarios)

Emisión, anulación, consulta y descarga de PDF de Boletas de Honorarios Electrónicas.

// Receptor (BHE recibidas)awaitclient.bhe.receptor.pdf(2026,3,'123',{ rut, password, rut_emisor });// Emisorawaitclient.bhe.emisor.listar(2026,3,{ rut, password });awaitclient.bhe.emisor.emitir({
rut, password,tipo_retencion: 1,// 1 = retención cliente, 2 = retención emisorrut_destinatario: '76543210-3',domicilio_destinatario: 'Av. Principal 123',cod_region: '13',cod_comuna: '13101',prestaciones: [{descripcion: 'Asesoría',valor: 500000}],});awaitclient.bhe.emisor.anular({ rut, password,folio: '123'});awaitclient.bhe.emisor.pdf(2026,3,'123',{ rut, password });

BTE (Boletas de Terceros)

Emisión y consulta de Boletas de Terceros (retención de impuestos por servicios prestados a personas naturales).

awaitclient.bte.listar(2025,{ rut, password });awaitclient.bte.emitidas(2025,3,{ rut, password, rut_empresa });awaitclient.bte.emitir({
rut, password, rut_empresa,rut_beneficiario: '12345678-5',nombre_beneficiario: 'Juan Perez Gonzalez',servicio: 'Consultoria',monto: 500000,});awaitclient.bte.anular({ rut, password, rut_empresa,folio: '12'});

DTE (Documentos Tributarios Electrónicos)

Cobertura completa del flujo de facturación electrónica: emisión, consulta, anulación, notas de crédito, notas de débito, validación y previsualización.

Consulta

awaitclient.dte.consulta.listar('2026-03',{ rut, password, rut_empresa });awaitclient.dte.consulta.folio('2026-03',12345,{ rut, password, rut_empresa });awaitclient.dte.consulta.pdf(12345,{ rut, password, rut_empresa });

Recibidos

awaitclient.dte.recibidos.listar('2026-03',{ rut, password, rut_empresa });awaitclient.dte.recibidos.folio('2026-03',12345,{ rut, password, rut_empresa });awaitclient.dte.recibidos.pdf(12345,{ rut, password, rut_empresa });

Emisión

constparams={
rut, password, clave_certificado, rut_empresa,receptor: {rut: '76543210-3'},items: [{nombre: 'Servicio profesional',cantidad: 1,precio: 100000}],};awaitclient.dte.preview.factura(params);// borrador sin firmarawaitclient.dte.emitir.factura(params);// factura afecta (tipo 33)awaitclient.dte.emitir.facturaExenta(params);// factura exenta (tipo 34)awaitclient.dte.emitir.guiaDespacho({ ...params,tipo_traslado: 1});// guía despacho (tipo 52)

Anulación / Notas de Crédito / Notas de Débito

// Anular un DTE (genera Nota de Crédito de anulación automática)awaitclient.dte.anular({
rut, password, clave_certificado, rut_empresa,folio_referencia: 1108,tipo_dte_original: 33,});// Nota de Crédito por corrección de montosawaitclient.dte.notaCredito.montos({
rut, password, clave_certificado, rut_empresa,folio_referencia: 1108,items: [{nombre: 'Servicio corregido',cantidad: 1,precio: 50000}],});// Nota de Crédito por corrección de texto (giro, dirección, etc.)awaitclient.dte.notaCredito.texto({
rut, password, clave_certificado, rut_empresa,folio_referencia: 1108,giro: 'NUEVO GIRO',});// Nota de Débito (corrección al alza)awaitclient.dte.notaDebito({
rut, password, clave_certificado, rut_empresa,folio_referencia: 1108,items: [{nombre: 'Diferencia',cantidad: 1,precio: 25000}],});

Validación

// Validar el DTO localmente sin tocar el SIIawaitclient.dte.validar({receptor: {rut: '76543210-3'},items: [{nombre: 'Test',cantidad: 1,precio: 100}],});// Verificar validez de un DTE ya emitidoawaitclient.dte.validez({
rut, password,rut_emisor: '76123456-7',tipo_dte: 33,folio: 1108,});

Otros

awaitclient.dte.receptor('76543210-3',{ rut, password, rut_empresa });awaitclient.dte.emisor({ rut, password, rut_empresa });awaitclient.dte.tipos();awaitclient.dte.xmlToPdf({xml: '<DTE>...</DTE>'});

Cesiones

Consulta de cesiones electrónicas (factoring) por rol: cedente, cesionario o deudor.

awaitclient.cesiones.consultar({
rut, password,tipo_consulta: 'cedente',desde: '2026-01-01',hasta: '2026-03-31',});

Honorarios

Consulta agregada de boletas de honorarios por año o por mes.

awaitclient.honorarios.anual(2026,{ rut, password });awaitclient.honorarios.consultar(2026,3,{ rut, password });

F22 / Carpeta Tributaria / DJ

Información tributaria anual del contribuyente.

awaitclient.f22.consultar(2025,{ rut, password });awaitclient.carpetaTributaria.consultar({ rut, password });awaitclient.dj.consultar(2025,{ rut, password });

Datos auxiliares (sin credenciales)

Catálogos públicos de regiones, comunas, tipos de retención y tipos de traslado.

awaitclient.datos.regiones();awaitclient.datos.comunas('13');awaitclient.datos.todasLasComunas();awaitclient.datos.buscarComuna('providencia');awaitclient.datos.tiposRetencion();awaitclient.datos.tiposTraslado();

Manejo de errores

importBaseAPIfrom'baseapi-cl';try{awaitclient.rcv.consultar('2026-03','compra',{ rut, password });}catch(e){if(einstanceofBaseAPI.RateLimitError){console.log(`Limite excedido. Reintentar en ${e.retryAfter}s`);}elseif(einstanceofBaseAPI.AuthenticationError){console.log('API key invalida');}elseif(einstanceofBaseAPI.PermissionError){console.log('Endpoint no incluido en tu plan');}elseif(einstanceofBaseAPI.ValidationError){console.log('Parametros invalidos:',e.message);}elseif(einstanceofBaseAPI.ConnectionError){console.log('Error de red');}}

El SDK reintenta automáticamente errores 429 (Too Many Requests) y 5xx con backoff exponencial.

Rate limits

awaitclient.rcv.consultar('2026-03','compra',{ rut, password });constlimits=client.rateLimitInfo;console.log(limits.remaining);// requests restantes por minutoconsole.log(limits.planRemaining);// requests restantes del plan mensual

Configuración

constclient=newBaseAPI('sk_tu_api_key',{baseUrl: 'https://api.baseapi.cl/api/v1',// defaulttimeout: 120000,// 2 min — el SII puede ser lentomaxRetries: 2,// reintentos en 429/5xx});

Preguntas frecuentes

¿Necesito un certificado digital?

Solo para emisión de DTE (facturas, notas de crédito, notas de débito, guías de despacho). Para consultas (RCV, DTE recibidos, BHE recibidas, contribuyente, etc.) basta con RUT + clave SII.

¿Funciona con cualquier RUT empresa?

Sí, mientras la empresa esté habilitada en el portal de Facturación Electrónica MiPyme del SII. El SDK automatiza ese portal — empresas con sistema propio (con el mercado, OnlinerR, Defontana, etc.) deben usar las APIs de su proveedor.

¿Se puede usar en Next.js / Vercel / AWS Lambda?

Sí. Compatible con cualquier runtime Node.js >= 18. ESM y CJS soportados. Funciona en serverless si el timeout de la función es >= 120s para emisión.

¿Cuánto cuesta?

El plan gratuito de BaseAPI.cl incluye 50 consultas mensuales a todos los endpoints. Existen planes pagos para mayor volumen.

¿Puedo usarlo desde el navegador (browser)?

No. El SDK requiere Node.js. Las credenciales SII no deben enviarse desde el frontend. Llama el SDK desde tu backend (API route, Lambda, edge function) y expone tu propia API a tu frontend.

¿Soporta sandbox para pruebas?

Sí. RUT 11111111-1 es el sandbox de baseapi.cl: emite folios mock sin tocar el SII real. Útil para CI/CD y desarrollo local.

¿Es oficial del SII?

No. BaseAPI.cl es un servicio independiente que automatiza el portal público del SII (no usa APIs internas no documentadas del SII). El SII no provee API REST oficial para muchas operaciones; este SDK llena ese vacío.

Documentación completa

Licencia

Propietario — Copyright © Tecnológica Chile SpA. Todos los derechos reservados. El uso de este SDK requiere una API key activa de BaseAPI.cl.

About

SDK oficial TypeScript para integrar el SII de Chile en Node.js — facturas electrónicas (DTE), boletas de honorarios (BHE), boletas de terceros (BTE), RCV, cesiones, F22 y más

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages