Impuestos
RCV, caracterización, propuesta y declaración de F29, gastos y sugerencias de tipo 46.
Base: https://api.facturia.cl/v1. Todos los endpoints de este capítulo se autentican con Authorization: Bearer salvo que se diga lo contrario, y el sobre de error es el de Errores.
| Método | Ruta | Qué hace |
|---|---|---|
GET | /tax/purchases | RCV — registro de compras |
GET | /tax/sales | RCV — registro de ventas |
GET | /tax/summary | Totales agregados del RCV para un período (las entradas del F29) |
POST | /tax/sync | Fuerza una resincronización del RCV (asíncrona) |
POST | /tax/purchases/characterize | Caracteriza hasta 500 entradas de compra en una sola llamada |
POST | /tax/purchases/{entry_id}/characterize | Caracteriza una entrada de compra (escribe en el registro del SII) |
POST | /tax/purchases/{entry_id}/estado_contable | Mueve una entrada entre REGISTRO / PENDIENTE / NO_INCLUIR |
GET | /tax/f29/proposals/{period} | Propuesta de F29 calculada para un período |
GET | /tax/f29/proposals/{period}/upload_file | Descarga el .txt en formato SII de esta propuesta |
POST | /tax/f29/proposals/{period}/public_links | Crea un enlace sin autenticación al .txt de carga de la propuesta |
DELETE | /tax/f29/proposals/{period}/public_links | Revoca todos los enlaces públicos de esta propuesta |
POST | /tax/f29/proposals/{period}/recompute | Recalcula la propuesta, con la opción de sobrescribir códigos |
GET | /tax/f29/filings | Lista las declaraciones de F29 |
POST | /tax/f29/filings | Declara el F29 de un período (job asíncrono) |
GET | /tax/f29/filings/{filing_id} | Devuelve una declaración |
GET | /tax/expenses | Lista los cargos en moneda extranjera ingresados |
POST | /tax/expenses | Ingresa un cargo que podría requerir una factura de compra tipo 46 |
GET | /tax/suggestions | Lista las sugerencias tributarias |
GET | /tax/suggestions/{suggestion_id} | Devuelve una sugerencia |
POST | /tax/suggestions/{suggestion_id}/confirm | Confirma una sugerencia (en emit_46, emite el documento) |
POST | /tax/suggestions/{suggestion_id}/dismiss | Descarta una sugerencia |
GET /tax/purchases
RCV — registro de compras
curl -sS https://api.facturia.cl/v1/tax/purchases \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA"Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
limit | query | — | integer | |
cursor | query | — | string | Cursor opaco tomado del next_cursor de una respuesta anterior. |
period | query | — | Period | Período tributario, YYYY-MM, America/Santiago. |
estado_contable | query | — | REGISTRO · PENDIENTE · NO_INCLUIR · RECLAMADO | |
tipo_dte | query | — | 33 · 34 · 39 · 41 · 46 · 52 · 56 · 61 | |
counterparty_rut | query | — | Rut |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
200 | Entradas de compra del RCV, con metadatos de frescura de la sincronización. | RcvEntryList |
GET /tax/sales
RCV — registro de ventas
curl -sS https://api.facturia.cl/v1/tax/sales \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA"Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
limit | query | — | integer | |
cursor | query | — | string | Cursor opaco tomado del next_cursor de una respuesta anterior. |
period | query | — | Period | Período tributario, YYYY-MM, America/Santiago. |
tipo_dte | query | — | 33 · 34 · 39 · 41 · 46 · 52 · 56 · 61 | |
counterparty_rut | query | — | Rut |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
200 | Entradas de venta del RCV. | RcvEntryList |
GET /tax/summary
Totales agregados del RCV para un período (las entradas del F29)
curl -sS https://api.facturia.cl/v1/tax/summary \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA"Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
period | query | sí | Period |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
200 | Agregación por dirección y tipo de documento. | TaxSummary |
POST /tax/sync
Fuerza una resincronización del RCV (asíncrona)
curl -sS -X POST https://api.facturia.cl/v1/tax/sync \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"period":"2026-07"}'Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Idempotency-Key | header | — | string | Llave que genera el cliente, única por operación lógica, retenida 24 h y con alcance (cuenta, empresa, endpoint). Un replay devuelve la respuesta original con Facturia-Idempotent-Replay: true. Misma llave y cuerpo distinto → 409. |
Cuerpo
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
period | Period | — | Período tributario YYYY-MM (America/Santiago). Ej.: "2026-07". |
| Respuestas |
| Código | Significado | Cuerpo |
|---|---|---|
202 | Job de sincronización aceptado. | Job |
POST /tax/purchases/characterize
Caracteriza hasta 500 entradas de compra en una sola llamada
curl -sS -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"}]}'Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Idempotency-Key | header | — | string | Llave que genera el cliente, única por operación lógica, retenida 24 h y con alcance (cuenta, empresa, endpoint). Un replay devuelve la respuesta original con Facturia-Idempotent-Replay: true. Misma llave y cuerpo distinto → 409. |
Cuerpo
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
entries | object + Characterization[] | sí | |
| Respuestas |
| Código | Significado | Cuerpo |
|---|---|---|
200 | Resultados entrada por entrada. | object |
POST /tax/purchases/{entry_id}/characterize
Caracteriza una entrada de compra (escribe en el registro del SII)
curl -sS -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":"del_giro","iva_uso_comun":true}'Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
entry_id | path | sí | string | |
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Idempotency-Key | header | — | string | Llave que genera el cliente, única por operación lógica, retenida 24 h y con alcance (cuenta, empresa, endpoint). Un replay devuelve la respuesta original con Facturia-Idempotent-Replay: true. Misma llave y cuerpo distinto → 409. |
Cuerpo
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
tipo_compra | del_giro · supermercado · activo_fijo · iva_uso_comun · no_recuperable | — | |
iva_uso_comun | boolean | — | |
iva_no_recuperable_code | integer,null | — | Código de motivo del SII, obligatorio cuando tipo_compra es no_recuperable. |
| Respuestas |
| Código | Significado | Cuerpo |
|---|---|---|
200 | La entrada actualizada. | RcvEntry |
422 | Bien formado pero viola una regla del dominio: folios agotados, ventana de acuse cerrada. | ErrorResponse |
POST /tax/purchases/{entry_id}/estado_contable
Mueve una entrada entre REGISTRO / PENDIENTE / NO_INCLUIR
curl -sS -X POST https://api.facturia.cl/v1/tax/purchases/rcv_01K2RB7Q2M4X/estado_contable \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"estado_contable":"REGISTRO"}'Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
entry_id | path | sí | string | |
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Idempotency-Key | header | — | string | Llave que genera el cliente, única por operación lógica, retenida 24 h y con alcance (cuenta, empresa, endpoint). Un replay devuelve la respuesta original con Facturia-Idempotent-Replay: true. Misma llave y cuerpo distinto → 409. |
Cuerpo
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
estado_contable | REGISTRO · PENDIENTE · NO_INCLUIR · RECLAMADO | sí | |
| Respuestas |
| Código | Significado | Cuerpo |
|---|---|---|
200 | La entrada actualizada. | RcvEntry |
GET /tax/f29/proposals/{period}
Propuesta de F29 calculada para un período
La calcula Facturia desde el RCV sincronizado más los parámetros de PPM y remanente de la empresa. El SII prellena su propio F29 en su portal, pero no publica una API para eso.
curl -sS https://api.facturia.cl/v1/tax/f29/proposals/2026-07 \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA"Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
period | path | sí | Period | |
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
200 | La propuesta. | F29Proposal |
404 | No existe ese objeto bajo esta llave. | ErrorResponse |
GET /tax/f29/proposals/{period}/upload_file
Descarga el .txt en formato SII de esta propuesta
curl -sS https://api.facturia.cl/v1/tax/f29/proposals/2026-07/upload_file \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA"Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
period | path | sí | Period | |
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
200 | Archivo de carga de formato fijo, listo para subir a mano si lo prefieres. | text/plain |
POST /tax/f29/proposals/{period}/public_links
Crea un enlace sin autenticación al .txt de carga de la propuesta
upload_file_url necesita una llave, lo que lo vuelve inservible como resource_link de MCP: la mayoría de los hosts MCP no pueden adjuntar el token OAuth de quien llama al resolverlo. Esto crea el mismo tipo de enlace firmado, inadivinable y con expiración que reciben los artefactos de un documento (§9.6), sirviendo exactamente los mismos bytes ISO-8859-1.
tax:read, no tax:write: crear un enlace no publica nada ni cambia ninguna posición tributaria.
curl -sS -X POST https://api.facturia.cl/v1/tax/f29/proposals/2026-07/public_links \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA" \
-H "Content-Type: application/json" \
-d '{"artifacts":["upload_file"],"expires_in_days":90}'Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
period | path | sí | Period | |
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Cuerpo
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
artifacts | upload_file[] | — | Por defecto: ["upload_file"]. |
expires_in_days | integer,null | — | Por defecto: 90. |
expires_in_seconds | integer,null | — | Acotado entre 30 s y 365 días. Gana cuando se mandan las dos unidades. |
| Respuestas |
| Código | Significado | Cuerpo |
|---|---|---|
200 | El enlace recién creado. Guárdalo: la mitad secreta se almacena hasheada. | PublicLinks |
404 | No existe ese objeto bajo esta llave. | ErrorResponse |
409 | Conflicto de estado: reutilización de idempotencia, external_id duplicado o artefacto no listo. | ErrorResponse |
DELETE /tax/f29/proposals/{period}/public_links
Revoca todos los enlaces públicos de esta propuesta
curl -sS -X DELETE https://api.facturia.cl/v1/tax/f29/proposals/2026-07/public_links \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA"Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
period | path | sí | Period | |
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
204 | Revocados. Las URL existentes dejan de resolver de inmediato. | — |
POST /tax/f29/proposals/{period}/recompute
Recalcula la propuesta, con la opción de sobrescribir códigos
curl -sS -X POST https://api.facturia.cl/v1/tax/f29/proposals/2026-07/recompute \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA" \
-H "Content-Type: application/json" \
-d '{"overrides":[]}'Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
period | path | sí | Period | |
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Cuerpo
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
overrides | object[] | — | |
| Respuestas |
| Código | Significado | Cuerpo |
|---|---|---|
200 | La propuesta recalculada. | F29Proposal |
GET /tax/f29/filings
Lista las declaraciones de F29
curl -sS https://api.facturia.cl/v1/tax/f29/filings \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA"Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
limit | query | — | integer | |
cursor | query | — | string | Cursor opaco tomado del next_cursor de una respuesta anterior. |
period[gte] | query | — | string |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
200 | Una lista de declaraciones. | lista de F29Filing |
POST /tax/f29/filings
Declara el F29 de un período (job asíncrono)
No existe webservice del SII para declarar un F29. Facturia automatiza el flujo «Upload» del SII —
una sesión autenticada con certificado que sube un .txt de formato fijo — y lo modela como un job.
confirm_total_payable debe ser igual a la cifra de la propuesta.
curl -sS -X POST https://api.facturia.cl/v1/tax/f29/filings \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"period":"2026-07","confirm_total_payable":1373000}'Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Idempotency-Key | header | — | string | Llave que genera el cliente, única por operación lógica, retenida 24 h y con alcance (cuenta, empresa, endpoint). Un replay devuelve la respuesta original con Facturia-Idempotent-Replay: true. Misma llave y cuerpo distinto → 409. |
Cuerpo
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
period | Period | sí | Período tributario YYYY-MM (America/Santiago). Ej.: "2026-07". |
proposal_id | string | — | |
confirm_total_payable | integer | sí | Barrera contra declarar la cifra equivocada. Debe coincidir con la propuesta. |
| Respuestas |
| Código | Significado | Cuerpo |
|---|---|---|
202 | Declaración aceptada y encolada. | F29Filing |
422 | Bien formado pero viola una regla del dominio: folios agotados, ventana de acuse cerrada. | ErrorResponse |
GET /tax/f29/filings/{filing_id}
Devuelve una declaración
curl -sS https://api.facturia.cl/v1/tax/f29/filings/f29fil_01K2RD9K3M8T \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA"Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
filing_id | path | sí | string | |
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
200 | La declaración. | F29Filing |
404 | No existe ese objeto bajo esta llave. | ErrorResponse |
GET /tax/expenses
Lista los cargos en moneda extranjera ingresados
curl -sS https://api.facturia.cl/v1/tax/expenses \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA"Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
limit | query | — | integer | |
cursor | query | — | string | Cursor opaco tomado del next_cursor de una respuesta anterior. |
period | query | — | Period | Período tributario, YYYY-MM, America/Santiago. |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
200 | Una lista de gastos. | lista de ExpenseCreateRequest + object |
POST /tax/expenses
Ingresa un cargo que podría requerir una factura de compra tipo 46
curl -sS -X POST https://api.facturia.cl/v1/tax/expenses \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"provider":"fintoc","amount_original":1050,"currency":"USD","date":"2026-07-31"}'Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Idempotency-Key | header | — | string | Llave que genera el cliente, única por operación lógica, retenida 24 h y con alcance (cuenta, empresa, endpoint). Un replay devuelve la respuesta original con Facturia-Idempotent-Replay: true. Misma llave y cuerpo distinto → 409. |
Cuerpo
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
provider | object | sí | |
description | string | — | |
amount_original | number | sí | |
currency | string | sí | Ej.: "USD". |
date | string | sí | |
fx_rate | number | — | OBLIGATORIO cada vez que currency no es CLP; omitirlo devuelve 400 fx_rate_required. Facturia nunca inventa un tipo de cambio: esa cifra fija la base en pesos de un documento tributario. |
fx_source | card_rate · sii_observado · custom | — | card_rate (el tipo de cambio de liquidación que aplicó tu emisor de tarjeta) es la recomendación documentada. SALVEDAD: cuál tipo de cambio es definitivamente correcto para el tipo 46 sobre servicios digitales extranjeros está en revisión con un contador y no lo zanja ningún pronunciamiento citable; el valor que envíes se guarda textual y queda visible en el documento. |
external_id | string | — | |
| Respuestas |
| Código | Significado | Cuerpo |
|---|---|---|
201 | El gasto guardado; puede aparecer una sugerencia después, de forma asíncrona. | Expense |
GET /tax/suggestions
Lista las sugerencias tributarias
curl -sS https://api.facturia.cl/v1/tax/suggestions \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA"Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
limit | query | — | integer | |
cursor | query | — | string | Cursor opaco tomado del next_cursor de una respuesta anterior. |
type | query | — | emit_46 · missing_characterization · folios_low · unclaimed_credit | |
status | query | — | open · confirmed · auto_confirmed · dismissed · expired | |
period | query | — | Period | Período tributario, YYYY-MM, America/Santiago. |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
200 | Una lista de sugerencias. | lista de Suggestion |
GET /tax/suggestions/{suggestion_id}
Devuelve una sugerencia
curl -sS https://api.facturia.cl/v1/tax/suggestions/sug_01K2RE2X7Q9V \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA"Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
suggestion_id | path | sí | string | |
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
200 | La sugerencia. | Suggestion |
POST /tax/suggestions/{suggestion_id}/confirm
Confirma una sugerencia (en emit_46, emite el documento)
curl -sS -X POST https://api.facturia.cl/v1/tax/suggestions/sug_01K2RE2X7Q9V/confirm \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA" \
-H "Idempotency-Key: $(uuidgen)"Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
suggestion_id | path | sí | string | |
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Idempotency-Key | header | — | string | Llave que genera el cliente, única por operación lógica, retenida 24 h y con alcance (cuenta, empresa, endpoint). Un replay devuelve la respuesta original con Facturia-Idempotent-Replay: true. Misma llave y cuerpo distinto → 409. |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
201 | La sugerencia, con el documento resultante cuando se emitió uno. | object |
422 | Bien formado pero viola una regla del dominio: folios agotados, ventana de acuse cerrada. | ErrorResponse |
POST /tax/suggestions/{suggestion_id}/dismiss
Descarta una sugerencia
curl -sS -X POST https://api.facturia.cl/v1/tax/suggestions/sug_01K2RE2X7Q9V/dismiss \
-H "Authorization: Bearer $FACTURIA_KEY" \
-H "Facturia-Empresa: $EMPRESA" \
-H "Content-Type: application/json" \
-d '{"reason":"not_digital_service","note":"…"}'Parámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
suggestion_id | path | sí | string | |
Facturia-Empresa | header | — | string | La empresa destino: RUT canónico (77928532-4) o id de empresa (emp_…). Obligatorio en toda llamada con alcance de empresa, salvo que la llave sea un token de empresa. Este header es el ÚNICO mecanismo: no hay parámetro ?empresa= ni campo empresa en el cuerpo. Omitido donde se requiere → 400 empresa_required; fuera de la lista blanca → 403 empresa_not_allowed. |
Cuerpo
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
reason | not_digital_service · already_declared · not_applicable · other | — | |
note | string | — | |
| Respuestas |
| Código | Significado | Cuerpo |
|---|---|---|
200 | La sugerencia descartada. | Suggestion |