SII
El SII (Servicio de Impuestos Internos de Chile) es una fuente activa de Nodda. Una conexión al SII sincroniza el RCV (Registro de Compras y Ventas), las guías de despacho y las boletas electrónicas, proyectando sus documentos a un formato consultable por API.
Scopes del SII
| Scope | Qué sincroniza |
|---|---|
rcv | Documentos del Registro de Compras y Ventas |
guias | Guías de despacho (consemitidos) |
boletas | Resumen diario de boletas electrónicas de venta (afecta y exenta) |
Habilítalos al crear la conexión (enabled_scopes) y elígelos al
gatillar un sync.
Modos de credencial
El SII soporta dos modos (configurados al crear la conexión en la plataforma):
portal_credentials— RUT + clave del portal SII.certificate— certificado digital (.pfx).
El material de certificado y las credenciales se cifran y nunca salen por la API ni se envían a componentes que no los necesiten.
Webhook de sync
Al terminar un sync, Nodda emite un webhook sync.succeeded (o sync.partial /
sync.failed). El sobre y la firma son genéricos; lo específico
del SII es data.scopeOutcomes[], con una entrada por scope sincronizado. Cada
entrada trae el scope y el period (YYYY-MM) que sincronizó, para que llames al
read endpoint con el período correcto:
- El scope
rcvcubre ambas direcciones (compras y ventas) en una sola entrada. Con superiod, lista los documentos:GET /connections/{id}/sii-rcv-documents?period=2026-05. - Si habilitas
guiasoboletas, cada uno emite su propia entrada enscopeOutcomes[]con superiod. - Itera
scopeOutcomes[]y actúa porscopesegún sustatus(ok/partial/failed). Elperiodviene incluso en outcomespartialofailed.
Scope rcv — RCV (Registro de Compras y Ventas)
Metadata de sync
Al gatillar un sync del scope rcv puedes pasar los siguientes parámetros en metadata:
| Parámetro | Tipo | Notas |
|---|---|---|
period | string | Período a sincronizar en formato YYYY-MM (p. ej. 2026-05) |
El scope
rcvsincroniza siempre ambas direcciones (receivedyissued) y todos los tipos de documento del SII.
Cobertura por estado contable
El scope rcv captura todos los estados contables de compras en cada
sincronización —tanto las programadas como las manuales—:
REGISTRO, PENDIENTE, NO_INCLUIR y RECLAMADO. Esto garantiza que ningún
documento queda fuera del historial independientemente de su casilla registral.
Las ventas se capturan siempre en estado REGISTRO.
El campo estado
Cada documento RCV expone el campo estado, que refleja el estadoContab
(casilla contable) asignado por el SII al momento de la sincronización:
| Valor | Descripción |
|---|---|
registro | Documento ingresado al libro de compras/ventas (estado normal) |
pendiente | Documento recibido pero aún no contabilizado |
no_incluir | Documento marcado para no incluir en el período |
reclamado | Documento reclamado ante el SII |
estado≠status: Son dos campos distintos.estadorepresenta la casilla contable en el RCV (en qué bolsillo registral está el documento).statusrepresenta el evento de acuse o reclamo sobre el DTE (p. ej.accept,claimed) tal como lo reporta la leyenda del SII. Un documento puede estar en estadoregistroy al mismo tiempo tenerstatus: "accept".
Listar documentos RCV
Lista los documentos RCV proyectados de una conexión, ordenados por la fecha de
emisión del documento (issued_at) descendente y paginados (50 por página por
defecto). Cada fila incluye
todos los campos de contenido del documento (montos, fechas, partes, estado…)
para que puedas procesar el listado sin una consulta por documento. El detalle
agrega además raw_row y los identificadores internos de trazabilidad.
| Query | Tipo | Notas |
|---|---|---|
period | string | período contable en formato YYYY-MM (p. ej. 2026-05) |
direction | string | received (compra) o issued (venta) |
estado | string | filtra por estado contable: registro, pendiente, no_incluir o reclamado |
from | string | fecha mínima de emisión YYYY-MM-DD |
to | string | fecha máxima de emisión YYYY-MM-DD |
limit | number | máximo de documentos a devolver (por defecto 50, máximo 200) |
offset | number | documentos a omitir para paginar (por defecto 0) |
Respuesta (200):
Los documentos se ordenan por la fecha de emisión del documento (
issued_at, descendente; los documentos sin fecha quedan al final), desempatando por tipo y folio (orden numérico), y finalmente porcreated_at.has_moreindica si existen más páginas. Cuandooffsetes mayor o igual atotal(paginando más allá del final),totalse reporta como0.
Campos de un documento RCV
Cada fila del listado expone estos campos de contenido del documento:
| Campo | Tipo | Notas |
|---|---|---|
id | UUID | identificador del documento en Nodda |
period | string | período contable YYYY-MM |
direction | string | received (compra) · issued (venta) |
document_type | string | código de tipo de documento del SII (p. ej. 33 factura, 34 exenta, 61 nota de crédito) |
folio | string | folio asignado por el SII |
issuer_rut | string | null | RUT del emisor |
issuer_name | string | null | razón social del emisor |
receiver_rut | string | null | RUT del receptor |
receiver_name | string | null | razón social del receptor |
issued_at | datetime | null | fecha de emisión |
received_at | datetime | null | fecha de recepción registrada en el SII |
net_amount | string | null | monto neto (decimal como string, 2 decimales) |
exempt_amount | string | null | monto exento (decimal como string, 2 decimales) |
vat_amount | string | null | IVA (decimal como string, 2 decimales) |
total_amount | string | null | monto total (decimal como string, 2 decimales) |
currency | string | moneda del documento (por defecto CLP) |
estado | string | casilla contable en el RCV: registro · pendiente · no_incluir · reclamado |
status | string | null | evento de acuse/reclamo sobre el DTE (p. ej. accept, claimed) |
referenced_document_type | string | null | tipo de documento referenciado (p. ej. en una nota de crédito) |
referenced_folio | string | null | folio referenciado |
acknowledged_at | datetime | null | fecha de acuse de recibo |
claimed_at | datetime | null | fecha de reclamo |
transaction_type | string | null | tipo de transacción declarado en el RCV |
created_at | datetime | null | cuándo Nodda proyectó esta fila |
Los montos se serializan como string para no perder precisión decimal. Filtros combinables con AND.
perioddebe ser exactamenteYYYY-MM;directionsoloreceivedoissued;estadosoloregistro,pendiente,no_incluiroreclamado. Valores fuera de rango responden400 validation_error. Si la conexión no existe en tu organización →404 connection_not_found.
El detalle (
/sii-rcv-documents/{document_id}) devuelve estos mismos campos y ademásraw_row(el JSON crudo del SII) y los identificadores internos de trazabilidad:connection_id,sync_run_id,raw_payload_idysource_document_id.
Obtener un documento RCV
Devuelve un documento RCV individual con los mismos campos de contenido del listado
y además raw_row (el JSON crudo de la fila tal como la entregó el SII) y los
identificadores internos de trazabilidad (connection_id, sync_run_id,
raw_payload_id, source_document_id). document_id es el UUID del documento en
Nodda (campo id del listado).
Respuesta (200):
Un
document_idcon formato inválido responde400 validation_error. Si el documento no existe en tu organización →404 rcv_document_not_found; si la conexión no existe →404 connection_not_found.
Períodos disponibles (RCV)
Devuelve la lista de períodos YYYY-MM que tienen al menos un documento RCV proyectado.
Respuesta (200):
Scope guias — Guías de despacho
Metadata de sync
Al gatillar un sync del scope guias puedes pasar los siguientes parámetros en metadata:
| Parámetro | Tipo | Notas |
|---|---|---|
period | string | Período a sincronizar en formato YYYY-MM |
issueType | string | issued o received (opcional) |
Listar guías de despacho
Lista las guías de despacho proyectadas de una conexión, ordenadas por fecha de creación descendente y paginadas (50 por página por defecto).
| Query | Tipo | Notas |
|---|---|---|
period | string | período contable en formato YYYY-MM |
direction | string | received o issued |
from | string | fecha mínima de emisión YYYY-MM-DD |
to | string | fecha máxima de emisión YYYY-MM-DD |
q | string | búsqueda libre por texto (razón social, folio, RUT) |
limit | number | máximo de registros a devolver (por defecto 50, máximo 200) |
offset | number | registros a omitir para paginar (por defecto 0) |
Respuesta (200):
Obtener una guía de despacho
Devuelve una guía individual con todos sus campos, incluido raw_row.
Respuesta (200):
Períodos disponibles (guías)
Respuesta (200):
Scope boletas — Boletas electrónicas
Resumen diario de boletas electrónicas de venta. A diferencia del RCV, el SII
no expone las boletas folio a folio: solo entrega un agregado por día y por tipo de
documento. Cada fila representa un día; en cada sincronización se actualiza (no
se duplica), y el campo updated_at indica cuán reciente es el dato. El historial
de cada sincronización queda íntegro en los payloads crudos.
Tipos de documento incluidos: 39 (boleta electrónica afecta) y 41
(boleta exenta electrónica). Son siempre de venta.
Metadata de sync
Al gatillar un sync del scope boletas puedes pasar los siguientes parámetros en metadata:
| Parámetro | Tipo | Notas |
|---|---|---|
period | string | Período a sincronizar en formato YYYY-MM. Por defecto, el período tributario actual |
Listar boletas diarias
Lista el resumen diario de boletas de una conexión, ordenado por fecha descendente y paginado (50 por página por defecto).
| Query | Tipo | Notas |
|---|---|---|
period | string | período en formato YYYY-MM |
document_type | string | 39 (afecta) o 41 (exenta) |
from | string | fecha mínima YYYY-MM-DD |
to | string | fecha máxima YYYY-MM-DD |
limit | number | máximo de filas a devolver (por defecto 50, máximo 200) |
offset | number | filas a omitir para paginar (por defecto 0) |
Respuesta (200):
Campos de una boleta diaria
| Campo | Tipo | Notas |
|---|---|---|
id | UUID | identificador de la fila diaria en Nodda |
period | string | período YYYY-MM |
document_type | string | 39 boleta afecta · 41 boleta exenta |
day | number | día del mes (1–31) |
date | datetime | null | fecha del día (medianoche UTC) |
total_documentos | number | null | cantidad de boletas de venta de ese día |
net_amount | string | null | monto neto (decimal como string, 2 decimales) |
exempt_amount | string | null | monto exento |
vat_amount | string | null | IVA |
total_amount | string | null | monto total |
channel | string | null | canal de transacción reportado por el SII |
updated_at | datetime | null | última vez que la fila se refrescó en una sincronización |
Filtros combinables con AND.
perioddebe ser exactamenteYYYY-MMydocument_typesolo39o41; otros valores responden400 validation_error. Si la conexión no existe en tu organización →404 connection_not_found.
Períodos disponibles (boletas)
Devuelve la lista de períodos YYYY-MM que tienen al menos una boleta diaria proyectada.
Respuesta (200):