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- API REST tipada — todos los endpoints del SII expuestos con TypeScript types completos. IntelliSense en tu editor para cada parámetro.
- Cero dependencias — usa
fetchnativo de Node 18+. Bundle minimalista. - Reintentos automáticos — backoff exponencial en errores
429y5xx, respetaRetry-After. - Errores tipados —
RateLimitError,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.
| Necesitas… | Endpoint | Sección |
|---|---|---|
| Emitir facturas electrónicas (DTE 33/34) automáticamente | dte.emitir.factura | DTE |
| Anular un DTE con Nota de Crédito automática | dte.anular | Anular DTE |
| Emitir boletas de honorarios (BHE) | bhe.emisor.emitir | BHE |
| Emitir boletas de terceros (BTE) | bte.emitir | BTE |
| Descargar Registro de Compras y Ventas (RCV) | rcv.consultar | RCV |
| Consultar facturas recibidas por período | dte.recibidos.listar | DTE Recibidos |
| Descargar PDF de un DTE por folio | dte.consulta.pdf | DTE Consulta |
| Validar credenciales SII de tus clientes | auth.validar | Auth |
| Obtener datos del receptor para autocompletar | dte.receptor | DTE Otros |
| Consultar cesiones de factoring (factura cedida) | cesiones.consultar | Cesiones |
| Descargar Carpeta Tributaria del contribuyente | carpetaTributaria.consultar | Carpeta |
| Consultar el Formulario 22 (renta anual) | f22.consultar | F22 |
| Listar Declaraciones Juradas del año | dj.consultar | DJ |
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- 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
awaitclient.auth.validar({ rut, password });// { valid: true, rut: '12345678-5' }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 });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 });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 });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'});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.
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 });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 });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)// 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}],});// 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,});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>'});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',});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 });Información tributaria anual del contribuyente.
awaitclient.f22.consultar(2025,{ rut, password });awaitclient.carpetaTributaria.consultar({ rut, password });awaitclient.dj.consultar(2025,{ rut, password });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();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.
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 mensualconstclient=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});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.
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.
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.
El plan gratuito de BaseAPI.cl incluye 50 consultas mensuales a todos los endpoints. Existen planes pagos para mayor volumen.
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.
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.
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.
- Página oficial:baseapi.cl
- Documentación de la API:api.baseapi.cl/docs/client
- Código fuente:github.com/tecnologicachile/baseapi-sdk
Propietario — Copyright © Tecnológica Chile SpA. Todos los derechos reservados. El uso de este SDK requiere una API key activa de BaseAPI.cl.