SIIBTE

Emitir una nueva BTE

Emitir una nueva boleta de terceros electronica (BTE).

POST /api/v1/sii/bte/emitidas/emitir
import requests
 
headers = {
    "X-API-Token": "sk_live_replace_with_your_token",
}
 
response = requests.post(
    "https://api.fiscalbridge.cl/api/v1/sii/bte/emitidas/emitir",
    headers=headers,
)
response.raise_for_status()
print(response.json())

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)

CampoTipoRequeridoDescripcion
auth.pass.rutstringSiRUT del emisor
auth.pass.clavestringSiClave tributaria SII
boleta.Encabezado.Emisor.RUTEmisorstringSiRUT del emisor (debe coincidir con auth.pass.rut)
boleta.Encabezado.IdDoc.FchEmisstringSiFecha de emision YYYY-MM-DD
boleta.Encabezado.Receptor.RUTRecepstringSiRUT del receptor
boleta.Encabezado.Receptor.RznSocRecepstringSiRazon social del receptor
boleta.Encabezado.Receptor.DirRecepstringSiDireccion del receptor
boleta.Encabezado.Receptor.CmnaRecepstringSiComuna del receptor
boleta.DetallearraySiArray de items con NmbItem y MontoItem

Request de ejemplo

{
    "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)

{
    "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

Codigoerror_codeCausaResolucion
400AUTH_ERRORCredenciales SII incorrectasRevisar RUT/clave
400VALIDATION_ERRORDatos de boleta rechazados por SIIRevisar message
401HTTP_401API token ausente o invalidoEnviar X-API-Token valido
403INSUFFICIENT_SCOPEToken sin scope sii:writeGenerar token con scope adecuado
422VALIDATION_ERRORCampos del body rechazadosRevisar errors[]
429SII_RATE_LIMIT / QUOTA_EXCEEDEDRate limitRespetar Retry-After
502SII_GATEWAY_ERRORSII rechazo la emisionRevisar 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

Header / Body
Tipo
Descripción
Requerido
dry_run
string | null · query
Si es `true` (o `1`/`yes`/`on`), el endpoint valida el payload y retorna una respuesta de previsualización (mismo shape que la respuesta real) sin contactar al SII. Útil para validar requests sin consumir folios, cuota ni créditos.
No

Cuerpo de la solicitud

Requerido. Content-Type: application/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

200Successful Response
400Datos de boleta invalidos o credenciales SII incorrectas
401API token ausente o invalido
403Sin scope `sii:write` o cuenta bloqueada
422Body con formato invalido
429Limite de tasa excedido
502SII rechazo la emision
503SII en mantenimiento

Forma de la respuesta

Código 200. Estructura del JSON devuelto.

{}

On this page