============================================================ # 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;\nconsole.log(result.data);" } ]} /> Obtener detalle granular de un documento individual del RCV. Expone datos por documento que no estan disponibles en el listado general: razones sociales completas del emisor y receptor, descripcion textual del tipo DTE, identificador de envio al SII, datos del firmante digital, referencias entre DTEs, reparos tributarios e impuestos adicionales. **Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`. **Quota:** Consume 1 consulta | Peso: 3x. --- ### 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 | | `folio` | integer | Si | Folio del documento | ### Parametros de consulta | Parametro | Tipo | Default | Valores validos | Descripcion | |-----------|------|---------|-----------------|-------------| | `ambiente` | string | `0` | `0`, `1` | `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 | ### Request de ejemplo ```json { "auth": { "pass": { "rut": "12.345.678-9", "clave": "clave_tributaria" } } } ``` ### Respuesta exitosa (200) Shape 1:1 con el SII — el objeto `detalleDte` incluye los 29 campos que el SII devuelve (datos ficticios conforme regla 4.5): ```json { "data": null, "dataReferencias": [], "dataReferenciados": [], "reparos": [], "detalleDte": { "rutEmisor": 12345678, "dvEmisor": "9", "rznSocEmisor": "Empresa Ejemplo SpA", "codigoTipoDoc": null, "descTipoDoc": "Factura Electronica", "periodo": null, "rutReceptor": 87654321, "dvReceptor": "0", "rznSocRecep": "Receptor Demo Ltda", "folio": 1234, "fechaEmision": "01/03/2026", "fechaEmisionA": null, "fechaRecepcion": "01/03/2026", "totalReparos": null, "mntNeto": null, "mntExento": null, "mntIva": 19000, "mntTotal": 119000, "tasaImptoIVA": null, "dehDescripcion": null, "totOtrosImp": null, "dhdrCodigo": 8742761462, "rutFirmante": 98765432, "dvFirmante": "1", "idEnvio": "11801207462", "derrCodigo": null, "derrDescripcion": null, "datosExpA": null, "datosExpB1": null, "datosExpB": null }, "impuestoAdicional": [], "respEstado": { "codRespuesta": 0, "msgeRespuesta": null, "codError": null } } ``` ### 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` | | 404 | `HTTP_404` | Folio no existe en el periodo consultado | Verificar folio y tipo DTE | | 422 | `VALIDATION_ERROR` | Body o parametros con formato invalido | Revisar `message` | | 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` o esperar reset | | 502 | `SII_GATEWAY_ERROR` | SII respondio con error | Revisar `message` | | 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 minutos | | 504 | `SII_TIMEOUT` | Timeout hacia el SII | Reintentar | ### Notas - Los arrays `dataReferencias`, `dataReferenciados`, `reparos` e `impuestoAdicional` estan vacios cuando el documento no tiene esos datos; cuando tiene, el SII popula cada array y se transmite sin transformacion. - Los campos `datosExpA`, `datosExpB1`, `datosExpB` aplican solo a DTEs de exportacion (110/111/112); para documentos comunes son `null`. ## 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 { "dataReferenciados": [ {} ], "dataReferencias": [ {} ], "detalleDte": { "codigoTipoDoc": 0, "dehDescripcion": "string", "derrCodigo": "string", "derrDescripcion": "string", "descTipoDoc": "string", "dhdrCodigo": 0, "dvEmisor": "string", "dvFirmante": "string", "dvReceptor": "string", "fechaEmision": "string", "fechaEmisionA": "string", "fechaRecepcion": "string", "folio": 0, "idEnvio": "string", "mntExento": 0, "mntIva": 0, "mntNeto": 0, "mntTotal": 0, "periodo": 0, "rutEmisor": 0, "rutFirmante": 0, "rutReceptor": 0, "rznSocEmisor": "string", "rznSocRecep": "string", "tasaImptoIVA": "string", "totOtrosImp": 0, "totalReparos": 0 }, "impuestoAdicional": [ {} ], "reparos": [ {} ], "respEstado": { "codError": "string", "codRespuesta": 0, "msgeRespuesta": "string" } } ``` ============================================================ # Obtener el detalle completo de un resumen agregado de ventas (boletas, zonas francas) (reference/sii/rcv/obtener-el-detalle-completo-de-un-resumen-agregado-de-ventas-boletas-zonas-francas) ============================================================ \"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/get_detalle_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/get_detalle_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/get_detalle_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);" } ]} /> Obtiene el detalle completo de un resumen agregado del RCV de ventas. Mapea a la carga inicial del formulario "RESUMEN EN REGISTRO DE VENTA" cuando el contribuyente quiere modificar un resumen mensual existente (boletas, ZF, otros registros no documentales). Uso tipico desde un cliente API: tras consultar `/ventas/resumen` y obtener `data[].rsmnCodigo`, llamar este endpoint con `rsmn_codigo=` para obtener todos los campos editables del form (~80 campos `det_*`, `dcv_*` e `icvti_*`). El cliente modifica los fields que necesita y reenvia via `POST /ventas/set_resumen` para persistir los cambios sin perder los demas valores. **Restriccion importante — solo aplica a resumenes agregados:** El `rsmn_codigo` debe corresponder a un resumen de tipo `RESUMEN` en el response de `/ventas/resumen` (campo `dcvTipoIngresoDoc`). Tipos de documento aplicables (`rsmnTipoDocInteger`): | Codigo | Descripcion | |--------|-------------| | 35 | Total Oper. del mes Boleta Afecta | | 38 | Total Oper. del mes Boleta Exenta | | 39 | Total Oper. del mes Boleta Electr. | | 41 | Total Op. del mes Boleta Exenta Electr. | | 48 | Total mes Comprobantes Pago Electronico | | 105 | Total Op. mes Boleta Liq. Res. 1423/76 | | 906 | Total Op. del mes Boleta Vta. Modulo ZF | | 919 | Resumen Vtas. Pasajes Nac. sin Factura | | 920 | Otros registros no Docum. Aumenta Debito | | 922 | Otros registros no Doc. Disminuye Debito | | 924 | Resumen Vtas. Pasajes Inter. sin Fact. | Para DTEs individuales (`dcvTipoIngresoDoc: "DET_ELE"` o `"DET_PAP"` — facturas, notas, exportaciones, etc.) el SII rechaza con HTTP 400 + `error_code=VALIDATION_ERROR`. Use `POST /ventas/detalle/{emisor}/{periodo}/{dte}` para esos casos. **Autenticacion requerida:** API token con scope `sii:read` + credenciales SII PassAuth del emisor en el body. **Quota:** Consume 1 consulta | Peso: 1x. --- ### Parametros de ruta | Parametro | Tipo | Requerido | Descripcion | |-----------|------|-----------|-------------| | `emisor` | string | Si | RUT del emisor (validado modulo 11) | | `periodo` | string | Si | Periodo tributario `AAAAMM` (informativo, el SII identifica por codigo) | ### 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 | | `auth.pass.clave` | string | Si | Clave tributaria | | `rsmn_codigo` | integer | * | ID del resumen mensual (de `/ventas/resumen`, solo tipos RESUMEN) | | `det_codigo` | integer | * | ID interno del detalle (de un `get_detalle_resumen` previo) | *Debe proveerse exactamente uno: `rsmn_codigo` o `det_codigo`. ### Respuesta exitosa (200) Objeto con los campos `det_*`, `dcv_*` e `icvti_*` del resumen (mapeo 1:1 con la respuesta del SII). **Los campos con valor `null` se omiten del JSON** para mantener la respuesta compacta. El cliente debe verificar `field in response`, no comparar contra `null`. El schema permite extras del SII para no romper si aparecen campos nuevos en versiones futuras del facade. ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave | | 400 | `VALIDATION_ERROR` | RUT invalido / codigo de tipo DET_ELE-DET_PAP | Verificar tipo del resumen | | 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 | | 422 | `VALIDATION_ERROR` | Body sin `rsmn_codigo` ni `det_codigo` | Proveer uno | | 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, "rsmn_codigo": 0 } ``` ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json { "dcv_dv_emisor": "string", "dcv_operacion": "string", "dcv_ptributario": "string", "dcv_rut_emisor": "string", "det_codigo": 0, "det_cred_ec": 0, "det_dep_envase": 0, "det_fch_doc": "string", "det_folio_doc_ref": 0, "det_imp_vehiculo": 0, "det_iva_fuera_plazo": 0, "det_iva_propio": 0, "det_iva_ret_parcial": 0, "det_iva_ret_total": 0, "det_iva_terceros": 0, "det_iva_uso_comun": 0, "det_ley_18211": 0, "det_mnt_activo_fijo": 0, "det_mnt_exe": 0, "det_mnt_iva": 0, "det_mnt_iva_activo_fijo": 0, "det_mnt_iva_no_r": 0, "det_mnt_neto": 0, "det_mnt_no_fact": 0, "det_mnt_periodo": 0, "det_mnt_sin_cred": 0, "det_mnt_total": 0, "det_nro_doc": 0, "det_op_exe": 0, "det_psj_int": 0, "det_psj_nac": 0, "det_tab_cigarrillos": 0, "det_tab_elaborado": 0, "det_tab_puros": 0, "det_tasa_imp": 0, "det_tipo_doc": 0, "det_tipo_transaccion": 0, "det_tpo_imp": 0, "icvti_cod_imp_01": 0, "icvti_cod_imp_02": 0, "icvti_cod_imp_03": 0, "icvti_cod_imp_04": 0, "icvti_cod_imp_05": 0, "icvti_cod_imp_06": 0, "icvti_cod_imp_07": 0, "icvti_cod_imp_08": 0, "icvti_cod_imp_09": 0, "icvti_cod_imp_10": 0, "icvti_cod_imp_11": 0, "icvti_cod_imp_12": 0, "icvti_mnt_imp_01": 0, "icvti_mnt_imp_02": 0, "icvti_mnt_imp_03": 0, "icvti_mnt_imp_04": 0, "icvti_mnt_imp_05": 0, "icvti_mnt_imp_06": 0, "icvti_mnt_imp_07": 0, "icvti_mnt_imp_08": 0, "icvti_mnt_imp_09": 0, "icvti_mnt_imp_10": 0, "icvti_mnt_imp_11": 0, "icvti_mnt_imp_12": 0, "icvti_tasa_imp_01": 0, "icvti_tasa_imp_02": 0, "icvti_tasa_imp_03": 0, "icvti_tasa_imp_04": 0, "icvti_tasa_imp_05": 0, "icvti_tasa_imp_06": 0, "icvti_tasa_imp_07": 0, "icvti_tasa_imp_08": 0, "icvti_tasa_imp_09": 0, "icvti_tasa_imp_10": 0, "icvti_tasa_imp_11": 0, "icvti_tasa_imp_12": 0, "rsmnCodigo": 0 } ``` ============================================================ # Obtener resumen de compras del RCV (reference/sii/rcv/obtener-resumen-de-compras-del-rcv) ============================================================ \"https://api.fiscalbridge.cl/api/v1/sii/rcv/compras/resumen/76192083-9/202601/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/resumen/76192083-9/202601/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/resumen/76192083-9/202601/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 resumen de compras del RCV para un periodo y estado. Consulta el resumen agregado del Registro de Compras del contribuyente y transmite la respuesta integra del SII (`data`, `respEstado` y demas campos auxiliares). El backend no interpreta `codRespuesta` — el cliente decide que hacer con cada codigo devuelto. **Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`. **Quota:** Consume 1 consulta | Peso: 2x --- ### Parametros de ruta | Parametro | Tipo | Requerido | Descripcion | |-----------|------|-----------|-------------| | `receptor` | string | Si | RUT del receptor (contribuyente a consultar) | | `periodo` | string | Si | `AAAAMM` (ej: 202601) | | `estado` | string | Si | `REGISTRO` / `PENDIENTE` / `NO_INCLUIR` / `RECLAMADO` | ### Parametros de consulta | Parametro | Tipo | Default | Descripcion | |-----------|------|---------|-------------| | `ambiente` | string | `0` | `0` produccion, `1` certificacion | | `formato` | string | `json` | `json` (default) o `csv` | | `csv_delimiter` | string | `;` | Delimitador cuando `formato=csv` | ### Respuesta exitosa (200) Objeto `RCVGetResumenResponse`: - `data`: lista de `RCVResumenItem` (1 item por tipo de documento; `null` cuando el periodo no tiene registros). El SII agrupa los documentos por tipo y devuelve un resumen agregado por cada uno. Para ver los documentos individuales usar `POST /compras/detalle/{receptor}/{periodo}/{dte}/{estado}`. - `totDocRes`: total de documentos en todos los resumenes (suma de `data[].rsmnTotDoc`). `null` cuando no hay registros. - `respEstado`: `codRespuesta` / `msgeRespuesta` / `codError` del SII. `codRespuesta=0` con datos, `=3` periodo sin datos. - `mensaje`: aparece SOLO cuando el SII no envia texto en `respEstado.msgeRespuesta` ni `codError` y se extrae del bundle Angular del SPA del SII (caso tipico: periodo sin datos con `codRespuesta=3`). Si `respEstado` ya trae texto, este campo se omite para evitar duplicacion. ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave | | 400 | `VALIDATION_ERROR` | Periodo/estado con formato invalido | Usar valores validos | | 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 HTTP no 2xx | 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 {} ``` ============================================================ # Obtener resumen de ventas del RCV (reference/sii/rcv/obtener-resumen-de-ventas-del-rcv) ============================================================ \"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/resumen/76192083-9/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/rcv/ventas/resumen/76192083-9/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/rcv/ventas/resumen/76192083-9/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 resumen de ventas del RCV para un periodo. Consulta el resumen agregado del Registro de Ventas del contribuyente target. 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 (rol de representante o el RUT propio del login) — el SII rechaza si no lo esta. El campo `mensaje` reproduce el texto oficial que el SII muestra cuando el periodo no tiene registros. **Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`. **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` | ### Parametros de consulta | Parametro | Tipo | Default | Descripcion | |-----------|------|---------|-------------| | `ambiente` | string | `0` | `0` produccion, `1` certificacion | | `formato` | string | `json` | Reservado (siempre JSON del SII) | | `csv_delimiter` | string | `;` | Reservado | ### Respuesta exitosa (200) Objeto `RCVGetResumenResponse`: - `data`: lista de `RCVResumenItem` (1 item por tipo de documento; `null` cuando el periodo no tiene registros). El SII agrupa los documentos por tipo y devuelve un resumen agregado por cada uno. Para ver los documentos individuales usar `POST /ventas/detalle/{emisor}/{periodo}/{dte}`. - `totDocRes`: total de documentos en todos los resumenes (suma de `data[].rsmnTotDoc`). `null` cuando no hay registros. - `respEstado`: `codRespuesta` / `msgeRespuesta` / `codError` del SII. `codRespuesta=0` con datos, `=3` periodo sin datos. - `mensaje`: aparece SOLO cuando el SII no envia texto en `respEstado.msgeRespuesta` ni `codError` y se extrae del bundle Angular del SPA del SII (caso tipico: periodo sin datos con `codRespuesta=3`). Si `respEstado` ya trae texto, este campo se omite para evitar duplicacion. ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `AUTH_ERROR` | Credenciales SII incorrectas | Revisar RUT/clave | | 400 | `VALIDATION_ERROR` | Periodo con formato invalido | Usar `AAAAMM` | | 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 ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Paso 1: Solicitar descarga asincrona de compras (reference/sii/rcv/paso-1-solicitar-descarga-asincrona-de-compras) ============================================================ \"https://api.fiscalbridge.cl/api/v1/sii/rcv/compras/async/solicitar/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/async/solicitar/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/async/solicitar/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);" } ]} /> Iniciar una descarga asincrona de compras del RCV. Para periodos con gran volumen de documentos, el SII ofrece un flujo asincrono en 3 pasos: `solicitar` -> `estado` -> `detalle`. Este endpoint inicia el control y devuelve el `id` y `uuid` necesarios para los siguientes pasos. **Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read` + credenciales SII PassAuth del receptor. **Quota:** Consume 1 consulta | Peso: 2x --- ### Parametros de ruta | Parametro | Tipo | Requerido | Descripcion | |-----------|------|-----------|-------------| | `receptor` | string | Si | RUT del receptor (validado modulo 11) | | `periodo` | string | Si | `AAAAMM` | | `dte` | string | Si | Codigo tipo DTE | | `estado` | string | Si | `REGISTRO` / `PENDIENTE` / `NO_INCLUIR` / `RECLAMADO` | ### Parametros de consulta | Parametro | Tipo | Default | Descripcion | |-----------|------|---------|-------------| | `ambiente` | string | `0` | `0` produccion, `1` certificacion | ### Respuesta exitosa (200) ```json { "data": { "id": 371028377, "uuid": "SIN-BLOB", "dte": 33, "estado": "REGISTRO", "creada": "2026-04-01 10:15:30", "terminada": null, "seccion": "COMPRA", "registros": 0 } } ``` El campo `terminada` arranca en `null` y se llena cuando el SII genera el archivo. Hacer polling con `/compras/async/estado/...` hasta que `terminada != null`, recien entonces invocar `/compras/async/detalle/...`. ### 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 | ### Notas - Solicitar dos veces consecutivas con los mismos parametros retorna el mismo control (upsert idempotente del SII). - El `id` devuelto se pasa como `{solicitud_id}` en `estado` y `detalle`. ## 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" } } ``` ============================================================ # Paso 1: Solicitar descarga asincrona de ventas (reference/sii/rcv/paso-1-solicitar-descarga-asincrona-de-ventas) ============================================================ \"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/async/solicitar/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/async/solicitar/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/async/solicitar/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);" } ]} /> Iniciar una descarga asincrona de ventas del RCV. Mismo flujo que compras pero para el Registro de Ventas. Devuelve el `id` y `uuid` para los pasos posteriores. **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 | ### Respuesta exitosa (200) ```json { "data": { "id": 371028377, "uuid": "SIN-BLOB", "dte": 33, "estado": "CREADO", "creada": "2026-04-01 10:15:30", "terminada": null, "seccion": "VENTA", "registros": 0 } } ``` El campo `estado` refleja el `caEstado` literal del SII (ciclo de vida del control: `CREADO`, `EN PROCESO`, `TERMINADO`). El cliente polea `terminada` (o `estado != "TERMINADO"`) hasta que el archivo este listo. ### 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" } } ``` ============================================================ # Paso 2: Consultar estado de descarga asincrona de compras (reference/sii/rcv/paso-2-consultar-estado-de-descarga-asincrona-de-compras) ============================================================ \"https://api.fiscalbridge.cl/api/v1/sii/rcv/compras/async/estado/76192083-9/202601/371028377/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/async/estado/76192083-9/202601/371028377/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/async/estado/76192083-9/202601/371028377/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);" } ]} /> Consultar el estado de una descarga asincrona de compras. Verifica el estado del control creado con `/compras/async/solicitar/...`. Util para hacer polling antes de invocar `/compras/async/detalle/...`. Cuando `data.terminada != null`, el archivo esta listo para descargar. **Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read` + credenciales SII PassAuth del receptor. **Quota:** Consume 1 consulta | Peso: 2x --- ### Parametros de ruta | Parametro | Tipo | Requerido | Descripcion | |-----------|------|-----------|-------------| | `receptor` | string | Si | RUT del receptor (validado modulo 11) | | `periodo` | string | Si | `AAAAMM` | | `solicitud_id` | string | Si | `id` retornado por `async/solicitar` | | `dte` | string | Si | Codigo tipo DTE | | `estado` | string | Si | Estado del documento | ### Respuesta exitosa (200) Mismo shape que `solicitar`. Cuando el control termino: ```json { "data": { "id": 371028377, "uuid": "abc123def", "dte": 33, "estado": "REGISTRO", "creada": "2026-04-01 10:15:30", "terminada": "2026-04-01 10:18:45", "seccion": "COMPRA", "registros": 1543 } } ``` ### Notas - El `solicitud_id` del path se usa como referencia local para que el cliente correlacione la respuesta con su solicitud original. El SII identifica el control por `RUT+periodo+dte+operacion+estado` (no por el id), por lo que el gateway no necesita enviar el id al SII. ### 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" } } ``` ============================================================ # Paso 3: Obtener detalle de descarga asincrona de compras (reference/sii/rcv/paso-3-obtener-detalle-de-descarga-asincrona-de-compras) ============================================================ \"https://api.fiscalbridge.cl/api/v1/sii/rcv/compras/async/detalle/76192083-9/202601/371028377/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/async/detalle/76192083-9/202601/371028377/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/async/detalle/76192083-9/202601/371028377/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 el detalle de una descarga asincrona de compras. Cuando el control termino, retorna el detalle como array JSON (default) o como CSV (`?formato=csv`). Si todavia no termino, retorna el shape de `estado` con `terminada=null` para que el cliente reintente. **Autenticacion requerida:** API token con scope `sii:read` + credenciales SII PassAuth. **Quota:** Consume 1 consulta | Peso: 3x (paso 1 al SII + paso 2 cuando hay archivo). --- ### Parametros de ruta | Parametro | Tipo | Descripcion | |-----------|------|-------------| | `receptor` | string | RUT del receptor (validado modulo 11) | | `periodo` | string | `AAAAMM` | | `solicitud_id` | string | `id` retornado por `async/solicitar` | | `dte` | string | Codigo tipo DTE | | `estado` | string | Estado del documento | ### Parametros de consulta | Parametro | Default | Descripcion | |-----------|---------|-------------| | `ambiente` | `0` | `0` produccion, `1` certificacion | | `formato` | `json` | `json` parsea CSV; `csv` retorna passthrough text/csv | ### Respuesta — control TERMINADO + `formato=json` (200, application/json) ```json { "data": [ { "dte": 33, "tipo_transaccion": "Del Giro", "rut": "12345-0", "razon_social": "RAZON SOCIAL", "folio": "10518", "fecha": "2025-09-01", "fecha_recepcion": "2025-09-01 10:52:28", "fecha_acuse": "2025-09-01 13:39:33", "exento": "0", "neto": "25966", "iva": "4934", "total": "30900", "impuesto_adicional": [] } ] } ``` ### Respuesta — control TERMINADO + `formato=csv` (200, text/csv) `Content-Type: text/csv` con `Content-Disposition: inline; filename="RCV_COMPRA____.csv"`. ### Respuesta — control aun no terminado (200, application/json) Mismo shape que `/compras/async/estado/...` con `data.terminada == null`: ```json { "data": { "id": 371028377, "uuid": "SIN-BLOB", "dte": 33, "estado": "REGISTRO", "creada": "2026-04-01 10:15:30", "terminada": null, "seccion": "COMPRA", "registros": 0 } } ``` ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `FORMATO_NO_SOPORTADO` | `formato` distinto de `json` o `csv` | Usar `json` o `csv` | | 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 ============================================================ # Paso 3: Obtener detalle de descarga asincrona de ventas (reference/sii/rcv/paso-3-obtener-detalle-de-descarga-asincrona-de-ventas) ============================================================ \"https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/async/detalle/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/detalle/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/detalle/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);" } ]} /> Obtener el detalle de una descarga asincrona de ventas. Mismo flujo que el detalle de compras pero el path usa `{emisor}` (no `{receptor}`). Retorna el detalle como array JSON (default) o CSV (`?formato=csv`). Si el control no termino, devuelve el shape de `estado` con `terminada=null`. **Autenticacion requerida:** API token con scope `sii:read` + credenciales SII PassAuth. **Quota:** Consume 1 consulta | Peso: 3x (paso 1 al SII + paso 2 cuando hay archivo). --- ### Parametros de ruta | Parametro | Tipo | Descripcion | |-----------|------|-------------| | `emisor` | string | RUT del emisor (validado modulo 11) | | `periodo` | string | `AAAAMM` | | `solicitud_id` | string | `id` retornado por `async/solicitar` | | `dte` | string | Codigo tipo DTE (use `3941` para boletas afectas/exentas) | ### Parametros de consulta | Parametro | Default | Descripcion | |-----------|---------|-------------| | `ambiente` | `0` | `0` produccion, `1` certificacion | | `formato` | `json` | `json` parsea CSV; `csv` retorna passthrough text/csv | ### Respuesta — control TERMINADO + `formato=json` (200, application/json) ```json { "data": [ { "dte": 33, "tipo_transaccion": "Del Giro", "rut": "1234-0", "razon_social": "RAZON SOCIAL", "folio": "12414", "fecha": "2025-09-01", "fecha_vencimiento": null, "fecha_recepcion": "2025-09-01 08:01:43", "fecha_acuse": null, "fecha_reclamo": null, "exento": "0", "neto": "40000", "iva": "7600", "total": "47600", "impuesto_adicional": [] } ] } ``` ### Respuesta — control TERMINADO + `formato=csv` (200, text/csv) `Content-Type: text/csv` con `Content-Disposition: inline; filename="RCV_VENTA_REGISTRO___.csv"`. ### Respuesta — control aun no terminado (200, application/json) ```json { "data": { "id": 371028377, "uuid": "SIN-BLOB", "dte": 33, "estado": "REGISTRO", "creada": "2026-04-01 10:15:30", "terminada": null, "seccion": "VENTA", "registros": 0 } } ``` ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `FORMATO_NO_SOPORTADO` | `formato` distinto de `json` o `csv` | Usar `json` o `csv` | | 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 ============================================================ # SII · Vehículos (reference/sii/vehiculos) ============================================================ ## Endpoints en Vehículos ============================================================ # Buscar tasacion vehicular SII (reference/sii/vehiculos/buscar-tasacion-vehicular-sii) ============================================================ \"https://api.fiscalbridge.cl/api/v1/sii/vehiculos/tasacion/buscar\",\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/vehiculos/tasacion/buscar\" \\\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/vehiculos/tasacion/buscar\", {\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);" } ]} /> Buscar tasacion vehicular del SII. Consulta la tasacion fiscal y el valor del permiso de circulacion que el SII asigna a un vehiculo para un año fiscal dado. Los montos son los **valores oficiales del SII** (pass-through, sin recalculo local) — apropiados para auditoria financiera y calculo de impuestos. **Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:read`. **Quota:** Consume 1 consulta | Peso: 2x (operacion pesada por resolucion CAPTCHA) --- ### Flujo recomendado 1. Descubrir IDs validos con `GET /categorias/tipos/{categoria}` y `GET /categorias/marcas/{categoria}`. 2. Enviar POST con esos IDs + filtros opcionales. 3. Si hay mas resultados, navegar con `page` y `pageSize` usando `pagina_sig_codigo` del response. ### Body (JSON) | Campo | Tipo | Requerido | Descripcion | |-------|------|-----------|-------------| | `anioTasa` | integer | Si | Año fiscal de la tasacion (no de fabricacion) | | `categoria` | integer | Si | `1`=Livianos, `2`=Pesados, `3`=Motos | | `tipo` | integer | No | ID tipo obtenido de `/categorias/tipos/{categoria}` | | `marca` | integer | No | ID marca obtenido de `/categorias/marcas/{categoria}` | | `modelo` | string | No | Substring match (p.ej. `VITARA` retorna tambien `GRAND VITARA`) | | `version` | string | No | Substring match | | `anio` | integer | No | Año de fabricacion del vehiculo | | `page` | integer | No | Pagina (default: 1) | | `pageSize` | integer | No | Items por pagina (default: 25) | ### Respuesta exitosa (200) Envelope `SiiListResponse[VehiculoTasacionItem]`: ```json { "success": true, "data": [ { "codigoSii": "K9999", "marca": "SUZUKI", "modelo": "VITARA", "version": "1.6 GL 5MT 4X4", "anioFabricacion": 2020, "tasacion": 8450000, "permisoCirculacion": 126750 } ], "total": 1, "paginacion": { "pagina_actual": 1, "por_pagina": 25, "total_paginas": 1, "tiene_siguiente": false, "tiene_anterior": false } } ``` ### Clarificacion `anioTasa` vs `anio` - `anioTasa`: año fiscal que define los **montos** de tasacion y permiso. Los valores varian por año. - `anio`: año de **fabricacion** del vehiculo (filtro de busqueda). Para replicar los valores visibles en la web del SII, enviar el año en curso como `anioTasa`. ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | `ValueError` del service (IDs inexistentes, etc.) | Revisar `message` | | 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido | | 422 | `VALIDATION_ERROR` | Campos del body rechazados (campos faltantes, tipos) | Revisar `errors[]` | | 429 | `QUOTA_EXCEEDED` / `SII_RATE_LIMIT` | Rate limit | Respetar `Retry-After` | | 502 | `SII_GATEWAY_ERROR` | SII retorno error o CAPTCHA no resuelto | Reintentar | | 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min | | 504 | `SII_TIMEOUT` | CAPTCHA server-side tardo demasiado | Reintentar | ### Notas - Resuelve CAPTCHA server-side de forma transparente al cliente. - Latencia tipica: 1-3 segundos; peor caso ~30s si hay reintentos de CAPTCHA. - Peso 2x en cuota por el costo computacional del CAPTCHA. ## Cuerpo de la solicitud Requerido. `Content-Type: application/json`. ```json { "anio": 0, "anioTasa": 0, "categoria": 0, "marca": 0, "modelo": "string", "page": 0, "pageSize": 0, "tipo": 0, "version": "string" } ``` ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json { "data": [ { "anio_fabricacion": 0, "anio_tasacion": 0, "categoria": { "id": 0, "name": "string" }, "codigo_sii": "string", "id": 0, "marca": "", "modelo": "string", "monto_permiso_circulacion": 0, "monto_tasacion": 0, "tipo": "", "version": "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 caracteristicas de vehiculos por categoria (reference/sii/vehiculos/listar-caracteristicas-de-vehiculos-por-categoria) ============================================================ \"https://api.fiscalbridge.cl/api/v1/sii/vehiculos/categorias/caracteristicas/1\",\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/vehiculos/categorias/caracteristicas/1\" \\\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/vehiculos/categorias/caracteristicas/1\", {\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 caracteristicas de vehiculos por categoria. Retorna las caracteristicas tecnicas (combustible, carroceria, traccion, etc.) aplicables a la categoria. Usadas como metadata informativa; no son parametros del endpoint de tasacion. **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 | Valores | Descripcion | |-----------|------|-----------|---------|-------------| | `categoria` | string | Si | `1`, `2`, `3` | `1`=Livianos, `2`=Pesados, `3`=Motos | ### Respuesta exitosa (200) ```json [ { "caracteristica": "combustible", "valores": [ {"id": "1", "glosa": "GASOLINA"}, {"id": "2", "glosa": "DIESEL"}, {"id": "3", "glosa": "ELECTRICO"} ] } ] ``` ### Errores especificos Identicos a `/categorias/tipos/{categoria}`. ### Notas - Catalogo muy estable (anual); cache agresivo recomendado. ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json [ { "data": [ {} ], "id": 0, "name": "string" } ] ``` ============================================================ # Listar marcas de vehiculos por categoria (reference/sii/vehiculos/listar-marcas-de-vehiculos-por-categoria) ============================================================ \"https://api.fiscalbridge.cl/api/v1/sii/vehiculos/categorias/marcas/1\",\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/vehiculos/categorias/marcas/1\" \\\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/vehiculos/categorias/marcas/1\", {\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 marcas de vehiculos disponibles para una categoria. Retorna los IDs y glosas de las marcas reconocidas por el SII para la categoria indicada. Usado como prerequisito de `/tasacion/buscar`. **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 | Valores | Descripcion | |-----------|------|-----------|---------|-------------| | `categoria` | string | Si | `1`, `2`, `3` | `1`=Livianos, `2`=Pesados, `3`=Motos | ### Respuesta exitosa (200) ```json [ {"id": "19", "glosa": "SUZUKI"}, {"id": "47", "glosa": "TOYOTA"}, {"id": "23", "glosa": "CHEVROLET"} ] ``` ### Errores especificos Identicos a `/categorias/tipos/{categoria}` (ver tabla arriba). ### Notas - Lista ordenada alfabeticamente por glosa. - Catalogo estable; cache local 7 dias recomendado. ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json [ { "id": 0, "name": "string" } ] ``` ============================================================ # Listar tipos de vehiculos por categoria (reference/sii/vehiculos/listar-tipos-de-vehiculos-por-categoria) ============================================================ \"https://api.fiscalbridge.cl/api/v1/sii/vehiculos/categorias/tipos/1\",\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/vehiculos/categorias/tipos/1\" \\\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/vehiculos/categorias/tipos/1\", {\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 tipos de vehiculos disponibles para una categoria. Endpoint de descubrimiento: retorna los IDs y glosas de los tipos de vehiculos (sedan, hatchback, pickup, etc.) validos para la categoria indicada. Usado como prerequisito de `/tasacion/buscar`. **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 | Valores | Descripcion | |-----------|------|-----------|---------|-------------| | `categoria` | string | Si | `1`, `2`, `3` | `1`=Livianos, `2`=Pesados, `3`=Motos | ### Respuesta exitosa (200) Retorna lista de items con `id` + `glosa`: ```json [ {"id": "1", "glosa": "AUTOMOVIL"}, {"id": "2", "glosa": "STATION WAGON"}, {"id": "3", "glosa": "MINIBUS"} ] ``` ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | Categoria no en `{1, 2, 3}` | Usar una categoria valida | | 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido | | 429 | `QUOTA_EXCEEDED` / `SII_RATE_LIMIT` | Rate limit | Respetar `Retry-After` | | 502 | `SII_GATEWAY_ERROR` | SII retorno error | Reintentar | | 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min | ### Notas - Catalogo estable; cache local 7 dias recomendado. ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json [ { "id": 0, "name": "string" } ] ``` ============================================================ # Usuario · Usage (reference/usuario/usage) ============================================================ ## Endpoints en Usage ============================================================ # Get Usage Summary Endpoint (reference/usuario/usage/get-usage-summary-endpoint) ============================================================ \"https://api.fiscalbridge.cl/api/v1/usage/summary\",\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/usage/summary\" \\\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/usage/summary\", {\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);" } ]} /> Get comprehensive usage summary for current user. Returns detailed statistics including: - Last 24 hours: Total requests, success rate, failures - Last 7 days: Daily breakdown of API calls - Most used endpoints: Top 10 endpoints by frequency **Authentication:** Required (API token via X-API-Token) **Rate Limiting:** Not rate-limited **Example Response:** ```json { "ultimas_24h": { "total": 150, "exitosas": 145, "fallidas": 5, "tasa_exito": 96.67 }, "ultimos_7_dias": [ {"fecha": "2025-10-15", "consultas": 180}, {"fecha": "2025-10-14", "consultas": 165} ], "endpoints_mas_usados": [ {"endpoint": "/api/v1/sii/contribuyente", "count": 120}, {"endpoint": "/api/v1/sii/factura", "count": 30} ] } ``` ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json { "data": { "endpoints_mas_usados": [ {} ], "periodo_actual": { "consultas_totales": 0, "consultas_usadas": 0, "porcentaje_uso": 0 }, "ultimas_24h": { "consultas_exitosas": 0, "consultas_fallidas": 0, "tasa_exito": 0, "total_consultas": 0 }, "ultimos_7_dias": [ {} ] }, "success": true } ``` ============================================================ # Usuario · Users (reference/usuario/users) ============================================================ ## Endpoints en Users ============================================================ # Get My Profile (reference/usuario/users/get-my-profile) ============================================================ \"https://api.fiscalbridge.cl/api/v1/users/me\",\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/users/me\" \\\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/users/me\", {\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);" } ]} /> Get current user profile with subscription information. Returns complete user profile including: - Personal information (name, email, RUT, etc.) - Subscription details (plan, quota usage, etc.) - Account status and restrictions **Authentication:** Required (API token via X-API-Token) **Rate Limiting:** Not rate-limited **Example Response:** ```json { "success": true, "data": { "email": "user@example.com", "nombre": "John Doe", "rut": "12.345.678-9", "telefono": null, "empresa": "Acme Corp", "role": "owner", "estado": "activo", "email_verified": true, "fecha_registro": "2025-10-14T10:00:00Z", "fecha_ultimo_acceso": "2025-10-14T15:30:45Z", "subscription": { "plan_id": "pyme", "plan_nombre": "PYME", "consultas_usadas_periodo": 150, "consultas_totales_periodo": 600, "porcentaje_uso": 25.0, "requests_por_segundo": 5, "proximo_reset_cuota": "2025-10-15T00:00:00Z", "fecha_inicio": "2025-10-14T10:00:00Z", "fecha_fin": null, "estado": "activa" } } } ``` For an account in evaluation mode (``billing_mode="evaluation"``) the ``subscription`` field is ``null``. Internal ``id`` and ``api_token`` are never exposed (see ``UserProfileResponse``). ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json { "data": { "email": "string", "email_verified": false, "empresa": "string", "estado": "string", "fecha_registro": "2026-01-01T00:00:00Z", "fecha_ultimo_acceso": "2026-01-01T00:00:00Z", "nombre": "string", "role": "string", "rut": "string", "subscription": {}, "telefono": "string" }, "message": "string", "success": true } ``` ============================================================ # Vendemas · Cesión (reference/vendemas/cesion) ============================================================ ## Endpoints en Cesión ============================================================ # Ceder multiples DTEs en lote (max 40) (reference/vendemas/cesion/ceder-multiples-dtes-en-lote-max-40) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/dte/cesion/ceder-lote\",\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/vendemas/dte/cesion/ceder-lote\" \\\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/vendemas/dte/cesion/ceder-lote\", {\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);" } ]} /> Generar AECs para multiples DTEs en lote (max 40) y opcionalmente enviarlos al SII. Cada DTE se procesa de forma **independiente** — un fallo en un DTE no cancela los demas. El endpoint retorna estadisticas agregadas (total, exitosos, fallidos) y el detalle de cada item procesado. **IMPORTANTE:** El certificado va a nivel **raiz** del body. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:write` + certificado digital del cedente en el body. **Quota:** Consume 1 consulta | Peso: 5x (escritura, proporcional al lote) --- ### Parametros de consulta | Parametro | Tipo | Default | Descripcion | |-----------|------|---------|-------------| | `enviar_sii` | string | `0` | `0` solo genera; `1` envia cada AEC al SII | ### Body (JSON) | Campo | Tipo | Requerido | Descripcion | |-------|------|-----------|-------------| | `cert.*` | string | Si | Certificado PFX o PEM (a nivel raiz) | | `xmls[]` | array | Si | Lista de EnvioDTE en base64 (max 40) | | `cedente.*` | object | Si | Datos del cedente | | `cesionario.*` | object | Si | Datos del cesionario | ### Respuesta exitosa (200) ```json { "total": 10, "exitosos": 9, "fallidos": 1, "resultados": [ {"index": 0, "success": true, "xml": "PD94bWw...", "track_id": 123}, {"index": 1, "success": false, "error": "Descripcion del error"} ] } ``` ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | Lista vacia, mas de 40 DTEs, o datos faltantes | Ajustar payload | | 400 | `AUTH_ERROR` | Certificado invalido | Renovar certificado | | 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido | | 403 | `INSUFFICIENT_SCOPE` | Token sin scope `vendemas:write` | Generar token con scope | | 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` | | 502 | `SII_UPLOAD_ERROR` | SII rechazo (errores individuales en `resultados`) | Reintentar fallidos | Body esperado:: ```text { "cert-data": "...", # Certificado X.509 en base64 o PEM "pkey-data": "...", # Llave privada en base64 o PEM "pfx-data": "...", # Alternativa: PKCS#12 en base64 "passphrase": "...", # Opcional "xmls": [ # Lista de EnvioDTE en base64 (máx. 40) "base64_envio_dte_1...", "base64_envio_dte_2...", ... ], "cedente": { "email": "cedente@empresa.cl", "rut": "76192083-9" }, "cesionario": { "rut": "12345678-9", "razon_social": "Empresa SA", "direccion": "Santiago", "email": "cesionario@empresa.cl" } } ``` Args: body: Cuerpo de la petición con certificado, lista de XMLs EnvioDTE y datos del cedente y cesionario. enviar_sii: ``"0"`` solo genera los AECs, ``"1"`` también los envía al SII. Returns: Diccionario con: - ``total`` (int): Número total de DTEs procesados. - ``exitosos`` (int): Número de DTEs procesados sin error. - ``fallidos`` (int): Número de DTEs que fallaron. - ``resultados`` (list): Lista de resultados individuales con ``indice``, ``estado``, ``xml``, ``certificacion`` y opcionalmente ``track_id`` o ``error``. Raises: ValueError: Si ``xmls`` está ausente, vacío, no es lista, o supera 40 elementos; o si ``cedente`` o ``cesionario`` están ausentes. ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Generar XML de Cesion de DTE (AEC) (reference/vendemas/cesion/generar-xml-de-cesion-de-dte-aec) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/dte/cesion/ceder\",\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/vendemas/dte/cesion/ceder\" \\\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/vendemas/dte/cesion/ceder\", {\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);" } ]} /> Generar XML de Cesion (AEC) de un DTE para envio al SII. Genera el Archivo Electronico de Cesion (AEC) para ceder un DTE a un cesionario. Firma el AEC digitalmente con el certificado del cedente y opcionalmente lo envia al SII. **IMPORTANTE:** En este endpoint el certificado va a nivel **raiz** del body (estructura `cert`), no dentro de `auth.cert`. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:write` + certificado digital del cedente en el body. **Quota:** Consume 1 consulta | Peso: 5x (operacion critica si `enviar_sii=1`) --- ### Parametros de consulta | Parametro | Tipo | Default | Descripcion | |-----------|------|---------|-------------| | `enviar_sii` | string | `0` | `0` solo genera; `1` envia al SII y retorna `track_id` | ### Body (JSON) | Campo | Tipo | Requerido | Descripcion | |-------|------|-----------|-------------| | `cert.*` | string | Si | Certificado PFX o PEM (cert + pkey) **a nivel raiz** | | `xml` | string | Si | XML del EnvioDTE en base64 | | `cedente.email` | string | Si | Email del cedente | | `cesionario.rut` / `.razon_social` / `.direccion` / `.email` | string | Si | Datos del cesionario | ### Respuesta exitosa (200) ```json { "xml": "PD94bWwgdmVyc2lvbj0i...", "track_id": 123456, "estado": "OK" } ``` ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | Datos de cedente/cesionario faltantes | Revisar body | | 400 | `AUTH_ERROR` | Certificado invalido | Renovar certificado | | 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido | | 403 | `INSUFFICIENT_SCOPE` | Token sin scope `vendemas:write` | Generar token con scope | | 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` | | 502 | `SII_UPLOAD_ERROR` | SII rechazo el envio | Reintentar con mismo XML | | 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min | --- (Legacy docstring con estructura interna del body - preservado para referencia) Body esperado:: ```text { "cert": { "cert-data": "...", # Certificado X.509 en base64 o PEM "pkey-data": "...", # Llave privada en base64 o PEM "pfx-data": "...", # Alternativa: PKCS#12 en base64 "passphrase": "..." # Opcional: contrasena del PFX o llave }, "xml": "base64_envio_dte...", # EnvioDTE codificado en base64 "cedente": { "email": "cedente@empresa.cl", # Requerido "rut": "76192083-9", # Opcional (default: RUT del DTE) "razon_social": "Mi Empresa SpA", # Opcional (default: del DTE) "direccion": "Av. Ejemplo 123", # Opcional (default: del DTE) "declaracion_jurada": "..." # Opcional (se genera si omite) }, "cesionario": { "rut": "12345678-9", # Requerido "razon_social": "Empresa SA", # Requerido "direccion": "Santiago", # Requerido "email": "cesionario@empresa.cl" # Requerido } } ``` Args: body: Cuerpo de la peticion con certificado, XML EnvioDTE y datos del cedente y cesionario. enviar_sii: ``"0"`` solo genera el AEC, ``"1"`` tambien lo envia al SII. Returns: Diccionario con: - ``certificacion`` (int): ``0`` produccion, ``1`` certificacion. - ``xml`` (str): AEC firmado codificado en base64. - ``track_id`` (int|bool): ID de seguimiento del SII si ``enviar_sii="1"``, o ``False`` si el envio fallo. Ausente si ``enviar_sii="0"``. Raises: ValueError: Si faltan datos del certificado, el XML EnvioDTE es invalido, o los datos del cesionario son incompletos. ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Vendemas · Documentos Tributarios (reference/vendemas/documentos-tributarios) ============================================================ ## Endpoints en Documentos Tributarios ============================================================ # Generar codigo ESC/POS a partir del XML del DTE (reference/vendemas/documentos-tributarios/generar-codigo-esc-pos-a-partir-del-xml-del-dte) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/dte/documentos/escpos\",\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/vendemas/dte/documentos/escpos\" \\\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/vendemas/dte/documentos/escpos\", {\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);" } ]} /> Generar bytes ESC/POS de un DTE para impresion termica. Parsea el XML DTE, extrae los datos del documento y construye una secuencia de comandos binarios ESC/POS compatibles con impresoras termicas Epson/Bixolon. Operacion puramente local — no requiere llamadas al SII. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:read`. **Quota:** Consume 1 consulta | Peso: 2x --- ### Body (JSON) | Campo | Tipo | Requerido | Default | Descripcion | |-------|------|-----------|---------|-------------| | `xml` | string | Si | — | XML del DTE codificado en base64 | | `papelContinuo` | int | No | `80` | Ancho de papel: 80 o 57 (mm) | | `cedible` | int | No | `0` | `1` incluir copia cedible | | `copias_cedibles` | int | No | `1` | Numero de copias cedibles | | `copias_tributarias` | int | No | `1` | Numero de copias tributarias | | `cut` | bool | No | `true` | Cortar papel al final | | `footer` | bool | No | `true` | Incluir pie de pagina | | `logo` | bool | No | `false` | Incluir logo | | `caratula` | bool | No | `false` | Incluir caratula | | `webVerificacion` | bool | No | `false` | URL verificacion SII | ### Respuesta exitosa (200) ```json {"escpos": "base64_de_comandos_escpos"} ``` Los bytes base64 pueden enviarse directamente a una impresora termica compatible con ESC/POS. ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | `xml` faltante o mal formado | Enviar XML base64 valido | | 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` | El body acepta los siguientes campos:: ```text { "xml": "base64_del_xml_dte...", // obligatorio "caratula": false, // opcional "cedible": 0, // opcional: 1=cedible, 0=no "copias_cedibles": 1, // opcional "copias_tributarias": 1, // opcional "cut": true, // opcional: cortar papel al final "footer": true, // opcional: incluir pie de pagina "logo": false, // opcional: incluir logo "papelContinuo": 80, // opcional: 57 o 80 (mm) "pdf417": "", // opcional: modo barcode PDF417 "profile": "default", // opcional: perfil de impresora "specialchars": false, // opcional: caracteres especiales "webVerificacion": false // opcional: URL verificacion SII } ``` Args: body: Request body con xml (base64) y opciones de impresion. Returns: Diccionario con los bytes ESCPOS codificados en base64 bajo la clave ``"escpos"``. Raises: ValueError: Si falta el campo xml o el base64 / XML son invalidos. ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Generar PDF a partir del XML del DTE (reference/vendemas/documentos-tributarios/generar-pdf-a-partir-del-xml-del-dte) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/dte/documentos/pdf\",\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/vendemas/dte/documentos/pdf\" \\\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/vendemas/dte/documentos/pdf\", {\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);" } ]} /> Generar PDF de un DTE a partir de su XML firmado en base64. Parsea el XML DTE, extrae los datos del documento y construye un PDF con reportlab siguiendo el formato tributario chileno estandar. Operacion puramente local — no requiere llamadas al SII. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:read`. **Quota:** Consume 1 consulta | Peso: 2x --- ### Parametros de consulta | Parametro | Tipo | Default | Descripcion | |-----------|------|---------|-------------| | `formato` | string | `base64` | `base64` (JSON con metadata) o `pdf` (passthrough binario) | ### Body (JSON) | Campo | Tipo | Requerido | Default | Descripcion | |-------|------|-----------|---------|-------------| | `xml` | string | Si | — | XML del DTE codificado en base64 | | `cedible` | bool | No | `false` | Incluir copia cedible | | `copias_cedibles` | int | No | `1` | Numero de copias cedibles | | `copias_tributarias` | int | No | `1` | Numero de copias tributarias | | `layout` | string | No | `general` | Layout papel: `general`, `carta`, `oficio`, `continuo` | | `webVerificacion` | bool | No | `false` | Incluir URL verificacion SII | | `footer` | object | No | null | Footer personalizado `{left, right}` | | `resolucion` | object | No | null | Resolucion SII `{numero, anio}` para leyenda del timbre | ### Respuesta - formato base64 (200) ```json { "filename": "documento.pdf", "contentType": "application/pdf", "sizeBytes": 12345, "contentBase64": "JVBERi0xLjcK..." } ``` ### Respuesta - formato pdf (200) PDF binario con `Content-Type: application/pdf` y `Content-Disposition: attachment`. ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | `xml` faltante o mal formado (base64 invalido) | Enviar XML firmado valido | | 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` | ### Notas - El XML debe estar **firmado** (EnvioDTE o DTE individual). - Nota breaking change: el campo body `formato` se renombro a `layout` para liberar el nombre como query param. El body acepta los siguientes campos:: ```text { "xml": "base64_del_xml_dte...", // obligatorio "cedible": false, // opcional "copias_cedibles": 1, // opcional "copias_tributarias": 1, // opcional "layout": "general", // opcional: general|carta|oficio|continuo "webVerificacion": false, // opcional "footer": {"left": "...", "right": "..."},// opcional "resolucion": {"numero": 0, "anio": 2024},// opcional "extra": {} // opcional } ``` Args: body: Request body con xml (base64) y opciones de renderizacion. formato: Query param para elegir el transporte de la respuesta (:class:`DownloadFormato.BASE64` default o :class:`DownloadFormato.RAW`). Returns: :class:`FileBase64Response` si ``formato=base64``, o :class:`Response` binario con ``Content-Type: application/pdf`` si ``formato=raw``. Raises: ValueError: Si falta el campo xml o el base64 / XML son invalidos. ## Parámetros ## Respuestas ============================================================ # Generar XML firmado de un DTE (reference/vendemas/documentos-tributarios/generar-xml-firmado-de-un-dte) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/dte/documentos/generar\",\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/vendemas/dte/documentos/generar\" \\\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/vendemas/dte/documentos/generar\", {\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);" } ]} /> Generar XML firmado de un Documento Tributario Electronico (DTE). Genera XML completo segun esquema SII con firma digital RSA-SHA1, a partir del CAF + datos del DTE + certificado digital. Opcionalmente envia el XML al SII y retorna `track_id`. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:write` + certificado digital en `auth.cert` (PFX o PEM). **Quota:** Consume 1 consulta | Peso: 5x (operacion critica si `enviar_sii=1`) --- ### Tipos de DTE soportados | Codigo | Documento | |--------|-----------| | 33 / 34 | Factura Electronica / Factura Exenta | | 39 / 41 | Boleta Electronica / Boleta Exenta | | 43 | Liquidacion Factura Electronica | | 52 | Guia de Despacho Electronica | | 56 / 61 | Nota de Debito / Nota de Credito | | 110 / 111 / 112 | Factura / Nota Debito / Nota Credito de Exportacion | ### Parametros de consulta | Parametro | Tipo | Default | Descripcion | |-----------|------|---------|-------------| | `normalizar` | string | `1` | `1` calcula valores derivados; `0` usa valores tal cual | | `formato` | string | `json` | `json`, `xml`, `yaml`, `JSONString`, `Acepta.{Normal,Boleta}`, `FacturacionCL.XML` | | `enviar_sii` | string | `0` | `1` envia al SII tras generar | | `gzip` | string | `0` | `1` comprime el envio al SII | | `retry` | string | `1` | Intentos de envio | ### Body (JSON) ```json { "auth": {"cert": {"pfx-data": "", "passphrase": "clave"}}, "caf": "XML_o_base64_del_CAF", "dte": { "Encabezado": { "IdDoc": {"TipoDTE": 33, "Folio": 1, "FchEmis": "2026-01-15"}, "Emisor": {"RUTEmisor": "76.XXX.XXX-K", "RznSoc": "...", "GiroEmis": "..."}, "Receptor": {"RUTRecep": "11.111.111-1", "RznSocRecep": "..."}, "Totales": {"MntTotal": 119000} }, "Detalle": [{"NmbItem": "Producto", "QtyItem": 1, "PrcItem": 100000}] }, "resolucion": {"NroResol": 0, "FchResol": "2024-01-01"} } ``` ### Campos auto-calculados con `normalizar=1` - `FchEmis` -> fecha de hoy si se omite. - `IndServicio` -> `3` para boletas (39, 41). - `NroLinDet` -> numerado 1, 2, 3... - `MontoItem` -> `QtyItem * PrcItem` (con descuentos). - `MntNeto` -> suma desde items. - `IVA` -> `MntNeto * TasaIVA / 100`. - `MntTotal` -> `MntNeto + IVA + MntExe`. - `TasaIVA` -> `19` para tipos afectos. Con `normalizar=0` debe enviar todos los campos explicitamente. ### Respuesta exitosa (200) ```json { "certificacion": 1, "xml": { "dte": "PD94bWwg...", "receptor": "PD94bWwg...", "sii": "PD94bWwg..." }, "track_id": 123456, "envio_estado": "recibido", "envio_descripcion": "El SII ha recibido el envio" } ``` ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | `caf` o `dte` faltantes | Enviar ambos | | 400 | `AUTH_ERROR` | Certificado invalido o passphrase incorrecta | Renovar certificado | | 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido | | 403 | `INSUFFICIENT_SCOPE` | Token sin scope `vendemas:write` | Generar token con scope | | 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` | | 502 | `SII_UPLOAD_ERROR` | SII rechazo el envio (solo si `enviar_sii=1`) | Reintentar con mismo XML | | 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min | --- (Docstring legacy con estructura interna del body - preservado para referencia) El body debe tener la siguiente estructura:: ```text { "auth": { "cert": { "cert-data": "base64...", // certificado PEM en base64 "pkey-data": "base64...", // llave privada PEM en base64 // alternativa: "pfx-data": "base64..." (PKCS#12) "passphrase": "..." // opcional } }, "caf": "base64_o_xml_del_caf...", "dte": { "Encabezado": { "IdDoc": {"TipoDTE": 33, "Folio": 1, "FchEmis": "2024-01-15"}, "Emisor": {"RUTEmisor": "12345678-9", ...}, "Receptor": {"RUTRecep": "98765432-1", ...}, "Totales": {"MntTotal": 119000} }, "Detalle": [{"NmbItem": "Producto", "MontoItem": 119000}] }, "resolucion": { "NroResol": 0, "FchResol": "2024-01-01" } } ``` Args: body: Request body con auth, caf, dte y resolucion. normalizar: ``"1"`` para calcular valores derivados, ``"0"`` para usarlos tal cual. formato: Formato de los datos del DTE en el body. enviar_sii: ``"1"`` para enviar el XML al SII tras generarlo. gzip: ``"1"`` para comprimir el envio al SII. retry: Numero de reintentos de envio al SII. Returns: Diccionario con xml (dte, receptor, sii en base64), certificacion y track_id. Raises: ValueError: Si faltan datos obligatorios o el DTE es invalido. ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Normalizar DTE al formato estandar del SII (reference/vendemas/documentos-tributarios/normalizar-dte-al-formato-estandar-del-sii) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/dte/formatos/json\",\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/vendemas/dte/formatos/json\" \\\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/vendemas/dte/formatos/json\", {\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);" } ]} /> Normalizar un DTE externo al formato estandar del SII. Decodifica el DTE desde base64 y lo convierte al formato dict estandar del SII (campos en espanol segun nomenclatura oficial). Operacion puramente local — no requiere llamadas al SII. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:read`. **Quota:** Consume 1 consulta | Peso: 1x --- ### Body (JSON) | Campo | Tipo | Requerido | Descripcion | |-------|------|-----------|-------------| | `dte` | string | Si | DTE codificado en base64 | | `formato` | string | No | Formato de entrada (default: `json`) | ### Formatos soportados | Formato | Descripcion | |---------|-------------| | `json` | JSON estandar del SII | | `xml` | XML DTE | | `yaml` | YAML | | `JSONString` | JSON codificado como string dentro del base64 | | `Acepta.Normal` | Formato Acepta (facturas) | | `Acepta.Boleta` | Formato Acepta (boletas) | | `FacturacionCL.XML` | XML de FacturacionCL | ### Respuesta exitosa (200) Retorna el DTE normalizado con estructura `{Encabezado, Detalle, Referencia}`. ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | `dte` faltante, base64 invalido o formato no soportado | Revisar body | | 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` | El body debe tener la siguiente estructura:: ```text { "dte": "base64_del_dte...", "formato": "json" // opcional, default "json" } ``` Formatos soportados actualmente: - ``json``: JSON con estructura SII (pasthrough con normalizacion) - ``JSONString``: JSON codificado como string dentro del base64 - ``xml``: XML DTE del SII Args: body: Request body con dte (base64) y formato opcional. Returns: DTE normalizado con Encabezado, Detalle y Referencias segun esquema SII. Raises: ValueError: Si el base64 no es valido, el formato no es soportado, o la estructura del DTE es invalida. ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Vendemas · Envíos al SII (reference/vendemas/envios-al-sii) ============================================================ ## Endpoints en Envíos al SII ============================================================ # Consultar estado de envio XML al SII (reference/vendemas/envios-al-sii/consultar-estado-de-envio-xml-al-sii) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/dte/envios/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/vendemas/dte/envios/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/vendemas/dte/envios/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);" } ]} /> Consultar estado de procesamiento de un envio XML al SII. Verifica el estado de un envio previo al SII usando el `track_id` retornado por `/enviar`. Util para polling hasta confirmar procesamiento exitoso (estado terminal `EPR` o error). **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:read` + certificado digital del emisor en `auth.cert`. **Quota:** Consume 1 consulta | Peso: 2x --- ### Parametros de consulta | Parametro | Tipo | Default | Descripcion | |-----------|------|---------|-------------| | `ambiente` | string | `0` | `0` produccion, `1` certificacion | ### Body (JSON) | Campo | Tipo | Requerido | Descripcion | |-------|------|-----------|-------------| | `auth.cert.*` | string | Si | Certificado PFX o PEM | | `emisor` | string | Si | RUT del emisor | | `dte` | int | Si | Tipo DTE (33, 39, etc.) | | `folio` | int | Si | Numero de folio | | `track_id` | int | Si | ID de seguimiento retornado al enviar | ### 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 { "certificacion": 1, "track_id": 123456, "estado": "EPR", "fecha_recepcion": "2026-01-15T10:23:45", "revision_estado": "OK", "detalle": "Procesado correctamente" } ``` ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | Campos faltantes (emisor/dte/folio/track_id) | Revisar body | | 400 | `AUTH_ERROR` | Certificado invalido | Renovar certificado | | 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido | | 404 | `HTTP_404` | Track ID no existe | Verificar track_id del envio | | 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` | | 502 | `VENDEMAS_ERROR` | SII retorno error | Reintentar | | 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min | ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Enviar XML al SII (reference/vendemas/envios-al-sii/enviar-xml-al-sii) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/dte/envios/enviar\",\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/vendemas/dte/envios/enviar\" \\\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/vendemas/dte/envios/enviar\", {\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 XML firmado al SII con deteccion automatica de modo. Soporta 3 modos de operacion detectados automaticamente segun el contenido del body: - **Sobre**: `xml` es un `` o `` ya firmado -> reenvio directo. - **DTE individual**: `xml` es un `` firmado -> construye sobre, firma y envia. - **Masivo**: `xml` es una lista de DTEs firmados -> construye un sobre con todos. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:write` + certificado digital del emisor en `auth.cert`. **Quota:** Consume 1 consulta | Peso: 5x (operacion critica) --- ### Parametros de consulta | Parametro | Tipo | Default | Descripcion | |-----------|------|---------|-------------| | `ambiente` | string | `0` | `0` produccion, `1` certificacion | | `gzip` | string | `0` | `0` sin comprimir, `1` comprimido | | `retry` | string | `1` | Intentos de envio (max 3) | ### Body (JSON) | Campo | Tipo | Requerido | Descripcion | |-------|------|-----------|-------------| | `auth.cert.*` | string | Si | Certificado PFX o PEM (cert + pkey) | | `emisor` | string | Si | RUT del emisor | | `xml` | string o array | Si | XML(s) firmado(s) en base64 | | `resolucion.fecha` | string | Condicional | `AAAA-MM-DD` (si xml es DTE individual/masivo) | | `resolucion.numero` | int | Condicional | Numero resolucion SII | ### Respuesta exitosa (200) ```json { "certificacion": 1, "track_id": 123456, "estado": "EPR", "descripcion": "Envio recibido" } ``` ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | XML, emisor o resolucion faltantes | Revisar body | | 400 | `AUTH_ERROR` | Certificado invalido o passphrase incorrecta | Renovar certificado | | 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido | | 403 | `INSUFFICIENT_SCOPE` | Token sin scope `vendemas:write` | Generar token con scope | | 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` | | 502 | `SII_UPLOAD_ERROR` | SII rechazo el envio | Reintentar con mismo XML | | 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min | ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Vendemas · Intercambios DTE (reference/vendemas/intercambios-dte) ============================================================ ## Endpoints en Intercambios DTE ============================================================ # Consultar si un DTE es cedible (reference/vendemas/intercambios-dte/consultar-si-un-dte-es-cedible) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/dte/intercambios/cesion/:emisor/:dte/: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/vendemas/dte/intercambios/cesion/:emisor/:dte/: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/vendemas/dte/intercambios/cesion/:emisor/:dte/: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);" } ]} /> Consultar si un DTE es cedible y su estado actual de cesion. Indica si el DTE es apto para cesion (factoring) y su estado actual. Util antes de iniciar un flujo de cesion con `/dte/cesion/ceder`. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:read` + certificado digital en `auth.cert`. **Quota:** Consume 1 consulta | Peso: 2x --- ### Parametros de ruta | Parametro | Tipo | Requerido | Descripcion | |-----------|------|-----------|-------------| | `emisor` | string | Si | RUT del emisor del DTE | | `dte` | string | Si | Codigo tipo DTE | | `folio` | string | Si | Folio del DTE | ### Respuesta exitosa (200) ```json {"codResp": "00", "descResp": "DTE cedible"} ``` ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `AUTH_ERROR` | Certificado invalido | Renovar certificado | | 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido | | 404 | `HTTP_404` | DTE no existe | Verificar emisor/dte/folio | | 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` | | 502 | `VENDEMAS_ERROR` | SII retorno error | Reintentar | | 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min | ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Fecha de recepcion de un DTE en el SII (reference/vendemas/intercambios-dte/fecha-de-recepcion-de-un-dte-en-el-sii) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/dte/intercambios/recepcion_sii/:emisor/:dte/: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/vendemas/dte/intercambios/recepcion_sii/:emisor/:dte/: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/vendemas/dte/intercambios/recepcion_sii/:emisor/:dte/: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);" } ]} /> Consultar fecha de recepcion de un DTE en el SII. Retorna la fecha en que el SII recibio/registro el DTE indicado. Util para validar timing de procesamiento y auditoria de envios. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:read` + certificado digital en `auth.cert`. **Quota:** Consume 1 consulta | Peso: 2x --- ### Parametros de ruta | Parametro | Tipo | Requerido | Descripcion | |-----------|------|-----------|-------------| | `emisor` | string | Si | RUT del emisor del DTE | | `dte` | string | Si | Codigo tipo DTE | | `folio` | string | Si | Folio del DTE | ### Body (JSON) ```json {"auth": {"cert": {"pfx-data": "", "passphrase": "clave"}}} ``` ### Respuesta exitosa (200) ```json {"fechaRecepcion": "2026-01-15T10:23:45"} ``` ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `AUTH_ERROR` | Certificado invalido | Renovar certificado | | 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido | | 404 | `HTTP_404` | DTE no existe en el SII | Verificar emisor/dte/folio | | 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` | | 502 | `VENDEMAS_ERROR` | SII retorno error | Reintentar | | 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min | ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Historial de eventos de un DTE (reference/vendemas/intercambios-dte/historial-de-eventos-de-un-dte) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/dte/intercambios/eventos/:emisor/:dte/: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/vendemas/dte/intercambios/eventos/:emisor/:dte/: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/vendemas/dte/intercambios/eventos/:emisor/:dte/: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);" } ]} /> Consultar historial de eventos de un DTE en el SII. Retorna todos los eventos registrados en el SII para el DTE: recepcion, acuse, reclamo, cesion, etc. Util para auditoria y diagnostico de incidencias. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:read` + certificado digital en `auth.cert`. **Quota:** Consume 1 consulta | Peso: 2x --- ### Parametros de ruta | Parametro | Tipo | Requerido | Descripcion | |-----------|------|-----------|-------------| | `emisor` | string | Si | RUT del emisor del DTE | | `dte` | string | Si | Codigo tipo DTE | | `folio` | string | Si | Folio del DTE | ### Respuesta exitosa (200) ```json { "codResp": "00", "descResp": "Consulta exitosa", "eventos": [ {"tipo": "RECEPCION", "fecha": "2026-01-15T10:23:45"}, {"tipo": "ACUSE", "fecha": "2026-01-16T14:30:00"} ] } ``` ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `AUTH_ERROR` | Certificado invalido | Renovar certificado | | 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido | | 404 | `HTTP_404` | DTE no existe | Verificar emisor/dte/folio | | 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` | | 502 | `VENDEMAS_ERROR` | SII retorno error | Reintentar | | 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min | ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Registrar aceptacion/reclamo de DTE en el SII (reference/vendemas/intercambios-dte/registrar-aceptacion-reclamo-de-dte-en-el-sii) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/dte/intercambios/respuesta_sii\",\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/vendemas/dte/intercambios/respuesta_sii\" \\\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/vendemas/dte/intercambios/respuesta_sii\", {\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 aceptacion/reclamo de DTEs recibidos ante el SII. Registra respuestas de intercambio para multiples DTEs (aceptar, reclamar contenido, otorgar recibo de mercaderias, etc.). Delega al WebService SOAP SiiReclamoDteService. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:write` + certificado digital en `auth.cert` (PFX o PEM). **Quota:** Consume 1 consulta | Peso: 5x (operacion critica) --- ### Parametros de consulta | Parametro | Tipo | Default | Descripcion | |-----------|------|---------|-------------| | `ambiente` | string | `0` | `0` produccion, `1` certificacion | ### Body (JSON) | Campo | Tipo | Requerido | Descripcion | |-------|------|-----------|-------------| | `auth.cert.*` | string | Si | Certificado PFX o PEM | | `documentos[]` | array | Si | Lista de documentos a registrar | Cada documento: `RUTEmisor`, `TipoDTE`, `Folio`, `EstadoRecepDTE`. ### Acciones validas (`EstadoRecepDTE`) | Codigo | Descripcion | |--------|-------------| | `ACD` | Acepta contenido del documento | | `RCD` | Reclamo contenido del documento | | `ERM` | Otorga recibo de mercaderias o servicios | | `RFP` | Reclamo falta parcial de mercaderia | | `RFT` | Reclamo falta total de mercaderia | ### Respuesta exitosa (200) Diccionario con resultados por documento indexados por `T{TipoDTE}F{Folio}`. ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | `documentos` vacio o accion invalida | Revisar body | | 400 | `AUTH_ERROR` | Certificado invalido | Renovar certificado | | 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido | | 403 | `INSUFFICIENT_SCOPE` | Token sin scope `vendemas:write` | Generar token con scope | | 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` | | 502 | `VENDEMAS_ERROR` | SII rechazo la operacion | Revisar `details` | ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Vendemas · RCOF (reference/vendemas/rcof) ============================================================ ## Endpoints en RCOF ============================================================ # Generar XML de RVD de Boletas (ex RCOF) (reference/vendemas/rcof/generar-xml-de-rvd-de-boletas-ex-rcof) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/dte/rcof/generar\",\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/vendemas/dte/rcof/generar\" \\\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/vendemas/dte/rcof/generar\", {\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);" } ]} /> Generar XML del RCOF/RVD (Reporte Ventas Diarias) y opcionalmente enviarlo al SII. Construye el XML del Reporte de Ventas Diarias firmado digitalmente. El RVD se debe enviar al SII de lunes a domingo, **todos los dias**, existan o no movimientos. Cada envio reemplaza al anterior siempre y cuando tenga una secuencia siguiente a la ultima enviada. Si `enviar_sii == "1"`, ademas envia el XML al SII y retorna el `track_id`. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:write` + certificado digital del emisor en `auth.cert` (PFX o PEM). **Quota:** Consume 1 consulta | Peso: 5x (operacion critica si `enviar_sii=1`) --- ### Parametros de consulta | Parametro | Tipo | Default | Descripcion | |-----------|------|---------|-------------| | `enviar_sii` | string | `0` | `0` solo genera; `1` envia al SII y retorna `track_id` | ### Body (JSON) | Campo | Tipo | Requerido | Descripcion | |-------|------|-----------|-------------| | `auth.cert.cert-data` + `auth.cert.pkey-data` | string | Si* | Certificado + llave privada PEM en base64 | | `auth.cert.pfx-data` + `auth.cert.passphrase` | string | Si* | Alternativa: PKCS#12 (.pfx) en base64 | | `emisor` | string | Si | RUT del emisor | | `resolucion.fecha` | string | Si | Fecha resolucion SII `AAAA-MM-DD` | | `resolucion.numero` | int | Si | Numero resolucion SII (`0` = certificacion) | | `secuencia` | int | Si | Numero de secuencia del dia | | `documentos[]` | array | Si | Lista de documentos del dia | *Usar cert-data + pkey-data (PEM) **o** pfx-data (PKCS#12). ### Estructura de cada documento | Campo | Tipo | Descripcion | |-------|------|-------------| | `TpoDoc` | int | Tipo DTE (39, 41, etc.) | | `NroDoc` | int | Folio | | `FchDoc` | string | `AAAA-MM-DD` | | `MntNeto` / `MntIVA` / `TasaImp` / `MntExe` / `MntTotal` | int | Montos | | `Anulado` | bool (opcional) | `True` si folio anulado | ### Respuesta exitosa (200) ```json { "certificacion": 1, "xml": "PD94bWwgdmVyc2lvbj0i...", "track_id": 123456, "estado": "OK" } ``` Si el envio al SII falla, retorna `track_id_error` en vez de `track_id`. ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | Datos invalidos (emisor/documentos faltantes) | Revisar body | | 400 | `AUTH_ERROR` | Certificado invalido o passphrase incorrecta | Renovar certificado | | 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido | | 403 | `INSUFFICIENT_SCOPE` | Token sin scope `vendemas:write` | Generar token con scope | | 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` | | 502 | `SII_UPLOAD_ERROR` | SII rechazo el envio | Reintentar con mismo XML | | 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min | Args: body: Request body con estructura: ```json { "auth": { "cert": { "cert-data": "...", // Certificado X.509 PEM/base64 "pkey-data": "...", // Llave privada PEM/base64 "passphrase": "..." // Contraseña (opcional) } }, "emisor": "76192083-9", "resolucion": { "fecha": "2019-12-23", "numero": 0 }, "secuencia": 1, "documentos": [ { "TpoDoc": 39, "NroDoc": 1, "FchDoc": "2024-01-15", "MntNeto": 100, "MntIVA": 19, "TasaImp": 19, "MntExe": 0, "MntTotal": 119 } ] } ``` ```text - ``emisor`` (str): RUT del emisor (ej: ``"76192083-9"``). Campos del objeto ``resolucion``: - ``fecha`` (str): Fecha de resolución SII (``"YYYY-MM-DD"``). - ``numero`` (int): Número de resolución (0 = certificación). Campos de cada documento en ``documentos``: - ``TpoDoc`` (int): Tipo de documento (39, 41, etc.). - ``NroDoc`` (int): Folio del documento. - ``FchDoc`` (str): Fecha del documento (``"YYYY-MM-DD"``). - ``MntNeto`` (int): Monto neto (0 si exento). - ``MntIVA`` (int): Monto IVA. - ``TasaImp`` (int): Tasa de impuesto (19). - ``MntExe`` (int): Monto exento. - ``MntTotal`` (int): Monto total. - ``Anulado`` (bool, opcional): True si el folio fue anulado. enviar_sii: ``"0"`` solo genera el XML, ``"1"`` genera y envía al SII. ``` Returns: Diccionario con: - ``certificacion`` (int): ``1`` si NroResol == 0, ``0`` si producción. - ``xml`` (str): XML del RCOF firmado en base64. - ``track_id`` (int, opcional): ID de seguimiento SII (solo si ``enviar_sii == "1"``). - ``track_id_error`` (str, opcional): Mensaje de error si el envío falló. Raises: ValueError: Si faltan datos de certificado, emisor o documentos. XmlSignatureError: Si la firma digital falla. RuntimeError: Si el envío al SII falla (solo cuando ``enviar_sii == "1"``). ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Vendemas · Utilidades (reference/vendemas/utilidades) ============================================================ ## Endpoints en Utilidades ============================================================ # Obtener metadatos de un certificado digital (reference/vendemas/utilidades/obtener-metadatos-de-un-certificado-digital) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/certificate/info\",\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/vendemas/certificate/info\" \\\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/vendemas/certificate/info\", {\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 metadatos de un certificado digital sin llamar al SII. Decodifica el certificado enviado en el body y extrae informacion (titular RUT/nombre, emisor, fechas de emision/vencimiento, serial number, fingerprint, validez). Operacion **puramente local** — no realiza llamadas al SII. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:read`. **Quota:** Consume 1 consulta | Peso: 1x --- ### Body (JSON) | Campo | Tipo | Requerido | Descripcion | |-------|------|-----------|-------------| | `auth.cert.pfx-data` + `auth.cert.passphrase` | string | Si* | PKCS#12 base64 + clave | | `auth.cert.cert-data` + `auth.cert.pkey-data` | string | Si* | Alternativa PEM base64 | ### Respuesta exitosa (200) ```json { "subject": "CN=EMPRESA EJEMPLO SPA, O=RUT 76.XXX.XXX-K, C=CL", "issuer": "CN=E-Sign Issuer, O=E-Sign S.A., C=CL", "validity": {"not_before": "2025-01-01", "not_after": "2026-12-31"}, "serial_number": "1234567890", "rut": "76.XXX.XXX-K", "fingerprint": "AB:CD:EF:...", "is_valid": true } ``` ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | Datos de certificado faltantes | Enviar `pfx-data` o `cert-data + pkey-data` | | 400 | `AUTH_ERROR` | Certificado invalido o passphrase incorrecta | Renovar certificado | | 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` | ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ``` ============================================================ # Obtener token de autenticacion del SII (reference/vendemas/utilidades/obtener-token-de-autenticacion-del-sii) ============================================================ \"https://api.fiscalbridge.cl/api/v1/vendemas/auth/token\",\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/vendemas/auth/token\" \\\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/vendemas/auth/token\", {\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 token de autenticacion del SII usando certificado digital. Util para operaciones que requieren token SII previo (descarga de archivos, envio de XML). El token se gestiona internamente y se reutiliza dentro de su ventana de validez. **Autenticacion requerida:** API token en header `X-API-Token` con scope `vendemas:read` + certificado digital en `auth.cert` (PFX o PEM). **Quota:** Consume 1 consulta | Peso: 2x --- ### Parametros de consulta | Parametro | Tipo | Default | Descripcion | |-----------|------|---------|-------------| | `ambiente` | string | `1` | `0` produccion, `1` certificacion | ### Body (JSON) | Campo | Tipo | Requerido | Descripcion | |-------|------|-----------|-------------| | `auth.cert.pfx-data` + `auth.cert.passphrase` | string | Si* | PKCS#12 en base64 + clave | | `auth.cert.cert-data` + `auth.cert.pkey-data` | string | Si* | Alternativa PEM base64 | *Usar PFX **o** PEM, no ambos. ### Respuesta exitosa (200) ```json { "token": "TOKEN_SII", "rut": "76.XXX.XXX-K", "fingerprint": "AB:CD:...", "environment": "certificacion", "expires_at": "2026-02-22T20:00:00" } ``` ### Errores especificos | Codigo | error_code | Causa | Resolucion | |--------|------------|-------|------------| | 400 | `VALIDATION_ERROR` | Datos de certificado faltantes | Enviar `pfx-data` o `cert-data + pkey-data` | | 400 | `AUTH_ERROR` | Certificado invalido o passphrase incorrecta | 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 | `VENDEMAS_ERROR` | SII rechazo la autenticacion | Revisar certificado | | 503 | `SII_UNAVAILABLE` | SII en mantenimiento | Reintentar en 5 min | ### Notas - El token se cachea temporalmente por su duracion efectiva (default ~10 min). - Llamadas subsecuentes con el mismo certificado retornan token cacheado. ## Parámetros ## Respuestas ### Forma de la respuesta Código `200`. Estructura del JSON devuelto. ```json {} ```