============================================================
# Bienvenida (docs)
============================================================
FiscalBridge es una API REST que da acceso programático al SII (Servicio de
Impuestos Internos) de Chile: contribuyentes, DTE, BHE/BTE, RCV, vehículos y más,
con autenticación por token, rate limiting y facturación integrada.
## Empezá acá
- [Guía de inicio](/docs/guides/getting-started) — autentícate y haz tu primera consulta en minutos.
- [Referencia de la API](/reference) — todos los endpoints, con parámetros, esquema y respuestas.
- [Ejemplos de código](/docs/guides/code-examples) — Python, JavaScript, PHP, cURL y TypeScript.
- [Preguntas frecuentes](/docs/guides/faq) — tokens, rate limiting, planes y facturación.
## Para agentes / IA
- **Pregúntale a la IA** — el botón en la barra superior responde sobre la documentación.
- [Servidor MCP](/docs/mcp) — `@fiscalbridge/mcp` da a tu agente (Claude Code, Cursor…) acceso tipado a la documentación y la API.
- `/llms.txt` y `/llms-full.txt` — la documentación en formato consumible por LLMs.
============================================================
# Habilidades para agentes (docs/agent-skills)
============================================================
Las habilidades para agentes empaquetan instrucciones de integración para que
un agente respete la forma pública de la API: `X-API-Token`, scopes por módulo,
errores estructurados y cuotas.
## Instalación
{`npx skills add https://docs.fiscalbridge.cl --yes`}
## Cuándo usarlas
- Crear una integración SII o Vendemas desde cero.
- Generar código a partir de la referencia OpenAPI.
- Revisar manejo de errores `400`, `401`, `403`, `429`, `502`, `503` y `504`.
- Alinear ejemplos con `X-API-Token` y scopes como `sii:read` o `vendemas:write`.
## Buen prompt inicial
```text
Usa la documentación de FiscalBridge para implementar una consulta SII.
Autentica con X-API-Token, valida errores estructurados y respeta los headers
X-RateLimit-*.
```
============================================================
# Changelog (docs/changelog)
============================================================
## 2026-05-16
- La documentación pública usa exclusivamente `X-API-Token`.
- La referencia pública conserva endpoints SII, Vendemas, perfil técnico y
resumen de uso.
- Las páginas de integración para MCP, agentes, plataformas IA, SDKs,
webhooks, esquemas y recursos quedan disponibles bajo `/docs`.
## 2026-05-01
- Se consolida el roadmap de FiscalBridge como infraestructura tributaria
programable para Chile.
- Se prioriza la referencia API generada desde OpenAPI como fuente pública.
============================================================
# Esquemas (docs/esquemas)
============================================================
Los esquemas públicos se generan desde el OpenAPI de FiscalBridge. Representan
el contrato que debe consumir una integración externa con `X-API-Token`.
## Convenciones
- Todas las respuestas exitosas usan un envelope con `success` y `data` cuando
el endpoint devuelve JSON estructurado.
- Los errores usan `error_code`, `message` y `details` cuando hay contexto
accionable.
- Los RUT de ejemplos son ficticios o enmascarados.
- Los endpoints con body declaran sus campos en la sección "Cuerpo de la
solicitud" de la referencia.
## Módulos principales
| Módulo | Esquemas relevantes |
| --- | --- |
| SII | Contribuyentes, DTE, BHE, BTE, RCV, MIPYME, RPETC y vehículos. |
| Vendemas | Documentos tributarios, envíos, RCOF, cesión e intercambios DTE. |
| Usuario | Perfil técnico de la cuenta asociada al API token. |
| Uso | Cuota, consumo y resumen de llamadas. |
## Fuente de verdad
Usa la referencia generada en [/reference](/reference). Las páginas de cada
endpoint incluyen método, ruta, parámetros, cuerpo, respuestas y ejemplos.
============================================================
# Crea con FiscalBridge usando IA (docs/guides/build-on-fiscalbridge-with-ai)
============================================================
Usa agentes de IA en tu flujo de integración con FiscalBridge.
Puedes usar agentes de IA para acelerar la construcción de integraciones con
FiscalBridge. Ofrecemos un conjunto de herramientas y mejores prácticas si usas
LLMs durante el desarrollo.
## Instala el servidor MCP de FiscalBridge
El servidor MCP (Model Context Protocol) de FiscalBridge define un set de
herramientas que los agentes de IA pueden usar para interactuar con la API y
buscar en nuestra base de conocimientos. Está publicado como
[`@fiscalbridge/mcp`](https://www.npmjs.com/package/@fiscalbridge/mcp) en npm y
expone 5 herramientas: `search_docs`, `get_doc`, `list_endpoints`,
`get_endpoint` y `call_api`.
### Claude Code
{`$ claude mcp add fiscalbridge npx @fiscalbridge/mcp`}
### Cursor
Agrega esto a `~/.cursor/mcp.json` (créalo si no existe):
{`{
"mcpServers": {
"fiscalbridge": {
"command": "npx",
"args": ["@fiscalbridge/mcp"],
"env": {
"FB_API_TOKEN": "fb_live_..."
}
}
}
}`}
Las herramientas de documentación (`search_docs`, `get_doc`,
`list_endpoints`, `get_endpoint`) funcionan sin token. Solo `call_api`
requiere `FB_API_TOKEN` y se niega a ejecutar si no está configurado —
así un agente que solo tiene acceso a docs nunca puede exfiltrar
credenciales que no le diste.
## Instala habilidades para agentes
Las habilidades de agentes son instrucciones que los agentes pueden seguir para
crear integraciones más precisas. FiscalBridge tiene un catálogo de habilidades
que enseñan a los agentes las mejores prácticas de integración. Están
disponibles en distintos marketplaces y también hosteadas en
`https://docs.fiscalbridge.cl/.well-known/skills/index.json`.
Ejecuta esto en la carpeta de tu proyecto. Las habilidades agregadas manualmente
no se actualizan automáticamente — deberás traer las actualizaciones tú mismo.
{`$ npx skills add https://docs.fiscalbridge.cl --yes`}
## Usa plataformas de desarrollo con IA
Las plataformas de programación asistida por agentes te permiten crear apps y
sitios describiéndole a un LLM qué quieres construir. Estas plataformas también
pueden ayudarte a construir una integración con FiscalBridge sin escribir
código manualmente:
- **Claude Code** — agente CLI de Anthropic con soporte nativo para MCP.
- **Cursor** — IDE con Compose, Tab y modos de agente conectables a MCP.
- **Lovable, v0, Bolt** — describe lo que quieres construir y obtén un proyecto
funcional sobre el que iterar.
Después de instalar las habilidades, pídele al agente:
_"Crea un endpoint que emita una factura electrónica con FiscalBridge"_. El
agente leerá el OpenAPI, los esquemas de DTE y generará código que pasa los
tests del SII en certificación.
## Documentación en texto plano
Toda nuestra documentación está disponible como texto plano para que la pegues
directamente en cualquier LLM:
- `/llms.txt` — índice navegable de todas las páginas.
- `/llms-full.txt` — toda la documentación en un solo archivo (~480 KB).
Ambos endpoints se generan automáticamente a partir de las mismas fuentes MDX
que renderizan este sitio, así no hay riesgo de divergencia entre el HTML que ven
los humanos y el texto que consumen los agentes.
============================================================
# Ejemplos de código (docs/guides/code-examples)
============================================================
Snippets completos en Python, JavaScript, PHP y cURL. Listos para copiar y
pegar en tu proyecto. La pestaña de lenguaje activo se sincroniza con el resto
del sitio: elige una vez y todos los bloques cambian.
## Librerías recomendadas
| Lenguaje | Librería |
| ---------- | --------------------------------- |
| Python | `requests` — cliente HTTP simple. |
| JavaScript | `node-fetch` o `axios`. |
| PHP | Guzzle o cURL nativo. |
| cURL | `jq` para procesar JSON. |
## Configuración inicial
Importa las librerías necesarias y configura tu token.
{`# Instalación
# pip install requests
const API_TOKEN = 'tu_token_aqui';
const headers = {
'Content-Type': 'application/json',
'X-API-Token': API_TOKEN,
};`}
{` new Promise((r) => setTimeout(r, ms));
async function consultarConRetry(rut, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(
\`\${API_BASE}/sii/contribuyentes/situacion_tributaria/tercero/\${rut}\`,
{ headers: { 'X-API-Token': API_TOKEN } },
);
if (response.ok) {
return (await response.json()).data;
}
if (response.status === 429) {
const wait = 2 ** attempt * 1000; // 1s, 2s, 4s
console.log(\`Rate limit. Esperando \${wait}ms...\`);
await sleep(wait);
continue;
}
console.error('Error', response.status);
return null;
}
console.error('Máximo de reintentos alcanzado');
return null;
}`}
{`12.000 consultas/día.
### ¿Hay descuentos por pago anual? [#descuentos-pago-anual]
Sí. Además de la facturación mensual, ofrecemos facturación anual con un
descuento sobre el equivalente mensual. Puedes elegir el ciclo (mensual o anual)
al contratar o hacer upgrade; el ahorro del ciclo anual se muestra en el
checkout antes de pagar.
### ¿El plan Enterprise es negociable? [#plan-enterprise-negociable]
Sí, el plan Enterprise es completamente personalizable. Contáctanos en
`soporte@fiscalbridge.cl` para discutir tus necesidades específicas: cuota
personalizada, soporte dedicado 24/7, acuerdos de nivel de servicio a convenir,
on-premise deployment, webhooks personalizados y más. Creamos una propuesta
ajustada a tu caso de uso.
## Facturación
### ¿Qué métodos de pago aceptan? [#metodos-de-pago]
Aceptamos pagos a través de Transbank Webpay Plus, que permite pagar con:
tarjetas de crédito Visa/Mastercard/American Express, tarjetas de débito y
transferencia bancaria. Transbank es el procesador de pagos más seguro y
confiable de Chile, certificado PCI-DSS.
### ¿Cómo funciona Transbank Webpay Plus? [#como-funciona-webpay]
Al confirmar tu pago, serás redirigido a la pasarela segura de Transbank donde
ingresarás los datos de tu tarjeta. Transbank procesa el pago y te redirige de
vuelta a FiscalBridge. Recibimos una notificación del resultado y activamos
automáticamente tu suscripción si el pago es exitoso.
### ¿Emiten boleta o factura? [#boleta-o-factura]
Sí, emitimos boleta electrónica o factura según tu tipo de cuenta. Si eres
empresa y necesitas factura, asegúrate de completar tus datos tributarios en
_Configuración_ → _Datos de facturación_. Las facturas se generan
automáticamente y se envían a tu correo electrónico dentro de 24 horas del
pago.
### ¿Puedo usar cupones de descuento? [#cupones-descuento]
Sí, puedes aplicar cupones de descuento al momento de registrarte o hacer
upgrade. Los cupones pueden ser de porcentaje (ej. 25% descuento) o monto fijo
(ej. $10.000 descuento). Ingresa el código en el campo _Cupón_ antes de
proceder al pago. Los cupones tienen fecha de expiración y límite de usos.
## Problemas comunes
### Mi cuenta está bloqueada, ¿qué hago? [#cuenta-bloqueada]
Las cuentas se bloquean automáticamente después de 10 excesos de cuota en 24
horas. El bloqueo dura 3 días y se levanta automáticamente. Puedes ver la
fecha de desbloqueo en tu dashboard. Si necesitas desbloqueo urgente, contacta
a soporte (`soporte@fiscalbridge.cl`) explicando tu caso.
### No recibí el correo de verificación [#no-recibi-correo-verificacion]
Verifica tu carpeta de spam/correo no deseado. Si no lo encuentras, espera 5
minutos (el envío puede tomar tiempo) y luego solicita un nuevo correo desde
el banner de verificación en tu dashboard. Si el problema persiste, contacta a
soporte con tu correo electrónico registrado.
### Error 401 Unauthorized — ¿Qué significa? [#error-401]
El error 401 indica que no estás autenticado o tu token es inválido/expirado.
Soluciones: (1) Verifica que estás enviando el header `X-API-Token` con tu
token correcto, (2) Verifica que tu token no haya expirado, (3) Crea un nuevo
API token si perdiste el anterior o si fue revocado.
### Error 403 Forbidden — Cuenta bloqueada [#error-403]
El error 403 indica que tu cuenta está bloqueada por exceder la cuota 10
veces. Revisa tu dashboard para ver la fecha de desbloqueo. Mientras tanto,
revisa tu código para implementar rate limiting correcto: (1) Cachea
respuestas cuando sea posible, (2) Implementa retry con exponential backoff,
(3) Monitorea tus headers `X-RateLimit-*` para evitar excesos.
### ¿Por qué no puedo hacer login? [#no-puedo-hacer-login]
Posibles causas: (1) Contraseña incorrecta: usa _Olvidé mi contraseña_ para
resetearla, (2) Correo no verificado: verifica tu email antes de hacer login,
(3) Cuenta bloqueada: contacta a soporte, (4) Problemas técnicos: limpia
cookies/cache del navegador o intenta desde modo incógnito. Si el problema
persiste, contacta a `soporte@fiscalbridge.cl`.
## ¿No encontraste lo que buscabas?
- Revisa la [guía de inicio](/docs/guides/getting-started) para un recorrido
completo de la API.
- Mira los [ejemplos de código](/docs/guides/code-examples) en Python,
JavaScript, PHP y cURL.
- Si nada de esto cubre tu caso, escribe a `soporte@fiscalbridge.cl` o entra
al [formulario de soporte](https://fiscalbridge.cl/support) (requiere sesión
iniciada).
============================================================
# Empezar con FiscalBridge (docs/guides/getting-started)
============================================================
Aprende a usar FiscalBridge API en 5 pasos simples. Estarás consultando
información del SII en menos de 10 minutos.
## 1 · Registro y verificación
Para empezar a usar la API, primero necesitas crear una cuenta.
1. Visita [la página de registro](https://fiscalbridge.cl/register).
2. Completa el formulario con tus datos:
- RUT (formato: `12.345.678-9`).
- Nombre completo.
- Correo electrónico.
- Contraseña segura (mínimo 8 caracteres, mayúscula, minúscula, número y símbolo).
3. Acepta los términos y condiciones.
4. Haz clic en **Crear cuenta**.
5. Revisa tu correo y haz clic en el enlace de verificación.
Debes verificar tu correo electrónico antes de poder usar la API. Si no
recibes el correo, revisa tu carpeta de spam.
## 2 · Elegir plan
Al registrarte vía formulario de evaluación, obtienes automáticamente un
**crédito promocional de $5.000 CLP con 14 días de vigencia**, sin tarjeta de
crédito:
- Crédito inicial de $5.000 CLP.
- 2 solicitudes por segundo.
- 14 días de vigencia.
- Sin tarjeta de crédito.
Cada consulta descuenta crédito según la categoría del endpoint. Cuando el
saldo llega a cero o el crédito expira, la cuenta entra en auto-stop; para
seguir operando puedes contratar uno de nuestros planes o convertir la cuenta
a PAYG (recarga manual de crédito).
Cuando quieras operar en producción, puedes contratar uno de nuestros planes:
| Plan | Precio mensual | Consultas / 24 h | Throttle |
| ------- | -------------- | ---------------- | ------------- |
| PYME | $35.000 | 600 | 5 req/s |
| Premium | $75.000 | 1.500 | 8 req/s |
| Pro | $140.000 | 4.500 | 12 req/s |
| Premier | $280.000 | 12.000 | 20 req/s |
¿Necesitas más de 12.000 consultas diarias? Escríbenos para una cotización
Enterprise personalizada.
## 3 · Obtener API Token
Para usar la API necesitas un token de autenticación.
1. Inicia sesión en tu dashboard.
2. Ve a la página **API Tokens** en el menú lateral.
3. Haz clic en **Crear nuevo token**.
4. Completa el formulario:
- Nombre descriptivo (ej. _"Producción Backend"_).
- Fecha de expiración (30, 60, 90 días o sin expiración).
5. Haz clic en **Crear token**.
6. **Importante**: copia y guarda el token inmediatamente. Solo se muestra una vez.
Ejemplo de formato del token:
```
sk_prod_d_54XikyD24746Yu0lq4_hqMLbp-OB3J0uYpKem4za8
```
Guárdalo en un lugar seguro (gestor de contraseñas, variables de entorno o un
secrets manager). Nunca lo expongas en código cliente, repositorios públicos
ni logs.
## 4 · Primera consulta
Ahora que tienes tu token, puedes hacer tu primera consulta. Aquí hay ejemplos
en cuatro lenguajes; FiscalBridge sincroniza la pestaña activa entre todos los
bloques del sitio, así que elige una vez y todos los snippets cambian.
{`curl -X GET "https://api.fiscalbridge.cl/api/v1/sii/contribuyente/12345678-9" \\
-H "X-API-Token: tu_token_aqui"`}
{`import requests
API_BASE = "https://api.fiscalbridge.cl/api/v1"
API_TOKEN = "tu_token_aqui"
headers = {"X-API-Token": API_TOKEN}
response = requests.get(
f"{API_BASE}/sii/contribuyente/12345678-9",
headers=headers,
)
if response.status_code == 200:
data = response.json()
print(f"RUT: {data['rut']}")
print(f"Razón Social: {data['razon_social']}")
else:
print(f"Error: {response.status_code}")`}
{`const API_BASE = 'https://api.fiscalbridge.cl/api/v1';
const API_TOKEN = 'tu_token_aqui';
const response = await fetch(\`\${API_BASE}/sii/contribuyente/12345678-9\`, {
headers: { 'X-API-Token': API_TOKEN },
});
if (response.ok) {
const data = await response.json();
console.log('RUT:', data.rut);
console.log('Razón Social:', data.razon_social);
} else {
console.error('Error:', response.status);
}`}
{`
{"Contribuyentes"} · 3 endpoints
{"Indicadores"} · 3 endpoints
{"MiSii"} · 4 endpoints
{"DTE"} · 17 endpoints
{"BHE"} · 8 endpoints
{"BTE"} · 9 endpoints
{"RCV"} · 16 endpoints
{"MIPYME"} · 11 endpoints
{"Certificación"} · 5 endpoints
{"Libro Compra Venta"} · 1 endpoint
{"Vehículos"} · 4 endpoints
{"API RPETC"} · 12 endpoints
## Usuario
## Vendemas
============================================================
# SII · API RPETC (reference/sii/api-rpetc)
============================================================
## Endpoints en API RPETC
============================================================
# Consultar el estado actual de una tarea (reference/sii/api-rpetc/consultar-el-estado-actual-de-una-tarea)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/tareas/:rut_autenticado/:id_tarea/estado\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rpetc/tareas/:rut_autenticado/:id_tarea/estado\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/tareas/:rut_autenticado/:id_tarea/estado\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consulta el estado actual de una tarea específica. Úselo para
polling hasta que ``estado == TERMINADO`` antes de descargar el
resultado.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"cantidadDeLineas": 0,
"codigoError": 0,
"comprimido": 0,
"descripcionError": "string",
"dv": "string",
"dvAutenticado": "string",
"estado": "string",
"fileSize": 0,
"horaCreado": "2026-01-01T00:00:00Z",
"horaEnProceso": "2026-01-01T00:00:00Z",
"horaTerminado": "2026-01-01T00:00:00Z",
"idTarea": "string",
"nombre": "string",
"parametros": "string",
"periodo": 0,
"resultado": "string",
"rut": 0,
"rutAutenticado": 0,
"sistema": "string",
"tipoDocumento": 0
}
```
============================================================
# Crear tarea de certificados de cesiones (cedente) (reference/sii/api-rpetc/crear-tarea-de-certificados-de-cesiones-cedente)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/certificados/cedente/:rut_cedente\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/certificados/cedente/:rut_cedente\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/certificados/cedente/:rut_cedente\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Genera una tarea asíncrona para obtener los certificados de cesiones
donde el RUT indicado es el **cedente**.
Los certificados se entregan en formato PDF (documentos tributarios
formales imprimibles).
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"dv": "string",
"dvAutenticado": "string",
"estado": "string",
"horaCreado": "2026-01-01T00:00:00Z",
"idTarea": "string",
"nombre": "string",
"parametros": "string",
"rut": 0,
"rutAutenticado": 0,
"sistema": "string"
}
```
============================================================
# Crear tarea de certificados de cesiones (cesionario) (reference/sii/api-rpetc/crear-tarea-de-certificados-de-cesiones-cesionario)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/certificados/cesionario/:rut_cesionario\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/certificados/cesionario/:rut_cesionario\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/certificados/cesionario/:rut_cesionario\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Genera una tarea asíncrona para obtener los certificados de cesiones
donde el RUT indicado es el **cesionario**.
El SII siempre genera certificados en PDF (ver nota en
:func:`crear_tarea_certificados_cedente`).
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"dv": "string",
"dvAutenticado": "string",
"estado": "string",
"horaCreado": "2026-01-01T00:00:00Z",
"idTarea": "string",
"nombre": "string",
"parametros": "string",
"rut": 0,
"rutAutenticado": 0,
"sistema": "string"
}
```
============================================================
# Crear tarea de certificados de cesiones (deudor) (reference/sii/api-rpetc/crear-tarea-de-certificados-de-cesiones-deudor)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/certificados/deudor/:rut_deudor\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/certificados/deudor/:rut_deudor\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/certificados/deudor/:rut_deudor\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Genera una tarea asíncrona para obtener los certificados de cesiones
donde el RUT indicado es el **deudor**.
El SII siempre genera certificados en PDF (ver nota en
:func:`crear_tarea_certificados_cedente`).
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"dv": "string",
"dvAutenticado": "string",
"estado": "string",
"horaCreado": "2026-01-01T00:00:00Z",
"idTarea": "string",
"nombre": "string",
"parametros": "string",
"rut": 0,
"rutAutenticado": 0,
"sistema": "string"
}
```
============================================================
# Crear tarea de listado de cesiones (cedente) (reference/sii/api-rpetc/crear-tarea-de-listado-de-cesiones-cedente)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/cedente/:rut_cedente\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/cedente/:rut_cedente\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/cedente/:rut_cedente\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Genera una tarea asíncrona para listar las cesiones donde el RUT es
el **cedente**, en el rango ``[desde, hasta]``.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"dv": "string",
"dvAutenticado": "string",
"estado": "string",
"horaCreado": "2026-01-01T00:00:00Z",
"idTarea": "string",
"nombre": "string",
"parametros": "string",
"rut": 0,
"rutAutenticado": 0,
"sistema": "string"
}
```
============================================================
# Crear tarea de listado de cesiones (cesionario) (reference/sii/api-rpetc/crear-tarea-de-listado-de-cesiones-cesionario)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/cesionario/:rut_cesionario\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/cesionario/:rut_cesionario\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/cesionario/:rut_cesionario\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Genera una tarea asíncrona para listar las cesiones donde el RUT es
el **cesionario**.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"dv": "string",
"dvAutenticado": "string",
"estado": "string",
"horaCreado": "2026-01-01T00:00:00Z",
"idTarea": "string",
"nombre": "string",
"parametros": "string",
"rut": 0,
"rutAutenticado": 0,
"sistema": "string"
}
```
============================================================
# Crear tarea de listado de cesiones (deudor) (reference/sii/api-rpetc/crear-tarea-de-listado-de-cesiones-deudor)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/deudor/:rut_deudor\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/deudor/:rut_deudor\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/deudor/:rut_deudor\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Genera una tarea asíncrona para listar las cesiones donde el RUT es
el **deudor**.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"dv": "string",
"dvAutenticado": "string",
"estado": "string",
"horaCreado": "2026-01-01T00:00:00Z",
"idTarea": "string",
"nombre": "string",
"parametros": "string",
"rut": 0,
"rutAutenticado": 0,
"sistema": "string"
}
```
============================================================
# Descargar el archivo resultado de una tarea terminada (reference/sii/api-rpetc/descargar-el-archivo-resultado-de-una-tarea-terminada)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/tareas/:rut_autenticado/:id_tarea/resultado\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rpetc/tareas/:rut_autenticado/:id_tarea/resultado\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/tareas/:rut_autenticado/:id_tarea/resultado\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Descarga el archivo resultado (PDF/TXT/XML/ZIP) de una tarea
``TERMINADO``. Consultar primero el estado de la tarea.
Modos de respuesta vía ``formato``:
- ``base64`` (default): JSON con ``filename``, ``contentType``,
``sizeBytes`` y ``contentBase64``. Ideal para clientes web/mobile.
- ``pdf`` / ``xml`` / ``txt`` / ``zip``: binary passthrough con
``Content-Type`` específico (``application/pdf``, etc.) y
``Content-Disposition: attachment``. Ideal para ``curl -O``,
Postman "Save Response" y browser direct download.
El valor binario solicitado debe coincidir con la extensión real
del archivo que devuelve el SII (Certificados = ``.pdf``, Listado
Cesiones XML = ``.xml``, Listado Cesiones TXT = ``.txt``). Si hay
mismatch retorna HTTP 400.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
============================================================
# Estado de cesión de un DTE (reference/sii/api-rpetc/estado-de-cesion-de-un-dte)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/dte/:emisor/:dte/:folio/estado\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/dte/:emisor/:dte/:folio/estado\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/dte/:emisor/:dte/:folio/estado\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consulta si un DTE específico (identificado por emisor + tipo + folio) está cedido y sus detalles de cesión (holder, access key, etc.). Es una **consulta pública**: cualquier certificado digital válido puede consultar el estado de cesión de cualquier DTE (no requiere representación electrónica).
**Autenticación**: certificado digital web via `RTCCertAuthRequest` en el body.
**Scope**: `sii:read`
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"mensaje": "string",
"observacion": "string"
}
```
============================================================
# Estado de envío de cesión electrónica (reference/sii/api-rpetc/estado-de-envio-de-cesion-electronica)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/envio/:track_id/estado\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/envio/:track_id/estado\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/cesiones/envio/:track_id/estado\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consulta el estado de un envío de AEC (Archivo Electrónico de Cesión) por su `track_id`. Opcionalmente solicita al SII que reenvíe el correo de notificación al cedente (o a un email custom).
**Autenticación**: certificado digital web via `RTCCertAuthRequest` en el body.
**Scope**: `sii:read`
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"estado": {
"mensaje": "string",
"observacion": "string"
},
"reenvio": ""
}
```
============================================================
# Listar estados de tareas por fecha (reference/sii/api-rpetc/listar-estados-de-tareas-por-fecha)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/tareas/:rut/estados\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rpetc/tareas/:rut/estados\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/tareas/:rut/estados\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Lista los estados de tareas creadas por un emisor en una fecha y
hora específica.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
[
{
"cantidadDeLineas": 0,
"codigoError": 0,
"comprimido": 0,
"descripcionError": "string",
"dv": "string",
"dvAutenticado": "string",
"estado": "string",
"fileSize": 0,
"horaCreado": "2026-01-01T00:00:00Z",
"horaEnProceso": "2026-01-01T00:00:00Z",
"horaTerminado": "2026-01-01T00:00:00Z",
"idTarea": "string",
"nombre": "string",
"parametros": "string",
"periodo": 0,
"resultado": "string",
"rut": 0,
"rutAutenticado": 0,
"sistema": "string",
"tipoDocumento": 0
}
]
```
============================================================
# Listar estados de tareas por período YYYYMM (reference/sii/api-rpetc/listar-estados-de-tareas-por-periodo-yyyymm)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/tareas/:rut/estados/periodo/:periodo\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rpetc/tareas/:rut/estados/periodo/:periodo\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rpetc/tareas/:rut/estados/periodo/:periodo\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Lista los estados de tareas creadas por un emisor en un período
``YYYYMM``.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
[
{
"cantidadDeLineas": 0,
"codigoError": 0,
"comprimido": 0,
"descripcionError": "string",
"dv": "string",
"dvAutenticado": "string",
"estado": "string",
"fileSize": 0,
"horaCreado": "2026-01-01T00:00:00Z",
"horaEnProceso": "2026-01-01T00:00:00Z",
"horaTerminado": "2026-01-01T00:00:00Z",
"idTarea": "string",
"nombre": "string",
"parametros": "string",
"periodo": 0,
"resultado": "string",
"rut": 0,
"rutAutenticado": 0,
"sistema": "string",
"tipoDocumento": 0
}
]
```
============================================================
# SII · BHE (reference/sii/bhe)
============================================================
## Endpoints en BHE
============================================================
# Anular BHE emitida (reference/sii/bhe/anular-bhe-emitida)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/anular/:folio\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/anular/:folio\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/anular/:folio\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Anular una BHE emitida.
Marca una boleta de honorarios electronica como anulada en el
registro del SII. La BHE queda inutilizable pero el folio no se
reutiliza (queda registrada como anulada).
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ credenciales SII del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 5x (operacion critica)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `folio` | string | Si | Folio de la boleta a anular |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `json` | Formato de respuesta |
| `causa` | string | `3` | Codigo de causa de anulacion (`1`, `2` o `3`) |
### Causas de anulacion
| Codigo | Descripcion |
|--------|-------------|
| `1` | Sin pago del receptor |
| `2` | Error en digitacion |
| `3` | Otros motivos (default) |
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}
}
}
```
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Boleta anulada exitosamente",
"data": {
"anulado": true,
"folio": "67890",
"fecha_anulacion": "2026-01-15",
"causa": "3"
}
}
```son
{
"anulado": true,
"folio": "67890",
"fecha_anulacion": "2026-01-15",
"causa": "3"
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Causa fuera de `{1, 2, 3}` | Usar codigo valido |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Folio no existe o ya esta anulado | Verificar folio en `/emitidas/documentos` |
| 429 | `SII_RATE_LIMIT` | Rate limit del SII | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la anulacion | Revisar `message` |
### Notas
- Anular una BHE no permite reusar su folio — queda consumido en el correlativo.
- Anulacion dentro del mismo mes de emision es reversible; despues no.
- Rate weight 5x refleja que es una operacion de escritura con side-effect.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Descargar PDF de BHE emitida (reference/sii/bhe/descargar-pdf-de-bhe-emitida)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/pdf/:codigo\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/pdf/:codigo\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/pdf/:codigo\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Descargar PDF de una boleta de honorarios electronica emitida.
Devuelve el archivo PDF binario de la BHE identificada por `codigo`.
El RUT emisor se deriva de las credenciales `auth`, nunca del path.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `codigo` | string | Si | Codigo unico del documento BHE (del listado emitidas) |
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}
}
}
```
### Respuesta exitosa (200)
Stream binario con `Content-Type: application/pdf`. No retorna JSON — el cliente debe
guardar el contenido en un archivo `.pdf`.
**Ejemplo en Python:**
```python
response = requests.post(url, headers={"X-API-Token": "..."}, json={"auth": {...}})
with open("bhe.pdf", "wb") as f:
f.write(response.content)
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Codigo BHE no existe en el SII | Verificar codigo con `/emitidas/documentos` |
| 429 | `SII_RATE_LIMIT` | Rate limit del SII | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII no pudo generar el PDF | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- El PDF es generado on-demand por el SII; puede tardar 2-5 seg.
- Solo descarga BHE propias (emitidas bajo el RUT autenticado).
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Ejemplo de respuesta
Código `200`.
```json
null
```
============================================================
# Descargar PDF de BHE recibida (reference/sii/bhe/descargar-pdf-de-bhe-recibida)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bhe/recibidas/pdf/:codigo\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bhe/recibidas/pdf/:codigo\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bhe/recibidas/pdf/:codigo\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Descargar PDF de una BHE recibida por el contribuyente.
Retorna el archivo PDF binario de la BHE identificada por `codigo`
cuando el contribuyente autenticado es receptor.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del receptor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `codigo` | string | Si | Codigo unico del documento BHE |
### Respuesta exitosa (200)
Stream binario con `Content-Type: application/pdf`. Guardar en archivo `.pdf` del lado cliente.
### Errores especificos
| Codigo | error_code | Causa |
|--------|------------|-------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas |
| 401 | `HTTP_401` | API token ausente o invalido |
| 404 | `HTTP_404` | BHE no existe o no es recibida por el autenticado |
| 429 | `SII_RATE_LIMIT` | Rate limit del SII |
| 502 | `SII_GATEWAY_ERROR` | SII no pudo generar el PDF |
### Notas
- Solo descarga BHE donde el contribuyente autenticado es receptor.
- El PDF es idéntico al que genero el emisor (mismo archivo).
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Ejemplo de respuesta
Código `200`.
```json
null
```
============================================================
# Emitir nueva BHE (reference/sii/bhe/emitir-nueva-bhe)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/emitir\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/emitir\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/emitir\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Emitir una nueva boleta de honorarios electronica en el SII.
Crea una nueva BHE con los datos del receptor y del servicio
prestado. El SII asigna folio y codigo al emitirla. El RUT del
emisor se deriva de las credenciales `auth`, nunca se pasa por URL.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ credenciales SII del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 5x (operacion critica de escritura)
---
### Body (JSON)
| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `auth.pass.rut` | string | Si | RUT del emisor (se deriva el RUT de la BHE) |
| `auth.pass.clave` | string | Si | Clave tributaria SII |
| `boleta.receptor_rut` | string | Si | RUT del receptor (`XX.XXX.XXX-X`) |
| `boleta.receptor_nombre` | string | Si | Nombre/razon social del receptor |
| `boleta.monto_neto` | integer | Si | Monto neto en CLP (antes de retencion) |
| `boleta.descripcion` | string | Si | Descripcion del servicio prestado |
| `boleta.fecha_emision` | string | No | Fecha `YYYY-MM-DD` (default: hoy) |
### Request de ejemplo
```json
{
"auth": {"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}},
"boleta": {
"receptor_rut": "12.345.678-9",
"receptor_nombre": "Empresa Ejemplo SpA",
"monto_neto": 100000,
"descripcion": "Servicios de consultoria profesional"
}
}
```
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Boleta de honorarios emitida exitosamente",
"data": {
"codigo": "123456",
"folio": 67890,
"fecha": "2026-01-15",
"estado": "Emitida",
"monto_bruto": 119000,
"retencion": 15827,
"monto_liquido": 103173
}
}
```son
{
"codigo": "123456",
"folio": 67890,
"fecha": "2026-01-15",
"estado": "Emitida",
"monto_bruto": 119000,
"retencion": 15827,
"monto_liquido": 103173
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Datos rechazados por SII (RUT/monto invalido) | Revisar `message` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope adecuado |
| 422 | `VALIDATION_ERROR` | Campos del body rechazados | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la emision (error estructurado) | Revisar `details.observacion` |
### Notas
- La retencion (10%-13.75%) se calcula por el SII segun el año tributario.
- Una BHE emitida genera folio inmediatamente; para anular, usar `POST /emitidas/anular/{codigo}`.
- Rate weight 5x refleja que es una operacion de escritura con side-effect en el SII.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
},
"boleta": {}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Listar BHE emitidas por periodo (reference/sii/bhe/listar-bhe-emitidas-por-periodo)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/documentos/202601\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/documentos/202601\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/documentos/202601\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Listar boletas de honorarios electronicas emitidas en un periodo.
Obtiene el listado de BHE emitidas por el contribuyente autenticado
en el periodo indicado. El nivel de agregacion depende del formato
del periodo: anual entrega resumenes por mes, mensual/diario entrega
boletas individuales.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del emisor en el body (`auth.pass.rut` / `auth.pass.clave`).
El RUT emisor se deriva de las credenciales, nunca del path (previene IDOR).
**Quota:** Consume 1 consulta | Peso: 2x (listado con paginacion server-side)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `periodo` | string | Si | `YYYY` (anual), `YYYYMM` (mensual) o `YYYYMMDD` (diario) |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `json` | `json` (default, estructurado) o `csv` (raw del SII) |
| `csv_delimiter` | string | `;` | Delimitador cuando `formato=csv` |
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}
}
}
```
### Respuesta exitosa - periodo mensual/diario (200)
```json
{
"success": true,
"data": [
{
"codigo": "123456",
"folio": 1234,
"fecha": "2026-01-15",
"receptor_rut": "12.345.678-9",
"receptor_nombre": "NOMBRE EJEMPLO",
"monto_bruto": 119000,
"retencion": 15827,
"monto_liquido": 103173,
"estado": "vigente"
}
],
"total": 1,
"n_boletas": 1,
"pagina_sig_codigo": null,
"message": null
}
```
### Respuesta exitosa - periodo anual (200)
Retorna `BHEResumenAnual` con montos agregados por mes:
```json
{
"success": true,
"data": [
{"mes": 1, "cantidad": 5, "monto_total": 500000},
{"mes": 2, "cantidad": 8, "monto_total": 820000}
],
"total": 12,
"message": null
}
```
Si el contribuyente no registra boletas, `data` es `[]` y `message` indica la ausencia.
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Periodo con formato invalido | Usar `YYYY`, `YYYYMM` o `YYYYMMDD` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Paginacion BHE
El response incluye `n_boletas` (total histórico) y `pagina_sig_codigo`
(código opaco para la siguiente página). Cuando `pagina_sig_codigo` es
`null` o `00000000000000`, no hay mas paginas.
### Notas
- El RUT emisor es el que autentica — no se puede consultar BHE de otro contribuyente via este endpoint.
- Los montos estan en CLP, enteros.
- `csv` retorna el formato raw del SII (ISO-8859-1), util para importar en Excel.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": [],
"message": "string",
"n_boletas": 0,
"pagina_sig_codigo": "string",
"paginacion": {
"pagina_actual": 0,
"pagina_sig_codigo": "string",
"pagina_siguiente": 0,
"total_registros": 0
},
"success": true,
"total": 0
}
```
============================================================
# Listar BHE recibidas por periodo (reference/sii/bhe/listar-bhe-recibidas-por-periodo)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bhe/recibidas/documentos/202601\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bhe/recibidas/documentos/202601\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bhe/recibidas/documentos/202601\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Listar boletas de honorarios electronicas recibidas en un periodo.
Obtiene el listado de BHE recibidas por el contribuyente autenticado
en el periodo indicado. El RUT receptor se deriva de las credenciales
`auth`, nunca del path (previene IDOR).
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del receptor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `periodo` | string | Si | `YYYY`, `YYYYMM` o `YYYYMMDD` |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `json` | `json` (estructurado) o `csv` (raw del SII) |
| `csv_delimiter` | string | `;` | Delimitador CSV |
| `pagina` | integer | — | Numero de pagina (1-indexed), para mensual/diario |
| `pagina_sig_codigo` | string | — | Cursor opaco del response anterior; `00000000000000` = ultima pagina |
### Respuesta exitosa (200)
```json
{
"success": true,
"data": [
{
"codigo": "123456",
"folio": 1234,
"fecha": "2026-01-15",
"emisor_rut": "12.345.678-9",
"emisor_nombre": "EMISOR EJEMPLO",
"emisor_comuna": "SANTIAGO",
"monto_bruto": 119000,
"estado": "N"
}
],
"total": 1,
"n_boletas": 10,
"pagina_sig_codigo": "00000000000002",
"message": null
}
```
Nota: en `periodo=YYYYMMDD` el SII NO entrega el RUT del emisor (solo nombre).
En `periodo=YYYY` se retornan resumenes agregados por mes (no boletas individuales).
### Valores de `estado`
| Codigo | Descripcion |
|--------|-------------|
| `N` | Vigente |
| `S` | Anulada |
| `V` | Anulacion pendiente |
| `R` | Observada |
| `U` | Observada por SII |
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Periodo mal formado | Usar `YYYY`/`YYYYMM`/`YYYYMMDD` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 429 | `SII_RATE_LIMIT` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | Error del SII | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- La retencion del emisor solo esta disponible en consulta diaria.
- Para paginacion: primera llamada sin `pagina`; siguientes con `pagina` + `pagina_sig_codigo` del response previo.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": [],
"message": "string",
"n_boletas": 0,
"pagina_sig_codigo": "string",
"paginacion": {
"pagina_actual": 0,
"pagina_sig_codigo": "string",
"pagina_siguiente": 0,
"total_registros": 0
},
"success": true,
"total": 0
}
```
============================================================
# Observar BHE recibida (reference/sii/bhe/observar-bhe-recibida)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bhe/recibidas/observar/:emisor/:folio\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bhe/recibidas/observar/:emisor/:folio\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bhe/recibidas/observar/:emisor/:folio\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Registrar observacion sobre una BHE recibida.
Permite al receptor de una BHE registrar una observacion formal en
el SII cuando no esta de acuerdo con la boleta (no presto el
servicio indicado o el monto es erroneo). La observacion queda
como evidencia en el registro tributario.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ credenciales SII del receptor en el body.
**Quota:** Consume 1 consulta | Peso: 4x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor (formato `DDDDDDDD-X`, sin puntos) |
| `folio` | string | Si | Folio de la boleta a observar |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `json` | Formato de respuesta |
| `causa` | string | `1` | Codigo de causa: `1` (no presto servicio) o `2` (monto erroneo) |
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Boleta recibida observada exitosamente",
"data": {
"nro_transaccion": "33592502651",
"mensaje": "En Santiago, con fecha 30/03/2026, el SII ha registrado la observacion...",
"estado": "ObR",
"fecha": "2026-03-29",
"rut_emisor": "12.345.678-9",
"nombre_emisor": "EMISOR EJEMPLO"
}
}
```son
{
"nro_transaccion": "33592502651",
"mensaje": "En Santiago, con fecha 30/03/2026, el SII ha registrado la observacion...",
"estado": "ObR",
"fecha": "2026-03-29",
"rut_emisor": "12.345.678-9",
"nombre_emisor": "EMISOR EJEMPLO"
}
```
### Estados posibles
- `ObR`: Observacion Receptor (exitosamente registrada)
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | `causa` fuera de `{1, 2}` o folio malformado | Revisar parametros |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Folio no existe o ya fue observado | Verificar en `/recibidas/documentos` |
| 429 | `SII_RATE_LIMIT` | Rate limit del SII | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la observacion | Revisar `message` |
### Notas
- Solo el receptor de la BHE puede observarla.
- Una BHE solo se puede observar **una vez**; reintentar retorna 404.
- La observacion inicia un proceso administrativo en el SII que puede anular la BHE.
- Rate weight 4x refleja que es operacion de escritura con consecuencias.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Reenviar BHE emitida por email (reference/sii/bhe/reenviar-bhe-emitida-por-email)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/email/:codigo\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/email/:codigo\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bhe/emitidas/email/:codigo\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Reenviar una BHE emitida por correo electronico al receptor.
Solicita al SII reenviar el PDF de la BHE indicada al email del
destinatario especificado.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ credenciales SII del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `codigo` | string | Si | Codigo unico del documento BHE |
### Body (JSON)
| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `auth.pass.rut` | string | Si | RUT del emisor |
| `auth.pass.clave` | string | Si | Clave tributaria SII |
| `destinatario.email` | string | Si | Email destinatario valido |
| `destinatario.nombre` | string | No | Nombre del destinatario |
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Email enviado exitosamente",
"data": {
"mensaje": "La Boleta de Honorarios Electrónica se envió exitosamente",
"destinatario": "cliente@example.com",
"nombre_receptor": "Juan Pérez",
"nro_boleta": "12345"
}
}
```son
{
"mensaje": "La Boleta de Honorarios Electrónica se envió exitosamente",
"destinatario": "cliente@example.com",
"nombre_receptor": "Juan Pérez",
"nro_boleta": "12345"
}
```
Todos los campos vienen literal del SII (gateway transparente):
- `mensaje`: extraido dinamicamente del `` del
HTML de la pagina "INFORMACION AL CONTRIBUYENTE" del SII (helper
`extract_sii_status_message`, sin parser hardcoded).
- `destinatario`: email enviado en el body de la peticion (o el
registrado en el SII si no se proveyo).
- `nombre_receptor` / `nro_boleta`: extraidos del parser metadata
del paso 1 (formulario con datos pre-llenados del SII).
### Errores especificos
| Codigo | error_code | Causa |
|--------|------------|-------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas |
| 400 | `VALIDATION_ERROR` | Email mal formado |
| 401 | `HTTP_401` | API token ausente o invalido |
| 404 | `HTTP_404` | Codigo BHE no existe |
| 429 | `SII_RATE_LIMIT` | Rate limit del SII |
| 502 | `SII_GATEWAY_ERROR` | SII fallo al enviar el email |
### Notas
- El SII envia el email desde su propio servicio; no hay control de entrega.
- Para reenviar la misma BHE varias veces, se cuenta 1 consulta por cada llamada.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
},
"destinatario": {
"email": "string"
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"message": "string",
"success": true
}
```
============================================================
# SII · BTE (reference/sii/bte)
============================================================
## Endpoints en BTE
============================================================
# Anular BTE emitida (reference/sii/bte/anular-bte-emitida)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/anular/:folio\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/anular/:folio\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/anular/:folio\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Anular una BTE emitida.
Registra la anulacion de una boleta de terceros con la causa
indicada. Al anular, ambas partes (emisor y receptor) deben estar de
acuerdo — si el receptor no lo esta, puede manifestarlo al SII y la
anulacion no se hara efectiva. El RUT emisor se deriva de las
credenciales `auth`, nunca del path.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ credenciales SII del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 5x (operacion critica de escritura)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `folio` | integer | Si | Numero de folio a anular |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `causa` | string | `3` | `2` (no se efectuo prestacion) o `3` (error digitacion) |
### Condiciones del SII para anulacion
- Plazo maximo **10 dias** desde la fecha de emision.
- Monto liquido de la boleta **menor o igual a $1.000.000**.
- Boletas fuera de estas condiciones requieren **Formulario 2117** presencial en oficina del SII.
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}
}
}
```
### Respuesta exitosa (200)
```json
{
"folio": 1234,
"estado": "ANULADA",
"causa": "3",
"mensaje": "Boleta anulada correctamente"
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Causa invalida (debe ser `2` o `3`) | Usar causa valida |
| 400 | `SII_ERROR` | Fuera del plazo o monto > $1M | Usar Formulario 2117 presencial |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope adecuado |
| 404 | `HTTP_404` | Folio no existe bajo el RUT autenticado | Verificar folio con `/emitidas/documentos` |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la anulacion | Revisar `details` |
### Notas
- Si el receptor rechaza, el estado final puede volver a `VIGENTE`.
- Rate weight 5x refleja que es operacion de escritura con side-effect.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"causa": "",
"estado": "",
"folio": 0,
"mensaje": ""
}
```
============================================================
# Emitir una nueva BTE (reference/sii/bte/emitir-una-nueva-bte)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/emitir\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/emitir\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/emitir\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Emitir una nueva boleta de terceros electronica (BTE).
Crea una nueva BTE con Encabezado (Emisor, IdDoc, Receptor) y Detalle
(items). El SII asigna el folio y el `track_id` al confirmar la
emision. El RUT del emisor se deriva de `auth.pass.rut`.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ credenciales SII del emisor en el body (`auth.pass.rut` / `auth.pass.clave`).
**Quota:** Consume 1 consulta | Peso: 5x (operacion critica de escritura)
---
### Body (JSON)
| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `auth.pass.rut` | string | Si | RUT del emisor |
| `auth.pass.clave` | string | Si | Clave tributaria SII |
| `boleta.Encabezado.Emisor.RUTEmisor` | string | Si | RUT del emisor (debe coincidir con `auth.pass.rut`) |
| `boleta.Encabezado.IdDoc.FchEmis` | string | Si | Fecha de emision `YYYY-MM-DD` |
| `boleta.Encabezado.Receptor.RUTRecep` | string | Si | RUT del receptor |
| `boleta.Encabezado.Receptor.RznSocRecep` | string | Si | Razon social del receptor |
| `boleta.Encabezado.Receptor.DirRecep` | string | Si | Direccion del receptor |
| `boleta.Encabezado.Receptor.CmnaRecep` | string | Si | Comuna del receptor |
| `boleta.Detalle` | array | Si | Array de items con `NmbItem` y `MontoItem` |
### Request de ejemplo
```json
{
"auth": {"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}},
"boleta": {
"Encabezado": {
"Emisor": {"RUTEmisor": "76.XXX.XXX-K"},
"IdDoc": {"FchEmis": "2026-01-15"},
"Receptor": {
"RUTRecep": "12.345.678-9",
"RznSocRecep": "Receptor Ejemplo",
"DirRecep": "Calle Ejemplo 123",
"CmnaRecep": "Santiago"
}
},
"Detalle": [
{"NmbItem": "Servicio profesional", "MontoItem": 100000}
]
}
}
```
### Respuesta exitosa (200)
```json
{
"folio": 1234,
"codigo": "7774253600003DBD296A",
"fecha_emision": "26-04-2026",
"emisor_rut": "77742536-6",
"emisor_nombre": "EMPRESA EJEMPLO SPA",
"receptor_rut": "12345678-9",
"receptor_nombre": "Juan Pérez",
"bruto": 1000000,
"retencion": 137500,
"total": 862500,
"tasa_retencion": "13,75",
"detalle": [{"NmbItem": "Servicios", "MontoItem": 1000000}]
}
```
Datos extraidos literal del HTML del SII paso 3 + hidden fields del
borrador. Gateway transparente: HTTP 200 implica emision exitosa
(cualquier rechazo en step 2/3 propaga error 4xx/5xx con mensaje
real del SII).
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Datos de boleta rechazados por SII | Revisar `message` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope adecuado |
| 422 | `VALIDATION_ERROR` | Campos del body rechazados | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la emision | Revisar `details` |
### Notas
- La retencion (10%-13.75%) se calcula por el SII segun el año tributario.
- El `RUTEmisor` del boleta debe coincidir con `auth.pass.rut` o el SII rechaza.
- Para anular una BTE emitida, usar `POST /emitidas/anular/{folio}`.
- Rate weight 5x refleja que es una operacion de escritura con side-effect.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "",
"rut": "76192083-9"
}
},
"boleta": {
"Detalle": [
{
"MontoItem": 50,
"NmbItem": "Prueba integracion API Gateway 1"
},
{
"MontoItem": 100,
"NmbItem": "Prueba integracion API Gateway 2"
}
],
"Encabezado": {
"Emisor": {
"RUTEmisor": "76192083-9"
},
"IdDoc": {
"FchEmis": "2024-10-10"
},
"Receptor": {
"CmnaRecep": "Santa Cruz",
"DirRecep": "Santa Cruz",
"RUTRecep": "66666666-6",
"RznSocRecep": "Receptor generico"
}
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{}
```
============================================================
# Listar BTE emitidas por periodo (reference/sii/bte/listar-bte-emitidas-por-periodo)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/documentos/202601\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/documentos/202601\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/documentos/202601\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Listar BTE emitidas en un periodo mensual o diario.
Obtiene el listado de boletas de terceros emitidas por el contribuyente
autenticado, con metadata del periodo (total, vigentes, anuladas) y
totales agregados. El RUT emisor se deriva de las credenciales
(`auth.pass.rut`) — nunca del path.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 2x (listado con paginacion server-side)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `periodo` | string | Si | `YYYYMM` (mensual) o `YYYYMMDD` (diario) |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `json` | `json` (default), `csv` o `html` |
| `csv_delimiter` | string | `;` | Delimitador cuando `formato=csv` |
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}
}
}
```
### Respuesta exitosa (200)
```json
{
"total_boletas": 25,
"boletas_vigentes": 24,
"boletas_anuladas": 1,
"pagina": 1,
"total_paginas": 1,
"documentos": [
{
"numero": 1234,
"estado": "VIGENTE",
"fecha_emision": "15-01-2026",
"emisor_rut": "76.XXX.XXX-K",
"emisor_nombre": "EMPRESA EJEMPLO SPA",
"receptor_rut": "12.345.678-9",
"receptor_nombre": "Receptor Ejemplo",
"bruto": 119000,
"retencion": 15827,
"total": 103173,
"codigo": "ABC123"
}
],
"totales": {
"folio_inicial": 1210,
"folio_final": 1234,
"vigentes": 24,
"anuladas": 1,
"bruto": 2975000,
"retencion": 395675,
"total": 2579325
},
"message": null
}
```
Si no hay documentos, `documentos` es `[]` y `message` indica la ausencia.
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Periodo con formato invalido | Usar `YYYYMM` o `YYYYMMDD` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- Para resumen anual usar `POST /emitidas/resumen/{anio}` en su lugar.
- `csv` retorna el formato raw del SII (ISO-8859-1), util para Excel.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
============================================================
# Listar BTE recibidas por periodo (reference/sii/bte/listar-bte-recibidas-por-periodo)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bte/recibidas/documentos/202601\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bte/recibidas/documentos/202601\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bte/recibidas/documentos/202601\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Listar BTE recibidas por periodo (anual, mensual o diario).
Obtiene el listado de boletas de terceros recibidas por el
contribuyente autenticado. El nivel de agregacion depende del formato
del periodo: anual entrega resumenes por mes, mensual/diario entrega
documentos individuales. El RUT receptor se deriva de las
credenciales `auth`, nunca del path.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del receptor en el body.
**Quota:** Consume 1 consulta | Peso: 2x (listado con paginacion server-side)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `periodo` | string | Si | `YYYY` (anual), `YYYYMM` (mensual) o `YYYYMMDD` (diario) |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `json` | `json` (default), `csv` o `html` |
| `csv_delimiter` | string | `;` | Delimitador cuando `formato=csv` |
| `pagina` | integer | `1` | Numero de pagina |
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}
}
}
```
### Respuesta exitosa - periodo mensual/diario (200)
```json
{
"total_boletas": 3,
"boletas_vigentes": 3,
"boletas_anuladas": 0,
"pagina": 1,
"total_paginas": 1,
"documentos": [
{
"numero": 5678,
"estado": "VIGENTE",
"fecha_emision": "10-01-2026",
"emisor_rut": "77.777.777-7",
"emisor_nombre": "Emisor Ejemplo",
"fecha_recepcion": "10-01-2026",
"bruto": 50000,
"retencion": 6650,
"total": 43350,
"codigo": "XYZ789"
}
],
"totales": {
"folio_inicial": 5678,
"folio_final": 5680,
"vigentes": 3,
"anuladas": 0,
"bruto": 150000,
"retencion": 19950,
"total": 130050
},
"message": null
}
```
Para `periodo=YYYY` retorna resumen anual (`BTEResumenResponse` con tabla mensual).
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Periodo con formato invalido | Usar `YYYY`, `YYYYMM` o `YYYYMMDD` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- Para periodos anuales (`YYYY`) usa resumen; para mensual/diario lista documentos.
- En recibidas, el `receptor_rut` es el contribuyente autenticado, por lo que no aparece en los items.
- `csv` retorna el formato raw del SII (ISO-8859-1), util para Excel.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
============================================================
# Obtener detalle de BTE emitida por folio (reference/sii/bte/obtener-detalle-de-bte-emitida-por-folio)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/documento/1234?periodo=202601\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/documento/1234?periodo=202601\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/documento/1234?periodo=202601\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Obtener detalle completo de una BTE emitida por folio.
Consulta el SII para el periodo indicado (o mes actual si se omite),
busca el documento con el folio solicitado y retorna sus datos
completos (estado, fechas, receptor, montos, codigo). El RUT emisor
se deriva de las credenciales `auth`, nunca del path.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `folio` | integer | Si | Numero de folio de la BTE |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `periodo` | string | mes actual | `YYYYMM` en el que buscar el folio |
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}
}
}
```
### Respuesta exitosa (200)
```json
{
"numero": 1234,
"estado": "VIGENTE",
"fecha_emision": "15-01-2026",
"emisor_rut": "76.XXX.XXX-K",
"emisor_nombre": "EMPRESA EJEMPLO SPA",
"fecha_recepcion": "15-01-2026",
"receptor_rut": "12.345.678-9",
"receptor_nombre": "Receptor Ejemplo",
"bruto": 119000,
"retencion": 15827,
"total": 103173,
"codigo": "ABC123"
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Periodo con formato invalido | Usar `YYYYMM` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Folio no existe en el periodo consultado | Ajustar `periodo` o revisar folio |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- El endpoint busca el folio dentro del listado mensual; si el folio es de otro mes, pasar `periodo`.
- El `codigo` retornado puede usarse en `/emitidas/html/{codigo}` para obtener el HTML impreso.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"bruto": 0,
"codigo": "",
"emisor_nombre": "",
"emisor_rut": "",
"estado": "",
"fecha_emision": "",
"fecha_recepcion": "",
"numero": 0,
"receptor_nombre": "string",
"receptor_rut": "string",
"retencion": 0,
"total": 0
}
```
============================================================
# Obtener HTML de BTE emitida (reference/sii/bte/obtener-html-de-bte-emitida)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/html/:codigo\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/html/:codigo\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/html/:codigo\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Obtener representacion HTML de una BTE emitida.
Devuelve la representacion HTML impresa (misma vista que el SII entrega
en su portal) de la boleta identificada por `codigo`. El RUT emisor se
deriva de las credenciales `auth`, nunca del path.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `codigo` | string | Si | Codigo unico del documento BTE (del listado emitidas) |
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}
}
}
```
### Respuesta exitosa (200)
Retorna HTML raw del SII con `Content-Type: text/html`. No es JSON.
**Ejemplo en Python:**
```python
response = requests.post(url, headers={"X-API-Token": "..."}, json={"auth": {...}})
with open("bte.html", "w", encoding="utf-8") as f:
f.write(response.text)
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Codigo BTE no existe en el SII | Verificar con `/emitidas/documentos` |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII no pudo generar el HTML | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- El HTML es generado on-demand por el SII; puede tardar 2-5 seg.
- Solo descarga BTE propias (emitidas bajo el RUT autenticado).
- Para version imprimible en PDF, renderizar el HTML con una libreria como `weasyprint`.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Ejemplo de respuesta
Código `200`.
```json
null
```
============================================================
# Obtener HTML de BTE recibida (reference/sii/bte/obtener-html-de-bte-recibida)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bte/recibidas/html/:codigo\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bte/recibidas/html/:codigo\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bte/recibidas/html/:codigo\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Obtener representacion HTML de una BTE recibida.
Devuelve la representacion HTML impresa de la boleta de terceros
recibida por el contribuyente autenticado. El RUT receptor se deriva
de las credenciales `auth`, nunca del path.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del receptor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `codigo` | string | Si | Codigo unico del documento BTE (del listado recibidas) |
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}
}
}
```
### Respuesta exitosa (200)
Retorna HTML raw del SII con `Content-Type: text/html`. No es JSON.
**Ejemplo en Python:**
```python
response = requests.post(url, headers={"X-API-Token": "..."}, json={"auth": {...}})
with open("bte_recibida.html", "w", encoding="utf-8") as f:
f.write(response.text)
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Codigo BTE no existe en el SII | Verificar con `/recibidas/documentos` |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII no pudo generar el HTML | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- Solo descarga BTE recibidas por el RUT autenticado.
- El HTML es generado on-demand por el SII; puede tardar 2-5 seg.
- Para version imprimible en PDF, renderizar con `weasyprint` u otra libreria.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Ejemplo de respuesta
Código `200`.
```json
null
```
============================================================
# Obtener resumen anual de BTE emitidas (reference/sii/bte/obtener-resumen-anual-de-bte-emitidas)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/resumen/2024\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/resumen/2024\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/resumen/2024\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Obtener resumen anual de BTE emitidas agrupado por mes.
Entrega totales agregados por mes (folios, vigentes, anuladas, bruto,
retencion, total) y un consolidado anual. El RUT emisor se deriva de
las credenciales `auth` — nunca del path (previene IDOR).
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del emisor en el body (`auth.pass.rut` / `auth.pass.clave`).
**Quota:** Consume 1 consulta | Peso: 2x (agregado anual)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `anio` | integer | Si | Año tributario (entre 2005 y 2100) |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `json` | `json` (default), `csv` o `html` |
| `csv_delimiter` | string | `;` | Delimitador cuando `formato=csv` |
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}
}
}
```
### Respuesta exitosa (200)
```json
{
"anual": {
"folio_inicial": 1,
"folio_final": 1500,
"vigentes": 1450,
"anuladas": 50,
"bruto": 125000000,
"retencion": 16625000,
"total": 108375000
},
"mensual": [
{
"mes_codigo": "01",
"mes_glosa": "Enero",
"folio_inicial": 1,
"folio_final": 120,
"vigentes": 115,
"anuladas": 5,
"bruto": 10000000,
"retencion": 1330000,
"total": 8670000
}
]
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `VALIDATION_ERROR` | `anio` fuera del rango 2005-2100 | Ajustar el año a un valor valido |
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:read` | Generar token con scope adecuado |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- Los montos estan en CLP, enteros o con decimales segun respuesta del SII.
- La tabla `mensual` contiene hasta 12 filas (una por mes activo).
- `csv` y `html` retornan el formato raw del SII (ISO-8859-1).
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"anual": {
"anuladas": 0,
"bruto": 0,
"folio_final": 0,
"folio_inicial": 0,
"retencion": 0,
"total": 0,
"vigentes": 0
},
"mensual": [
{
"anuladas": 0,
"bruto": 0,
"folio_final": 0,
"folio_inicial": 0,
"mes_codigo": "string",
"mes_glosa": "string",
"retencion": 0,
"total": 0,
"vigentes": 0
}
]
}
```
============================================================
# Obtener tasa de retencion aplicada a un receptor (reference/sii/bte/obtener-tasa-de-retencion-aplicada-a-un-receptor)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/receptor-tasa/12345678-9?periodo=202601\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/receptor-tasa/12345678-9?periodo=202601\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/receptor-tasa/12345678-9?periodo=202601\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Obtener tasa de retencion aplicada a un receptor para BTE.
Ejecuta los pasos 1 y 2 del flujo de emision BTE en el SII sin emitir
el documento. El SII calcula la tasa del impuesto (TASA_IMP) en el
paso 2 al recibir el RUT del receptor. Util para previsualizar
montos antes de emitir.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `receptor` | string | Si | RUT del receptor con formato `XXXXXXXX-K` |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `periodo` | string | mes actual | `YYYYMM` de consulta |
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}
}
}
```
### Respuesta exitosa (200)
```json
{
"periodo": 202601,
"tasa_base": 13.75,
"tasa_receptor": 13.75
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Formato RUT receptor invalido | Usar `XXXXXXXX-K` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- La tasa base es la tasa general para BTE; la tasa del receptor puede diferir si el SII aplica excepciones.
- No emite la BTE — solo consulta la tasa. Para emitir usar `POST /emitidas/emitir`.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"periodo": 0,
"tasa_base": 0,
"tasa_receptor": 0
}
```
============================================================
# SII · Certificación (reference/sii/certificacion)
============================================================
## Endpoints en Certificación
============================================================
# Consultar avance de la postulacion (reference/sii/certificacion/consultar-avance-de-la-postulacion)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/certificacion/postulacion/avance/:contribuyente\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/certificacion/postulacion/avance/:contribuyente\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/certificacion/postulacion/avance/:contribuyente\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar el avance de la postulacion del contribuyente.
Operacion de LECTURA (`pe_avance5` -> `pe_avance6`): indica si el contribuyente
ya esta inscrito en postulacion y, de estarlo, en que paso del proceso se
encuentra y el estado por set. Util para decidir, antes de certificar, si hay
que postular (y pedir el perfil de postulacion) o si ya esta inscrito.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ certificado digital en el body bajo `auth.cert.*`.
**Quota:** Consume 1 consulta | Peso: 2x (operacion con cert web auth)
### Respuesta (200)
- `inscrito=false` -> no postulado (debe postular).
- `inscrito=true` -> ya postulado (con `paso` + `sets`).
- `inscrito=null` -> respuesta inconclusa del SII.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
============================================================
# Consultar datos contribuyente certificacion (reference/sii/certificacion/consultar-datos-contribuyente-certificacion)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/certificacion/contribuyentes/datos/:contribuyente\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/certificacion/contribuyentes/datos/:contribuyente\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/certificacion/contribuyentes/datos/:contribuyente\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar datos del contribuyente para proceso de certificacion DTE.
Recupera los datos del contribuyente registrados en el portal de
certificacion DTE del SII (RUT, razon social, emails de contacto,
documentos autorizados, software postulados) usando autenticacion
con certificado digital.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credencial certificado digital en el body bajo `auth.cert.*`:
PEM (`cert-data` + `pkey-data`) o PFX (`pfx-data` + `passphrase`).
**Quota:** Consume 1 consulta | Peso: 2x (operacion con cert web auth)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Formato |
|-----------|------|-----------|---------|
| `contribuyente` | string | Si | `DDDDDDDD-X` (sin puntos, 1-8 digitos + guion + DV) |
### Errores especificos
| Codigo | error_code | Causa |
|--------|------------|-------|
| 400 | `AUTH_ERROR` | Certificado digital invalido o passphrase incorrecta |
| 401 | `HTTP_401` | API token ausente o invalido |
| 422 | `VALIDATION_ERROR` | RUT no cumple patron `DDDDDDDD-X` o body con formato invalido |
| 429 | `SII_RATE_LIMIT` | Rate limit del SII |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"actividades": [
{}
],
"casa_matriz": {},
"dv": "string",
"giro": "string",
"razon_social": "string",
"rut": 0,
"unidad_sii": "string"
}
```
============================================================
# Postular software al proceso de certificacion (reference/sii/certificacion/postular-software-al-proceso-de-certificacion)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/certificacion/facturas/postular/:contribuyente\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/certificacion/facturas/postular/:contribuyente\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/certificacion/facturas/postular/:contribuyente\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Postular software al proceso de certificacion DTE del SII.
Registra la intencion del contribuyente de certificar un software
propio o de mercado para emitir documentos tributarios electronicos.
Requiere informacion del administrador, emails de contacto, datos
del software y codigos DTE que se van a certificar.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ certificado digital en el body.
**Quota:** Consume 1 consulta | Peso: 3x (operacion costosa SII)
---
### Parametros
| Nombre | Ubicacion | Tipo | Requerido | Descripcion |
|--------|-----------|------|-----------|-------------|
| `contribuyente` | path | string | Si | RUT formato `DDDDDDDD-X` |
| `formato` | query | enum | No | `json` (default) o `html` |
### Body: `datos.*`
| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `datos.rut_administrador` | string | Si | RUT administrador (ej: `DDDDDDDD-X`) |
| `datos.emails.administrador` | string | Si | Email del administrador |
| `datos.emails.contacto_sii` | string | Si | Email de contacto SII |
| `datos.emails.intercambio_empresas` | string | Si | Email intercambio empresas |
| `datos.software.nombre` | string | Si | Nombre del software |
| `datos.software.url` | string | No | URL del software |
| `datos.documentos` | array[int] | Si | Codigos DTE a certificar |
### Codigos DTE (`datos.documentos`)
| Codigo | Documento |
|--------|-----------|
| 33 | Factura Electronica (incluye NC + ND) |
| 34 | Factura Exenta |
| 39 | Boleta Electronica |
| 41 | Boleta Exenta Electronica |
| 43 | Liquidacion Factura Electronica |
| 46 | Factura de Compra |
| 52 | Guia de Despacho |
| 110 | Documentos de Exportacion |
### Errores especificos
Ver tabla de endpoint 1. Adicional: `403 INSUFFICIENT_SCOPE` si el token no tiene `sii:write`.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
},
"datos": {
"documentos": [
0
],
"emails": {
"administrador": "string",
"contacto_sii": "string",
"intercambio_empresas": "string"
},
"rut_administrador": "string",
"software": {
"nombre": "string",
"url": ""
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{}
```
============================================================
# Solicitar set de pruebas de boletas (reference/sii/certificacion/solicitar-set-de-pruebas-de-boletas)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/certificacion/boletas/solicitar_set/:contribuyente\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/certificacion/boletas/solicitar_set/:contribuyente\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/certificacion/boletas/solicitar_set/:contribuyente\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Solicitar set de pruebas de boletas para certificacion DTE.
Genera y descarga el set de pruebas oficial del SII para boleta
electronica (DTE 39) y boleta exenta (DTE 41).
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ certificado digital en el body.
**Quota:** Consume 1 consulta | Peso: 3x
---
### Parametros
| Nombre | Ubicacion | Tipo | Requerido | Descripcion |
|--------|-----------|------|-----------|-------------|
| `contribuyente` | path | string | Si | RUT `DDDDDDDD-X` |
| `formato` | query | enum | No | `json` (default) o `txt` |
### Respuesta exitosa (200)
Igual que `/facturas/solicitar_set` pero con archivo `SIISetBoletasPruebasDDDDDDDD.txt`.
### Errores especificos
Ver tabla de endpoint 1.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
},
"datos": {
"email": "string"
}
}
```
## Respuestas
============================================================
# Solicitar set de pruebas de facturas (reference/sii/certificacion/solicitar-set-de-pruebas-de-facturas)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/certificacion/facturas/solicitar_set/:contribuyente\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/certificacion/facturas/solicitar_set/:contribuyente\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/certificacion/facturas/solicitar_set/:contribuyente\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Solicitar set de pruebas de facturas para certificacion DTE.
Genera y descarga el set de pruebas oficial del SII para los documentos
de facturas (33, 34, 43, 46, 52, 110). El set contiene los casos de
prueba que el software debe emitir correctamente para aprobar la
certificacion.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ certificado digital en el body.
**Quota:** Consume 1 consulta | Peso: 3x (operacion costosa SII)
---
### Parametros
| Nombre | Ubicacion | Tipo | Requerido | Descripcion |
|--------|-----------|------|-----------|-------------|
| `contribuyente` | path | string | Si | RUT `DDDDDDDD-X` |
| `formato` | query | enum | No | `json` (default, estructurado) o `txt` (raw del SII, ISO-8859-1) |
### Respuesta exitosa (200)
- `formato=json`: estructura con `indicaciones`, `sets` y `casos` parseados.
- `formato=txt`: archivo `SIISetDePruebasDDDDDDDD.txt` con `Content-Type: text/plain`.
### Errores especificos
Ver tabla de endpoint 1.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
},
"sets": [
0
]
}
```
## Respuestas
============================================================
# SII · Contribuyentes (reference/sii/contribuyentes)
============================================================
## Endpoints en Contribuyentes
============================================================
# Consultar situacion tributaria de tercero (reference/sii/contribuyentes/consultar-situacion-tributaria-de-tercero)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/contribuyentes/situacion_tributaria/tercero/76.XXX.XXX-K\",\n CURLOPT_CUSTOMREQUEST => \"GET\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X GET \"https://api.fiscalbridge.cl/api/v1/sii/contribuyentes/situacion_tributaria/tercero/76.XXX.XXX-K\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/contribuyentes/situacion_tributaria/tercero/76.XXX.XXX-K\", {\n method: \"GET\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar situacion tributaria de un contribuyente tercero.
Consulta la situacion tributaria actual (razon social, fecha de inicio
de actividades, actividades economicas, documentos timbrados, estado
PRO-PYME y obligacion DTE) de un contribuyente por RUT, a traves del
servicio SIAC del SII.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`.
**Quota:** Consume 1 consulta | Peso: 1x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `rut` | string | Si | RUT del contribuyente. Formato: `XX.XXX.XXX-X` |
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Situacion tributaria encontrada exitosamente",
"data": {
"rut": 76000000,
"dv": "K",
"razon_social": "Empresa Ejemplo SpA",
"inicio_actividades": true,
"fecha_inicio_actividades": "2020-01-15",
"moneda_extranjera": false,
"pro_pyme": true,
"obligacion_dte": true,
"excepcion_dte": false,
"actividades": [
{
"codigo": "619090",
"glosa": "OTRAS ACTIVIDADES DE TELECOMUNICACIONES",
"afecta": true,
"categoria": 1
}
],
"documentos_timbrados": [
{"documento": "Factura Electronica", "ultimo_timbraje": 2024}
],
"observaciones": {
"inconcurrente": false,
"suplantado": false,
"no_ubicado": false,
"termino_giro": false,
"domicilio_inexistente": false,
"actividad_esporadica": false,
"no_habido_domicilio": false,
"termino_giro_obligatorio": false
}
}
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `INVALID_RUT_FORMAT` | RUT no cumple formato XX.XXX.XXX-X | Verificar formato |
| 400 | `INVALID_RUT_CHECKSUM` | Digito verificador incorrecto | Recalcular con algoritmo modulo 11 |
| 400 | `VALIDATION_ERROR` | Error de validacion del servicio | Revisar `message` para detalle |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar header `X-API-Token: ` valido |
| 403 | `HTTP_403` | Sin scope `sii:read` o cuenta bloqueada | Generar token con scope adecuado |
| 429 | `SII_RATE_LIMIT` | SII respondio con rate limit | Reintentar tras `Retry-After` |
| 429 | Quota/Throttle excedido | Cuota diaria o req/s agotado | Esperar reset o upgrade plan |
| 502 | `SII_GATEWAY_ERROR` | SII respondio con error estructurado | Revisar `message` y `details.observacion` |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento (HTTP 503 upstream) | Reintentar en 5 minutos |
| 504 | `SII_TIMEOUT` | Conexion al SII excedio timeout | Reintentar |
### Rate Limiting
Consume 1 consulta de la cuota diaria.
Headers de respuesta:
- `X-RateLimit-Limit`: Cuota total del plan
- `X-RateLimit-Remaining`: Consultas restantes
- `X-RateLimit-Reset`: Timestamp UTC del proximo reset
### Notas
- Los datos se obtienen en tiempo real del portal SIAC del SII.
- En periodo de Operacion Renta (abril-mayo) el SII puede presentar lentitud.
- Los RUTs en ejemplos son ficticios (`76.XXX.XXX-K`); el RUT del body sera el real.
## Parámetros
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Listar catalogo de actividades economicas (reference/sii/contribuyentes/listar-catalogo-de-actividades-economicas)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/contribuyentes/actividades_economicas\",\n CURLOPT_CUSTOMREQUEST => \"GET\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X GET \"https://api.fiscalbridge.cl/api/v1/sii/contribuyentes/actividades_economicas\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/contribuyentes/actividades_economicas\", {\n method: \"GET\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Listar catalogo de actividades economicas del SII.
Obtiene el catalogo completo de actividades economicas vigentes del SII
agrupadas por rubro. Retorna los 21 rubros economicos con sus actividades
segun el clasificador CIIU (Clasificacion Industrial Internacional Uniforme).
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`.
**Quota:** Consume 1 consulta | Peso: 1x
---
### Respuesta exitosa (200)
Retorna una lista de rubros, cada uno con sus actividades.
```json
{
"success": true,
"message": "Actividades economicas obtenidas",
"data": [
{
"rubro": "AGRICULTURA, GANADERIA, SILVICULTURA Y PESCA",
"actividades": [
{
"codigo": "011101",
"glosa": "CULTIVO DE TRIGO",
"afecta": true,
"categoria": 1
},
{
"codigo": "011102",
"glosa": "CULTIVO DE MAIZ",
"afecta": true,
"categoria": 1
}
]
},
{
"rubro": "COMERCIO AL POR MAYOR Y AL POR MENOR",
"actividades": [
{
"codigo": "451010",
"glosa": "VENTA DE VEHICULOS AUTOMOTORES NUEVOS",
"afecta": true,
"categoria": 1
}
]
}
]
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 401 | `HTTP_401` | API token ausente o invalido | Enviar header `X-API-Token: ` valido |
| 403 | `HTTP_403` | Sin scope `sii:read` o cuenta bloqueada | Generar token con scope adecuado |
| 429 | `SII_RATE_LIMIT` | SII respondio con rate limit | Esperar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | Error del SII | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 minutos |
### Notas
- El catalogo es estable y rara vez cambia; considere cachear del lado cliente.
- Los codigos siguen el clasificador CIIU (6 digitos).
- `categoria`: 1 = primera categoria, 2 = segunda categoria (tributaria).
- `afecta`: indica si la actividad esta afecta a IVA.
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Verificar RUT con serie de cedula (reference/sii/contribuyentes/verificar-rut-con-serie-de-cedula)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/contribuyentes/rut/verificar/76.XXX.XXX-K/123456789\",\n CURLOPT_CUSTOMREQUEST => \"GET\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X GET \"https://api.fiscalbridge.cl/api/v1/sii/contribuyentes/rut/verificar/76.XXX.XXX-K/123456789\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/contribuyentes/rut/verificar/76.XXX.XXX-K/123456789\", {\n method: \"GET\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Verificar validez de RUT con serie de cedula de identidad.
Verifica la validez de un RUT combinando el RUT con el numero de serie
de la cedula de identidad del titular, consultando el servicio de
verificacion del SII. Retorna datos del titular cuando la cedula esta
vigente, o un mensaje cuando esta anulada.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`.
**Quota:** Consume 1 consulta | Peso: 1x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `rut` | string | Si | RUT a verificar. Formato: `XX.XXX.XXX-X` |
| `serie` | string | Si | Numero de serie de cedula (solo digitos) |
### Respuesta exitosa - cedula vigente (200)
```json
{
"success": true,
"message": "Cedula de identidad vigente",
"data": {
"anulada": false,
"contribuyente_dv": "K",
"usuario_dv": "0",
"razon_social": "Empresa Ejemplo SpA",
"direccion": "AV EJEMPLO 1234, COMUNA",
"fecha": "2026-04-16",
"serie": 123456789,
"nombres": "NOMBRE EJEMPLO",
"apellido_paterno": "APELLIDO1",
"apellido_materno": "APELLIDO2"
}
}
```
### Respuesta exitosa - cedula anulada (200)
Cuando la cedula esta anulada, el payload puede contener solo
`anulada` + `mensaje`, omitiendo los demas campos.
```json
{
"success": true,
"message": "Cedula invalidada por SII con fecha DD/MM/YYYY",
"data": {
"anulada": true,
"mensaje": "Cedula invalidada por SII con fecha DD/MM/YYYY"
}
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `INVALID_RUT_FORMAT` | RUT no cumple formato | Usar `XX.XXX.XXX-X` |
| 400 | `INVALID_RUT_CHECKSUM` | Digito verificador incorrecto | Recalcular con modulo 11 |
| 400 | `EMPTY_SERIE` | Numero de serie vacio | Enviar serie con digitos |
| 400 | `INVALID_SERIE_FORMAT` | Serie contiene no-digitos | Usar solo digitos |
| 400 | `VALIDATION_ERROR` | Error de validacion del servicio | Revisar `message` |
| 422 | `SERIE_INVALIDA` | SII rechazo la serie | Verificar serie contra cedula |
| 429 | `SII_RATE_LIMIT` | SII respondio con rate limit | Esperar `Retry-After` |
| 501 | `SERVICE_NOT_READY` | Servicio no disponible temporalmente | Contactar soporte |
| 502 | `SII_GATEWAY_ERROR` | Error al consultar el SII | Reintentar |
| 502 | `SII_GATEWAY_ERROR` | SII respondio con error | Revisar `message` |
| 503 | `CAPTCHA_SOLVER_NOT_CONFIGURED` | Servicio no disponible temporalmente | Contactar soporte |
| 503 | `SERVICIO_NO_DISPONIBLE` | Portal SII no disponible | Reintentar en 5 minutos |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 minutos |
### Notas
- El SII puede rechazar series que no coincidan con el RUT.
- La serie varia segun el tipo de cedula (chilena / extranjera).
## Parámetros
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# SII · DTE (reference/sii/dte)
============================================================
## Endpoints en DTE
============================================================
# Actualizar datos privados del contribuyente (reference/sii/dte/actualizar-datos-privados-del-contribuyente)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/set_datos/:contribuyente\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/set_datos/:contribuyente\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/set_datos/:contribuyente\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Actualizar datos privados de un contribuyente ante el SII.
Asigna o modifica los datos privados del contribuyente (emails de
contacto + software de facturacion) en el registro del SII via el
flujo multi-step de `ad_empresa1` → `ad_empresa2` → `ad_empresa3` →
`ad_empresa4`. Requiere certificado con permiso de escritura sobre
el RUT.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ certificado digital del contribuyente o representante autorizado.
**Quota:** Consume 1 consulta | Peso: 5x (operacion critica de escritura)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `contribuyente` | string | Si | RUT del contribuyente (`XXXXXXXX-K`) |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Body (JSON)
| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `auth.cert.cert-data` | string | Si | Certificado digital (base64) |
| `auth.cert.pkey-data` | string | Si | Clave privada del certificado (base64) |
| `auth.cert.passphrase` | string | No | Passphrase del certificado |
| `datos` | object | Si | Contenedor de datos a actualizar (al menos un sub-campo) |
| `datos.emails.administrador` | string | No | Mail Contacto Usuario-Administrador (`MAIL_SUP` en el SII) |
| `datos.emails.sii` | string | No | Mail Contacto SII (`MAIL_SII` en el SII) |
| `datos.emails.intercambio` | string | No | Mail Contacto Empresas / intercambio DTE (`MAIL_DTE` en el SII) |
| `datos.software.nombre` | string | No | Nombre del software de facturacion (`NOM_SW`, se envia en MAYUSCULAS) |
| `datos.software.url` | string | No | URL del software (`URL`, se envia en minusculas) |
> **Nota:** estos son los 3 emails editables en el formulario del SII `ad_empresa3` + datos del software.
> El campo `contacto` que aparece en la respuesta de `GET /datos_privados` NO es editable desde aqui
> (es un campo derivado del registro base del contribuyente).
### Request de ejemplo
```json
{
"auth": {
"cert": {
"cert-data": "BASE64_CERT",
"pkey-data": "BASE64_PKEY",
"passphrase": "CERT_PASSPHRASE"
}
},
"datos": {
"emails": {
"administrador": "admin@empresa.cl",
"sii": "sii@empresa.cl",
"intercambio": "intercambio@empresa.cl"
},
"software": {"nombre": "FiscalBridge", "url": "https://fiscalbridge.cl"}
}
}
```
### Respuesta exitosa (200)
Mensaje extraido dinamicamente del HTML de confirmacion del SII
(gateway transparente, sin hardcoded):
```json
{
"success": true,
"message": "Operación completada exitosamente",
"data": null
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 400 | `VALIDATION_ERROR` | Datos rechazados por SII | Revisar `message` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope adecuado |
| 403 | `AUTH_ERROR` | Certificado sin permiso sobre el RUT | Usar certificado del contribuyente |
| 422 | `VALIDATION_ERROR` | Campo extra no permitido (ej: `contacto`) o body sin `datos` | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la actualizacion | Revisar `message` y `details.observacion` |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
},
"datos": {
"emails": {
"administrador": "string",
"intercambio": "string",
"sii": "string"
},
"software": {
"nombre": "string",
"url": "string"
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"message": "string",
"success": true
}
```
============================================================
# Anular un rango de folios CAF (reference/sii/dte/anular-un-rango-de-folios-caf)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/anular/:emisor/:dte/:folio_inicial/:folio_final\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/anular/:emisor/:dte/:folio_inicial/:folio_final\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/anular/:emisor/:dte/:folio_inicial/:folio_final\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Anular un rango de folios no utilizados ante el SII.
Marca como anulado un rango de folios disponibles. **Los folios
anulados no pueden ser reutilizados**, por lo que esta operacion es
irreversible. Solo folios en estado `disponible` pueden anularse.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ certificado digital del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 5x (operacion critica de escritura)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor |
| `dte` | integer | Si | Tipo DTE |
| `folio_inicial` | integer | Si | Primer folio del rango |
| `folio_final` | integer | Si | Ultimo folio del rango |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Folios anulados exitosamente",
"data": {
"glosa": "Comprobante de Anulacion de Folios...",
"folios_anulados": 100
}
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 400 | `VALIDATION_ERROR` | Folios ya utilizados o rango invalido | Anular solo folios disponibles |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope adecuado |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la anulacion | Revisar `details` |
### Notas
- **Operacion irreversible**: los folios anulados no pueden reutilizarse.
- Solo folios `disponible` son anulables; folios ya emitidos requieren anulacion del documento individual.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Asignar usuario autorizado al contribuyente (reference/sii/dte/asignar-usuario-autorizado-al-contribuyente)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/set_usuario/:contribuyente\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/set_usuario/:contribuyente\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/set_usuario/:contribuyente\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Asignar un usuario autorizado a un contribuyente (flujo multi-step).
```text
Agrega un usuario (por RUT) con permisos especificos para operar en
nombre del contribuyente (emitir DTE, descargar CAF, anular folios,
firmar documentos, etc.). El SII implementa la asignacion en 5 pasos:
`eu_enrola_usuarios` → `eu_mant_usuarios` → `eu_nuevo_usuario` →
`eu_confirma_usuario` (vista previa) → `eu_graba_usuario` (submit
final). Requiere certificado con permiso de escritura sobre el RUT.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ certificado digital del contribuyente o representante autorizado.
**Quota:** Consume 1 consulta | Peso: 5x (operacion critica de escritura)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `contribuyente` | string | Si | RUT del contribuyente (`XXXXXXXX-K`) |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Body (JSON)
| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `auth.cert.cert-data` | string | Si | Certificado digital (base64) |
| `auth.cert.pkey-data` | string | Si | Clave privada del certificado (base64) |
| `auth.cert.passphrase` | string | No | Passphrase del certificado |
| `usuario.rut` | string | Si | RUT del usuario a autorizar (`XXXXXXXX-K`) |
| `usuario.permisos.administrador` | boolean | No | Usuario Administrador (`SUP_USU` en el SII) |
| `usuario.permisos.solicitar_folios` | boolean | No | Solicitar Folios (`OBTENER` en el SII) |
| `usuario.permisos.anular_folios` | boolean | No | Anular Documentos (`ANULAR` en el SII) |
| `usuario.permisos.firmar` | boolean | No | Firmar Documentos (`FIRMAR` en el SII) |
| `usuario.permisos.enviar` | boolean | No | Enviar Documentos (`ENVIAR` en el SII) |
| `usuario.permisos.consultar` | boolean | No | Consulta (`CONSULTAR` en el SII) |
### Request de ejemplo
```
```json
{
"auth": {
"cert": {
"cert-data": "BASE64_CERT",
"pkey-data": "BASE64_PKEY",
"passphrase": "CERT_PASSPHRASE"
}
},
"usuario": {
"rut": "12.345.678-5",
"permisos": {
"administrador": false,
"solicitar_folios": true,
"anular_folios": false,
"firmar": true,
"enviar": true,
"consultar": true
}
}
}
```
```text
### Respuesta exitosa (200)
Mensaje extraido dinamicamente del HTML de confirmacion del SII
(gateway transparente, sin hardcoded):
```
```json
{
"success": true,
"message": "Se ha grabado satisfactoriamente el nuevo usuario en la empresa EMPRESA X,"
" Rut XX.XXX.XXX-X, con los siguientes antecedentes:"
}
```
```text
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 400 | `VALIDATION_ERROR` | Usuario rechazado por SII | Revisar `message` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope adecuado |
| 403 | `AUTH_ERROR` | Certificado sin permiso sobre el RUT | Usar certificado del contribuyente |
| 422 | `VALIDATION_ERROR` | Body sin `usuario` o campos invalidos | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la asignacion | Revisar `message` y `details.observacion` |
### Notas
- Este endpoint solo agrega **nuevos** usuarios (submit al form "Ingresar Nuevo Usuario").
Para modificar permisos de un usuario existente, el SII usa `eu_mod_usuario` (flujo diferente).
- Si el RUT ya esta autorizado, el SII devuelve error — usar `GET /listar_usuarios` para verificar primero.
```
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
},
"usuario": {
"permisos": {
"administrador": false,
"anular_folios": false,
"consultar": false,
"enviar": false,
"firmar": false,
"solicitar_folios": false
},
"rut": "string"
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{}
```
============================================================
# Consultar datos privados del contribuyente DTE (reference/sii/dte/consultar-datos-privados-del-contribuyente-dte)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/datos/76192083-9\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/datos/76192083-9\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/datos/76192083-9\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar datos privados de un contribuyente DTE.
Retorna los datos privados registrados en el SII para el
contribuyente: direccion, telefono, email de contacto, giros, etc.
Solo accesible con certificado digital del contribuyente o de
representante autorizado.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ certificado digital en el body (con permiso sobre el RUT consultado).
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `contribuyente` | string | Si | RUT del contribuyente (`XXXXXXXX-K`) |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
| `formato` | string | `json` | `json` (default) o `html` |
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Datos privados de contribuyente obtenidos exitosamente",
"data": {
"rut": "76.XXX.XXX-K",
"razon_social": "EMPRESA EJEMPLO SPA",
"direccion": "Av. Ejemplo 123, Santiago",
"telefono": "+56 2 2345 6789",
"email": "contacto@empresa.cl",
"giros": [
"Servicios profesionales"
]
}
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `AUTH_ERROR` | Certificado sin permiso sobre el RUT | Usar certificado del contribuyente o representante |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Consultar documentos autorizados de un contribuyente (reference/sii/dte/consultar-documentos-autorizados-de-un-contribuyente)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/76192083-9/documentos\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/76192083-9/documentos\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/76192083-9/documentos\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar tipos de documentos autorizados para un contribuyente.
Retorna los tipos de DTE que un contribuyente esta autorizado a
emitir (ej: factura electronica, boleta, guia de despacho). Permite
validar capacidades de facturacion antes de intentar emitir.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ certificado digital en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `rut` | string | Si | RUT del contribuyente (`XXXXXXXX-K`) |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Documentos autorizados obtenidos exitosamente",
"data": [
{
"codigo": 33,
"nombre": "Factura Electronica"
},
{
"codigo": 39,
"nombre": "Boleta Electronica"
}
]
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `VALIDATION_ERROR` | RUT con formato invalido | Usar `XXXXXXXX-K` |
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Contribuyente no autorizado DTE | Verificar con `/contribuyentes/autorizado/{rut}` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Consultar estado de procesamiento de un envio XML (reference/sii/dte/consultar-estado-de-procesamiento-de-un-envio-xml)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/emitidos/estado_envio/76192083-9/1234567890\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/emitidos/estado_envio/76192083-9/1234567890\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/emitidos/estado_envio/76192083-9/1234567890\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar estado de procesamiento de un envio XML al SII.
Retorna el estado de un envio XML (generalmente Libro de Ventas/
Compras o un DTE) previamente enviado al SII, identificado por el
`track_id` asignado en el momento del envio. Util para polling hasta
confirmar procesamiento exitoso.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ certificado digital del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor |
| `track_id` | string | Si | Track ID asignado por el SII al recibir el envio |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Estados posibles
| Estado | Descripcion |
|--------|-------------|
| `EPR` | Envio procesado |
| `RSC` | Revision schema correcta |
| `RCT` | Revision contenido correcto |
| `-11` | Error de schema |
| `RCH` | Rechazado |
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Estado de envio obtenido exitosamente",
"data": {
"track_id": "1234567890",
"estado": "EPR",
"glosa": "Envio procesado",
"fecha_procesamiento": "2026-01-15T10:23:45"
}
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Track ID no existe | Verificar el track_id del envio |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- El SII puede tardar varios minutos en procesar un envio; hacer polling con backoff.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Consultar estado de un folio (reference/sii/dte/consultar-estado-de-un-folio)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/estado/76192083-9/33/1234\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/estado/76192083-9/33/1234\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/estado/76192083-9/33/1234\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar estado de un folio ante el SII.
Retorna si el folio esta disponible, utilizado, anulado o vencido,
junto con metadata del CAF al que pertenece.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ certificado digital del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor |
| `dte` | integer | Si | Tipo DTE |
| `folio` | integer | Si | Numero de folio a consultar |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
| `formato` | string | `json` | `json` (default) o `html` |
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Estado del folio consultado exitosamente",
"data": {
"folio": 1234,
"estado": "utilizado",
"fecha_autorizacion": "2026-01-15",
"fecha_uso": "2026-01-20"
}
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Folio no existe | Verificar folio |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Consultar estados de folios por rango (reference/sii/dte/consultar-estados-de-folios-por-rango)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/estados/76192083-9/33/1/100/utilizado\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/estados/76192083-9/33/1/100/utilizado\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/estados/76192083-9/33/1/100/utilizado\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar estados de folios en un rango especifico.
Retorna la lista de folios del rango consultado que coinciden con el
estado indicado. Util para auditoria y control de folios emitidos vs
disponibles vs anulados.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ certificado digital del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor |
| `dte` | integer | Si | Tipo DTE |
| `folio_inicial` | integer | Si | Primer folio del rango |
| `folio_final` | integer | Si | Ultimo folio del rango |
| `estado` | string | Si | Filtro: `disponible`, `utilizado`, `anulado` |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Respuesta exitosa (200)
Lista de `CAFEstadoFolio`:
```json
{
"success": true,
"message": "Estados de folios obtenidos exitosamente",
"data": [
{
"folio": 1,
"estado": "utilizado",
"fecha_uso": "2026-01-16"
},
{
"folio": 2,
"estado": "utilizado",
"fecha_uso": "2026-01-17"
}
]
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 400 | `VALIDATION_ERROR` | Estado invalido | Usar `disponible`, `utilizado` o `anulado` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Descargar archivo CAF autorizado (reference/sii/dte/descargar-archivo-caf-autorizado)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/descargar/caf/76192083-9/33/1/100/2026-01-15\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/descargar/caf/76192083-9/33/1/100/2026-01-15\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/descargar/caf/76192083-9/33/1/100/2026-01-15\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Descargar archivo XML del CAF autorizado.
Descarga el archivo CAF (Codigo de Asignacion de Folios) previamente
autorizado por el SII para un rango de folios. El archivo contiene la
firma electronica que valida cada folio al emitir DTE.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ certificado digital del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor |
| `dte` | integer | Si | Tipo DTE |
| `folio_inicial` | integer | Si | Primer folio del rango |
| `folio_final` | integer | Si | Ultimo folio del rango |
| `fecha_autorizacion` | string | Si | Fecha autorizacion `AAAA-MM-DD` |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
| `formato` | string | `base64` | `base64` (JSON con metadata) o `xml` (passthrough binario) |
### Respuesta exitosa - formato base64 (200)
```json
{
"filename": "CAF_76192083-9_33_1-100.xml",
"contentType": "application/xml",
"sizeBytes": 4521,
"contentBase64": "PD94bWwgdmVyc2lvbj0iMS4w..."
}
```
### Respuesta exitosa - formato xml (200)
XML binario con `Content-Type: application/xml` y `Content-Disposition: attachment; filename=CAF_*.xml`.
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 400 | `VALIDATION_ERROR` | Fecha con formato invalido | Usar `AAAA-MM-DD` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | CAF no existe para el rango/fecha | Verificar datos en `/caf/solicitudes` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- El CAF es necesario para emitir DTE con folios autorizados.
- Guarde el XML en almacenamiento seguro: contiene la firma electronica.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
============================================================
# Estado autorizacion DTE con detalle de contacto (reference/sii/dte/estado-autorizacion-dte-con-detalle-de-contacto)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/autorizado/76192083-9/detalle\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/autorizado/76192083-9/detalle\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/autorizado/76192083-9/detalle\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar estado de autorizacion DTE con informacion detallada.
Version autenticada del endpoint publico `/autorizado/{rut}`, que
incluye informacion adicional como el **email de contacto** del
contribuyente (solo disponible con certificado digital).
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ certificado digital en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `rut` | string | Si | RUT del contribuyente (`XXXXXXXX-K`) |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
| `formato` | string | `json` | `json` (default) o `html` |
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Operacion exitosa",
"data": {
"rut": "76.XXX.XXX-K",
"razon_social": "EMPRESA EJEMPLO SPA",
"autorizado": true,
"fecha_resolucion": "2020-03-15",
"email": "facturacion@empresa.cl"
}
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Contribuyente no autorizado DTE | Verificar autorizacion |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- Para version publica sin email, usar `GET /contribuyentes/autorizado/{rut}` (sin auth de certificado).
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Listar contribuyentes autorizados DTE (reference/sii/dte/listar-contribuyentes-autorizados-dte)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/autorizados\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/autorizados\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/autorizados\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Listar contribuyentes autorizados para emitir DTE.
Retorna la nomina oficial del SII con contribuyentes autorizados para
emitir documentos tributarios electronicos. Util para validar si un
RUT puede recibir facturas electronicas antes de emitirlas.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ certificado digital en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `dia` | string | hoy | Fecha `AAAA-MM-DD` (opcional) |
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
| `formato` | string | `json` | `json` (default) o `html` |
| `sistema` | string | `mercado` | `mercado` (propio/mercado) o `sii` (gratuito SII) |
### Respuesta exitosa (200)
Lista de `DTEContribuyenteAutorizado`:
```json
{
"success": true,
"message": "Lista de contribuyentes autorizados obtenida exitosamente",
"data": [
{
"rut": "76.XXX.XXX-K",
"razon_social": "EMPRESA EJEMPLO SPA",
"fecha_resolucion": "2020-03-15"
}
]
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 400 | `VALIDATION_ERROR` | Fecha con formato invalido | Usar `AAAA-MM-DD` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- El listado es oficial del SII y se actualiza diariamente.
- Para verificar un RUT especifico, usar `GET /contribuyentes/autorizado/{rut}` (publico).
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Listar solicitudes CAF del emisor (reference/sii/dte/listar-solicitudes-caf-del-emisor)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/solicitudes/76192083-9/33\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/solicitudes/76192083-9/33\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/solicitudes/76192083-9/33\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Listar solicitudes de CAF realizadas para un tipo de DTE.
Retorna el historial de solicitudes de folios realizadas por el
emisor para un tipo de DTE especifico: rangos, fechas, estados y
cantidades. Si no hay solicitudes registradas, retorna lista vacia
con mensaje descriptivo del SII.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ certificado digital del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor |
| `dte` | integer | Si | Tipo DTE |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Respuesta exitosa (200)
Lista de `CAFSolicitud` con rangos de folios solicitados:
```json
{
"success": true,
"message": "Solicitudes CAF obtenidas exitosamente",
"data": [
{
"folio_inicial": 1,
"folio_final": 100,
"fecha_autorizacion": "2026-01-15",
"cantidad": 100
}
]
}
```
Si no hay solicitudes: `{"success": true, "data": [], "message": "No se encontraron solicitudes CAF"}`.
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Listar usuarios autorizados a operar en nombre del contribuyente (reference/sii/dte/listar-usuarios-autorizados-a-operar-en-nombre-del-contribuyente)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/usuarios/76192083-9\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/usuarios/76192083-9\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/usuarios/76192083-9\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Listar usuarios autorizados para operar en nombre de un contribuyente.
Retorna la lista de usuarios (RUT y permisos) autorizados a operar
servicios DTE (emitir facturas, descargar CAF, etc.) en nombre del
contribuyente indicado.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ certificado digital con permiso sobre el RUT.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `rut` | string | Si | RUT del contribuyente |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Usuarios autorizados obtenidos exitosamente",
"data": [
{
"rut": "12.345.678-9",
"nombre": "Juan Perez",
"permisos": [
"emitir_dte",
"descargar_caf"
]
}
]
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `AUTH_ERROR` | Certificado sin permiso sobre el RUT | Usar certificado del contribuyente |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Obtener codigo de reemplazo IECV (reference/sii/dte/obtener-codigo-de-reemplazo-iecv)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/iecv/codigo_reemplazo/76192083-9/202601/VENTA/MENSUAL/1234567890\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/iecv/codigo_reemplazo/76192083-9/202601/VENTA/MENSUAL/1234567890\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/iecv/codigo_reemplazo/76192083-9/202601/VENTA/MENSUAL/1234567890\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Obtener codigo de reemplazo de libro IECV.
Solicita al SII el codigo de reemplazo para sustituir un Informe
Electronico de Compras y Ventas (IECV) previamente enviado. El
codigo se usa como referencia al generar el libro rectificado.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ certificado digital del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor |
| `periodo` | string | Si | Periodo `AAAAMM` |
| `operacion` | string | Si | `COMPRA` o `VENTA` |
| `tipo` | string | Si | `MENSUAL` o `RECTIFICA` |
| `track_id` | string | Si | Track ID del libro original |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Codigo de reemplazo IECV obtenido exitosamente",
"data": {
"codigo_reemplazo": "REEMP123456",
"track_id_original": "1234567890",
"fecha_solicitud": "2026-01-15T14:30:00"
}
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 400 | `VALIDATION_ERROR` | Operacion/tipo fuera de valores validos | Usar valores permitidos |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Track ID no existe | Verificar track_id del libro original |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Solicitar folios CAF (reference/sii/dte/solicitar-folios-caf)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/solicitar/:emisor/:dte/:cantidad\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/solicitar/:emisor/:dte/:cantidad\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/caf/solicitar/:emisor/:dte/:cantidad\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Solicitar folios CAF (Codigo de Asignacion de Folios) al SII.
El SII asigna un rango de folios autorizados que deben usarse para
emitir documentos tributarios electronicos (DTE) del tipo indicado.
El CAF contiene la firma electronica que valida cada folio ante el
SII al momento de emitir.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ certificado digital del emisor en el body bajo `auth.cert.*`: PEM
(`cert-data` + `pkey-data` + `passphrase` opcional) o PFX
(`pfx-data` + `passphrase`).
**Quota:** Consume 1 consulta | Peso: 5x (operacion critica de escritura)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor (`XXXXXXXX-K`) |
| `dte` | integer | Si | Tipo DTE: `33`/`34` factura, `39`/`41` boleta, `52` guia, `56`/`61` notas |
| `cantidad` | integer | Si | Cantidad de folios a solicitar |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Solicitud CAF generada exitosamente",
"data": {
"folio_inicial": 1,
"folio_final": 100,
"fecha_autorizacion": "2026-01-15",
"cantidad": 100
}
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido o expirado | Renovar certificado digital |
| 400 | `VALIDATION_ERROR` | Tipo DTE invalido o cantidad fuera de rango | Usar tipo y cantidad permitidos |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope adecuado |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la solicitud | Revisar `details` |
### Notas
- Los folios se asignan en rangos contiguos; el CAF debe guardarse para emitir documentos.
- El SII impone limites diarios/mensuales segun el tipo de DTE y el historial del contribuyente.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Verificacion avanzada de autenticidad de un DTE (reference/sii/dte/verificacion-avanzada-de-autenticidad-de-un-dte)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/emitidos/verificar\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/dte/emitidos/verificar\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/emitidos/verificar\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Verificar ante el SII la autenticidad de un DTE recibido.
Comprueba que los datos y la firma electronica del DTE correspondan
con lo registrado en el SII. Usado tipicamente por receptores para
validar facturas, guias y notas recibidas antes de registrarlas.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Modos de input
**Modo 1 (recomendado): XML completo**
- Enviar `dte_xml` con el DTE XML codificado en base64.
- Los campos se extraen automaticamente del XML firmado.
**Modo 2: Campos individuales**
- Enviar `dte` (tipo), `emisor`, `receptor`, `folio`, `fecha`, `total`, `firma` por separado.
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Body (JSON)
Modo 1:
```json
{"dte_xml": "PD94bWwgdmVyc2lvbj0iMS4w..."}
```
Modo 2:
```json
{
"dte": 33,
"emisor": "76.XXX.XXX-K",
"receptor": "12.345.678-9",
"folio": 1234,
"fecha": "2026-01-15",
"total": 119000,
"firma": "BASE64_SIGNATURE"
}
```
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "DTE verificado exitosamente",
"data": {
"resultado": "DTE valido",
"estado": "autentico",
"emisor": "76.XXX.XXX-K",
"folio": 1234
}
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `VALIDATION_ERROR` | XML mal formado o campos insuficientes | Revisar body |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | DTE no existe en registros del SII | Verificar folio/emisor |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- No requiere certificado digital — el SII valida el DTE con su firma interna.
- Modo XML es preferible para evitar errores de transcripcion de campos.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
},
"dte": {
"dte": 0,
"dte_xml": "string",
"emisor": "string",
"fecha": "string",
"firma": "string",
"folio": 0,
"receptor": "string",
"total": 0
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Verificar autorizacion DTE de un contribuyente (publico) (reference/sii/dte/verificar-autorizacion-dte-de-un-contribuyente-publico)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/autorizado/76192083-9\",\n CURLOPT_CUSTOMREQUEST => \"GET\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X GET \"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/autorizado/76192083-9\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/autorizado/76192083-9\", {\n method: \"GET\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Verificar si un contribuyente esta autorizado para emitir DTE.
Endpoint de solo-lectura que consulta la nomina publica del SII y
retorna si el RUT indicado esta autorizado a emitir documentos
tributarios electronicos. No requiere certificado digital — pero si
`X-API-Token`.
**Autenticacion requerida:** API token en header `X-API-Token`.
**Rate limit publico:** 30 req/minuto por IP (ademas de la cuota global del usuario).
**Quota:** Consume 1 consulta | Peso: 1x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `rut` | string | Si | RUT del contribuyente (`XXXXXXXX-K`) |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
| `formato` | string | `json` | `json` (default) o `html` |
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Operacion exitosa",
"data": {
"rut": "76.XXX.XXX-K",
"razon_social": "EMPRESA EJEMPLO SPA",
"autorizado": true,
"fecha_resolucion": "2020-03-15"
}
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `VALIDATION_ERROR` | RUT con formato invalido | Usar `XXXXXXXX-K` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 429 | `THROTTLE_EXCEEDED` | 30 req/min por IP excedido | Esperar 60 seg |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- Para detalle con email de contacto, usar `POST /contribuyentes/autorizado/{rut}/detalle` (requiere certificado).
## Parámetros
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# SII · Indicadores (reference/sii/indicadores)
============================================================
## Endpoints en Indicadores
============================================================
# Consultar correccion monetaria anual (reference/sii/indicadores/consultar-correccion-monetaria-anual)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/indicadores/correccion_monetaria/anual/:anio\",\n CURLOPT_CUSTOMREQUEST => \"GET\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X GET \"https://api.fiscalbridge.cl/api/v1/sii/indicadores/correccion_monetaria/anual/:anio\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/indicadores/correccion_monetaria/anual/:anio\", {\n method: \"GET\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar tabla de correccion monetaria de un año.
Obtiene la tabla de factores de correccion monetaria publicada por el
SII para el año indicado. La correccion monetaria ajusta valores
historicos considerando la variacion del IPC y se usa en declaracion
de impuestos a la renta.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`.
**Quota:** Consume 1 consulta | Peso: 1x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `anio` | integer | Si | Año tributario a consultar (\<= año actual) |
### Respuesta exitosa (200)
```json
{
"anio": 2023,
"tabla": [
{"mes": 0, "factor": 1.078},
{"mes": 1, "factor": 1.066},
{"mes": 11, "factor": 1.000}
]
}
```
El indice `mes = 0` representa el factor acumulado desde diciembre del año anterior.
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `FUTURE_YEAR` | Año solicitado es futuro | `details.anio_solicitado` vs `anio_actual` |
| 400 | `VALIDATION_ERROR` | Error del service parsing SII | Revisar `message` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 429 | `QUOTA_EXCEEDED` o `SII_RATE_LIMIT` | Rate limit | Esperar reset |
| 502 | `SII_GATEWAY_ERROR` | SII no respondio correctamente | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5-10 min |
### Notas
- Datos inmutables una vez publicados; cache local 30 dias recomendado.
- SII publica la tabla del año en curso progresivamente mes a mes.
## Parámetros
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"anio": 2023,
"tabla": [
{
"factor": 1,
"mes": 0
},
{
"factor": 1.0123,
"mes": 1
},
{
"factor": 1.0245,
"mes": 2
},
{
"factor": 1.0368,
"mes": 3
},
{
"factor": 1.0491,
"mes": 4
},
{
"factor": 1.0615,
"mes": 5
},
{
"factor": 1.074,
"mes": 6
},
{
"factor": 1.0866,
"mes": 7
},
{
"factor": 1.0993,
"mes": 8
},
{
"factor": 1.1121,
"mes": 9
},
{
"factor": 1.125,
"mes": 10
},
{
"factor": 1.138,
"mes": 11
}
]
}
```
============================================================
# Consultar tabla impuesto 2da categoria (reference/sii/indicadores/consultar-tabla-impuesto-2da-categoria)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/indicadores/impuesto_segunda_categoria/anual/:anio/:mes\",\n CURLOPT_CUSTOMREQUEST => \"GET\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X GET \"https://api.fiscalbridge.cl/api/v1/sii/indicadores/impuesto_segunda_categoria/anual/:anio/:mes\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/indicadores/impuesto_segunda_categoria/anual/:anio/:mes\", {\n method: \"GET\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar tabla mensual de impuesto de segunda categoria.
El impuesto de segunda categoria grava las rentas del trabajo
dependiente (sueldos). La tabla mensual define tramos de renta (en
UTM) con su factor tributario y rebaja correspondiente. Se usa para
calcular la retencion de impuesto en liquidaciones de sueldo.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`.
**Quota:** Consume 1 consulta | Peso: 1x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Rango | Descripcion |
|-----------|------|-----------|-------|-------------|
| `anio` | integer | Si | 1990-presente | Año tributario |
| `mes` | integer | Si | 1-12 | Mes tributario |
### Respuesta exitosa (200)
```json
{
"anio": 2023,
"mes": 12,
"tramos": [
{"desde": 0.0, "hasta": 13.5, "factor": 0.00, "rebaja": 0.0},
{"desde": 13.5, "hasta": 30.0, "factor": 0.04, "rebaja": 0.54},
{"desde": 310.0, "hasta": null, "factor": 0.40, "rebaja": 4699380.0}
]
}
```
Los limites `desde` y `hasta` se expresan en UTM (Unidad Tributaria
Mensual). `hasta: null` en el ultimo tramo indica renta ilimitada
hacia arriba.
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `FUTURE_PERIOD` | Mes/año futuros | `details.anio_solicitado` y `mes_solicitado` vs actual |
| 400 | `VALIDATION_ERROR` | Error del service parseando SII | Revisar `message` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 429 | `QUOTA_EXCEEDED` o `SII_RATE_LIMIT` | Rate limit | Esperar reset |
| 502 | `SII_GATEWAY_ERROR` | SII no respondio correctamente | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5-10 min |
### Notas
- Tabla inmutable una vez publicada; cache local de por mes recomendado.
- SII actualiza la tabla a inicios de cada mes.
## Parámetros
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"anio": 2023,
"mes": 10,
"tramos": [
{
"desde": 0,
"factor": 0,
"hasta": 13.5,
"rebaja": 0
},
{
"desde": 13.5,
"factor": 0.04,
"hasta": 30,
"rebaja": 40187
},
{
"desde": 30,
"factor": 0.08,
"hasta": 50,
"rebaja": 160749
},
{
"desde": 50,
"factor": 0.135,
"hasta": 70,
"rebaja": 436561
},
{
"desde": 70,
"factor": 0.23,
"hasta": 90,
"rebaja": 1101186
},
{
"desde": 90,
"factor": 0.304,
"hasta": 120,
"rebaja": 1767248
},
{
"desde": 120,
"factor": 0.35,
"hasta": 150,
"rebaja": 2319496
},
{
"desde": 150,
"factor": 0.4,
"rebaja": 4699380
}
]
}
```
============================================================
# Consultar valor UF por fecha (reference/sii/indicadores/consultar-valor-uf-por-fecha)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/indicadores/uf/anual/:anio/:mes/:dia\",\n CURLOPT_CUSTOMREQUEST => \"GET\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X GET \"https://api.fiscalbridge.cl/api/v1/sii/indicadores/uf/anual/:anio/:mes/:dia\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/indicadores/uf/anual/:anio/:mes/:dia\", {\n method: \"GET\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar valor de la Unidad de Fomento (UF) para una fecha.
Obtiene el valor oficial de la UF publicado por el SII para una fecha
especifica. Este endpoint soporta tres modos segun los parametros
presentes: diario (fecha completa), mensual (solo anio y mes) o anual
(solo anio). Los alias `/uf/anual/{anio}` y `/uf/anual/{anio}/{mes}`
delegan al mismo servicio con mayor o menor granularidad.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`.
**Quota:** Consume 1 consulta | Peso: 1x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Rango | Descripcion |
|-----------|------|-----------|-------|-------------|
| `anio` | integer | Si | 1990-presente | Año a consultar |
| `mes` | integer | Si (en este endpoint) | 1-12 | Mes a consultar |
| `dia` | integer | Si (en este endpoint) | 1-31 | Día a consultar |
### Variantes disponibles
| Ruta | Alcance |
|------|---------|
| `/uf/anual/{anio}/{mes}/{dia}` | Valor puntual de un dia |
| `/uf/anual/{anio}/{mes}` | Todos los dias del mes |
| `/uf/anual/{anio}` | Todos los meses y dias del año |
### Respuesta exitosa - consulta diaria (200)
```json
{
"fecha": "2024-12-01",
"valor": "37338.90"
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `INVALID_DATE` | Dia invalido para el mes/anio | Ver `details.max_dia`; usar fecha valida |
| 400 | `FUTURE_DATE` | Fecha posterior a hoy | `details.fecha_solicitada` vs `fecha_actual`; usar fecha pasada |
| 400 | `VALIDATION_ERROR` | Error del service (ValueError) al parsear respuesta SII | Revisar `message` del SII |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 422 | `VALIDATION_ERROR` | `anio \< 1990` o `mes not in [1..12]` | Ajustar parametros a los rangos |
| 429 | `QUOTA_EXCEEDED` o `SII_RATE_LIMIT` | Cuota del plan o del SII agotada | Esperar reset (`proxima_recarga`) |
| 502 | `SII_GATEWAY_ERROR` | SII retorno HTML/estructura inesperada | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- El SII publica UF diaria hasta el ultimo dia del mes siguiente; valores futuros no existen.
- Cache local recomendado: valores pasados son inmutables.
- En Operacion Renta (abril-mayo) el portal SII puede estar lento.
## Parámetros
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"fecha": "2020-05-22",
"valor": 28716.52
}
```
============================================================
# SII · Libro Compra Venta (reference/sii/libro-compra-venta)
============================================================
## Endpoints en Libro Compra Venta
============================================================
# Enviar Libro de Compra Venta (IECV) — LEGACY / solo certificación (reference/sii/libro-compra-venta/enviar-libro-de-compra-venta-iecv-legacy-solo-certificacion)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/lcv/enviar/:contribuyente\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/lcv/enviar/:contribuyente\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/lcv/enviar/:contribuyente\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Enviar el Libro de Compra Venta (IECV) al SII.
⚠️ **LEGACY / solo certificación.** En producción el SII reemplazó el envío
del IECV por el **Registro de Compras y Ventas (RCV)**; use el RCV para la
operación normal. Este endpoint existe porque el ambiente de certificación
todavía exige el envío del Libro de Compras/Ventas.
Construye y firma el libro del periodo con los documentos entregados y lo
envía al SII, devolviendo el identificador de seguimiento (`track_id`) real.
**Autenticación requerida:** API token en header `X-API-Token` con scope
`sii:write` + certificado digital en el body bajo `auth.cert.*`: PEM
(`cert-data` + `pkey-data` + `passphrase` opcional) o PFX
(`pfx-data` + `passphrase`).
**Quota:** Consume 1 consulta (operación de escritura).
---
### Parámetros de ruta
| Parámetro | Tipo | Requerido | Descripción |
|-----------|------|-----------|-------------|
| `contribuyente` | string | Sí | RUT dueño del libro (`DDDDDDDD-X`) |
### Cuerpo (JSON)
| Campo | Tipo | Requerido | Descripción |
|-------|------|-----------|-------------|
| `periodo_tributario` | string | Sí | Periodo `AAAA-MM` |
| `tipo_operacion` | string | Sí | `COMPRA` o `VENTA` |
| `tipo_libro` | string | No | `ESPECIAL` (default) o `MENSUAL` |
| `documentos` | array | Sí | Documentos del libro (al menos uno) |
| `auth` | object | Sí | Certificado digital (`cert-data`/`pkey-data` o `pfx-data`) |
### Respuesta exitosa (200)
```json
{
"track_id": "1234567",
"tipo_operacion": "VENTA",
"periodo_tributario": "2024-01"
}
```
### Errores específicos
| Código | error_code | Causa | Resolución |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII inválido o expirado | Renovar certificado digital |
| 400 | `VALIDATION_ERROR` | Datos del libro inconsistentes | Revisar documentos/montos |
| 401 | `HTTP_401` | API token ausente o inválido | Enviar `X-API-Token` válido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope adecuado |
| 422 | `VALIDATION_ERROR` | Path RUT o body con formato inválido | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | El SII rechazó el envío | Revisar `details` |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
},
"documentos": [
{
"fch_doc": "2024-01-15",
"mnt_iva": 19000,
"mnt_neto": 100000,
"mnt_total": 119000,
"nro_doc": 1,
"rut_doc": "11.111.111-1",
"rzn_soc": "EMPRESA DE PRUEBA LTDA",
"tasa_imp": 19,
"tpo_doc": 33
}
],
"periodo_tributario": "string",
"tipo_libro": "ESPECIAL",
"tipo_operacion": "string"
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"periodo_tributario": "2024-01",
"tipo_operacion": "VENTA",
"track_id": "1234567"
}
```
============================================================
# SII · MIPYME (reference/sii/mipyme)
============================================================
## Endpoints en MIPYME
============================================================
# Eliminar borrador MIPYME (reference/sii/mipyme/eliminar-borrador-mipyme)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/borradores/eliminar/:emisor/:codigo\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/mipyme/borradores/eliminar/:emisor/:codigo\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/borradores/eliminar/:emisor/:codigo\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Eliminar un borrador MIPYME.
Elimina un documento borrador del portal MIPYME del SII. Solo afecta
borradores no emitidos. Autenticacion con la **persona natural
representante** (MIPYME no acepta login con clave de empresa).
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ credenciales SII PassAuth (persona representante) en el body.
**Quota:** Consume 1 consulta | Peso: 5x (operacion critica de escritura)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT de la empresa |
| `codigo` | string | Si | Codigo interno del borrador a eliminar |
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "12.345.678-9", "clave": "clave_tributaria_persona"}
}
}
```
### Respuesta exitosa (200)
```json
{
"success": true,
"message": "Borrador eliminado correctamente",
"codigo": "1234567"
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `AUTH_ERROR` | Persona sin representacion sobre empresa | Usar representante autorizado |
| 404 | `HTTP_404` | Borrador no existe | Verificar `codigo` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la eliminacion | Revisar `details` |
### Notas
- Solo borradores no emitidos son eliminables.
- Un DTE oficial emitido solo puede anularse con el flujo DTE de anulacion.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Emitir borrador MIPYME como DTE oficial (reference/sii/mipyme/emitir-borrador-mipyme-como-dte-oficial)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/borradores/emitir/:emisor/:codigo\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/mipyme/borradores/emitir/:emisor/:codigo\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/borradores/emitir/:emisor/:codigo\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Emitir un borrador MIPYME existente como DTE oficial.
Emite un borrador existente del portal MIPYME como DTE oficial (con
folio y timbre del SII). **Operacion irreversible.** Por defecto se
emite tal cual esta almacenado; opcionalmente el cliente puede
enviar `overrides` para modificar el borrador antes de emitir.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ **certificado digital** (no password) anidado bajo `auth.cert.*` en el body.
Dos modos disponibles:
- **PFX/P12**: `auth.cert.pfx-data` (base64) + `auth.cert.passphrase`
- **PEM**: `auth.cert.cert-data` (base64) + `auth.cert.pkey-data` (base64) + `auth.cert.passphrase` (opcional)
El passphrase del certificado se usa tanto para la sesion como para la firma del DTE.
**Quota:** Consume 1 consulta | Peso: 5x (operacion critica de escritura)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT de la empresa cuyo borrador se emite |
| `codigo` | string | Si | Codigo interno del borrador en MIPYME |
### Ejemplo SIN overrides (emitir tal cual)
```json
{
"auth": {
"cert": {
"pfx-data": "",
"passphrase": "clave_del_certificado"
}
}
}
```
### Ejemplo CON overrides (modificar antes de emitir)
Todos los campos de `overrides` son **opcionales**. Solo incluir los que se desean modificar.
```json
{
"auth": {"cert": {"pfx-data": "", "passphrase": "clave"}},
"overrides": {
"detalle": [
{"NmbItem": "Servicio consultoria", "QtyItem": 2, "PrcItem": 50000}
],
"descuento_global_pct": 5,
"forma_pago": 1,
"referencias": [
{"TpoDocRef": 801, "FolioRef": 123, "FchRef": "2026-04-01", "RazonRef": "OC"}
],
"transporte": {"RUTTrans": "11.111.111-1", "Patente": "ABCD12"}
}
}
```
### Campos de `overrides`
**`detalle`** (lista, max 10 items): reemplaza TODOS los items del borrador.
Campos: `NmbItem`, `QtyItem`, `PrcItem` (requeridos), `UnmdItem`, `DscItem`,
`DescuentoPct`, `TpoCodigo`, `VlrCodigo`, `OtroImp`.
**`descuento_global_pct` / `descuento_global_monto`**: descuento global (mutuamente excluyentes).
**`forma_pago`** (int): `1` contado, `2` credito (default SII), `3` sin costo.
**`referencias`** (lista, max 3): `TpoDocRef`, `FolioRef`, `FchRef` (requeridos), `CodRef`, `RazonRef`.
**`transporte`** (objeto): `RUTTrans`, `Patente`, `RUTChofer`, `NombreChofer`.
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido o passphrase incorrecta | Renovar certificado |
| 400 | `VALIDATION_ERROR` | Overrides rechazados (items > 10, montos invalidos) | Ajustar overrides |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope |
| 404 | `HTTP_404` | Borrador no existe | Verificar `codigo` |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la emision | Revisar `details` |
### Notas importantes
- **Irreversible:** una vez emitido, el DTE tiene folio y timbre del SII.
- **Datos del emisor/receptor:** se usan los defaults del SII (no sobreescribibles).
- **Max 10 items**, max 3 referencias.
- **Descuento por item:** solo porcentaje. **Global:** porcentaje O monto (no ambos).
- **Factura afecta (33):** solo items afectos. Para exentos usar factura exenta (34) con `IndExe: 1`.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"cert": {
"cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
"passphrase": "mi_passphrase_segura",
"pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
}
},
"overrides": {
"descuento_global_monto": 0,
"descuento_global_pct": 0,
"detalle": [
{}
],
"forma_pago": 0,
"referencias": [
{}
],
"transporte": {}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Listar borradores MIPYME de la empresa (reference/sii/mipyme/listar-borradores-mipyme-de-la-empresa)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/borradores/documentos/76192083-9\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/mipyme/borradores/documentos/76192083-9\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/borradores/documentos/76192083-9\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Listar borradores MIPYME de la empresa (opcionalmente filtrados).
Lista los borradores de documentos almacenados en el portal MIPYME
del SII para la empresa indicada. La autenticacion es de la
**persona natural representante** (MIPYME no acepta login con clave
de empresa); una misma persona puede representar varias empresas.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII PassAuth (persona representante) en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT de la empresa cuyos borradores se consultan |
### Body (JSON)
| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `auth.pass.rut` | string | Si | RUT de la persona representante |
| `auth.pass.clave` | string | Si | Clave tributaria de la persona |
| `filtros.codigo` | string | No | Codigo interno del borrador |
| `filtros.tipo_dte` | integer | No | Tipo DTE (33, 34, 61...) |
| `filtros.rut_receptor` | string | No | RUT receptor sin DV |
| `filtros.razon_social` | string | No | Razon social receptor |
| `filtros.monto` | number | No | Monto total del DTE |
Los filtros son de coincidencia exacta (AND entre claves); si se omiten retorna todos.
### Respuesta exitosa (200)
```json
{
"success": true,
"data": [
{
"codigo": "1234567",
"dte": 33,
"dte_glosa": "Factura Electronica",
"rut": "11.111.111-1",
"razon_social": "EMPRESA X",
"fecha": "2026-01-15",
"total": "100000"
}
],
"total": 1,
"message": null
}
```
Cuando no hay resultados, `data` es `[]` y `message` distingue *sin borradores* vs *filtros no coincidieron*.
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `AUTH_ERROR` | Persona sin representacion sobre empresa | Usar representante autorizado |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- Los borradores sin emitir no tienen `folio` ni `estado`; esos campos se omiten del JSON.
- Para emitir un borrador, usar `POST /borradores/emitir/{emisor}/{codigo}`.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
},
"filtros": {}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": [
{
"codigo": "string",
"dte": 0,
"dte_glosa": "string",
"dv": "string",
"estado": "string",
"fecha": "string",
"folio": "string",
"razon_social": "string",
"rut": "string",
"total": "string"
}
],
"message": "string",
"n_boletas": 0,
"pagina_sig_codigo": "string",
"paginacion": {
"pagina_actual": 0,
"pagina_sig_codigo": "string",
"pagina_siguiente": 0,
"total_registros": 0
},
"success": true,
"total": 0
}
```
============================================================
# Listar documentos emitidos MIPYME (reference/sii/mipyme/listar-documentos-emitidos-mipyme)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/emitidos/documentos/76192083-9\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/mipyme/emitidos/documentos/76192083-9\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/emitidos/documentos/76192083-9\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Listar documentos emitidos por la empresa en MIPYME.
Obtiene el listado de documentos emitidos en el portal MIPYME con
filtros server-side procesados por el SII. El RUT del emisor es la
**empresa** (no la persona representante). Soporta paginacion
(`paginacion.pagina_siguiente` en la respuesta).
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII PassAuth (persona representante) en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT de la empresa emisora |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `json` | `json` (tabla parseada) o `html` (HTML crudo) |
| `pagina` | integer | `1` | Numero de pagina |
### Filtros opcionales (body `filtros`)
| Filtro | Tipo | Descripcion |
|--------|------|-------------|
| `rut_receptor` | string | RUT receptor sin puntos ni DV |
| `folio` | string | Folio del documento |
| `razon_social` | string | Razon social receptor (parcial) |
| `fecha_desde` / `fecha_hasta` | string | Rango `AAAA-MM-DD` |
| `tipo_doc` | string | Codigo DTE (`33`, `34`, `43`, `46`, `52`, `56`, `61`, `110`, `111`, `112`) |
| `estado` | string | Codigo de estado (ver abajo) |
### Codigos de estado
| Codigo | Descripcion |
|--------|-------------|
| `EMI` | Documento emitido |
| `PRV` | Borrador (pre-view) |
| `DCD` / `DEI` / `DFI` / `DIN` / `DPF` / `DRF` / `DRI` / `DRR` | Rechazos diversos |
| `INI` | DTE inicializado |
| `RAC` / `RAD` / `RNR` / `RRC` / `RRH` / `RSR` | Estados del receptor |
### Respuesta exitosa (200)
```json
{
"success": true,
"data": [
{
"folio": 1234,
"dte": 33,
"dte_glosa": "Factura Electronica",
"rut": "11.111.111-1",
"razon_social": "Receptor Ejemplo",
"fecha": "2026-01-15",
"total": "119000",
"estado": "EMI"
}
],
"total": 1,
"paginacion": {"pagina_siguiente": null}
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Filtros invalidos | Revisar valores |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `AUTH_ERROR` | Persona sin representacion sobre empresa | Usar representante autorizado |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
},
"filtros": {}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": [
{
"codigo": "string",
"dte": 0,
"dte_glosa": "string",
"dv": "string",
"estado": "string",
"fecha": "string",
"folio": "string",
"razon_social": "string",
"rut": "string",
"total": "string"
}
],
"message": "string",
"n_boletas": 0,
"pagina_sig_codigo": "string",
"paginacion": {
"pagina_actual": 0,
"pagina_sig_codigo": "string",
"pagina_siguiente": 0,
"total_registros": 0
},
"success": true,
"total": 0
}
```
============================================================
# Listar documentos recibidos MIPYME (reference/sii/mipyme/listar-documentos-recibidos-mipyme)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/recibidos/documentos/76192083-9\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/mipyme/recibidos/documentos/76192083-9\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/recibidos/documentos/76192083-9\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Listar documentos recibidos por la empresa en MIPYME.
Obtiene el listado de documentos recibidos en el portal MIPYME con
filtros server-side procesados por el SII. El RUT del receptor es la
**empresa** (no la persona representante). Soporta paginacion.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII PassAuth (persona representante) en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `receptor` | string | Si | RUT de la empresa receptora |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `json` | `json` (tabla parseada) o `html` (HTML crudo) |
| `pagina` | integer | `1` | Numero de pagina |
### Filtros opcionales (body `filtros`)
| Filtro | Tipo | Descripcion |
|--------|------|-------------|
| `rut_emisor` | string | RUT emisor sin puntos ni DV |
| `folio` | string | Folio del documento |
| `razon_social` | string | Razon social emisor (parcial) |
| `fecha_desde` / `fecha_hasta` | string | Rango `AAAA-MM-DD` |
| `tipo_doc` | string | Codigo DTE |
| `estado` | string | Codigo de estado |
### Codigos de estado
- `EMI` Emitido, `PRV` Borrador, `INI` Inicializado
- `RAC` / `RAD` / `RAL` / `RNR` / `RRC` / `RRH` / `RSR` (estados del receptor)
- `DCD` / `DEI` / `DFI` / `DIN` / `DPF` / `DRF` / `DRI` / `DRR` (rechazos diversos)
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Filtros invalidos | Revisar valores |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `AUTH_ERROR` | Persona sin representacion sobre empresa | Usar representante autorizado |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
},
"filtros": {}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": [
{
"codigo": "string",
"dte": 0,
"dte_glosa": "string",
"dv": "string",
"estado": "string",
"fecha": "string",
"folio": "string",
"razon_social": "string",
"rut": "string",
"total": "string"
}
],
"message": "string",
"n_boletas": 0,
"pagina_sig_codigo": "string",
"paginacion": {
"pagina_actual": 0,
"pagina_sig_codigo": "string",
"pagina_siguiente": 0,
"total_registros": 0
},
"success": true,
"total": 0
}
```
============================================================
# Obtener informacion publica de un contribuyente MIPYME (reference/sii/mipyme/obtener-informacion-publica-de-un-contribuyente-mipyme)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/contribuyentes/info/11111111-1/76192083-9/33\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/mipyme/contribuyentes/info/11111111-1/76192083-9/33\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/contribuyentes/info/11111111-1/76192083-9/33\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar informacion publica de un contribuyente en MIPYME.
Consulta informacion publica de un contribuyente en el portal
MIPYME. El RUT + clave tributaria del body identifica a la
**persona natural** con acceso al portal (puede ser representante de
varias empresas); el path param `emisor` identifica **la empresa**
que esa persona va a representar para la operacion.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII PassAuth (persona representante) en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `contribuyente` | string | Si | RUT del contribuyente a consultar |
| `emisor` | string | Si | RUT de la empresa a representar |
| `dte` | integer | Si | Tipo DTE |
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "12.345.678-9", "clave": "clave_tributaria_persona"}
}
}
```
El `auth.pass.rut` es la persona natural con acceso al portal; el `emisor` del path determina la empresa.
### Respuesta exitosa (200)
```json
{
"rut": "11.111.111-1",
"razon_social": "CONTRIBUYENTE EJEMPLO",
"autorizado_dte": true,
"direccion": "Calle Ejemplo 123"
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | RUT invalido | Usar `XXXXXXXX-K` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `AUTH_ERROR` | Persona sin representacion sobre empresa | Usar representante autorizado |
| 404 | `HTTP_404` | Contribuyente no existe en MIPYME | Verificar RUT |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"razon_social": "Empresa S.A.",
"rut": "12.345.678-9"
},
"message": "Operación completada exitosamente",
"success": true,
"timestamp": "2025-12-01T12:00:00Z"
}
```
============================================================
# Obtener PDF de borrador MIPYME (reference/sii/mipyme/obtener-pdf-de-borrador-mipyme)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/borradores/pdf/76192083-9/1234567\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/mipyme/borradores/pdf/76192083-9/1234567\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/borradores/pdf/76192083-9/1234567\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Descargar PDF preview de un borrador MIPYME.
El PDF lo genera el propio portal reproduciendo el flujo de
"Validar y visualizar" del form de emision. Autenticacion con la
**persona natural representante** (una misma persona puede
representar varias empresas).
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII PassAuth (persona representante) en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT de la empresa cuyo borrador se descarga |
| `codigo` | string | Si | Codigo interno del borrador en MIPYME |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `base64` | `base64` (JSON `FileBase64Response`) o `pdf` (passthrough binario) |
### Respuesta - formato base64 (200)
```json
{
"filename": "borrador_mipyme_1234567.pdf",
"contentType": "application/pdf",
"sizeBytes": 152301,
"contentBase64": "JVBERi0xLjQK..."
}
```
### Respuesta - formato pdf (200)
PDF binario con `Content-Type: application/pdf` y `Content-Disposition: attachment`.
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `AUTH_ERROR` | Persona sin representacion sobre empresa | Usar representante autorizado |
| 404 | `HTTP_404` | Borrador no existe | Verificar `codigo` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII no pudo generar el PDF | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
============================================================
# Obtener PDF de documento emitido MIPYME (reference/sii/mipyme/obtener-pdf-de-documento-emitido-mipyme)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/emitidos/pdf/76192083-9/ABC123\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/mipyme/emitidos/pdf/76192083-9/ABC123\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/emitidos/pdf/76192083-9/ABC123\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Descargar PDF de un documento emitido MIPYME.
Obtiene el PDF de un documento oficial emitido en el portal MIPYME.
El `codigo` es el tracking_id del SII obtenido del listado de
documentos emitidos. Autenticacion con la **persona natural
representante**.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII PassAuth (persona representante) en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT de la empresa emisora |
| `codigo` | string | Si | Tracking ID del SII del documento |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `base64` | `base64` (JSON con metadata) o `pdf` (passthrough binario) |
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Documento no existe | Verificar `codigo` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII no pudo generar el PDF | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
============================================================
# Obtener PDF de documento recibido MIPYME (reference/sii/mipyme/obtener-pdf-de-documento-recibido-mipyme)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/recibidos/pdf/76192083-9/ABC123\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/mipyme/recibidos/pdf/76192083-9/ABC123\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/recibidos/pdf/76192083-9/ABC123\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Descargar PDF de un documento recibido MIPYME.
Obtiene el PDF de un documento recibido en el portal MIPYME. El
`codigo` es el tracking_id del SII obtenido del listado de
documentos recibidos. Autenticacion con la **persona natural
representante** con permiso sobre la empresa receptora.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII PassAuth (persona representante) en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `receptor` | string | Si | RUT de la empresa receptora |
| `codigo` | string | Si | Tracking ID del documento |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `base64` | `base64` (JSON con metadata) o `pdf` (passthrough binario) |
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Documento no existe | Verificar `codigo` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII no pudo generar el PDF | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
============================================================
# Obtener XML EnvioDTE de documento emitido MIPYME (reference/sii/mipyme/obtener-xml-enviodte-de-documento-emitido-mipyme)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/emitidos/xml/76192083-9/33/1234\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/mipyme/emitidos/xml/76192083-9/33/1234\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/emitidos/xml/76192083-9/33/1234\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Descargar XML (EnvioDTE) de un documento emitido MIPYME.
Obtiene el XML del EnvioDTE firmado electronicamente por el SII para
un documento emitido. Util para almacenamiento legal y verificacion
de autenticidad. Usa folio + tipo DTE para identificar el documento.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII PassAuth (persona representante) en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT de la empresa emisora |
| `dte` | integer | Si | Tipo de DTE |
| `folio` | integer | Si | Folio del documento |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `base64` | `base64` (JSON con metadata) o `xml` (passthrough binario) |
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Documento no existe | Verificar folio/dte |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- El XML contiene la firma electronica del SII; guarde para auditoria.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
============================================================
# Obtener XML EnvioDTE de documento recibido MIPYME (reference/sii/mipyme/obtener-xml-enviodte-de-documento-recibido-mipyme)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/recibidos/xml/76192083-9/33/1234\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/mipyme/recibidos/xml/76192083-9/33/1234\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/mipyme/recibidos/xml/76192083-9/33/1234\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Descargar XML (EnvioDTE) de un documento recibido MIPYME.
Obtiene el XML del EnvioDTE firmado electronicamente por el SII para
un documento recibido por la empresa. Util para almacenamiento legal
y verificacion de autenticidad. Usa folio + tipo DTE para
identificar el documento.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII PassAuth (persona representante) en el body.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `receptor` | string | Si | RUT de la empresa receptora |
| `dte` | integer | Si | Tipo de DTE |
| `folio` | integer | Si | Folio del documento |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `formato` | string | `base64` | `base64` (JSON con metadata) o `xml` (passthrough binario) |
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 404 | `HTTP_404` | Documento no existe | Verificar folio/dte |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
============================================================
# SII · MiSii (reference/sii/misii)
============================================================
## Endpoints en MiSii
============================================================
# Activar representacion de contribuyente (reference/sii/misii/activar-representacion-de-contribuyente)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/misii/representados/representar/76192083-9/MISII\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/misii/representados/representar/76192083-9/MISII\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/misii/representados/representar/76192083-9/MISII\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Activar representacion de un contribuyente por el usuario autenticado.
Habilita al usuario autenticado para actuar como representante del
contribuyente indicado en el path, con los permisos especificados.
Requiere que el contribuyente haya delegado previamente estos
permisos al usuario en el portal MiSII del SII.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ credenciales SII del usuario en el body (`auth.pass`).
**Quota:** Consume 1 consulta | Peso: 1x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `rut` | string | Si | RUT del contribuyente a representar. Formato: `XX.XXX.XXX-X` |
| `permisos` | string | Si | Codigos de permiso separados por coma (ej. `MISII,FELET`) |
### Permisos validos
`MISII`, `RPETC`, `FELET`, `BOLES`, `CIVA`, `DECL`, `CERTR`
### Respuesta exitosa (200)
```json
{
"success": true,
"representado": {
"rut": "76000000",
"dv": "K",
"razon_social": "Empresa Ejemplo SpA"
},
"permisos_activos": ["MISII", "FELET"],
"session_id": "abc-123-session-id"
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `INVALID_RUT` | RUT no pasa validacion modulo 11 | Verificar digito verificador |
| 400 | `INVALID_PERMISSION` | Permiso no en la lista valida | Revisar `details.valid_permissions` |
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar clave tributaria |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope adecuado |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"clave": "mi_clave_tributaria",
"rut": "12.345.678-9"
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"mensaje": "string",
"permisos_activos": [
"string"
],
"representado": {
"codigo": "",
"descripcion": "",
"dv": "string",
"razon_social": "string",
"rut": "string"
},
"success": false
}
```
============================================================
# Consultar datos completos del contribuyente (reference/sii/misii/consultar-datos-completos-del-contribuyente)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/misii/contribuyente/datos\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/misii/contribuyente/datos\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/misii/contribuyente/datos\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar datos completos del contribuyente autenticado.
Retorna el perfil completo del contribuyente identificado en el body
`auth`: informacion basica (RUT, razon social, tipo), direcciones,
atributos, actividades economicas registradas y alertas.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del contribuyente en el body.
**Quota:** Consume 1 consulta | Peso: 1x
---
### Body (JSON)
Mismo formato que los demas endpoints MiSii (`auth.pass.rut` + `auth.pass.clave`).
### Respuesta exitosa (200)
```json
{
"contribuyente": {
"rut": "76000000",
"dv": "K",
"razon_social": "Empresa Ejemplo SpA",
"tipo_contribuyente_descripcion": "PERSONA JURIDICA"
},
"direcciones": [],
"atributos": [],
"actividades_economicas": [],
"alertas": []
}
```
### Errores especificos
| Codigo | error_code | Causa |
|--------|------------|-------|
| 400 | `AUTH_ERROR` | RUT/clave SII incorrectos |
| 401 | `HTTP_401` | API token ausente o invalido |
| 422 | `VALIDATION_ERROR` | Body con formato invalido |
| 429 | `SII_RATE_LIMIT` | Rate limit del SII |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento |
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"clave": "mi_clave_tributaria",
"rut": "12.345.678-9"
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{}
```
============================================================
# Listar contribuyentes representables (reference/sii/misii/listar-contribuyentes-representables)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/misii/representados/listado\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/misii/representados/listado\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/misii/representados/listado\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Listar contribuyentes que el usuario puede representar.
Obtiene la lista de contribuyentes que han delegado su representacion
al usuario autenticado en el SII, con los permisos otorgados por cada
uno. Si no hay representados, se retorna un mensaje del SII.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del usuario en el body.
**Quota:** Consume 1 consulta | Peso: 1x
---
### Body (JSON)
Mismo formato que `/representantes/listado` (ver documentacion de ese endpoint).
### Respuesta exitosa (200)
```json
{
"representante": {"rut": "12345678", "dv": "9"},
"representados": [
{
"rut": "76000000",
"dv": "K",
"razon_social": "Empresa Ejemplo SpA",
"permisos_otorgados": ["MISII", "FELET"],
"fecha_inicio": "2020-01-15",
"activo": true
}
]
}
```
### Errores especificos
Identicos a `/representantes/listado`.
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"clave": "mi_clave_tributaria",
"rut": "12.345.678-9"
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"Contribuyente": {
"dv": "string",
"nombre": "string",
"rut": 0
},
"mensaje": "string",
"representados": [
{
"codigo": "",
"descripcion": "",
"dv": "string",
"razon_social": "string",
"rut": "string"
}
]
}
```
============================================================
# Listar representantes del contribuyente (reference/sii/misii/listar-representantes-del-contribuyente)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/misii/representantes/listado\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/misii/representantes/listado\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/misii/representantes/listado\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Listar representantes del contribuyente autenticado en el SII.
Obtiene la lista de personas (RUT + permisos) autorizadas para
representar al contribuyente identificado en el body `auth`. Cada
representante incluye los codigos de permisos otorgados (MISII,
FELET, etc.) y fechas de vigencia.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII del contribuyente en el body (`auth.pass.rut`/`auth.pass.clave`).
**Quota:** Consume 1 consulta | Peso: 1x
---
### Body (JSON)
```json
{
"auth": {
"pass": {"rut": "76.XXX.XXX-K", "clave": "clave_tributaria"}
}
}
```
### Respuesta exitosa (200)
```json
{
"representado": {"rut": "76000000", "dv": "K", "razon_social": "Empresa Ejemplo SpA"},
"representantes": [
{
"rut": "12345678",
"dv": "9",
"nombre": "NOMBRE EJEMPLO",
"permisos": ["MISII", "FELET"],
"fecha_inicio": "2020-01-15",
"fecha_termino": null,
"activo": true
}
]
}
```
### Errores especificos
| Codigo | error_code | Causa |
|--------|------------|-------|
| 400 | `AUTH_ERROR` | RUT/clave SII incorrectos |
| 401 | `HTTP_401` | API token ausente o invalido |
| 422 | `VALIDATION_ERROR` | Body con formato invalido |
| 429 | `SII_RATE_LIMIT` | Rate limit del SII |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento |
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"clave": "mi_clave_tributaria",
"rut": "12.345.678-9"
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"Contribuyente": {
"dv": "string",
"nombre": "string",
"rut": 0
},
"permisos": [
{
"codigo": "string",
"descripcion": "string",
"nivel": "B"
}
],
"representantes": [
{
"codigo": "string",
"descripcion": "",
"dv": "string",
"nombre": "string",
"rut": "string"
}
]
}
```
============================================================
# SII · RCV (reference/sii/rcv)
============================================================
## Endpoints en RCV
============================================================
# Consultar estado de solicitud asincrona de ventas (reference/sii/rcv/consultar-estado-de-solicitud-asincrona-de-ventas)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/async/estado/76192083-9/202601/371028377/33\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/async/estado/76192083-9/202601/371028377/33\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/async/estado/76192083-9/202601/371028377/33\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Consultar el estado de una descarga asincrona de ventas.
Util para hacer polling antes de invocar `/ventas/async/detalle/...`.
Cuando `data.terminada != null`, el archivo esta listo.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII PassAuth del emisor.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor (validado modulo 11) |
| `periodo` | string | Si | `AAAAMM` |
| `solicitud_id` | string | Si | `id` retornado por `async/solicitar` |
| `dte` | string | Si | Codigo tipo DTE |
### Respuesta exitosa (200)
```json
{
"data": {
"id": 371028377,
"uuid": "abc123def",
"dte": 33,
"estado": "TERMINADO",
"creada": "2026-04-01 10:15:30",
"terminada": "2026-04-01 10:18:45",
"seccion": "VENTA",
"registros": 1543
}
}
```
`estado` refleja el `caEstado` literal del SII; cuando es
`"TERMINADO"` el campo `terminada` se llena.
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 400 | `VALIDATION_ERROR` | RUT del path con DV invalido (modulo 11) | Usar un RUT chileno valido |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error o sin items | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": {
"creada": "string",
"dte": 0,
"estado": "string",
"id": 0,
"registros": 0,
"seccion": "string",
"terminada": "string",
"uuid": "string"
}
}
```
============================================================
# Elimina un resumen mensual de ventas del RCV (reference/sii/rcv/elimina-un-resumen-mensual-de-ventas-del-rcv)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/delete_resumen/76192083-9/202602\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/delete_resumen/76192083-9/202602\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/delete_resumen/76192083-9/202602\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Elimina un resumen mensual de ventas del RCV.
Mapea al boton **"Elimina"** del formulario "RESUMEN EN REGISTRO DE
VENTA" en el SPA `complementowebdcvui` del SII. El gateway invoca
`facadeServiceComplementowebdcv/deleteDetalleByCodigo` con el
`det_codigo` provisto en el body.
El `det_codigo` se obtiene previamente con
`POST /ventas/get_detalle_resumen` (campo `det_codigo` del response).
**Limitacion del SII**: el SII upstream bloquea la eliminacion de
resumenes con `det_tipo_doc` 39 (boleta electronica) o 41 (boleta
exenta electronica) desde el 1° de agosto 2022. Estos resumenes los
autogenera el SII a partir del DTE electronico y no se pueden
modificar manualmente. Cuando aplica, el gateway transmite el error
literal del SII en el campo `error.mensaje` del response.
**Autenticacion requerida:** API token con scope `sii:write` +
credenciales SII PassAuth del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 3x (operacion critica de escritura).
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor (validado modulo 11) |
| `periodo` | string | Si | Periodo tributario `AAAAMM` |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Body (JSON)
| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `auth.pass.rut` | string | Si | RUT del emisor (`XX.XXX.XXX-X`) |
| `auth.pass.clave` | string | Si | Clave tributaria |
| `det_codigo` | integer | Si | ID interno del SII del resumen a eliminar |
### Respuesta exitosa (200)
```json
{
"data": 1,
"error": null
}
```
### Respuesta con error de negocio del SII (200)
```json
{
"data": null,
"error": {
"tipo": "ERROR",
"mensaje": "Estimados, no es posible eliminar los resumenes de ventas de boletas electronicas"
}
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | RUT del path con DV invalido | Usar RUT chileno valido |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope |
| 422 | `VALIDATION_ERROR` | Body sin `det_codigo` | Proveer `det_codigo` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII upstream rechazo la conexion | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
},
"det_codigo": 0
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": 0,
"error": {
"mensaje": "string",
"tipo": "string"
}
}
```
============================================================
# Ingresa o reemplaza el detalle diario de boletas en el RCV de ventas (reference/sii/rcv/ingresa-o-reemplaza-el-detalle-diario-de-boletas-en-el-rcv-de-ventas)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/set_boletas_diarias/76192083-9/202602/39\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/set_boletas_diarias/76192083-9/202602/39\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/set_boletas_diarias/76192083-9/202602/39\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Ingresa o reemplaza el detalle dia-por-dia de boletas en el RCV ventas.
Permite al contribuyente registrar el **detalle DIARIO** de boletas
en el Registro de Ventas del periodo, donde el SII calcula el
resumen mensual a partir de la sumatoria de los dias enviados.
Esta funcionalidad es complementaria a
`POST /ventas/set_resumen/{emisor}/{periodo}` (que registra el
resumen mensual agregado en una sola fila): los dos endpoints
apuntan a SPAs distintos del SII (`complementoscvui` para diario,
`complementowebdcvui` para mensual). Este endpoint solo soporta
tipos DTE de boletas: `35`, `38`, `39`, `41`, `47`, `48`, `139`,
`141`.
El gateway calcula automaticamente las sumas mensuales (`montoTotal`,
`totalDocumentos`, `montoExento`, `montoNeto`, `montoIva`,
`opExentas`) a partir de `dias[]` y construye el body con shape SII.
**Limitacion del SII conocida:** los tipos `39` (Boleta Electronica)
y `41` (Boleta Exenta Electronica) estan bloqueados desde el 1° de
agosto 2022 — el SII responde con `error.tipo == "NEGOCIO"` y el
mensaje literal `"No es posible modificar la información de las
boletas electrónicas desde el 1° de agosto 2022."`. La regla la
enforce el SII upstream; el gateway propaga el rechazo tal cual.
**Autenticacion requerida:** API token en header `X-API-Token` con
scope `sii:write` + credenciales SII PassAuth del emisor en el body.
**Quota:** Consume 1 consulta | Peso: 5x (operacion critica de escritura)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor (validado modulo 11) |
| `periodo` | string | Si | Periodo tributario `AAAAMM` |
| `dte` | string | Si | Codigo tipo DTE. Permitidos: `35`, `38`, `39`, `41`, `47`, `48`, `139`, `141` |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Body (JSON)
| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `auth.pass.rut` | string | Si | RUT del emisor (`XX.XXX.XXX-X`) |
| `auth.pass.clave` | string | Si | Clave tributaria |
| `graba_con_reparos` | boolean | No | `false` (default) primer intento;
`true` para reintentar tras `error.tipo == "REPARO"` |
| `dias[]` | array | Si | Detalle por dia (al menos un dia con datos). Solo incluir dias modificados |
| `dias[].dia` | string | Si | Numero de dia con dos caracteres (`"01"` a `"31"`) |
| `dias[].tot_documentos` | integer | No | Total de documentos del dia |
| `dias[].mnt_total` | integer | No | Monto total del dia |
| `dias[].mnt_neto` | integer | No | Monto neto del dia |
| `dias[].mnt_iva` | integer | No | Monto IVA del dia |
| `dias[].mnt_exento` | integer | No | Monto exento del dia |
| `dias[].op_exentas` | integer | No | Numero de operaciones exentas del dia |
| `dias[].iva_3ros` | integer | No | IVA terceros del dia |
| `dias[].canal_transacc` | integer | No | Solo `dte=48`: `0` presencial, `1` internet, `2` ambos |
| `dias[].cod_rzn_modifica` | integer | No | Codigo motivo de modificacion (Canal Internet) |
| `dias[].txt_rzn_modifica` | string | No | Texto motivo cuando `cod_rzn_modifica=4` (Otro) |
| `operadores` | array \| null | No | Detalle por operador (solo `dte=48`); `null` (default) para casos comunes |
### Request de ejemplo
```json
{
"auth": {
"pass": {
"rut": "76.192.083-9",
"clave": "clave_tributaria"
}
},
"graba_con_reparos": false,
"dias": [
{
"dia": "01",
"tot_documentos": 2,
"mnt_total": 1500,
"mnt_exento": 1500,
"mnt_neto": 0,
"mnt_iva": 0
},
{
"dia": "02",
"tot_documentos": 1,
"mnt_total": 5950,
"mnt_neto": 5000,
"mnt_iva": 950
}
]
}
```
### Respuesta exitosa (200)
```json
{
"data": 5,
"error": null
}
```
- `data`: numero de filas modificadas por el SII (`>0` si hubo
cambio, `null` cuando hubo error de negocio).
- `error`: objeto tipado cuando hubo rechazo (`null` cuando OK).
### Respuesta con error de negocio (200)
```json
{
"data": null,
"error": {
"tipo": "NEGOCIO",
"mensaje": "No es posible modificar la información de las boletas electrónicas desde el 1° de agosto 2022."
}
}
```
El cliente puede reintentar con `graba_con_reparos: true` SOLO
cuando recibe `error.tipo == "REPARO"`. Para `NEGOCIO`, `VALIDACION`
o `ERROR` el reintento no resuelve la situacion.
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Tipo DTE no permitido para boletas diarias |
Usar tipo en `[35, 38, 39, 41, 47, 48, 139, 141]` |
| 400 | `VALIDATION_ERROR` | RUT del path con DV invalido (modulo 11) | Usar un RUT chileno valido |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Verificar shape de `dias[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII upstream rechazo la conexion | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Ejemplo cURL
```bash
curl -X POST "https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/set_boletas_diarias/76192083-9/202602/35?ambiente=0" \
-H "X-API-Token: " \
-H "Content-Type: application/json" \
-d '{
"auth": {"pass": {"rut": "76.192.083-9", "clave": ""}},
"dias": [
{"dia": "01", "tot_documentos": 2, "mnt_total": 1500, "mnt_exento": 1500}
]
}'
```
### Notas
- Solo incluir en `dias[]` los dias modificados; los dias omitidos
quedan sin tocar en el SII.
- El gateway calcula las sumas mensuales y las envia al SII junto al
array `boletas[]` con shape interno; el cliente nunca arma el body
crudo del SII.
- Una vez guardado, el detalle aparece en
`/ventas/detalle/{emisor}/{periodo}/{dte}`.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
},
"dias": [
{
"canal_transacc": 0,
"cod_rzn_modifica": 0,
"dia": "string",
"iva_3ros": 0,
"mnt_exento": 0,
"mnt_iva": 0,
"mnt_neto": 0,
"mnt_total": 0,
"op_exentas": 0,
"tot_documentos": 0,
"txt_rzn_modifica": "string"
}
],
"graba_con_reparos": false,
"operadores": [
{}
]
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"data": 0,
"error": {
"mensaje": "string",
"tipo": "string"
}
}
```
============================================================
# Ingresa o reemplaza resumenes mensuales de ventas en el RCV (reference/sii/rcv/ingresa-o-reemplaza-resumenes-mensuales-de-ventas-en-el-rcv)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/set_resumen/76192083-9/202602\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/set_resumen/76192083-9/202602\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/set_resumen/76192083-9/202602\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Ingresa o reemplaza el resumen mensual de ventas del contribuyente.
Permite al contribuyente registrar el **resumen mensual agregado** de
tipos de documento que no son facturados electronicamente (boletas,
otros registros, comprobantes de pago electronico, etc.) directamente
en el Registro de Ventas del periodo. El RUT del emisor (path) se
valida sintacticamente (modulo 11) y se pasa al SII tal cual; la
sesion (`auth.pass`) debe estar autorizada para escribir sobre ese
RUT.
Para registrar el detalle dia-por-dia de boletas (tipos 35, 38, 39,
41, 48, 47, 139, 141) usar el endpoint
`POST /ventas/set_boletas_diarias/{emisor}/{periodo}/{dte}`.
El SII solo permite **un resumen por tipo de documento por request**;
si el cliente envia varios documentos en `documentos[]`, el gateway
procesa cada uno independientemente y agrega los resultados.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ credenciales SII PassAuth del emisor en el body.
**Quota:** Consume N consultas | Peso: 5x por documento (operacion critica de escritura)
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor (validado modulo 11) |
| `periodo` | string | Si | Periodo tributario `AAAAMM` |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Body (JSON)
| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `auth.pass.rut` | string | Si | RUT del emisor (`XX.XXX.XXX-X`, debe coincidir con el path) |
| `auth.pass.clave` | string | Si | Clave tributaria |
| `documentos[]` | array | Si | Lista de resumenes a guardar (1 a N entradas) |
| `documentos[].det_tipo_doc` | integer | Si | Tipo DTE del resumen.
Validos: `35`, `38`, `39`, `41`, `48`, `105`, `906`, `919`, `920`, `922`, `924` |
| `documentos[].det_nro_doc` | integer | Si | Numero de documentos del resumen |
| `documentos[].det_mnt_neto` | integer | No | Monto neto |
| `documentos[].det_mnt_iva` | integer | No | Monto IVA |
| `documentos[].det_mnt_exe` | integer | No | Monto exento |
| `documentos[].det_mnt_total` | integer | Si | Monto total |
| `documentos[].det_op_exe` | integer | No | Numero de operaciones exentas |
| `documentos[].canalTransacc` | integer | No | Solo para `det_tipo_doc=48`.
`0` presencial, `1` internet, `2` ambos |
| `documentos[].codRznModifica` | integer | No | Codigo motivo de modificacion (al cambiar Canal Internet) |
| `documentos[].txtRznModifica` | string | No | Texto motivo cuando `codRznModifica=4` (Otro) |
| `documentos[].grabaConReparos` | string | No | `""` (default) en primer intento;
`"GRABA CON REPAROS"` cuando se reintenta tras `error.tipo == "REPARO"` del SII |
### Request de ejemplo
```json
{
"auth": {
"pass": {
"rut": "76.192.083-9",
"clave": "clave_tributaria"
}
},
"documentos": [
{
"det_tipo_doc": 39,
"det_nro_doc": 1,
"det_mnt_neto": 25042,
"det_mnt_iva": 4758,
"det_mnt_exe": 0,
"det_mnt_total": 29800
}
]
}
```
### Respuesta exitosa (200)
```json
{
"resultados": [
{
"det_tipo_doc": 39,
"data": 1,
"error": null
}
]
}
```
Donde por cada documento del input:
- `det_tipo_doc`: echo del tipo de DTE consultado.
- `data`: numero de registros modificados por el SII (`>0` si hubo cambio,
`null` cuando hubo error).
- `error`: objeto con el detalle del rechazo del SII (`null` cuando OK).
Shape: `{"tipo": "", "mensaje": ""}`. Cuando el
SII clasifica el error con una etiqueta (ej. `"NEGOCIO"`), la API
la transmite tal cual, sin restringirla a un set cerrado. Cuando
el SII solo entrega un mensaje sin clasificarlo, la API responde
`tipo="ERROR"` por default. El `mensaje` es el texto literal del
SII; no se inventan ni clasifican mensajes localmente.
El cliente puede inspeccionar `error.mensaje` para decidir si
reintenta — por ejemplo, cuando el SII indica que el guardado se
puede forzar reenviando con `grabaConReparos="GRABA CON REPAROS"`.
Si todos los documentos fallaron, la API retorna 200 con cada `error`
poblado y `data: null`. El cliente debe inspeccionar `resultados[]`
para distinguir exitos de fallos.
### Respuesta con error de negocio (200)
```json
{
"resultados": [
{
"det_tipo_doc": 41,
"data": null,
"error": {
"tipo": "ERROR",
"mensaje": "No es posible modificar la información de las boletas electrónicas..."
}
}
]
}
```
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope |
| 400 | `VALIDATION_ERROR` | RUT del path con DV invalido (modulo 11) | Usar un RUT chileno valido |
| 422 | `VALIDATION_ERROR` | Body con formato invalido | Verificar shape de `documentos[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII upstream rechazo la conexion | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
### Notas
- Los datos persisten en el Registro de Ventas del SII para el periodo.
- Una vez guardado, el resumen aparece en `/ventas/resumen/{emisor}/{periodo}`.
- Para eliminar un resumen, el SII expone otro endpoint
(`borraResumenByCodigo`); este endpoint solo cubre alta/reemplazo.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
},
"documentos": [
{
"canalTransacc": 0,
"codRznModifica": 0,
"det_iva_propio": 0,
"det_iva_terceros": 0,
"det_ley_18211": 0,
"det_mnt_exe": 0,
"det_mnt_iva": 0,
"det_mnt_neto": 0,
"det_mnt_total": 0,
"det_nro_doc": 0,
"det_op_exe": 0,
"det_tipo_doc": 0,
"grabaConReparos": "",
"txtRznModifica": "string"
}
]
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{
"resultados": [
{
"data": 0,
"det_tipo_doc": 0,
"error": {
"mensaje": "string",
"tipo": "string"
}
}
]
}
```
============================================================
# Modificar tipo de compra de documentos del RCV (reference/sii/rcv/modificar-tipo-de-compra-de-documentos-del-rcv)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rcv/compras/set_tipo_transaccion/76192083-9/202603\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rcv/compras/set_tipo_transaccion/76192083-9/202603\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rcv/compras/set_tipo_transaccion/76192083-9/202603\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Modificar tipo de compra de uno o mas documentos del RCV.
Reclasifica el tipo de compra (Del Giro, Supermercados, Bienes Raices,
Activo Fijo, IVA Uso Comun, IVA no Recuperable, No Corresp. Incluir)
para documentos del Registro de Compras del receptor. Clasificacion
contable relevante para F29 y declaraciones tributarias.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ credenciales SII PassAuth del receptor en el body.
**Quota:** Consume 1 consulta | Peso: 5x (operacion critica de escritura).
El gateway emite un POST upstream por cada documento del array; el peso
asume un volumen tipico bajo.
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `receptor` | string | Si | RUT del contribuyente autenticado (`XXXXXXXX-X`) |
| `periodo` | string | Si | Periodo tributario `AAAAMM` |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
### Body (JSON)
| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `auth` | object | Si | Contenedor de credenciales SII |
| `auth.pass.rut` | string | Si | RUT del contribuyente (`XX.XXX.XXX-X`) |
| `auth.pass.clave` | string | Si | Clave tributaria del contribuyente |
| `documentos` | array | Si | Lista de documentos a clasificar (al menos uno) |
Cada item de `documentos` lleva 4 campos:
| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `dte` | integer | Si | Codigo tipo DTE del documento (33=Factura, 34=Factura Exenta, 46=Factura Compra, ...) |
| `folio` | integer | Si | Folio del documento |
| `emisor` | string | Si | RUT completo del emisor (`XXXXXXXX-X` o `XX.XXX.XXX-X`) |
| `tipo_transaccion` | integer | Si | Codigo de tipo de transaccion 1-7 (ver tabla) |
**Valores de `tipo_transaccion`:**
| Codigo | Descripcion |
|--------|-------------|
| `1` | Del Giro |
| `2` | Supermercados |
| `3` | Bienes Raices |
| `4` | Activo Fijo |
| `5` | IVA Uso Comun |
| `6` | IVA no Recuperable |
| `7` | No Corresp. Incluir |
### Request de ejemplo
```json
{
"auth": {
"pass": {
"rut": "76.192.083-9",
"clave": "clave_tributaria"
}
},
"documentos": [
{
"dte": 46,
"folio": 1,
"emisor": "60.803.000-K",
"tipo_transaccion": 5
}
]
}
```
### Respuesta exitosa (200)
```json
{
"resultados": [
{
"dte": 46,
"folio": 1,
"emisor": "60.803.000-K",
"tipo_transaccion": 5,
"data": "OK",
"errors": null,
"info": null,
"mensaje": "Cambio registrado exitosamente"
}
]
}
```
Cada item del array `resultados` refleja el response del SII para ese
documento. El gateway transmite los campos `data`, `errors` e `info`
tal como vienen del SII (sin interpretar codigos de exito/error).
El campo `mensaje` reproduce el texto que el portal del SII muestra al
usuario en el navegador (derivado del controller Angular del SPA):
| Caso | `data` | `errors` | `mensaje` |
|------|--------|----------|-----------|
| Cambio aceptado | `"OK"` | `null` | `Cambio registrado exitosamente` |
| Rechazado con descripcion del SII | `null` | `[{descripcion: "..."}]` | `` |
| Rechazado sin descripcion util | `null` | `[{descripcion: null}]` o `null` | `Error al realizar el cambio` |
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 400 | `VALIDATION_ERROR` | Documentos con formato invalido | Revisar payload |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope |
| 422 | `VALIDATION_ERROR` | `tipo_transaccion` fuera de 1-7 o tipos incorrectos | Revisar payload |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la operacion | Revisar `details` |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
},
"documentos": [
{
"dte": 0,
"emisor": "string",
"folio": 0,
"tipo_transaccion": 0
}
]
}
```
## Respuestas
### Forma de la respuesta
Código `200`. Estructura del JSON devuelto.
```json
{}
```
============================================================
# Obtener detalle de compras del RCV (reference/sii/rcv/obtener-detalle-de-compras-del-rcv)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rcv/compras/detalle/76192083-9/202601/33/REGISTRO\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rcv/compras/detalle/76192083-9/202601/33/REGISTRO\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rcv/compras/detalle/76192083-9/202601/33/REGISTRO\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Obtener detalle de compras del RCV por tipo DTE, estado y modo de consulta.
Consulta el detalle del Registro de Compras y Ventas del contribuyente
y soporta 4 modos de respuesta segun `tipo` + `formato`: detalle base,
detalle enriquecido con observaciones cruzadas, CSV como estructura
JSON, o descarga binaria CSV.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`.
**Quota:** Consume 1 consulta | Peso: 2x (el modo `iecv` puede consumir peso extra
por fanout a observaciones cruzadas).
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `receptor` | string | Si | RUT del contribuyente. Formato: `XX.XXX.XXX-X` |
| `periodo` | string | Si | Periodo tributario. Formato: `YYYYMM` |
| `dte` | string | Si | Codigo tipo DTE (`33`, `34`, `46`, `56`, `61`, ...) |
| `estado` | string | Si | `REGISTRO` / `PENDIENTE` / `NO_INCLUIR` / `RECLAMADO` |
### Parametros de consulta
| Parametro | Tipo | Default | Valores validos | Descripcion |
|-----------|------|---------|-----------------|-------------|
| `ambiente` | string | `0` | `0`, `1` | `0` produccion, `1` certificacion |
| `tipo` | string | `rcv` | `rcv`, `iecv`, `rcv_csv` | Modo de consulta (ver tabla de modos) |
| `formato` | string | `json` | `json`, `csv` | Formato de respuesta. Con `csv` fuerza descarga binaria |
| `csv_delimiter` | string | `;` | - | Reservado |
### Body (JSON)
| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `auth` | object | Si | Contenedor de credenciales SII |
| `auth.pass.rut` | string | Si | RUT del contribuyente (`XX.XXX.XXX-X`) |
| `auth.pass.clave` | string | Si | Clave tributaria del contribuyente |
### Request de ejemplo
```json
{
"auth": {
"pass": {
"rut": "12.345.678-9",
"clave": "clave_tributaria"
}
}
}
```
### Modos soportados
| `tipo` | `formato` | Respuesta | Cuando usar |
|---|---|---|---|
| `rcv` | `json` | Detalle base del RCV con todos los campos por documento
(respuesta SII tal cual) | Consulta estandar de documentos |
| `iecv` | `json` | Detalle base + campo `iec02` en items con observacion cruzada tipo
IEC02. El campo `iec02` contiene la respuesta del SII literal para ese documento |
Datos cruzados sin consultas manuales adicionales |
| `rcv_csv` | `json` | Listado CSV como array de strings + `nombreArchivo`
(respuesta SII tal cual) | Procesar el CSV programaticamente sin descarga binaria |
| cualquiera | `csv` | Descarga binaria `text/csv; charset=utf-8` con
`Content-Disposition: attachment` | Descarga directa para software contable |
Cada campo del response proviene directamente del SII. En modo `iecv`
se combinan dos respuestas del SII (listado + cruce por documento),
pero los valores se transmiten sin transformacion.
### Respuesta exitosa (200)
Modo `tipo=rcv` o `tipo=iecv` (`formato=json`) — shape 1:1 con el SII,
67 campos por documento (valores ficticios conforme regla 4.5):
```json
{
"data": [
{
"dhdrCodigo": 37019572,
"dcvCodigo": 14794127,
"dcvEstadoContab": null,
"detCodigo": 33114212,
"detTipoDoc": null,
"detRutDoc": 12345678,
"detDvDoc": "9",
"detRznSoc": "Empresa Ejemplo SpA",
"detNroDoc": 1234,
"detFchDoc": "01/03/2026",
"detFecAcuse": null,
"detFecReclamado": null,
"detFecRecepcion": "01/03/2026 15:22:50",
"detMntExe": 0,
"detMntNeto": 100000,
"detMntActFijo": 0,
"detMntIVAActFijo": 0,
"detMntIVANoRec": 0,
"detMntCodNoRec": 0,
"detMntSinCredito": 0,
"detMntIVA": 19000,
"detMntTotal": 119000,
"detTasaImp": null,
"detAnulado": null,
"detIVARetTotal": null,
"detIVARetParcial": null,
"detIVANoRetenido": 0,
"detIVAPropio": null,
"detIVATerceros": null,
"detIVAUsoComun": 0,
"detLiqRutEmisor": null,
"detLiqDvEmisor": null,
"detLiqValComNeto": null,
"detLiqValComExe": null,
"detLiqValComIVA": null,
"detIVAFueraPlazo": null,
"detTipoDocRef": 0,
"detFolioDocRef": null,
"detExpNumId": null,
"detExpNacionalidad": null,
"detCredEc": null,
"detLey18211": null,
"detDepEnvase": null,
"detIndSinCosto": null,
"detIndServicio": null,
"detMntNoFact": null,
"detMntPeriodo": null,
"detPsjNac": null,
"detPsjInt": null,
"detNumInt": null,
"detCdgSIISucur": 0,
"detEmisorNota": 0,
"detTabPuros": 0,
"detTabCigarrillos": 0,
"detTabElaborado": 0,
"detImpVehiculo": 0,
"detTpoImp": 1,
"detTipoTransaccion": 1,
"detEventoReceptor": null,
"detEventoReceptorLeyenda": null,
"cambiarTipoTran": true,
"detPcarga": 202603,
"descTipoTransaccion": "Del Giro",
"totalDtoiMontoImp": 0,
"totalDinrMontoIVANoR": null,
"emisorAgresivo": false,
"fechaActivacionAnotacion": null
}
],
"esDocPapel": false,
"respEstado": {
"codRespuesta": 0,
"msgeRespuesta": null,
"codError": null
}
}
```
En modo `tipo=iecv`, los items con observacion `IEC02` agregan el
campo `iec02` con el detalle cruzado del SII. Si ningun item del
periodo tiene observacion aplicable, el response es identico al modo
`tipo=rcv`.
Modo `tipo=rcv_csv` (`formato=json`):
```json
{
"data": [
"Nro;Tipo Compra;RUT Proveedor;Razon Social;Folio;Fecha Docto;...;Tasa Otro Impuesto",
"1;Del Giro;12.345.678-9;Empresa Ejemplo SpA;1234;01/03/2026;...;119000"
],
"nombreArchivo": "RCV_COMPRA_REGISTRO_XXXXXXXX-X_YYYYMM_33.csv",
"respEstado": {
"codRespuesta": 0,
"msgeRespuesta": null,
"codError": null
}
}
```
Modo `formato=csv` (descarga binaria):
- `Content-Type: text/csv; charset=utf-8`
- `Content-Disposition: attachment; filename="RCV_COMPRA_REGISTRO_XXXXXXXX-X_YYYYMM_33.csv"`
- Body con las mismas lineas CSV del modo `rcv_csv` pero como archivo
descargable en lugar de estructura JSON.
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:read` | Generar token con scope `sii:read` |
| 422 | `VALIDATION_ERROR` | `tipo` o `formato` fuera de valores validos |
Usar solo valores listados en Parametros de consulta |
| 429 | `SII_RATE_LIMIT` | Rate limit del SII | Respetar header `Retry-After` |
| 429 | `QUOTA_EXCEEDED` | Cuota diaria del plan agotada | Esperar reset o hacer upgrade |
| 502 | `SII_GATEWAY_ERROR` | SII respondio con error estructurado | Revisar `message` |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 minutos |
| 504 | `SII_TIMEOUT` | Timeout hacia el SII | Reintentar |
### Rate Limiting
Consume **1 consulta** de la cuota diaria del plan. Modo `iecv` puede
incrementar el peso efectivo si hay documentos con observaciones
cruzadas (un fanout por documento).
### Notas
- Los datos provienen del SII y pueden tener hasta 24h de desfase.
- `tipo=rcv_csv` y `formato=csv` solo funcionan con `estado=REGISTRO`.
Otros estados pueden fallar.
- El campo `iec02` solo aparece en items con observacion cruzada
aplicable; para el resto se omite del JSON.
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
============================================================
# Obtener detalle de ventas del RCV (reference/sii/rcv/obtener-detalle-de-ventas-del-rcv)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/detalle/76192083-9/202601/33\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/detalle/76192083-9/202601/33\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/detalle/76192083-9/202601/33\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse;\nconsole.log(result.data);"
}
]} />
Obtener detalle de ventas del RCV por tipo DTE.
Retorna el listado detallado (documento a documento) de ventas del
contribuyente target, filtrado por tipo DTE. El RUT del emisor (path)
se valida sintacticamente (modulo 11) y se pasa al SII tal cual; la
sesion (`auth.pass`) debe estar autorizada para operar sobre ese RUT.
**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`
+ credenciales SII PassAuth del emisor.
**Quota:** Consume 1 consulta | Peso: 2x
---
### Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `emisor` | string | Si | RUT del emisor (validado modulo 11) |
| `periodo` | string | Si | `AAAAMM` |
| `dte` | string | Si | Codigo tipo DTE |
### Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |
| `formato` | string | `json` | `json` o `csv` (passthrough text/csv) |
| `tipo` | string | `rcv` | `rcv` (JSON detallado) o `rcv_csv` (CSV en JSON wrapper) |
### Respuesta exitosa (200, formato=json + tipo=rcv)
`RCVGetDetalleResponse` con `data: list[RCVDetalleItem]` (~67 campos
1:1 con el SII por cada documento).
### Errores especificos
| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 400 | `VALIDATION_ERROR` | RUT del path con DV invalido (modulo 11) | Usar un RUT chileno valido |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar |
| 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min |
## Parámetros
## Cuerpo de la solicitud
Requerido. `Content-Type: application/json`.
```json
{
"auth": {
"pass": {
"clave": "string",
"rut": "string"
}
}
}
```
## Respuestas
============================================================
# Obtener detalle granular de un documento del RCV (reference/sii/rcv/obtener-detalle-granular-de-un-documento-del-rcv)
============================================================
\"https://api.fiscalbridge.cl/api/v1/sii/rcv/compras/detalle/documento/76192083-9/202603/33/30682\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"X-API-Token: sk_live_replace_with_your_token\",\n ],\n]);\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($status >= 400) {\n throw new RuntimeException(\"HTTP $status\");\n}\nprint_r(json_decode($response, true));"
},
{
"language": "cURL",
"title": "request.sh",
"code": "curl -X POST \"https://api.fiscalbridge.cl/api/v1/sii/rcv/compras/detalle/documento/76192083-9/202603/33/30682\" \\\n -H \"X-API-Token: sk_live_replace_with_your_token\" \\\n | jq ."
},
{
"language": "TypeScript",
"title": "main.ts",
"code": "// FiscalBridge response envelope\ninterface ApiResponse {\n success: boolean;\n message?: string;\n data: T;\n}\n\nconst response = await fetch(\"https://api.fiscalbridge.cl/api/v1/sii/rcv/compras/detalle/documento/76192083-9/202603/33/30682\", {\n method: \"POST\",\n headers: {\n \"X-API-Token\": \"sk_live_replace_with_your_token\",\n },\n});\n\nif (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n}\nconst result = (await response.json()) as ApiResponse