Registro de Compras y Ventas
Cómo sincronizamos el RCV del SII, qué devuelve y qué pasa cuando el SII cambia algo por debajo.
Todo lo de este capítulo funciona con una sesión autenticada por certificado contra la zona de datos del propio SII.
No hay clave tributaria en Facturia
No la pedimos, no la guardamos y no la necesitamos. El certificado digital de la empresa es la credencial para todo: firmar DTE, mintear tokens del SII, leer el RCV y presentar acuses.
Leer el RCV
curl -G https://api.facturia.cl/v1/tax/purchases \
-H "Authorization: Bearer $FACTURIA_KEY" -H "Facturia-Empresa: $EMPRESA" \
-d period=2026-07 -d estado_contable=REGISTRO -d limit=100{
"object": "list",
"url": "/v1/tax/purchases",
"data": [
{
"id": "rcv_01K2RB7Q2M4X",
"object": "rcv_entry",
"direction": "purchase",
"period": "2026-07",
"tipo_dte": 33,
"folio": 8812,
"counterparty": { "rut": "96790240-3", "legal_name": "Proveedor Austral SpA" },
"issue_date": "2026-07-12",
"receipt_date": "2026-07-12",
"amounts": { "net": 450000, "exempt": 0, "iva": 85500, "iva_no_recuperable": 0, "other_taxes": 0, "total": 535500 },
"estado_contable": "REGISTRO",
"characterization": { "tipo_compra": "del_giro", "iva_uso_comun": false, "iva_no_recuperable_code": null },
"received_document_id": "rdoc_01K2R9M3D8V5QW7N",
"synced_at": "2026-08-14T06:12:03Z"
}
],
"has_more": true,
"next_cursor": "cur_01K2RB7Q2M4X",
"sync": { "last_synced_at": "2026-08-14T06:12:03Z", "status": "fresh", "period_closed": false }
}GET /v1/tax/sales es simétrico.
Filtros: period, tipo_dte, counterparty_rut, folio, estado_contable (REGISTRO,
PENDIENTE, NO_INCLUIR, RECLAMADO) e issue_date[gte|lte].
Mira siempre el bloque `sync`
sync.last_synced_at y sync.status te dicen qué tan viejos son los números que estás leyendo. Un
status: degraded significa que la sincronización con el SII está teniendo problemas — ver más
abajo.
El agregado
curl -G https://api.facturia.cl/v1/tax/summary \
-H "Authorization: Bearer $FACTURIA_KEY" -H "Facturia-Empresa: $EMPRESA" -d period=2026-07Es la vista de la que se calcula el F29.
Forzar una sincronización
Normalmente corre sola, según el rcv_sync_frequency de la empresa.
curl -X POST https://api.facturia.cl/v1/tax/sync \
-H "Authorization: Bearer $FACTURIA_KEY" -H "Facturia-Empresa: $EMPRESA" \
-H "Content-Type: application/json" -d '{"period":"2026-07"}'Devuelve 202 con un job. El evento tax.rcv.synced trae los conteos y una bandera changed.
La nota honesta sobre esta superficie
Trampa
El RCV no es un webservice publicado y versionado
El camino de lectura y escritura del RCV es el backend del propio portal del SII. Lo fijamos, lo
probamos con tests de contrato, y es la misma API que consume todo proveedor chileno — pero si el SII
la cambia, sync.status pasa a degraded y lo decimos en status.facturia.cl en vez de servirte
números viejos en silencio.
Diseña para eso: si tu cierre de período depende del RCV, mira sync.status antes de creerle a las
cifras.