Emisso Connect

Obtener un documento emitido

Devuelve el detalle completo de un documento emitido, por su id en Notta: receptor, montos, items, referencias, correo de entrega, el estado en el SII con su glosa y el historial de transiciones.

Tool IDnotta.dte.obtener
Nombre MCPnotta__dte__obtener
Conectornotta
Planoaction
Scope (permiso)notta:read
Authconnection_credentials
Versión1
Sensible
Deprecadono
ComportamientoreadOnly=true, destructive=false, idempotent=true, openWorld=true

Requiere conexión. Indica cuál en cada llamada: header X-Connect-Connection en REST, campo connectionId en el execute de MCP y en las opciones del SDK. No hay resolución implícita, ni siquiera con una sola conexión activa: la conexión es la empresa. El id sale de conexiones.estado.consultar.

Qué hace

Es el seguimiento del flujo asíncrono que abre notta.dte.emitir. Para cortar una espera usa estado.terminal y nunca la igualdad con un estado concreto: un rechazo también es final.

Entrada

CampoTipoRequeridoDescripción
idstring `^([0-9a-fA-F]8-[0-9a-fA-F]4-[1-8][0-9a-fA-F]3-[89abAB][0-9a-fA-F]3-[0-9a-fA-F]1200000000-0000-0000-0000-000000000000ffffffff-ffff-ffff-ffff-ffffffffffff)$`
JSON Schema de entrada
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Identificador del documento dentro de Notta, un UUID. Es el que reciben las demas tools de este sistema para pedir el detalle, el PDF, el XML o los eventos."
    }
  },
  "required": [
    "id"
  ]
}

Salida

CampoTipoRequeridoDescripción
idstring `^([0-9a-fA-F]8-[0-9a-fA-F]4-[1-8][0-9a-fA-F]3-[89abAB][0-9a-fA-F]3-[0-9a-fA-F]1200000000-0000-0000-0000-000000000000ffffffff-ffff-ffff-ffff-ffffffffffff)$`
foliostringFolio del documento: el correlativo que sale de los folios autorizados (CAF) y con el que el SII lo identifica. Viaja en TEXTO aunque Notta lo mande como numero, porque es un identificador y no una cantidad.
tipo_dte33 · 34 · 39 · 41 · 46 · 52 · …Codigo del tipo de documento en el catalogo del SII: 33 factura afecta, 34 factura exenta, 39 boleta, 41 boleta exenta, 46 factura de compra, 52 guia de despacho, 56 nota de debito, 61 nota de credito, 110 factura de exportacion y 112 nota de credito de exportacion.
rut_emisorstringRUT de la empresa que emite el documento, sin puntos y con guion antes del digito verificador.
rut_receptorstringRUT de quien recibe el documento, sin puntos y con guion antes del digito verificador.
razon_social_receptorstringnull
giro_receptorstringnull
direccion_receptorstringnull
comuna_receptorstringnull
monto_netoenteroMonto afecto a IVA del documento, en pesos chilenos y sin decimales.
monto_exentoenteroMonto exento del documento EN PESOS CHILENOS, siempre. 0 cuando no hay. En una exportación (110/112) NO es lo que declara la factura: el total exportado se registra aquí ya convertido, y el monto en su moneda viaja en monto_moneda con la moneda en moneda_documento. Vivía sólo en el DETALLE, así que cuadrar una exenta (34), o el exento de una 33 mixta, desde el listado costaba un GET /dtes/\{id\} por fila, que es el motivo por el que monto_neto e iva ya viajaban aquí.
ivaenteroImpuesto al valor agregado del documento, en pesos chilenos y sin decimales.
monto_totalenteroTotal EN PESOS CHILENOS, siempre. En una exportación es el equivalente al tipo de cambio del día: la cifra que declara la factura está en monto_moneda.
moneda_documentostringnoSólo exportación: glosa del catálogo del SII ("DOLAR USA").
monto_monedanúmeronoSólo exportación: el total EN esa moneda, hasta 4 decimales.
tipo_cambionúmeronullno
tipo_cambio_fuentestringnullno
sii_env"cert" · "prod"Ambiente del SII contra el que se emitio el documento: 'cert' es certificacion (pruebas, sin valor tributario) y 'prod' es produccion.
sii_status"queued" · "sending" · "awaiting_sii" · "SOK" · "CRT" · "FOK" · …Vocabulario de dtes.sii_status, generado del catálogo de estados. Cada valor con su glosa, si tiene VEREDICTO del SII (terminal) y la acción sugerida. La descripción larga de cada uno viaja en el bloque estado de esta misma respuesta: queued: en cola · terminal: no · acción: esperar sending: enviando · terminal: no · acción: esperar signed: firmado, sin subir al SII · terminal: no · acción: esperar awaiting_sii: esperando al SII · terminal: no · acción: esperar · DEPRECADO SOK: schema del envío validado · terminal: no · acción: esperar CRT: carátula del envío validada · terminal: no · acción: esperar FOK: firma del envío validada · terminal: no · acción: esperar PDR: envío en proceso · terminal: no · acción: esperar PRD: envío en proceso · terminal: no · acción: esperar -11: procesando en el SII · terminal: no · acción: esperar EPR: aceptado · terminal: sí · acción: ninguna RPR: aceptado con reparos · terminal: sí · acción: ninguna aceptado_con_reparos: aceptado con reparos · terminal: sí · acción: ninguna · DEPRECADO accepted: aceptado (importado del Respaldo del SII) · terminal: sí · acción: ninguna RFR: rechazo por firma · terminal: sí · acción: contactar_soporte RCT: rechazo por carátula · terminal: sí · acción: contactar_soporte RSC: rechazo por schema · terminal: sí · acción: contactar_soporte RCH: documento rechazado · terminal: sí · acción: reemitir stuck: atascado en SII · terminal: no · acción: reintentar_consulta sin_permiso_sii: sin permiso para consultar en el SII · terminal: no · acción: accion_en_sii Corta cualquier bucle de espera por estado.terminal, NUNCA por sii_status === "EPR": un rechazo (RFR, RCT, RSC y RCH) también es final, y ese bucle no saldría nunca. stuck y sin_permiso_sii no son terminales (el SII no llegó a juzgar el documento) pero tampoco avanzan solos: los destraba POST /dtes/\{id\}/refresh-status.
estadoobjetoLa clasificación de sii_status, publicada. sii_status NO cambia y NO se reemplaza: el código crudo sigue siendo el contrato y este bloque lo AGREGA. Sirve para decidir sin adivinar: terminal corta los bucles de espera, accion dice qué hacer, y un código que el catálogo no conoce igual cae en una casilla accionable.
estado.codestringEl mismo valor que sii_status, repetido aquí para que el bloque se explique solo. NO es un enum cerrado a propósito: el SII no publica una lista cerrada de códigos. Su instructivo termina la tabla con «Otros (no enumerados)», y Notta guarda verbatim lo que responde, así que puede traer uno que el catálogo no conozca (en producción ya aparecieron 106 y 107). Un código desconocido llega clasificado como NO terminal, en_proceso y contactar_soporte, nunca como éxito.
estado.labelstringGlosa corta en español, para mostrar. AGREGA información al código, no lo reemplaza.
estado.descripcionstringQué pasó y qué significa, en prosa. Está para que no haya que inferir la causa: un -11 es el código con que FALLA la consulta de estado mientras el SII todavía no registra el envío recién subido, no un estado del documento, y es el camino normal.
estado.terminalbooleanotrue ⇒ el SII ya dio su veredicto y volver a preguntar no puede devolver otra cosa. Es la CONDICIÓN DE CORTE de cualquier bucle de espera: cortar por sii_status === "EPR" deja el bucle vivo para siempre ante un rechazo. stuck y sin_permiso_sii son false a propósito (no hay veredicto), pero tampoco avanzan solos: mira accion.
estado.poll_activobooleanotrue ⇒ Notta tiene un poll durable consultando al SII por este documento ahora mismo; no hay nada que hacer más que volver a leer. false junto con terminal: false significa que nadie está mirando este documento: ahí accion dice qué lo destraba.
estado.categoria"en_proceso" · "aceptado" · "rechazado" · "requiere_accion" · "archivistico"Cómo terminó, o por qué no terminó: en_proceso: el SII todavía no dio veredicto; aceptado: veredicto favorable: el documento vale; rechazado: veredicto desfavorable: el SII no aceptó el documento; requiere_accion: no hay veredicto y no lo va a haber sin que alguien haga algo; archivistico: el SII ya lo aceptó en su momento; no hay envío que consultar.
estado.accion"esperar" · "reintentar_consulta" · "reemitir" · "contactar_soporte" · "accion_en_sii" · "ninguna"Qué hacer, en un enum ESTABLE pensado para que un agente ramifique sin leer la prosa, el equivalente de next_action en el contrato de errores: esperar: el poll converge solo; vuelve a leer más tarde; reintentar_consulta: POST /dtes/\{id\}/refresh-status destraba el caso; reemitir: el folio quedó quemado; emite uno nuevo corregido (nunca una Nota de Crédito: un documento rechazado no fue aceptado y no hay nada que anular); contactar_soporte: el dueño del problema es Notta; el emisor no puede corregirlo solo; accion_en_sii: el emisor tiene que hacer algo en el portal del SII; ninguna: terminal favorable: no hay nada que hacer.
sii_glosastringnull
track_idstringnull
sii_last_polledstringnull
fecha_emisionstringFecha de emision del documento, en formato AAAA-MM-DD.
created_atstringMomento en que Notta registro la fila, en formato ISO 8601.
receptor_estado"reclamado" · "aceptado" · "en_plazo" · "aceptado_tacito" · "sin_info"Qué hizo TU CLIENTE con el documento. NO es sii_status: el SII puede haberlo aceptado (EPR) y el receptor reclamarlo igual: son dos máquinas de estado distintas. Se decide en este orden, el mismo que aplica el servidor: (1) reclamado: el receptor lo reclamó ante el SII; es un HECHO registrado y es IRREVERSIBLE: no existe forma de deshacerlo por esta API ni por el portal, y la salida comercial es emitir una nota de crédito. (2) aceptado: el receptor otorgó recibo, o el SII informó que el plazo se cumplió sin reclamo; también es un hecho registrado. (3) en_plazo: todavía corre la ventana, y cierra en el instante que indica plazo_reclamo_cierra. (4) aceptado_tacito: esa ventana ya cerró sin reclamo (Ley 19.983). (5) sin_info: el SII aún no informó fecha_recepcion_sii, así que el plazo no empezó a correr y no se sabe nada del receptor; NO significa que no haya respondido. Los tres últimos se DERIVAN contra el instante del request y cambian solos con el reloj: no los caches.
receptor_reclamado_atstringnull
receptor_acuse_atstringnull
fecha_recepcion_siistringnull
plazo_reclamo_cierrastringnull
itemslista de objetoLas lineas de detalle del documento.
items[].positionenteroPosicion de esta linea dentro del documento.
items[].nombrestringQue se cobro en esta linea, tal como salio impreso.
items[].descripcionstringnull
items[].cantidadnúmeronull
items[].unidadstringnull
items[].descuento_pctnúmeronull
items[].codigoslista de objetonull
items[].codigos[].tipostringQue clase de codigo es, con el vocabulario del SII: por ejemplo 'INT1' para un codigo interno o 'EAN' para uno de barras.
items[].codigos[].valorstringEl codigo en si, tal como lo declaro quien emitio.
items[].precio_unitarionúmeronull
items[].monto_itementeroMonto de esta linea del documento, en pesos chilenos.
items[].exentobooleanotrue si la linea esta exenta de IVA y false si es afecta.
status_historylista de objetoHistoria cronológica de transiciones de estado del documento. Es el mismo rastro que sirve GET /dtes/\{id\}/events, sin la glosa: úsalo para ver por dónde pasó (p. ej. -11 → EPR) sin un request más.
status_history[].status"queued" · "sending" · "awaiting_sii" · "SOK" · "CRT" · "FOK" · …Vocabulario de dtes.sii_status, generado del catálogo de estados. Cada valor con su glosa, si tiene VEREDICTO del SII (terminal) y la acción sugerida. La descripción larga de cada uno viaja en el bloque estado de esta misma respuesta: queued: en cola · terminal: no · acción: esperar sending: enviando · terminal: no · acción: esperar signed: firmado, sin subir al SII · terminal: no · acción: esperar awaiting_sii: esperando al SII · terminal: no · acción: esperar · DEPRECADO SOK: schema del envío validado · terminal: no · acción: esperar CRT: carátula del envío validada · terminal: no · acción: esperar FOK: firma del envío validada · terminal: no · acción: esperar PDR: envío en proceso · terminal: no · acción: esperar PRD: envío en proceso · terminal: no · acción: esperar -11: procesando en el SII · terminal: no · acción: esperar EPR: aceptado · terminal: sí · acción: ninguna RPR: aceptado con reparos · terminal: sí · acción: ninguna aceptado_con_reparos: aceptado con reparos · terminal: sí · acción: ninguna · DEPRECADO accepted: aceptado (importado del Respaldo del SII) · terminal: sí · acción: ninguna RFR: rechazo por firma · terminal: sí · acción: contactar_soporte RCT: rechazo por carátula · terminal: sí · acción: contactar_soporte RSC: rechazo por schema · terminal: sí · acción: contactar_soporte RCH: documento rechazado · terminal: sí · acción: reemitir stuck: atascado en SII · terminal: no · acción: reintentar_consulta sin_permiso_sii: sin permiso para consultar en el SII · terminal: no · acción: accion_en_sii Corta cualquier bucle de espera por estado.terminal, NUNCA por sii_status === "EPR": un rechazo (RFR, RCT, RSC y RCH) también es final, y ese bucle no saldría nunca. stuck y sin_permiso_sii no son terminales (el SII no llegó a juzgar el documento) pero tampoco avanzan solos: los destraba POST /dtes/\{id\}/refresh-status.
status_history[].atstringISO-8601 del momento observado
status_history[].source"local" · "sii"Origen: transición local del pipeline o estado reportado por el SII
referenceslista de objeto\<Referencia> del documento: correctivas (NC/ND) y comerciales (orden de compra…). Un documento sin referencias trae [], nunca null.
references[].line_numentero\<NroLinRef> del XML: identidad de la línea dentro del documento. Admite saltos.
references[].tipo_doc_refvalorCódigo SII del documento referenciado (correctiva) o el string original (comercial).
references[].folio_refvalorFolio del documento referenciado. Puede venir como numero o como texto: una referencia comercial admite folios alfanumericos de verdad, como una orden de compra 'OC-4471'.
references[].fecha_refstring\<FchRef>: fecha del documento REFERENCIADO, no la de éste. Desambigua cuando el mismo (tipo, folio) existe en más de un período: el folio se reinicia por emisor y por ambiente.
references[].cod_refenteronull
references[].razon_refstringnull
correo_receptorlista de stringnull
envio_estado"pendiente" · "enviado" · "sin_correo" · "fallido" · "omitido" · "no_aplica_cert" · …Estado del CORREO al receptor. NO es el estado ante el SII (ese es sii_status). no_aplica_import = el documento entró por el Respaldo del SII: lo emitió y lo entregó el sistema anterior, así que no hay envío nuestro que hacer y POST /dtes/\{id\}/resend-delivery lo rechaza. no_aplica_cert = en certificación, la única dirección era la casilla de intercambio del padrón, que no recibe documentos de prueba. Ninguno de los dos es un fallo.
envio_message_idstringnull
enviado_atstringnull
envio_destinatarioslista de stringnull
envio_casilla_intercambiostringnull
anulado_estado1 · 2null
anulado_atstringnull
anulado_motivostringnull
linksobjetoEnlaces a los demas recursos de este documento.
links.selfstringURL del detalle de este documento en la API de Notta.
links.pdfstringURL para pedir el enlace de descarga del PDF del documento.
links.xmlstringURL para pedir el enlace de descarga del XML firmado del documento.
links.eventsstringURL del historial de eventos de este documento.
JSON Schema de salida
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Identificador del documento dentro de Notta, un UUID. Es el que reciben las demas tools de este sistema para pedir el detalle, el PDF, el XML o los eventos."
    },
    "folio": {
      "type": "string",
      "description": "Folio del documento: el correlativo que sale de los folios autorizados (CAF) y con el que el SII lo identifica. Viaja en TEXTO aunque Notta lo mande como numero, porque es un identificador y no una cantidad."
    },
    "tipo_dte": {
      "type": "number",
      "enum": [
        33,
        34,
        39,
        41,
        46,
        52,
        56,
        61,
        110,
        112
      ],
      "description": "Codigo del tipo de documento en el catalogo del SII: 33 factura afecta, 34 factura exenta, 39 boleta, 41 boleta exenta, 46 factura de compra, 52 guia de despacho, 56 nota de debito, 61 nota de credito, 110 factura de exportacion y 112 nota de credito de exportacion."
    },
    "rut_emisor": {
      "type": "string",
      "description": "RUT de la empresa que emite el documento, sin puntos y con guion antes del digito verificador."
    },
    "rut_receptor": {
      "type": "string",
      "description": "RUT de quien recibe el documento, sin puntos y con guion antes del digito verificador."
    },
    "razon_social_receptor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Nombre legal de quien recibe el documento, tal como salio impreso."
    },
    "giro_receptor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Giro o actividad economica de quien recibe el documento."
    },
    "direccion_receptor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Direccion de quien recibe el documento."
    },
    "comuna_receptor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Comuna de quien recibe el documento."
    },
    "monto_neto": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Monto afecto a IVA del documento, en pesos chilenos y sin decimales."
    },
    "monto_exento": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Monto exento del documento EN PESOS CHILENOS, siempre. 0 cuando no hay. En una exportación (110/112) NO es lo que declara la factura: el total exportado se registra aquí ya convertido, y el monto en su moneda viaja en `monto_moneda` con la moneda en `moneda_documento`. Vivía sólo en el DETALLE, así que cuadrar una exenta (34), o el exento de una 33 mixta, desde el listado costaba un `GET /dtes/{id}` por fila, que es el motivo por el que `monto_neto` e `iva` ya viajaban aquí."
    },
    "iva": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Impuesto al valor agregado del documento, en pesos chilenos y sin decimales."
    },
    "monto_total": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Total EN PESOS CHILENOS, siempre. En una exportación es el equivalente al tipo de cambio del día: la cifra que declara la factura está en `monto_moneda`."
    },
    "moneda_documento": {
      "type": "string",
      "description": "Sólo exportación: glosa del catálogo del SII (\"DOLAR USA\")."
    },
    "monto_moneda": {
      "type": "number",
      "description": "Sólo exportación: el total EN esa moneda, hasta 4 decimales."
    },
    "tipo_cambio": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "description": "Sólo exportación: con qué tipo de cambio se obtuvo `monto_total`. Lo resuelve el SERVIDOR el día de la emisión, nunca el `tpo_cambio` que venga en el body."
    },
    "tipo_cambio_fuente": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Sólo exportación: de dónde salió ese tipo de cambio, para poder auditarlo."
    },
    "sii_env": {
      "type": "string",
      "enum": [
        "cert",
        "prod"
      ],
      "description": "Ambiente del SII contra el que se emitio el documento: 'cert' es certificacion (pruebas, sin valor tributario) y 'prod' es produccion."
    },
    "sii_status": {
      "type": "string",
      "enum": [
        "queued",
        "sending",
        "awaiting_sii",
        "SOK",
        "CRT",
        "FOK",
        "PDR",
        "PRD",
        "-11",
        "EPR",
        "RPR",
        "aceptado_con_reparos",
        "RFR",
        "RCT",
        "RSC",
        "RCH",
        "stuck",
        "signed",
        "accepted",
        "sin_permiso_sii"
      ],
      "description": "Vocabulario de `dtes.sii_status`, generado del catálogo de estados. Cada valor con su glosa, si tiene VEREDICTO del SII (`terminal`) y la acción sugerida. La descripción larga de cada uno viaja en el bloque `estado` de esta misma respuesta:\n\n`queued`: en cola · terminal: no · acción: `esperar`\n`sending`: enviando · terminal: no · acción: `esperar`\n`signed`: firmado, sin subir al SII · terminal: no · acción: `esperar`\n`awaiting_sii`: esperando al SII · terminal: no · acción: `esperar` · DEPRECADO\n`SOK`: schema del envío validado · terminal: no · acción: `esperar`\n`CRT`: carátula del envío validada · terminal: no · acción: `esperar`\n`FOK`: firma del envío validada · terminal: no · acción: `esperar`\n`PDR`: envío en proceso · terminal: no · acción: `esperar`\n`PRD`: envío en proceso · terminal: no · acción: `esperar`\n`-11`: procesando en el SII · terminal: no · acción: `esperar`\n`EPR`: aceptado · terminal: sí · acción: `ninguna`\n`RPR`: aceptado con reparos · terminal: sí · acción: `ninguna`\n`aceptado_con_reparos`: aceptado con reparos · terminal: sí · acción: `ninguna` · DEPRECADO\n`accepted`: aceptado (importado del Respaldo del SII) · terminal: sí · acción: `ninguna`\n`RFR`: rechazo por firma · terminal: sí · acción: `contactar_soporte`\n`RCT`: rechazo por carátula · terminal: sí · acción: `contactar_soporte`\n`RSC`: rechazo por schema · terminal: sí · acción: `contactar_soporte`\n`RCH`: documento rechazado · terminal: sí · acción: `reemitir`\n`stuck`: atascado en SII · terminal: no · acción: `reintentar_consulta`\n`sin_permiso_sii`: sin permiso para consultar en el SII · terminal: no · acción: `accion_en_sii`\n\nCorta cualquier bucle de espera por `estado.terminal`, NUNCA por `sii_status === \"EPR\"`: un rechazo (`RFR`, `RCT`, `RSC` y `RCH`) también es final, y ese bucle no saldría nunca. `stuck` y `sin_permiso_sii` no son terminales (el SII no llegó a juzgar el documento) pero tampoco avanzan solos: los destraba `POST /dtes/{id}/refresh-status`."
    },
    "estado": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "description": "El mismo valor que `sii_status`, repetido aquí para que el bloque se explique solo. NO es un enum cerrado a propósito: el SII no publica una lista cerrada de códigos. Su instructivo termina la tabla con «Otros (no enumerados)», y Notta guarda verbatim lo que responde, así que puede traer uno que el catálogo no conozca (en producción ya aparecieron `106` y `107`). Un código desconocido llega clasificado como NO terminal, `en_proceso` y `contactar_soporte`, nunca como éxito."
        },
        "label": {
          "type": "string",
          "description": "Glosa corta en español, para mostrar. AGREGA información al código, no lo reemplaza."
        },
        "descripcion": {
          "type": "string",
          "description": "Qué pasó y qué significa, en prosa. Está para que no haya que inferir la causa: un `-11` es el código con que FALLA la consulta de estado mientras el SII todavía no registra el envío recién subido, no un estado del documento, y es el camino normal."
        },
        "terminal": {
          "type": "boolean",
          "description": "`true` ⇒ el SII ya dio su veredicto y volver a preguntar no puede devolver otra cosa. Es la CONDICIÓN DE CORTE de cualquier bucle de espera: cortar por `sii_status === \"EPR\"` deja el bucle vivo para siempre ante un rechazo. `stuck` y `sin_permiso_sii` son `false` a propósito (no hay veredicto), pero tampoco avanzan solos: mira `accion`."
        },
        "poll_activo": {
          "type": "boolean",
          "description": "`true` ⇒ Notta tiene un poll durable consultando al SII por este documento ahora mismo; no hay nada que hacer más que volver a leer. `false` junto con `terminal: false` significa que nadie está mirando este documento: ahí `accion` dice qué lo destraba."
        },
        "categoria": {
          "type": "string",
          "enum": [
            "en_proceso",
            "aceptado",
            "rechazado",
            "requiere_accion",
            "archivistico"
          ],
          "description": "Cómo terminó, o por qué no terminó: `en_proceso`: el SII todavía no dio veredicto; `aceptado`: veredicto favorable: el documento vale; `rechazado`: veredicto desfavorable: el SII no aceptó el documento; `requiere_accion`: no hay veredicto y no lo va a haber sin que alguien haga algo; `archivistico`: el SII ya lo aceptó en su momento; no hay envío que consultar."
        },
        "accion": {
          "type": "string",
          "enum": [
            "esperar",
            "reintentar_consulta",
            "reemitir",
            "contactar_soporte",
            "accion_en_sii",
            "ninguna"
          ],
          "description": "Qué hacer, en un enum ESTABLE pensado para que un agente ramifique sin leer la prosa, el equivalente de `next_action` en el contrato de errores: `esperar`: el poll converge solo; vuelve a leer más tarde; `reintentar_consulta`: `POST /dtes/{id}/refresh-status` destraba el caso; `reemitir`: el folio quedó quemado; emite uno nuevo corregido (nunca una Nota de Crédito: un documento rechazado no fue aceptado y no hay nada que anular); `contactar_soporte`: el dueño del problema es Notta; el emisor no puede corregirlo solo; `accion_en_sii`: el emisor tiene que hacer algo en el portal del SII; `ninguna`: terminal favorable: no hay nada que hacer."
        }
      },
      "required": [
        "code",
        "label",
        "descripcion",
        "terminal",
        "poll_activo",
        "categoria",
        "accion"
      ],
      "additionalProperties": false,
      "description": "La clasificación de `sii_status`, publicada. `sii_status` NO cambia y NO se reemplaza: el código crudo sigue siendo el contrato y este bloque lo AGREGA. Sirve para decidir sin adivinar: `terminal` corta los bucles de espera, `accion` dice qué hacer, y un código que el catálogo no conoce igual cae en una casilla accionable."
    },
    "sii_glosa": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Texto con el que el SII explica el estado del documento. Es la glosa cruda del SII, util para mostrarle a una persona por que un documento fue rechazado."
    },
    "track_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "TrackID del envio al SII: el identificador con el que el SII sigue ese envio. Viaja en TEXTO aunque Notta lo mande como numero, porque es un identificador y no una cantidad. Es null hasta que el documento se sube al SII."
    },
    "sii_last_polled": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Última ESCRITURA de estado (no sólo consultas al SII: también las transiciones de la emisión). null si nunca se escribió."
    },
    "fecha_emision": {
      "type": "string",
      "description": "Fecha de emision del documento, en formato AAAA-MM-DD."
    },
    "created_at": {
      "type": "string",
      "description": "Momento en que Notta registro la fila, en formato ISO 8601."
    },
    "receptor_estado": {
      "type": "string",
      "enum": [
        "reclamado",
        "aceptado",
        "en_plazo",
        "aceptado_tacito",
        "sin_info"
      ],
      "description": "Qué hizo TU CLIENTE con el documento. NO es `sii_status`: el SII puede haberlo aceptado (`EPR`) y el receptor reclamarlo igual: son dos máquinas de estado distintas. Se decide en este orden, el mismo que aplica el servidor: (1) `reclamado`: el receptor lo reclamó ante el SII; es un HECHO registrado y es IRREVERSIBLE: no existe forma de deshacerlo por esta API ni por el portal, y la salida comercial es emitir una nota de crédito. (2) `aceptado`: el receptor otorgó recibo, o el SII informó que el plazo se cumplió sin reclamo; también es un hecho registrado. (3) `en_plazo`: todavía corre la ventana, y cierra en el instante que indica `plazo_reclamo_cierra`. (4) `aceptado_tacito`: esa ventana ya cerró sin reclamo (Ley 19.983). (5) `sin_info`: el SII aún no informó `fecha_recepcion_sii`, así que el plazo no empezó a correr y no se sabe nada del receptor; NO significa que no haya respondido. Los tres últimos se DERIVAN contra el instante del request y cambian solos con el reloj: no los caches."
    },
    "receptor_reclamado_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "`YYYY-MM-DD` del reclamo, tal como lo informa el registro del SII. `null` = no hay reclamo registrado, o el reclamo llegó sólo como código y sin su fecha (mira `receptor_estado`, que es el campo que decide). Un `null` aquí nunca significa por sí solo que el cliente no haya reclamado."
    },
    "receptor_acuse_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "`YYYY-MM-DD` del acuse de recibo del receptor. `null` = no lo otorgó, o llegó sin fecha. Igual que su hermano, no es el campo con el que se decide: ése es `receptor_estado`."
    },
    "fecha_recepcion_sii": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Instante ISO-8601 (con hora) en que el SII recibió el documento y lo dejó a disposición del receptor. Es el ANCLA del plazo de reclamo: `fecha_emision` NO lo ancla, y contar desde ahí ya fechó un vencimiento cuatro días antes de tiempo. `null` = el SII todavía no lo informó (por eso el plazo no corre y `receptor_estado` vale `sin_info`); se puebla solo cuando el registro del SII lo entrega."
    },
    "plazo_reclamo_cierra": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Instante ISO-8601 EXACTO en que el receptor pierde el derecho a reclamar: `fecha_recepcion_sii` + 192 horas (Ley 19.983, Art. 3). Es una HORA, no un día de calendario: el SII cuenta fecha-hora a fecha-hora y a partir de ese instante rechaza el reclamo, así que tratar el día entero como disponible le regala al receptor horas que ya no tiene. `null` cuando no hay ancla (`fecha_recepcion_sii` en `null`): sin fecha de recepción no hay plazo que calcular, y una fecha derivada de `fecha_emision` sería sencillamente errónea. Este plazo corre contra el RECEPTOR; al emisor no le abre ninguna ventana ni le exige ninguna acción."
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "position": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Posicion de esta linea dentro del documento."
          },
          "nombre": {
            "type": "string",
            "description": "Que se cobro en esta linea, tal como salio impreso."
          },
          "descripcion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Detalle adicional de la linea, debajo del nombre."
          },
          "cantidad": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Cantidad (SII QtyItem). null si el documento NO la declara: el XSD la permite ausente (una NC con CodRef=2, o un documento importado del respaldo del SII). null NO significa cero."
          },
          "unidad": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Unidad de medida (SII UnmdItem); null si no se declaró"
          },
          "descuento_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Descuento por línea (SII DescuentoPct, %); null si no aplica"
          },
          "codigos": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "tipo": {
                      "type": "string",
                      "description": "Que clase de codigo es, con el vocabulario del SII: por ejemplo 'INT1' para un codigo interno o 'EAN' para uno de barras."
                    },
                    "valor": {
                      "type": "string",
                      "description": "El codigo en si, tal como lo declaro quien emitio."
                    }
                  },
                  "required": [
                    "tipo",
                    "valor"
                  ],
                  "additionalProperties": false,
                  "description": "Un codigo de producto de esta linea, con su tipo y su valor."
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Códigos de ítem (SII CdgItem: {tipo→TpoCodigo, valor→VlrCodigo}, hasta 5); null si no aplica"
          },
          "precio_unitario": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Precio unitario (SII PrcItem). null si el documento no lo declara; no es cero."
          },
          "monto_item": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Monto de esta linea del documento, en pesos chilenos."
          },
          "exento": {
            "type": "boolean",
            "description": "true si la linea esta exenta de IVA y false si es afecta."
          }
        },
        "required": [
          "position",
          "nombre",
          "descripcion",
          "cantidad",
          "unidad",
          "descuento_pct",
          "codigos",
          "precio_unitario",
          "monto_item",
          "exento"
        ],
        "additionalProperties": false,
        "description": "Una linea de detalle del documento."
      },
      "description": "Las lineas de detalle del documento."
    },
    "status_history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "sending",
              "awaiting_sii",
              "SOK",
              "CRT",
              "FOK",
              "PDR",
              "PRD",
              "-11",
              "EPR",
              "RPR",
              "aceptado_con_reparos",
              "RFR",
              "RCT",
              "RSC",
              "RCH",
              "stuck",
              "signed",
              "accepted",
              "sin_permiso_sii"
            ],
            "description": "Vocabulario de `dtes.sii_status`, generado del catálogo de estados. Cada valor con su glosa, si tiene VEREDICTO del SII (`terminal`) y la acción sugerida. La descripción larga de cada uno viaja en el bloque `estado` de esta misma respuesta:\n\n`queued`: en cola · terminal: no · acción: `esperar`\n`sending`: enviando · terminal: no · acción: `esperar`\n`signed`: firmado, sin subir al SII · terminal: no · acción: `esperar`\n`awaiting_sii`: esperando al SII · terminal: no · acción: `esperar` · DEPRECADO\n`SOK`: schema del envío validado · terminal: no · acción: `esperar`\n`CRT`: carátula del envío validada · terminal: no · acción: `esperar`\n`FOK`: firma del envío validada · terminal: no · acción: `esperar`\n`PDR`: envío en proceso · terminal: no · acción: `esperar`\n`PRD`: envío en proceso · terminal: no · acción: `esperar`\n`-11`: procesando en el SII · terminal: no · acción: `esperar`\n`EPR`: aceptado · terminal: sí · acción: `ninguna`\n`RPR`: aceptado con reparos · terminal: sí · acción: `ninguna`\n`aceptado_con_reparos`: aceptado con reparos · terminal: sí · acción: `ninguna` · DEPRECADO\n`accepted`: aceptado (importado del Respaldo del SII) · terminal: sí · acción: `ninguna`\n`RFR`: rechazo por firma · terminal: sí · acción: `contactar_soporte`\n`RCT`: rechazo por carátula · terminal: sí · acción: `contactar_soporte`\n`RSC`: rechazo por schema · terminal: sí · acción: `contactar_soporte`\n`RCH`: documento rechazado · terminal: sí · acción: `reemitir`\n`stuck`: atascado en SII · terminal: no · acción: `reintentar_consulta`\n`sin_permiso_sii`: sin permiso para consultar en el SII · terminal: no · acción: `accion_en_sii`\n\nCorta cualquier bucle de espera por `estado.terminal`, NUNCA por `sii_status === \"EPR\"`: un rechazo (`RFR`, `RCT`, `RSC` y `RCH`) también es final, y ese bucle no saldría nunca. `stuck` y `sin_permiso_sii` no son terminales (el SII no llegó a juzgar el documento) pero tampoco avanzan solos: los destraba `POST /dtes/{id}/refresh-status`."
          },
          "at": {
            "type": "string",
            "description": "ISO-8601 del momento observado"
          },
          "source": {
            "type": "string",
            "enum": [
              "local",
              "sii"
            ],
            "description": "Origen: transición local del pipeline o estado reportado por el SII"
          }
        },
        "required": [
          "status",
          "at",
          "source"
        ],
        "additionalProperties": false,
        "description": "Un cambio de estado del documento, con el estado al que paso y cuando."
      },
      "description": "Historia cronológica de transiciones de estado del documento. Es el mismo rastro que sirve `GET /dtes/{id}/events`, sin la glosa: úsalo para ver por dónde pasó (p. ej. `-11 → EPR`) sin un request más."
    },
    "references": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "line_num": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991,
            "description": "`<NroLinRef>` del XML: identidad de la línea dentro del documento. Admite saltos."
          },
          "tipo_doc_ref": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "description": "Código SII del documento referenciado (correctiva) o el string original (comercial)."
          },
          "folio_ref": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "description": "Folio del documento referenciado. Puede venir como numero o como texto: una referencia comercial admite folios alfanumericos de verdad, como una orden de compra 'OC-4471'."
          },
          "fecha_ref": {
            "type": "string",
            "description": "`<FchRef>`: fecha del documento REFERENCIADO, no la de éste. Desambigua cuando el mismo (tipo, folio) existe en más de un período: el folio se reinicia por emisor y por ambiente."
          },
          "cod_ref": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ],
            "description": "1 anula · 2 corrige texto · 3 corrige montos · null = referencia comercial"
          },
          "razon_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Por que se emite esta referencia sobre el documento referenciado, en texto libre."
          }
        },
        "required": [
          "line_num",
          "tipo_doc_ref",
          "folio_ref",
          "fecha_ref",
          "cod_ref",
          "razon_ref"
        ],
        "additionalProperties": false,
        "description": "Una referencia a otro documento: que documento corrige, anula o cita este."
      },
      "description": "`<Referencia>` del documento: correctivas (NC/ND) y comerciales (orden de compra…). Un documento sin referencias trae `[]`, nunca `null`."
    },
    "correo_receptor": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string",
            "description": "Una direccion de correo declarada para el receptor del documento."
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Direcciones del receptor capturadas en la emisión. null/vacío = no se envía."
    },
    "envio_estado": {
      "type": "string",
      "enum": [
        "pendiente",
        "enviado",
        "sin_correo",
        "fallido",
        "omitido",
        "no_aplica_cert",
        "no_aplica_import"
      ],
      "description": "Estado del CORREO al receptor. NO es el estado ante el SII (ese es `sii_status`). `no_aplica_import` = el documento entró por el Respaldo del SII: lo emitió y lo entregó el sistema anterior, así que no hay envío nuestro que hacer y `POST /dtes/{id}/resend-delivery` lo rechaza. `no_aplica_cert` = en certificación, la única dirección era la casilla de intercambio del padrón, que no recibe documentos de prueba. Ninguno de los dos es un fallo."
    },
    "envio_message_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Identificador del correo con el que Notta envio el documento. Sirve para rastrearlo con el proveedor de correo."
    },
    "enviado_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Momento en que el documento se envio por correo, en formato ISO 8601. Es null si todavia no se envio."
    },
    "envio_destinatarios": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string",
            "description": "Una direccion de correo a la que se envio el documento."
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Registro del `to:` efectivo del envío. Sólo lectura: no son direcciones reutilizables."
    },
    "envio_casilla_intercambio": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Cuál de los destinatarios la aportó la casilla de intercambio del padrón del SII."
    },
    "anulado_estado": {
      "anyOf": [
        {
          "type": "number",
          "enum": [
            1,
            2
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "1 = anulada antes de enviar al SII · 2 = después · null = guía viva (o no es un 52)."
    },
    "anulado_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Momento en que el documento se anulo, en formato ISO 8601. Es null si sigue vigente."
    },
    "anulado_motivo": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Por que se anulo el documento, en texto libre."
    },
    "links": {
      "type": "object",
      "properties": {
        "self": {
          "type": "string",
          "description": "URL del detalle de este documento en la API de Notta."
        },
        "pdf": {
          "type": "string",
          "description": "URL para pedir el enlace de descarga del PDF del documento."
        },
        "xml": {
          "type": "string",
          "description": "URL para pedir el enlace de descarga del XML firmado del documento."
        },
        "events": {
          "type": "string",
          "description": "URL del historial de eventos de este documento."
        }
      },
      "required": [
        "self",
        "pdf",
        "xml",
        "events"
      ],
      "additionalProperties": false,
      "description": "Enlaces a los demas recursos de este documento."
    }
  },
  "required": [
    "id",
    "folio",
    "tipo_dte",
    "rut_emisor",
    "rut_receptor",
    "razon_social_receptor",
    "giro_receptor",
    "direccion_receptor",
    "comuna_receptor",
    "monto_neto",
    "monto_exento",
    "iva",
    "monto_total",
    "sii_env",
    "sii_status",
    "estado",
    "sii_glosa",
    "track_id",
    "sii_last_polled",
    "fecha_emision",
    "created_at",
    "receptor_estado",
    "receptor_reclamado_at",
    "receptor_acuse_at",
    "fecha_recepcion_sii",
    "plazo_reclamo_cierra",
    "items",
    "status_history",
    "references",
    "correo_receptor",
    "envio_estado",
    "envio_message_id",
    "enviado_at",
    "envio_destinatarios",
    "envio_casilla_intercambio",
    "anulado_estado",
    "anulado_at",
    "anulado_motivo",
    "links"
  ],
  "additionalProperties": false
}

Errores de esta tool

CódigoHTTPReintentableQué hacer
connection_disabled403noReactívala en /connections o usa otra conexión del mismo sistema.
connection_credential_required428noCrea un enlace con conexiones.enlace.crear (modo reconectar si la conexión ya existe) y pide a la persona que entregue la credencial de nuevo. No reintentes con la credencial anterior.
connection_busy409Espera unos segundos y reintenta. Es una espera transitoria: no necesitas volver a conectar ni ingresar la credencial otra vez.
upstream_error502Reintenta más tarde. Si persiste, el problema está en el sistema externo, no en tu integración.
timeout504Reintenta. Para sincronizaciones largas usa la vía asíncrona y consulta el estado del trabajo.

Toda llamada puede devolver además los códigos transversales (validation_error, unauthorized, scope_not_granted, rate_limited, entre otros): el detalle vive en el catálogo de errores.

On this page