Skip to content
SimploSimplo Docs

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 detalle line requires tipo_doc_liq — the document-type code being settled (e.g. "33" invoices, "39" receipts). Omitting it returns 400 LIQUIDACION_TPO_DOC_LIQ_REQUERIDO.
  • comisiones requires tipo_movim "C" (commission) or "O" (other charges), with a glosa. Anything else returns 400 LIQUIDACION_COMISION_INVALIDA.

The document total nets out the commissions: monto_total = neto + IVA − (val_com_neto + val_com_exe + val_com_iva).

Ventana de terminal
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.

Ventana de terminal
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:

  • precio is in the document’s currency (integer — e.g. 12 = USD 12). The total lands in monto_exento/monto_total in that currency; VAT is 0.
  • tpo_moneda uses the SII customs currency table names: "DOLAR USA", "EURO", "LIBRA EST", "YEN", … An ISO code like "USD" returns 400 EXPORT_MONEDA_INVALIDA.
  • Always include tpo_cambio (pesos per unit of the currency). With it, the XML carries the <OtraMoneda> block with the PESO CL total (MntTotOtrMnda) that the real SII requires to balance the header. ⚠️ The sandbox accepts a foreign-currency export without tpo_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 returns 400 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 in IdAdicPtoDesemb.
  • For the foreign receptor use the generic RUT 55555555-5.
Ventana de terminal
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:

Ventana de terminal
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:

Ventana de terminal
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: 3 is rejected: 400 REFERENCIA_CODIGO_INVALIDO (“use codigo_ref=1”) — to void an export credit note, reference it with codigo_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 with REF-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.
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
  • DTE types — the 12 types and their requirements
  • Emission — endpoint, idempotency and async flow
  • States — lifecycle up to aceptado
  • Errors — error classes and retries