Consultar con el SDK
Instala @emisso/connect, guarda tu clave y tu conexión en un .env y lee el registro de ventas del SII de una empresa con un programa corto. Con demo animada del editor y la terminal.
Con el SDK, tu propio programa lee lo que Connect sincronizó: instalas un paquete, guardas tu clave de API y el ID de la conexión de tu empresa, y llamas a la consulta que necesitas. En esta guía, las ventas de un mes según el registro del SII.
La demo de abajo escribe el programa completo y lo corre, con datos de ejemplo y la clave enmascarada. Puedes pausarla, verla otra vez o tomar el control con «Probarlo yo» y correr tú los comandos. No consulta nada y no sale de tu navegador.
Demo · datos de ejemplo, la clave va enmascarada
- Instala el SDK
- Guarda tu clave en un archivo .env
- Agrega la conexión de la empresa
- Escribe el programa
- Córrelo
5 pasos
Pulsa «Reproducir» para ver el recorrido completo.
Antes de empezar
- Node 22 o más nuevo. Revisa tu versión con
node --version. - Una clave de API. Créala en API keys; el perfil «Solo lectura» alcanza. El texto de la clave se muestra una sola vez.
- Una empresa conectada con datos. Si todavía no la conectas, sigue la guía del SII. Después Connect sincroniza solo.
Los pasos
1. Instala el SDK
En la carpeta de tu proyecto:
npm install @emisso/connect2. Guarda tu clave en un archivo .env
Crea un archivo .env en la misma carpeta y pega tu clave en EMISSO_CONNECT_API_KEY. Agrega .env a tu
.gitignore: con esa clave se leen todas las empresas conectadas de tu organización.
3. Agrega la conexión de la empresa
La conexión es la empresa. Copia su ID, el que empieza con conn_, desde
Conexiones en el panel: está en la fila de la conexión y en su
detalle. Pégalo en EMISSO_CONNECTION_ID. El .env queda así, con tus valores en lugar de los puntos:
EMISSO_CONNECT_API_KEY=connect_sk_••••••••
EMISSO_CONNECTION_ID=conn_••••••••El programa no busca la conexión por su nombre: Connect nombra cada conexión como su sistema («SII», «SII 2»), no como la empresa, así que el ID es la forma segura de elegirla.
4. Escribe el programa
Crea ventas.mjs. Llama a sii.rcv.consultar con el mes y la conexión, y lee lo que Connect ya
sincronizó, sin entrar al SII. Pide página por página hasta que cursor vuelve en null, y si
sincronizacion viene en null se detiene: ese mes no está cargado, que no es lo mismo que un mes sin
ventas.
import { createClient } from "@emisso/connect";
const connect = createClient({ apiKey: process.env.EMISSO_CONNECT_API_KEY });
// La conexión es la empresa: su ID está en Conexiones, en el panel.
const connectionId = process.env.EMISSO_CONNECTION_ID;
// Las ventas de julio de 2026, ya sincronizadas, página por página.
const pesos = new Intl.NumberFormat("es-CL", {
style: "currency",
currency: "CLP",
});
let cursor;
do {
const pagina = await connect.tools.sii.rcv.consultar(
{ periodo: "2026-07", perspectiva: "ventas", cursor },
{ connectionId },
);
// sincronizacion en null: ese mes no está cargado, no es un mes sin ventas.
if (pagina.sincronizacion === null) {
throw new Error("Ese mes todavía no está sincronizado en Connect.");
}
for (const doc of pagina.documentos) {
const monto = pesos.format(doc.montoTotal);
console.log(`${doc.razonSocial} · folio ${doc.folio} · ${monto}`);
}
cursor = pagina.cursor;
} while (cursor);5. Córrelo
--env-file hace que Node lea el .env sin instalar nada más:
node --env-file=.env ventas.mjsConstructora Los Robles Ltda · folio 4712 · $1.487.500
Ferretería El Volcán SpA · folio 4718 · $571.200Para leer otro mes, cambia periodo. Para otro dato, cambia la herramienta: la
referencia tiene cada una con sus campos y un ejemplo.
Si algo falla
«createClient requires apiKey» o «unauthorized»
El primero dice que Node no leyó la clave: corre el programa con --env-file=.env y revisa que en el .env
se llame EMISSO_CONNECT_API_KEY. El segundo, que la clave llegó y no sirve: revisa que la copiaste
completa, o crea otra. Si se publicó por error, rótala en API keys.
«validation_error» que pide el connectionId
El programa no encontró EMISSO_CONNECTION_ID en el .env. Revisa el nombre y que el ID empiece con
conn_.
«Ese mes todavía no está sincronizado en Connect»
La conexión no tiene cargado ese mes. Revisa en el panel qué meses tiene la conexión antes de concluir que no hubo ventas.
No imprime nada
El mes está cargado y no tiene facturas ni notas de venta. Las boletas (39) y los comprobantes de pago con
tarjeta (48) no vienen documento por documento: están en sii.rcv_totales.consultar.
La versión del SDK publicada en npm ya trae sii.rcv.consultar. Para saber qué cubre cada versión, mira
SDK de TypeScript.
Siguiente paso
- SDK de TypeScript: las opciones del cliente, los errores, los reintentos y la idempotencia.
- Sincronizar y consultar: por qué leer datos reales son dos pasos.
- Consultar con la API: el mismo programa sin el SDK, con
fetch. - Consultar con Claude: la misma consulta, preguntándole a un agente.
Consultar con la API
Lee el registro de ventas del SII de una empresa con una llamada HTTP y tu clave de API, sin instalar nada. Con demo animada del editor y la terminal, y la misma llamada con curl.
Emitir en el SII
Emite facturas 33 y 34, boletas 39 y 41, guías 52 y notas 56/61, y anula facturas con nota de crédito ante el SII por API, MCP o SDK. Una conexión con emisión usa US$25 al mes del plan, en vez de US$10.