SIIBTE
Emitir una nueva BTE
Emitir una nueva boleta de terceros electronica (BTE).
POST
/api/v1/sii/bte/emitidas/emitirv1 · ESTABLEPOST /api/v1/sii/bte/emitidas/emitir
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
Respuesta exitosa (200)
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
RUTEmisordel boleta debe coincidir conauth.pass.ruto 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.
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.