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.

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