Payloads: settlement, purchase and export
Complete, verified payloads for DTE types 43 (settlement invoice), 46 (purchase invoice), 110 (export invoice), 111 and 112 (export notes) — every example was actually emitted in the sandbox and accepted. The per-type rules are encoded machine-readable in the OpenAPI contract as a discriminated union on tipo_dte (EmitirDTERequestPorTipo).
The common types (33, 34, 39, 41, 52, 56, 61) are covered in the
Quickstart and in
DTE types. This page completes the remaining
five types with complete, measured payloads: every example on this page
was emitted verbatim against POST /api/v1/billing/dte in the sandbox,
reached aceptado (simulated SII, estado_sii: "DOK"), and had its XML
verified. The response amounts you see here are what the API returned.
The general rules (mandatory Idempotency-Key header, async
firmado → aceptado flow, polling GET /api/v1/billing/dte/{id}) are the
usual ones — see Emission.
43 — Settlement invoice (liquidación-factura)
Section titled “43 — Settlement invoice (liquidación-factura)”Issued by a consignee/commission agent to the principal (the receptor). Two type-specific rules, both enforced by the API:
- Every
detalleline requirestipo_doc_liq— the document-type code being settled (e.g."33"invoices,"39"receipts). Omitting it returns400 LIQUIDACION_TPO_DOC_LIQ_REQUERIDO. comisionesrequirestipo_movim"C"(commission) or"O"(other charges), with aglosa. Anything else returns400 LIQUIDACION_COMISION_INVALIDA.
The document total nets out the commissions:
monto_total = neto + IVA − (val_com_neto + val_com_exe + val_com_iva).
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": 43, "receptor": { "rut": "76543210-3", "razon_social": "COMERCIAL MANDANTE SPA", "giro": "VENTA AL POR MAYOR", "direccion": "AVENIDA PRINCIPAL 100", "comuna": "SANTIAGO", "ciudad": "SANTIAGO" }, "detalle": [ { "tipo_doc_liq": "33", "nombre": "Ventas del período por cuenta del mandante", "cantidad": 1, "precio": 500000 } ], "comisiones": [ { "tipo_movim": "C", "glosa": "Comisión de venta 10%", "tasa_comision": 10, "val_com_neto": 50000, "val_com_exe": 0, "val_com_iva": 9500 } ] }'Measured result: 201 with estado: "firmado", and on the detail after
acceptance: monto_neto: 500000, iva: 95000, monto_total: 535500
(595,000 − 59,500 in commissions). In the XML the document is a
<Liquidacion>, each line carries <TpoDocLiq>, the <Comisiones> section
details each movement, and Totales includes the <Comisiones> summary with
ValComNeto/ValComIVA.
46 — Purchase invoice (factura de compra)
Section titled “46 — Purchase invoice (factura de compra)”Issued by the buyer; the receptor is the supplier you are buying
from. The typical case is full VAT withholding (cambio de sujeto): declare
impuestos_retenciones with tipo_imp: 15 and the rate — the API computes
the withholding over the net amount and subtracts it from the total.
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": 46, "receptor": { "rut": "77112223-K", "razon_social": "AGRICOLA PROVEEDOR LIMITADA", "giro": "CULTIVO DE CEREALES", "direccion": "CAMINO RURAL KM 12", "comuna": "MELIPILLA", "ciudad": "MELIPILLA" }, "detalle": [ { "nombre": "Compra de trigo a productor primario", "cantidad": 100, "precio": 1200, "unidad": "QQM" } ], "impuestos_retenciones": [ { "tipo_imp": 15, "tasa_imp": 19 } ] }'Measured result: monto_neto: 120000, iva: 22800, and since the VAT is
fully withheld (tipo_imp: 15), monto_total: 120000 — equal to the
net. In the XML, Totales carries the <ImptoReten> block with
TipoImp 15 / TasaImp 19 / MontoImp 22800.
110 — Export invoice (factura de exportación)
Section titled “110 — Export invoice (factura de exportación)”An exempt document with foreign currency and customs data in
export_data. Measured rules:
preciois in the document’s currency (integer — e.g.12= USD 12). The total lands inmonto_exento/monto_totalin that currency; VAT is 0.tpo_monedauses the SII customs currency table names:"DOLAR USA","EURO","LIBRA EST","YEN", … An ISO code like"USD"returns400 EXPORT_MONEDA_INVALIDA.- Always include
tpo_cambio(pesos per unit of the currency). With it, the XML carries the<OtraMoneda>block with thePESO CLtotal (MntTotOtrMnda) that the real SII requires to balance the header. ⚠️ The sandbox accepts a foreign-currency export withouttpo_cambio(measured:201), but the real SII rejects that document (“Encabezado No Cuadra”). Do not omit the field just because the sandbox lets you. - Customs fields accept either label or numeric code:
clausula_venta: "CIF"→CodClauVenta 1(an unknown clause returns400 EXPORT_CLAUSULA_INVALIDA),pais_recep: "USA"→CodPaisRecep 225,puerto_embarque: "SAN ANTONIO"→CodPtoEmbarque 906. A port not in the table (e.g."MIAMI") travels as free text inIdAdicPtoDesemb. - For the foreign receptor use the generic RUT
55555555-5.
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": 110, "receptor": { "rut": "55555555-5", "razon_social": "OVERSEAS TRADING LLC", "giro": "IMPORTACION DE ALIMENTOS", "direccion": "1200 HARBOR BLVD, MIAMI FL", "ciudad": "MIAMI" }, "detalle": [ { "nombre": "Cajas de arándanos frescos 2,5 kg", "cantidad": 500, "precio": 12 } ], "export_data": { "tpo_moneda": "DOLAR USA", "tpo_cambio": 945.3, "modalidad_venta": 1, "clausula_venta": "CIF", "total_clausula": 6000, "via_transporte": 1, "puerto_embarque": "SAN ANTONIO", "puerto_desembarque": "MIAMI", "pais_recep": "USA", "pais_dest": "USA", "peso_bruto": 1350.5, "unidad_peso_bruto": 6, "tipo_bulto": "PALLET", "total_bultos": 25 } }'Measured result: monto_exento: 6000, monto_total: 6000 (USD), iva: 0.
The XML is emitted under <Exportaciones> with the
<Transporte><Aduana> block (codes already mapped) and <OtraMoneda>
TpoCambio 945.3 / MntTotOtrMnda 5671800.
111 and 112 — Export debit and credit notes
Section titled “111 and 112 — Export debit and credit notes”Like 56/61, they require referencias (omitting them returns
400 "referencia is required for document type 111"), and being export
documents they carry export_data with tpo_moneda and tpo_cambio. Emit
the 110 first and reference its real folio and date.
Export debit note (111) — an additional charge over the 110:
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": 111, "receptor": { "rut": "55555555-5", "razon_social": "OVERSEAS TRADING LLC", "giro": "IMPORTACION DE ALIMENTOS", "direccion": "1200 HARBOR BLVD, MIAMI FL", "ciudad": "MIAMI" }, "detalle": [ { "nombre": "Flete marítimo adicional no facturado", "cantidad": 1, "precio": 350 } ], "referencias": [ { "tipo_doc_ref": "110", "folio_ref": 1042, "fecha_ref": "2026-09-02", "codigo_ref": 3, "razon_ref": "Corrige monto: flete adicional" } ], "export_data": { "tpo_moneda": "DOLAR USA", "tpo_cambio": 945.3 } }'Export credit note (112) — a partial return over the 110:
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": 112, "receptor": { "rut": "55555555-5", "razon_social": "OVERSEAS TRADING LLC", "giro": "IMPORTACION DE ALIMENTOS", "direccion": "1200 HARBOR BLVD, MIAMI FL", "ciudad": "MIAMI" }, "detalle": [ { "nombre": "Devolución 40 cajas arándanos dañadas", "cantidad": 40, "precio": 12 } ], "referencias": [ { "tipo_doc_ref": "110", "folio_ref": 1042, "fecha_ref": "2026-09-02", "codigo_ref": 3, "razon_ref": "Corrige monto: devolución parcial" } ], "export_data": { "tpo_moneda": "DOLAR USA", "tpo_cambio": 945.3 } }'Measured results: 111 → monto_total: 350; 112 → monto_total: 480
(40 × 12), both aceptado, both carrying the <Referencia> to the 110’s
real folio and their <OtraMoneda> block in the XML. Replace
folio_ref: 1042 and fecha_ref with the folio and date your own 110
emission returned.
Two measured behaviors you should know:
- A 111 referencing a 112 with
codigo_ref: 3is rejected:400 REFERENCIA_CODIGO_INVALIDO(“use codigo_ref=1”) — to void an export credit note, reference it withcodigo_ref: 1. - The API verifies that the referenced export folio exists, same as
56/61: a 111/112 pointing at a nonexistent 110 folio of your company
returns
400 REFERENCIA_INVALIDA(the real SII would reject it withREF-3-750, burning the folio). Same scope as 56/61: only references to electronic types managed by Simplo are checked; documents issued outside Simplo (e.g. pre-migration) are not verifiable and pass through unchecked.
Errors specific to these types (measured)
Section titled “Errors specific to these types (measured)”code |
Status | When |
|---|---|---|
LIQUIDACION_TPO_DOC_LIQ_REQUERIDO |
400 | Type 43 with a detalle line missing tipo_doc_liq |
LIQUIDACION_COMISION_INVALIDA |
400 | Type 43 with a commission missing glosa or tipo_movim not C/O |
EXPORT_MONEDA_INVALIDA |
400 | tpo_moneda outside the customs table (e.g. "USD") |
EXPORT_CLAUSULA_INVALIDA |
400 | clausula_venta that is neither a customs Incoterm clause nor a code |
REFERENCIA_CODIGO_INVALIDO |
400 | 111 referencing a 112 with codigo_ref: 3 |
REFERENCIA_INVALIDA |
400 | 56/61/111/112 referencing a type+folio that does not exist for your company |
BAD_REQUEST (reference) |
400 | 111/112 without referencias |