Notta Docs

Tu primer DTE

De cero a una factura aceptada en maullin, el sandbox del SII, en 10 minutos.

Notta emite DTEs chilenos (Documentos Tributarios Electrónicos) por los 3 canales programáticos (API, CLI, MCP) + el dashboard. Esta guía te lleva de cero a una Factura 33 aceptada en el sandbox del SII.

Antes de empezar

Necesitas dos cosas: una cuenta y una API key.

  1. Crea tu cuenta en app.notta.cl/signup.
  2. Crea tu API key directo en el dashboard.

1. Sube tu certificado

Tu certificado digital .p12 lo emite tu PSC (Acepta, eCertChile, etc). Con él Notta firma cada DTE en tu nombre. Súbelo en app.notta.cl/app/certificates: drag-and-drop del .p12, password, y listo. El dashboard es el camino para este paso — el endpoint POST /api/v1/certificates hoy autentica con tu sesión del dashboard, no con API key; el upload programático con Bearer está en camino.

Al subirlo, anota el id del certificado que muestra el dashboard (un UUID, p. ej. 01957a91-0b50-7000-8000-cccc00000001) — lo vas a usar como header X-Cert-Id al emitir en el paso 3.

El .p12 se cifra con envelope encryption (DEK por org, KEK en Supabase Vault) antes de guardarse, y el password nunca se persiste. El detalle está en Subir certificado.

2. Carga folios (CAF)

El CAF es el archivo XML con el rango de folios que el SII te autoriza por tipo de DTE. Lo descargas del timbraje electrónico del SII (en maullin para el entorno cert) y lo subes tal cual, sin editar, en app.notta.cl/app/caf. Sin un CAF vigente la emisión falla con caf_not_found.

Igual que el certificado, este paso va por dashboard: el endpoint POST /api/v1/caf hoy autentica con tu sesión del dashboard, no con API key — el upload programático con Bearer está en camino. Una vez subido vas a ver el rango autorizado (folio_desde/folio_hasta) y los folios restantes.

Qué es un CAF por dentro y cómo se administra: Conceptos → CAF.

3. Emite tu primera factura

Tipo 33 es la Factura Electrónica afecta a IVA, el caso más común. Elige tu canal:

curl -X POST https://app.notta.cl/api/v1/dtes \
  -H "Authorization: Bearer ntt_cert_..." \
  -H "X-Cert-Id: 01957a91-0b50-7000-8000-cccc00000001" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "tipo_dte": 33,
    "rut_emisor": "76123456-0",
    "receptor": {
      "rut": "11111111-1",
      "razon_social": "Cliente Ejemplo SpA",
      "giro": "Comercio",
      "direccion": "Av Siempre Viva 123",
      "comuna": "Santiago"
    },
    "forma_pago": 2,
    "fecha_emision": "2026-06-09",
    "items": [
      {
        "nombre": "Consultoría mayo",
        "cantidad": 5,
        "precio_unitario": 50000,
        "exento": false,
        "monto_item": 250000
      }
    ],
    "sii_env": "cert"
  }'

El X-Cert-Id es el id del certificado que anotaste en el paso 1 — sin él, el endpoint responde 400 cert_id_missing.

Salida esperada (202 Accepted):

{
  "id": "01957a91-0b50-7000-8000-000000000001",
  "status": "queued",
  "folio": 1,
  "tipo_dte": 33,
  "rut_emisor": "76123456-0",
  "rut_receptor": "11111111-1",
  "monto_neto": 250000,
  "monto_exento": 0,
  "iva": 47500,
  "monto_total": 297500,
  "sii_env": "cert",
  "sii_status": "queued",
  "fecha_emision": "2026-06-09",
  "links": {
    "self": "/api/v1/dtes/01957a91-0b50-7000-8000-000000000001",
    "pdf": "/api/v1/dtes/01957a91-0b50-7000-8000-000000000001/pdf",
    "xml": "/api/v1/dtes/01957a91-0b50-7000-8000-000000000001/xml",
    "events": "/api/v1/dtes/01957a91-0b50-7000-8000-000000000001/events"
  }
}

Disponibilidad

Los packages @notta/cli y @notta/mcp están en proceso de publicación en npm. Mientras tanto, el tab de curl funciona hoy con tu API key — el dashboard y la API cubren el flujo completo.

Criterio de éxito: consulta GET /api/v1/dtes/{id} hasta que sii_status sea EPR (procesado por el SII) y abre el PDF en links.pdf. Con eso cerraste el loop completo: certificado → folios → emisión → documento aceptado.

¿Eres un agente? Copia este prompt

Para delegar el setup completo a un agente LLM, pásale esto tal cual:

Configura Notta para mí:
1. Lee https://notta.cl/llms.txt para entender la API.
2. Pídeme una API key ntt_cert_ de https://app.notta.cl/app/api-keys#crear.
3. Pídeme que confirme en el dashboard que hay un certificado .p12 y un CAF
   tipo 33 cargados (https://app.notta.cl/app/certificates y
   https://app.notta.cl/app/caf), y que te pase el id del certificado — lo vas
   a mandar como header X-Cert-Id. (No intentes GET /certificates ni /caf con
   la API key: hoy esos endpoints autentican con sesión del dashboard.)
4. Emite una Factura 33 de prueba con POST https://app.notta.cl/api/v1/dtes
   (sii_env "cert", headers Idempotency-Key único por intento y X-Cert-Id con
   el id del certificado).
5. Consulta GET https://app.notta.cl/api/v1/dtes/{id} hasta que sii_status sea
   "EPR" y entrégame la URL del PDF (links.pdf).

¿Prefieres CLI?

Cuando @notta/cli esté publicado en npm, lo instalas y autenticas así:

npm install -g @notta/cli
notta auth login
# Paste your API key: ntt_cert_...

El key queda guardado en ~/.config/notta/credentials (chmod 600). Los comandos completos están en CLI Reference.

Próximos pasos

  • Emitir Factura 33 — la guía completa del tipo 33: campos, montos, referencias comerciales y errores típicos.
  • Producción — postulación, certificación SII y el switch a palena para emitir con valor tributario.
  • Conceptos — DTE, CAF, certificado y entornos del SII en una página.
  • Errores — catálogo completo con next_action por código.
  • Agentes — llms.txt, manifiesto MCP y patrones para integrar tu agente.

Última actualización

En esta página