# Registro de Compras y Ventas (/docs/impuestos)

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 [#leer-el-rcv]

```bash
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
```

```json
{
  "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 [#el-agregado]

```bash
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 [#forzar-una-sincronización]

Normalmente corre sola, según el `rcv_sync_frequency` de la empresa.

```bash
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 [#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 te lo decimos ahí, en la empresa, 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.

- [Caracterización](/docs/impuestos/caracterizacion): La escritura que decide si el IVA de una compra es recuperable.

- [F29](/docs/impuestos/f29): La propuesta, el código 048 y las barreras antes de declarar.

- [Tipo 46](/docs/impuestos/tipo-46): Servicios digitales extranjeros: gastos, sugerencias y conectores.
