Docs · API DTE
Referencia de la API

Emitir DTE por API: POST /api/{rut}/emitir

El endpoint principal de la API. Envía un JSON con el emisor, receptor e ítems y YAMT genera el XML, lo firma con tu certificado, agrega el timbre PDF417 y lo envía al SII. Esta página documenta el endpoint, los tipos de documento soportados, la estructura del request y la respuesta.

POST JSON Bearer token

Emitir un DTE #

POST /api/{rut}/emitir

Un único endpoint emite cualquier tipo de documento; el campo type decide cuál. También puedes usar POST /api/emitir pasando issuer_rut en el body.

Requiere rol owner o editor. En producción, antes de emitir se valida que el emisor tenga certificado digital vigente y folios CAF disponibles para ese tipo.

Tipos de documento #

Valores válidos para type:

typeDocumentoNotas
33Factura electrónicaAfecta a IVA
34Factura exentaSin IVA
39Boleta electrónicaReceptor opcional
41Boleta exentaReceptor opcional, sin IVA
46Factura de compraRetención
52Guía de despachoAdmite shipping
56Nota de débitoRequiere refs
61Nota de créditoRequiere refs (usada para anular)

Cuerpo del request #

Todos los campos van en JSON. Los montos son enteros en pesos (CLP); YAMT calcula neto, IVA, exento y total por ti.

Campos raíz

CampoTipoDescripción
typeintreqCódigo del DTE (ver tabla de tipos).
receiverobjectreq*Datos del receptor. Opcional en boletas 39/41.
itemsarrayreqLíneas del documento (mín. 1).
refsarraycondReferencias. Obligatorio para notas 56 y 61.
shippingobjectoptDatos de transporte para guías (52).
datestringoptFecha de emisión YYYY-MM-DD. Default: hoy.
payment_methodintoptForma de pago (1 contado, 2 crédito…).
signer_rutstringoptRUT del firmante si el emisor tiene más de un certificado.
issuer_rutstringoptRUT emisor (solo si usas /api/emitir sin RUT en la URL).

receiver — receptor

CampoTipoDescripción
rutstringreq*RUT del receptor, formato 12345678-9.
namestringreq*Razón social.
activitystringoptGiro.
addressstringoptDirección.
citystringoptComuna.
statestringoptCiudad.
emailstringoptCorreo para envío del DTE.

req*rut y name son obligatorios salvo en boletas (39/41), donde el receptor puede omitirse.

items[] — líneas

CampoTipoDescripción
namestringreqNombre / glosa del ítem.
priceintreqPrecio unitario en CLP (> 0).
qtynumberoptCantidad. Default 1.
discountintoptDescuento en CLP sobre la línea.
exemptbooloptMarca la línea como exenta de IVA.

refs[] — referencias (obligatorio en NC/ND)

CampoTipoDescripción
typeintreqTipo del documento referenciado.
foliointreqFolio del documento referenciado.
datestringoptFecha del documento referenciado.
reasonstringoptMotivo / glosa de la referencia.

shipping — transporte (guías 52)

CampoTipoDescripción
dispatch_typeintTipo de despacho SII.
addressstringDirección de destino.
citystringComuna de destino.
statestringCiudad de destino.

Respuesta #

Respuesta 200 al emitir en producción. En sandbox, sii es null.

200 · JSON
{
  "ok": true,
  "env": "live",
  "document": {
    "id": 4821,
    "type": 33,
    "type_name": "Factura electrónica",
    "folio": 137,
    "date": "2026-07-25",
    "issuer": { "rut": "76123456-7", "name": "Mi Empresa SpA" },
    "receiver": { "rut": "12345678-9", "name": "Comercial Ejemplo Ltda", "email": "pagos@ejemplo.cl" },
    "amounts": { "net": 246000, "tax": 46740, "tax_rate": 19, "exempt": 0, "total": 292740 },
    "items": [ { "name": "Asesoría mensual", "qty": 1, "price": 150000, "subtotal": 150000, "exempt": false } ],
    "refs": null,
    "shipping": null
  },
  "sii": { "status": "enviado", "track_id": "9182736450", "response": "..." },
  "pdf_url": "https://app.yamt.com/api/76123456-7/pdf/33/137?tk=abc123",
  "xml_url": "https://app.yamt.com/api/76123456-7/xml/33/137?tk=abc123"
}
CampoDescripción
envsandbox o live.
document.idIdentificador único del DTE en YAMT.
document.folioFolio asignado del CAF.
document.amountsMontos calculados: net, tax, tax_rate, exempt, total.
sii.statusEstado del envío: enviado, error_envio. null en sandbox.
sii.track_idTrack ID del SII para seguimiento.
pdf_url / xml_urlURLs de descarga con token público tk (no requieren API key).
⚠︎

Si el DTE se guardó pero falló el envío al SII, la respuesta incluye warning y sii.track_id vacío. Reintenta el envío con POST /api/emision_reenviar.

← Volver al índice de la documentación