Emitir 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 } ] }'const res = await fetch("https://api.simplo.cl/api/v1/billing/dte", { method: "POST", headers: { "X-Api-Key": process.env.SIMPLO_API_KEY, "Content-Type": "application/json", "Idempotency-Key": crypto.randomUUID(), }, body: JSON.stringify({ 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 }, ], }),});
const dte = await res.json();console.log(dte.folio, dte.estado);using var http = new HttpClient();http.DefaultRequestHeaders.Add("X-Api-Key", Environment.GetEnvironmentVariable("SIMPLO_API_KEY"));http.DefaultRequestHeaders.Add("Idempotency-Key", Guid.NewGuid().ToString());
var body = """{ "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 } ]}""";
var res = await http.PostAsync( "https://api.simplo.cl/api/v1/billing/dte", new StringContent(body, Encoding.UTF8, "application/json"));res.EnsureSuccessStatusCode();Console.WriteLine(await res.Content.ReadAsStringAsync());var body = """ { "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 } ] } """;
var client = HttpClient.newHttpClient();var request = HttpRequest.newBuilder() .uri(URI.create("https://api.simplo.cl/api/v1/billing/dte")) .header("X-Api-Key", System.getenv("SIMPLO_API_KEY")) .header("Content-Type", "application/json") .header("Idempotency-Key", UUID.randomUUID().toString()) .POST(HttpRequest.BodyPublishers.ofString(body)) .build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());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: hola@simplo.cl); las API keys hoy operan en modo lectura.
Autenticación
Sección titulada «Autenticación»Parámetros
Sección titulada «Parámetros»Parámetros de cabecera
Sección titulada «Parámetros de cabecera»Example
550e8400-e29b-41d4-a716-446655440000UUID ú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.
Cuerpo de la peticiónrequerido
Sección titulada «Cuerpo de la peticiónrequerido»object
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.
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.
object
RUT del receptor con dígito verificador
object
Tipo de documento liquidado. Requerido en Liquidación Factura (tipo 43).
Marca una línea como exenta cuando el tipo de DTE lo requiere.
Código de impuesto adicional por línea. Para factura de compra con retención total de IVA se usa 15.
Nombre del item o servicio
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.
Cantidad (soporta decimales para unidades fraccionarias). Puede omitirse solo en correcciones de texto codigo_ref=2 sin monto.
Unidad de medida opcional del item, por ejemplo UN, Kg o Lt
Precio unitario en pesos chilenos. Puede omitirse solo en correcciones de texto codigo_ref=2 sin monto.
Monto total de la línea. Uso acotado (por ejemplo liquidaciones) cuando el valor de línea no debe recalcularse como cantidad por precio.
Descuento porcentual sobre la línea (0-100)
Recargo porcentual sobre la línea (0-100)
Comisiones de Liquidación Factura (tipo 43)
object
C para cobro/comisión positiva, O para otros movimientos o rebajas.
Impuestos retenidos en Totales/ImptoReten. Usado por factura de compra (tipo 46) y sus notas.
object
Código SII del impuesto retenido. Para IVA retenido total en factura de compra se usa 15.
Tasa usada para calcular el monto retenido cuando monto_imp no viene informado.
Monto retenido explícito. Si se omite y hay tasa_imp, se calcula sobre el neto.
Requerido para notas de crédito (61), notas de débito (56), y exportación (111, 112)
object
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.
Código libre para referencias de exportación, por ejemplo MIC, DUS, AWB o SNA.
Folio del documento referenciado
Fecha del documento referenciado
Código de referencia SII:
- 1: Anula documento referenciado
- 2: Corrige texto del documento referenciado
- 3: Corrige montos del documento referenciado
Razón de la referencia
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
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
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
Descuentos y recargos globales aplicados sobre el neto
object
Número de línea del descuento/recargo
D = descuento, R = recargo
% = porcentaje, $ = monto fijo
Valor del descuento/recargo. En exportación puede incluir decimales.
Glosa descriptiva
1 = descuento/recargo global no afecto; 2 = no facturable. Para DTE exentos/exportación se infiere 1 si se omite.
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.
Datos de exportación para tipos 110, 111, 112
object
Código de moneda según tabla Aduanas (e.g., “DOLAR USA”, “EURO”)
Tipo de cambio fijado por el Banco Central para OtraMoneda cuando se informa
Monto auxiliar de compatibilidad para OtraMoneda
Código o nombre de país para Receptor/Extranjero/Nacionalidad
Número de identificación del receptor extranjero/turista para Exportaciones/Extranjero/NumId
No usar en tipos 110, 111, 112; el XSD de Exportaciones no permite TipoDocID dentro de Receptor/Extranjero
Código Aduana de forma de pago de exportación
Código Aduana de modalidad de venta
Cláusula Aduana, acepta código numérico o etiqueta conocida como CIF, CFR, FOB
Total de la cláusula de venta
Código Aduana de vía de transporte
Código o nombre de puerto de embarque
Código o nombre de puerto de desembarque
Tara
Código Aduana de unidad de medida de tara
Peso bruto
Código Aduana de unidad de peso bruto
Peso neto
Código Aduana de unidad de peso neto
Tipo de bulto, acepta código numérico o etiqueta conocida
Total de bultos
Marcas informadas dentro de TipoBultos cuando la operación lo exige
Monto de flete en moneda de venta
Monto de seguro en moneda de venta
Código o nombre de país receptor según tabla Aduanas
Código o nombre de país destino según tabla Aduanas
Metadata extensible definida por el integrador
object
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 } ]}Nota de crédito (tipo 61) que anula una factura
{ "tipo_dte": 61, "receptor": { "rut": "76543210-K", "razon_social": "Empresa Ejemplo SpA" }, "detalle": [ { "nombre": "Servicio de consultoria TI", "cantidad": 10, "precio": 50000 } ], "referencias": [ { "tipo_doc_ref": 33, "folio_ref": 1042, "fecha_ref": "2026-08-01", "codigo_ref": 1, "razon_ref": "Anula factura por devolucion" } ]}Respuestas
Sección titulada «Respuestas»DTE emitido exitosamente
object
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.
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
estadoenGET /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
Monto total en pesos chilenos
Example
{ "id": "4f9c9c2e-8a49-4f2e-9d5f-0d8f3a1b2c3d", "folio": 1042, "tipo_dte": 33, "estado": "firmado", "monto_total": 595000, "created_at": "2026-08-01T14:30:00Z"}Headers
Sección titulada «Headers»Presente con valor true cuando la respuesta es un replay de una ejecución anterior (misma Idempotency-Key).
Error de validación
object
Código de error máquina-legible
Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.
Alias de compatibilidad de message mantenido hacia atrás.
object
Campo con error (dot notation para nested)
Código de validación
Mensaje descriptivo
Acción recomendada para el cliente
Severidad opcional del error
Contexto estructurado opcional para debugging
object
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
object
Código de error máquina-legible
Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.
Alias de compatibilidad de message mantenido hacia atrás.
object
Campo con error (dot notation para nested)
Código de validación
Mensaje descriptivo
Acción recomendada para el cliente
Severidad opcional del error
Contexto estructurado opcional para debugging
object
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)
object
Código de error máquina-legible
Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.
Alias de compatibilidad de message mantenido hacia atrás.
object
Campo con error (dot notation para nested)
Código de validación
Mensaje descriptivo
Acción recomendada para el cliente
Severidad opcional del error
Contexto estructurado opcional para debugging
object
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)
object
Código de error máquina-legible
Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.
Alias de compatibilidad de message mantenido hacia atrás.
object
Campo con error (dot notation para nested)
Código de validación
Mensaje descriptivo
Acción recomendada para el cliente
Severidad opcional del error
Contexto estructurado opcional para debugging
object
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
object
Código de error máquina-legible
Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.
Alias de compatibilidad de message mantenido hacia atrás.
object
Campo con error (dot notation para nested)
Código de validación
Mensaje descriptivo
Acción recomendada para el cliente
Severidad opcional del error
Contexto estructurado opcional para debugging
object
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"}Headers
Sección titulada «Headers»Segundos hasta poder reintentar
Servicio de idempotencia temporalmente no disponible. Reintentar.
object
Código de error máquina-legible
Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.
Alias de compatibilidad de message mantenido hacia atrás.
object
Campo con error (dot notation para nested)
Código de validación
Mensaje descriptivo
Acción recomendada para el cliente
Severidad opcional del error
Contexto estructurado opcional para debugging
object
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"}