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_compra | Meaning |
|---|---|
del_giro | Ordinary purchase for the line of business; IVA fully recoverable |
supermercado | Supermarket or similar, with its statutory limits |
activo_fijo | Fixed asset |
iva_uso_comun | Shared between taxed and exempt activity; proportional credit |
no_recuperable | IVA 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.