Facturiadocs
Impuestos

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-07

Es 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.

En esta página