Facturiadocs
Tax

Characterization

The write that decides whether the IVA on a purchase is recoverable, shared-use or not recoverable at all — and why doing it through an API is a real advantage.

Caracterización — characterizing an entry in the RCV, the registro de compras y ventas that the SII (Chile's tax authority) keeps for you — decides how a purchase lands in your F29, the monthly IVA return: whether its IVA is recoverable, shared-use, or not recoverable at all. It is a write against the SII's own register, and one of the few tax actions where being programmatic is a genuine advantage — accounting software knows the answer; a person clicking through a grid in a portal does not.

One entry

curl -X POST https://api.facturia.cl/v1/tax/purchases/rcv_01K2RB7Q2M4X/characterize \
  -H "Authorization: Bearer $FACTURIA_KEY" -H "Facturia-Empresa: $EMPRESA" \
  -H "Idempotency-Key: $(uuidgen)" -H "Content-Type: application/json" \
  -d '{"tipo_compra":"activo_fijo"}'

In bulk

Up to 500 entries per call.

curl -X POST https://api.facturia.cl/v1/tax/purchases/characterize \
  -H "Authorization: Bearer $FACTURIA_KEY" -H "Facturia-Empresa: $EMPRESA" \
  -H "Idempotency-Key: $(uuidgen)" -H "Content-Type: application/json" \
  -d '{
    "entries": [
      { "id": "rcv_01K2RB7Q2M4X", "tipo_compra": "del_giro" },
      { "id": "rcv_01K2RB8W1N7Y", "tipo_compra": "iva_uso_comun" },
      { "id": "rcv_01K2RB9E5P2Z", "tipo_compra": "no_recuperable", "iva_no_recuperable_code": 3 }
    ]
  }'

The five values

tipo_compraMeaning
del_giroOrdinary purchase for the line of business; IVA fully recoverable
supermercadoSupermarket or similar, with its statutory limits
activo_fijoFixed asset
iva_uso_comunShared between taxed and exempt activity; proportional credit
no_recuperableIVA not recoverable; iva_no_recuperable_code says why

iva_no_recuperable_code is required when tipo_compra is no_recuperable.

Estado contable

You can also move an entry between REGISTRO, PENDIENTE and NO_INCLUIR:

curl -X POST https://api.facturia.cl/v1/tax/purchases/rcv_01K2RB7Q2M4X/estado_contable \
  -H "Authorization: Bearer $FACTURIA_KEY" -H "Facturia-Empresa: $EMPRESA" \
  -H "Content-Type: application/json" \
  -d '{"estado_contable":"NO_INCLUIR"}'

Trap

Characterizing invalidates the period's F29 proposal

Changing a characterization recomputes that period's proposal and fires tax.f29.proposal.updated. If your flow was "read proposal → show → file" and somebody characterized in between, the confirm_total_payable you had on screen no longer matches and the filing will fail with 422 f29_amount_confirmation_mismatch.

That is not a bug: it is the guardrail working. Read the proposal again before you file.

Why this matters more than it looks

Badly characterized entries, or entries sitting in PENDIENTE, are the number one reason an F29 proposal doesn't square with what the accountant expects. The proposal reports them explicitly in observations[]:

"observations": [
  { "code": "rcv_pendientes", "severity": "warning", "message": "3 documentos de compra están en estado PENDIENTE y no fueron considerados.", "entry_ids": ["rcv_...", "rcv_...", "rcv_..."] }
]

And the suggestion detector raises a missing_characterization when an entry is going to distort the F29. See Tipo 46 and suggestions.

On this page