Ir al contenido
SimploSimplo Docs

Emitir DTE

POST
/api/v1/billing/dte
curl -X POST "https://api.simplo.cl/api/v1/billing/dte" \
-H "X-Api-Key: $SIMPLO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"tipo_dte": 33,
"fecha_emision": "2026-08-01",
"receptor": {
"rut": "76543210-K",
"razon_social": "Empresa Ejemplo SpA",
"giro": "Desarrollo de software",
"direccion": "Av. Providencia 1234",
"comuna": "Providencia",
"ciudad": "Santiago"
},
"detalle": [
{
"nombre": "Servicio de consultoria TI",
"cantidad": 10,
"unidad": "UN",
"precio": 50000
}
]
}'

Emite un Documento Tributario Electrónico. Soporta los 12 tipos SII: facturas (33, 34), boletas (39, 41), liquidación factura (43), factura de compra (46), guía de despacho (52), notas de débito/crédito (56, 61) y documentos de exportación (110, 111, 112).

Flujo: validación, asignación de folio desde el CAF activo, generación del XML, timbre electrónico (TED), firma digital y persistencia. La respuesta 201 retorna inmediatamente con estado firmado; el envío al SII ocurre de forma asíncrona. Use webhooks o polling en GET /api/v1/billing/dte/{id} para seguir el estado.

Requiere el header Idempotency-Key (UUID). Un reintento con la misma key retorna la respuesta original con X-Idempotency-Replay: true.

Beta privada: la emisión y las escrituras vía API key están en beta privada (solicitar acceso: [email protected]); las API keys hoy operan en modo lectura.

Idempotency-Key
requerido
string format: uuid
Example
550e8400-e29b-41d4-a716-446655440000

UUID único para garantizar idempotencia. Obligatorio. Reintentar con la misma key retorna la respuesta original con el header X-Idempotency-Replay: true. Las keys completadas se retienen 24 horas.

Media typeapplication/json
object
tipo_dte
requerido

Código SII del tipo de Documento Tributario Electrónico (33 factura, 39 boleta, 52 guía de despacho, 56/61 notas, 110-112 exportación). Detalle de cada tipo en la guía Tipos de DTE.

integer
Valores permitidos: 33 34 39 41 43 46 52 56 61 110 111 112
fecha_emision

Fecha de emisión tributaria del DTE en formato YYYY-MM-DD. Si se omite, se usa la fecha de negocio en Chile. Para exportación con moneda extranjera, debe coincidir con una fecha que tenga tipo de cambio oficial publicado cuando se informa export_data.tpo_cambio.

string format: date
receptor
requerido
object
rut
requerido

RUT del receptor con dígito verificador

string
razon_social
requerido
string
<= 200 characters
giro
string
<= 200 characters
direccion
string
<= 300 characters
comuna
string
<= 100 characters
ciudad
string
<= 100 characters
detalle
requerido
Array<object>
>= 1 items <= 60 items
object
tipo_doc_liq

Tipo de documento liquidado. Requerido en Liquidación Factura (tipo 43).

string
<= 3 characters
ind_exe

Marca una línea como exenta cuando el tipo de DTE lo requiere.

integer
Valores permitidos: 1
cod_imp_adic

Código de impuesto adicional por línea. Para factura de compra con retención total de IVA se usa 15.

integer
nombre
requerido

Nombre del item o servicio

string
<= 200 characters
dsc_item

Descripción adicional de la línea. En notas con codigo_ref=2 y monto cero se serializa como DscItem y se omiten QtyItem/PrcItem.

string
<= 1000 characters
cantidad

Cantidad (soporta decimales para unidades fraccionarias). Puede omitirse solo en correcciones de texto codigo_ref=2 sin monto.

number
>= 0.000001
unidad

Unidad de medida opcional del item, por ejemplo UN, Kg o Lt

string
<= 4 characters
precio

Precio unitario en pesos chilenos. Puede omitirse solo en correcciones de texto codigo_ref=2 sin monto.

integer
monto_item

Monto total de la línea. Uso acotado (por ejemplo liquidaciones) cuando el valor de línea no debe recalcularse como cantidad por precio.

integer
descuento_pct

Descuento porcentual sobre la línea (0-100)

number
<= 100
recargo_pct

Recargo porcentual sobre la línea (0-100)

number
<= 100
comisiones

Comisiones de Liquidación Factura (tipo 43)

Array<object>
object
tipo_movim
requerido

C para cobro/comisión positiva, O para otros movimientos o rebajas.

string
Valores permitidos: C O
glosa
requerido
string
tasa_comision
number
val_com_neto
requerido
integer
val_com_exe
requerido
integer
val_com_iva
integer
impuestos_retenciones

Impuestos retenidos en Totales/ImptoReten. Usado por factura de compra (tipo 46) y sus notas.

Array<object>
object
tipo_imp
requerido

Código SII del impuesto retenido. Para IVA retenido total en factura de compra se usa 15.

integer
tasa_imp

Tasa usada para calcular el monto retenido cuando monto_imp no viene informado.

number
monto_imp

Monto retenido explícito. Si se omite y hay tasa_imp, se calcula sobre el neto.

integer
referencias

Requerido para notas de crédito (61), notas de débito (56), y exportación (111, 112)

Array<object>
<= 40 items
object
tipo_doc_ref
requerido
One of:

Código SII del tipo de Documento Tributario Electrónico (33 factura, 39 boleta, 52 guía de despacho, 56/61 notas, 110-112 exportación). Detalle de cada tipo en la guía Tipos de DTE.

integer
Valores permitidos: 33 34 39 41 43 46 52 56 61 110 111 112
folio_ref
requerido

Folio del documento referenciado

integer
fecha_ref
requerido

Fecha del documento referenciado

string format: date
codigo_ref

Código de referencia SII:

  • 1: Anula documento referenciado
  • 2: Corrige texto del documento referenciado
  • 3: Corrige montos del documento referenciado
integer
Valores permitidos: 1 2 3
razon_ref
requerido

Razón de la referencia

string
<= 200 characters
ind_traslado

Tipo de traslado para Guía de Despacho (tipo 52):

  • 1: Operación constituye venta
  • 2: Venta por efectuar
  • 3: Consignación
  • 4: Entrega gratuita
  • 5: Traslado interno
  • 6: Otros traslados no venta
  • 7: Guía de devolución
  • 8: Traslado para exportación (no venta)
  • 9: Venta para exportación
integer
Valores permitidos: 1 2 3 4 5 6 7 8 9
tipo_despacho

Modo de despacho para Guía de Despacho (tipo 52):

  • 1: Despacho por cuenta del comprador
  • 2: Despacho por cuenta del emisor a instalaciones del comprador
  • 3: Despacho por cuenta del emisor a otras instalaciones
integer
Valores permitidos: 1 2 3
ind_servicio

Indicador de servicio:

  • 1: Facturación de servicios periódicos domiciliarios
  • 2: Facturación de otros servicios periódicos
  • 3: Factura de servicio; en exportación, servicio calificado por Aduana
  • 4: Factura de exportación por servicios de hotelería
  • 5: Factura de exportación por transporte terrestre internacional
  • 6: Factura de exportación por servicios prestados y utilizados totalmente en el extranjero
integer
Valores permitidos: 1 2 3 4 5 6
descuentos_globales

Descuentos y recargos globales aplicados sobre el neto

Array<object>
<= 20 items
object
nro_lin_dr

Número de línea del descuento/recargo

integer
tpo_mov
requerido

D = descuento, R = recargo

string
Valores permitidos: D R
tpo_valor
requerido

% = porcentaje, $ = monto fijo

string
Valores permitidos: % $
valor_dr
requerido

Valor del descuento/recargo. En exportación puede incluir decimales.

number
glosa_dr

Glosa descriptiva

string
<= 45 characters
ind_exe_dr

1 = descuento/recargo global no afecto; 2 = no facturable. Para DTE exentos/exportación se infiere 1 si se omite.

integer
Valores permitidos: 1 2
auto_send

Cuando es true (default), el DTE se encola para envío individual al SII inmediatamente después de emitirse. Cuando es false, el DTE queda en estado firmado para un envío posterior.

boolean
default: true
export_data

Datos de exportación para tipos 110, 111, 112

object
tpo_moneda
requerido

Código de moneda según tabla Aduanas (e.g., “DOLAR USA”, “EURO”)

string
tpo_cambio

Tipo de cambio fijado por el Banco Central para OtraMoneda cuando se informa

number
mnt_export

Monto auxiliar de compatibilidad para OtraMoneda

number
nacionalidad

Código o nombre de país para Receptor/Extranjero/Nacionalidad

string
num_id

Número de identificación del receptor extranjero/turista para Exportaciones/Extranjero/NumId

string
tipo_doc_id

No usar en tipos 110, 111, 112; el XSD de Exportaciones no permite TipoDocID dentro de Receptor/Extranjero

integer
forma_pago_exp

Código Aduana de forma de pago de exportación

integer
modalidad_venta

Código Aduana de modalidad de venta

integer
clausula_venta

Cláusula Aduana, acepta código numérico o etiqueta conocida como CIF, CFR, FOB

string
total_clausula

Total de la cláusula de venta

number
via_transporte

Código Aduana de vía de transporte

integer
puerto_embarque

Código o nombre de puerto de embarque

string
puerto_desembarque

Código o nombre de puerto de desembarque

string
tara

Tara

integer
unidad_tara

Código Aduana de unidad de medida de tara

integer
peso_bruto

Peso bruto

number
unidad_peso_bruto

Código Aduana de unidad de peso bruto

integer
peso_neto

Peso neto

number
unidad_peso_neto

Código Aduana de unidad de peso neto

integer
tipo_bulto

Tipo de bulto, acepta código numérico o etiqueta conocida

string
total_bultos

Total de bultos

integer
marcas

Marcas informadas dentro de TipoBultos cuando la operación lo exige

string
mnt_flete

Monto de flete en moneda de venta

number
mnt_seguro

Monto de seguro en moneda de venta

number
pais_recep

Código o nombre de país receptor según tabla Aduanas

string
pais_dest

Código o nombre de país destino según tabla Aduanas

string
metadata

Metadata extensible definida por el integrador

object
key
additional properties
any
Examples

Factura electrónica (tipo 33)

{
"tipo_dte": 33,
"fecha_emision": "2026-08-01",
"receptor": {
"rut": "76543210-K",
"razon_social": "Empresa Ejemplo SpA",
"giro": "Desarrollo de software",
"direccion": "Av. Providencia 1234",
"comuna": "Providencia",
"ciudad": "Santiago"
},
"detalle": [
{
"nombre": "Servicio de consultoria TI",
"cantidad": 10,
"unidad": "UN",
"precio": 50000
}
]
}

DTE emitido exitosamente

Media typeapplication/json
object
id
requerido
string format: uuid
folio
requerido
integer
tipo_dte
requerido

Código SII del tipo de Documento Tributario Electrónico (33 factura, 39 boleta, 52 guía de despacho, 56/61 notas, 110-112 exportación). Detalle de cada tipo en la guía Tipos de DTE.

integer
Valores permitidos: 33 34 39 41 43 46 52 56 61 110 111 112
estado
requerido

Estado del DTE en su ciclo de vida.

Importante:

  • la API serializa estos valores exactamente como aparecen aquí
  • use estos mismos literales para renderizar UI, hacer exhaustiveness checks y filtrar por estado en GET /api/v1/billing/dte

Valores:

  • borrador: Creado pero aún no firmado
  • generado: Documento construido, previo a firma
  • firmado: Firmado digitalmente, pendiente de envío
  • enviando: Sobre aceptado por la plataforma, esperando procesamiento SII
  • procesando: SII recibió el envío y se está consultando estado final del DTE
  • aceptado: Aceptado por el SII
  • rechazado: Rechazado por el SII
  • con_reparos: Aceptado por el SII con observaciones
string
Valores permitidos: borrador generado firmado enviando procesando aceptado rechazado con_reparos
monto_total
requerido

Monto total en pesos chilenos

integer
created_at
requerido
string format: date-time
Example
{
"id": "4f9c9c2e-8a49-4f2e-9d5f-0d8f3a1b2c3d",
"folio": 1042,
"tipo_dte": 33,
"estado": "firmado",
"monto_total": 595000,
"created_at": "2026-08-01T14:30:00Z"
}
X-Idempotency-Replay
string
Valores permitidos: true

Presente con valor true cuando la respuesta es un replay de una ejecución anterior (misma Idempotency-Key).

Error de validación

Media typeapplication/json
object
code
requerido

Código de error máquina-legible

string
message
requerido

Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.

string
error

Alias de compatibilidad de message mantenido hacia atrás.

string
details
Array<object>
object
field
requerido

Campo con error (dot notation para nested)

string
code
requerido

Código de validación

string
message
requerido

Mensaje descriptivo

string
action

Acción recomendada para el cliente

string
severity

Severidad opcional del error

string
Valores permitidos: critical error warning info
context

Contexto estructurado opcional para debugging

object
key
additional properties
any
Example
{
"code": "VALIDATION_ERROR",
"message": "Error de validacion en los campos enviados",
"details": [
{
"field": "receptor.rut",
"code": "INVALID_RUT",
"message": "RUT invalido: digito verificador no coincide"
}
]
}

Token o API key inválido o ausente

Media typeapplication/json
object
code
requerido

Código de error máquina-legible

string
message
requerido

Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.

string
error

Alias de compatibilidad de message mantenido hacia atrás.

string
details
Array<object>
object
field
requerido

Campo con error (dot notation para nested)

string
code
requerido

Código de validación

string
message
requerido

Mensaje descriptivo

string
action

Acción recomendada para el cliente

string
severity

Severidad opcional del error

string
Valores permitidos: critical error warning info
context

Contexto estructurado opcional para debugging

object
key
additional properties
any
Example
{
"code": "VALIDATION_ERROR",
"message": "Error de validacion en los campos enviados",
"details": [
{
"field": "receptor.rut",
"code": "INVALID_RUT",
"message": "RUT invalido: digito verificador no coincide"
}
],
"severity": "critical"
}

Conflicto. Posibles causas:

  • Folio duplicado
  • Idempotency-Key ya está siendo procesada (código IDEMPOTENCY_IN_PROGRESS)
Media typeapplication/json
object
code
requerido

Código de error máquina-legible

string
message
requerido

Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.

string
error

Alias de compatibilidad de message mantenido hacia atrás.

string
details
Array<object>
object
field
requerido

Campo con error (dot notation para nested)

string
code
requerido

Código de validación

string
message
requerido

Mensaje descriptivo

string
action

Acción recomendada para el cliente

string
severity

Severidad opcional del error

string
Valores permitidos: critical error warning info
context

Contexto estructurado opcional para debugging

object
key
additional properties
any
Example
{
"code": "VALIDATION_ERROR",
"message": "Error de validacion en los campos enviados",
"details": [
{
"field": "receptor.rut",
"code": "INVALID_RUT",
"message": "RUT invalido: digito verificador no coincide"
}
],
"severity": "critical"
}

Idempotency-Key reutilizada con un body de request diferente al original (código IDEMPOTENCY_BODY_MISMATCH)

Media typeapplication/json
object
code
requerido

Código de error máquina-legible

string
message
requerido

Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.

string
error

Alias de compatibilidad de message mantenido hacia atrás.

string
details
Array<object>
object
field
requerido

Campo con error (dot notation para nested)

string
code
requerido

Código de validación

string
message
requerido

Mensaje descriptivo

string
action

Acción recomendada para el cliente

string
severity

Severidad opcional del error

string
Valores permitidos: critical error warning info
context

Contexto estructurado opcional para debugging

object
key
additional properties
any
Example
{
"code": "VALIDATION_ERROR",
"message": "Error de validacion en los campos enviados",
"details": [
{
"field": "receptor.rut",
"code": "INVALID_RUT",
"message": "RUT invalido: digito verificador no coincide"
}
],
"severity": "critical"
}

Rate limit excedido

Media typeapplication/json
object
code
requerido

Código de error máquina-legible

string
message
requerido

Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.

string
error

Alias de compatibilidad de message mantenido hacia atrás.

string
details
Array<object>
object
field
requerido

Campo con error (dot notation para nested)

string
code
requerido

Código de validación

string
message
requerido

Mensaje descriptivo

string
action

Acción recomendada para el cliente

string
severity

Severidad opcional del error

string
Valores permitidos: critical error warning info
context

Contexto estructurado opcional para debugging

object
key
additional properties
any
Example
{
"code": "VALIDATION_ERROR",
"message": "Error de validacion en los campos enviados",
"details": [
{
"field": "receptor.rut",
"code": "INVALID_RUT",
"message": "RUT invalido: digito verificador no coincide"
}
],
"severity": "critical"
}
Retry-After
integer

Segundos hasta poder reintentar

Servicio de idempotencia temporalmente no disponible. Reintentar.

Media typeapplication/json
object
code
requerido

Código de error máquina-legible

string
message
requerido

Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.

string
error

Alias de compatibilidad de message mantenido hacia atrás.

string
details
Array<object>
object
field
requerido

Campo con error (dot notation para nested)

string
code
requerido

Código de validación

string
message
requerido

Mensaje descriptivo

string
action

Acción recomendada para el cliente

string
severity

Severidad opcional del error

string
Valores permitidos: critical error warning info
context

Contexto estructurado opcional para debugging

object
key
additional properties
any
Example
{
"code": "VALIDATION_ERROR",
"message": "Error de validacion en los campos enviados",
"details": [
{
"field": "receptor.rut",
"code": "INVALID_RUT",
"message": "RUT invalido: digito verificador no coincide"
}
],
"severity": "critical"
}