Emisso Connect

Previsualizar un documento antes de emitirlo

Ensaya una emisión sin emitir: NO firma, NO pide folio, NO llega al SII, NO le manda correo a nadie y NO consume cuota.

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

Requiere conexión. Indica cuál en cada llamada: header X-Connect-Connection en REST, campo connectionId en el execute_write 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

Toma EXACTAMENTE el mismo input que notta.dte.emitir y lo valida con el mismo esquema, así que un resultado OK significa que la emisión no va a fallar por el payload. Devuelve tres cosas que sólo se saben así: 'totales', calculados por el mismo código que firma el documento (cítalos, no los recalcules); 'aprobacion_humana.requerida', que dice si emitir AHORA dejaría el documento esperando a una persona por el umbral de la empresa en vez de emitirlo; y 'url', el borrador en Notta con el PDF como se va a imprimir, para que la persona apruebe el documento y no tu resumen (pide sesión de Notta: NO se lo mandes al receptor). Úsala antes de emitir cuando el monto importe o cuando el usuario vaya a revisar. Lo que NO comprueba viene listado en 'no_verificado', y lo más caro de esa lista es si el SII le autorizó ese tipo de documento a esta empresa en producción: eso sólo se sabe intentando emitir. Cada llamada deja un borrador NUEVO en Notta y hay un tope por minuto, así que no la repitas sin cambiar nada.

Entrada

CampoTipoRequeridoDescripción
tipo_dtevalorQué documento emitir: 33 factura afecta (con IVA), 34 factura exenta, 56 nota de débito, 61 nota de crédito. Una factura (33 o 34) exige forma_pago y el giro, la dirección y la comuna del receptor. Una nota (56 o 61) exige references[] al documento original y rut_emisor, y no lleva forma_pago ni descuento_global.
receptorobjetoA quién se le emite el documento. Para una factura (33 o 34) el SII exige además giro, direccion y comuna; una nota (56 o 61) no los pide.
receptor.rutstring ^\d{1,8}-[\dkK]$RUT de quien recibe el documento, sin puntos y con guion antes del dígito verificador. Si el dígito verificador no calza, la emisión se rechaza en validación y no se gasta folio.
receptor.razon_socialstringNombre legal de la empresa o persona que recibe el documento, tal como saldrá impreso.
receptor.girostringnoGiro o actividad económica, MÁXIMO 40 caracteres: el SII no acepta más, así que un giro largo copiado de otra factura hay que abreviarlo antes de mandarlo ("Asesoría y consultoría informática", no la redacción completa del registro). OBLIGATORIO para facturas (tipo_dte 33 y 34) por norma del SII de junio 2026; opcional en notas (56/61). Pídeselo al usuario antes de emitir una factura: sin él la llamada se rechaza en validación.
receptor.direccionstringnoDirección del receptor. OBLIGATORIA para facturas (33/34) por norma del SII de junio 2026; opcional en notas (56/61).
receptor.comunastringnoComuna del receptor. OBLIGATORIA para facturas (33/34) por norma del SII de junio 2026; opcional en notas (56/61).
fecha_emisionstring ^\d{4}-\d{2}-\d{2}$Fecha de emisión del documento, en formato AAAA-MM-DD. Es obligatoria: Notta no la deriva del día en curso.
itemslista de objetoLas líneas del documento, entre 1 y 60 (el máximo que admite el SII). Los totales del documento (neto, exento, IVA y total) los calcula Notta a partir de estas líneas: no se mandan.
items[].nombrestringQué se está cobrando en esta línea, tal como saldrá impreso en el documento.
items[].cantidadenteroCuántas unidades lleva la línea. Este conector la pide entera y tiene que ser MAYOR QUE CERO, incluso en una nota de crédito por devolución: lo que va en negativo ahí es 'monto_item', nunca la cantidad.
items[].precio_unitarioenteroPrecio de UNA unidad, sin IVA: el impuesto se calcula después, sobre el total del documento. Este conector lo pide entero y no admite negativos (cero sí).
items[].exentobooleanotrue marca la línea como exenta de IVA; false, como afecta. Una factura exenta (tipo_dte 34) no admite líneas afectas: o todas van con exento en true, o corresponde emitir una 33.
items[].monto_itementeroTotal de la línea, sin IVA: cantidad por precio_unitario, ya con el descuento_pct de la línea aplicado. Lo declara quien emite y el SII valida esa relación línea por línea; si no cuadra, la respuesta es un error de validación 'amount_arithmetic'.
items[].descuento_pctnúmeronoDescuento de ESTA línea, en porcentaje entre 0 y 100. Si lo usas, monto_item tiene que venir ya descontado. Omitirlo equivale a un descuento de cero.
forma_pagovalorno1=Contado, 2=Crédito, 3=Sin costo. OBLIGATORIO para facturas (tipo_dte 33 y 34); una nota (56/61) no lo lleva. Pregúntaselo al usuario antes de emitir: sin él la llamada se rechaza en validación.
referenceslista de objetonoLos documentos que esta nota corrige o anula. Una nota (56 o 61) exige al menos uno; una factura (33 o 34) no admite ninguno en esta versión, porque sus referencias son de otra clase (orden de compra, contrato, HES) y este conector todavía no las expone.
references[].line_numentero 1-40Número de línea de esta referencia dentro del documento, empezando en 1. No se deriva solo: lo declara quien emite, para controlar el orden.
references[].tipo_doc_refenteroTipo del documento referenciado, con el código del catálogo del SII (33 factura afecta, 34 factura exenta). Una nota de crédito (61) solo puede referenciar una 33 o una 34.
references[].folio_refstringFolio del documento referenciado, o sea el identificador del documento que esta nota corrige o anula. Va EN TEXTO (ej. "4712"): pásalo tal como viene en la fila de sii.rcv.consultar.
references[].fecha_refstring ^\d{4}-\d{2}-\d{2}$Fecha de emisión del documento referenciado, en formato AAAA-MM-DD.
references[].cod_refvalorQué le hace esta nota al documento referenciado: 1 lo anula, 2 corrige su texto (y entonces la nota no puede mover montos) y 3 corrige sus montos. En una nota de débito (56) tiene que calzar con nd_reason.
references[].razon_refstringPor qué se emite esta nota sobre el documento referenciado, en texto libre. Viaja al documento tal cual.
correo_receptorstring ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$noCorreo del receptor. Si lo indicas, Notta le envía el PDF y el XML cuando el SII acepta el documento; si no, el documento se emite igual y se puede entregar después con notta.dte.reenviar.
descuento_globallista de objetonoDescuentos o recargos que aplican al TOTAL del documento, no a una línea. Solo en facturas (33 y 34): una nota (56 o 61) que los lleve se rechaza en validación, porque la ruta de notas de Notta los descartaría en silencio.
descuento_global[].tipo"descuento" · "recargo"'descuento' resta del total del documento y 'recargo' se lo suma. El signo lo pone este campo, así que 'valor' va siempre positivo.
descuento_global[].es_porcentajebooleanotrue lee 'valor' como un porcentaje; false lo lee como un monto fijo.
descuento_global[].valornúmeroCuánto descontar o recargar, siempre positivo. Se interpreta como porcentaje o como monto fijo según 'es_porcentaje'.
descuento_global[].glosastringnoTexto que explica el descuento o recargo. Viaja al documento tal cual.
descuento_global[].aplica_exentobooleanonotrue aplica el ajuste sobre la base EXENTA. Omitirlo o ponerlo en false lo aplica sobre la base AFECTA, o sea mueve el neto antes de que se calcule el IVA.
rut_emisorstring ^\d{1,8}-[\dkK]$noPara notas de débito/crédito (56/61), el RUT emisor de la empresa: el de esta conexión. Las facturas (33/34) lo derivan solas.
nd_reason"correccion_monto" · "reposicion_nc_anulada" · "interese_moratorio_contractual"noSolo para nota de débito (56); el motivo cruza con el cod_ref de la referencia. correccion_monto: sube el monto de una factura ya emitida (cod_ref 3). reposicion_nc_anulada: repone una factura cuya nota de crédito se anuló (cod_ref 2, o 1 para anular la NC). interese_moratorio_contractual: intereses por mora PACTADOS en el contrato (cod_ref 3).
JSON Schema de entrada
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "tipo_dte": {
      "anyOf": [
        {
          "type": "number",
          "const": 33
        },
        {
          "type": "number",
          "const": 34
        },
        {
          "type": "number",
          "const": 56
        },
        {
          "type": "number",
          "const": 61
        }
      ],
      "description": "Qué documento emitir: 33 factura afecta (con IVA), 34 factura exenta, 56 nota de débito, 61 nota de crédito. Una factura (33 o 34) exige forma_pago y el giro, la dirección y la comuna del receptor. Una nota (56 o 61) exige references[] al documento original y rut_emisor, y no lleva forma_pago ni descuento_global."
    },
    "receptor": {
      "type": "object",
      "properties": {
        "rut": {
          "type": "string",
          "pattern": "^\\d{1,8}-[\\dkK]$",
          "description": "RUT de quien recibe el documento, sin puntos y con guion antes del dígito verificador. Si el dígito verificador no calza, la emisión se rechaza en validación y no se gasta folio."
        },
        "razon_social": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "description": "Nombre legal de la empresa o persona que recibe el documento, tal como saldrá impreso."
        },
        "giro": {
          "description": "Giro o actividad económica, MÁXIMO 40 caracteres: el SII no acepta más, así que un giro largo copiado de otra factura hay que abreviarlo antes de mandarlo (\"Asesoría y consultoría informática\", no la redacción completa del registro). OBLIGATORIO para facturas (tipo_dte 33 y 34) por norma del SII de junio 2026; opcional en notas (56/61). Pídeselo al usuario antes de emitir una factura: sin él la llamada se rechaza en validación.",
          "type": "string",
          "maxLength": 40
        },
        "direccion": {
          "description": "Dirección del receptor. OBLIGATORIA para facturas (33/34) por norma del SII de junio 2026; opcional en notas (56/61).",
          "type": "string",
          "maxLength": 70
        },
        "comuna": {
          "description": "Comuna del receptor. OBLIGATORIA para facturas (33/34) por norma del SII de junio 2026; opcional en notas (56/61).",
          "type": "string",
          "maxLength": 20
        }
      },
      "required": [
        "rut",
        "razon_social"
      ],
      "description": "A quién se le emite el documento. Para una factura (33 o 34) el SII exige además giro, direccion y comuna; una nota (56 o 61) no los pide."
    },
    "fecha_emision": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Fecha de emisión del documento, en formato AAAA-MM-DD. Es obligatoria: Notta no la deriva del día en curso."
    },
    "items": {
      "minItems": 1,
      "maxItems": 60,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "nombre": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80,
            "description": "Qué se está cobrando en esta línea, tal como saldrá impreso en el documento."
          },
          "cantidad": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Cuántas unidades lleva la línea. Este conector la pide entera y tiene que ser MAYOR QUE CERO, incluso en una nota de crédito por devolución: lo que va en negativo ahí es 'monto_item', nunca la cantidad."
          },
          "precio_unitario": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Precio de UNA unidad, sin IVA: el impuesto se calcula después, sobre el total del documento. Este conector lo pide entero y no admite negativos (cero sí)."
          },
          "exento": {
            "type": "boolean",
            "description": "true marca la línea como exenta de IVA; false, como afecta. Una factura exenta (tipo_dte 34) no admite líneas afectas: o todas van con exento en true, o corresponde emitir una 33."
          },
          "monto_item": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Total de la línea, sin IVA: cantidad por precio_unitario, ya con el descuento_pct de la línea aplicado. Lo declara quien emite y el SII valida esa relación línea por línea; si no cuadra, la respuesta es un error de validación 'amount_arithmetic'."
          },
          "descuento_pct": {
            "description": "Descuento de ESTA línea, en porcentaje entre 0 y 100. Si lo usas, monto_item tiene que venir ya descontado. Omitirlo equivale a un descuento de cero.",
            "type": "number",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "nombre",
          "cantidad",
          "precio_unitario",
          "exento",
          "monto_item"
        ]
      },
      "description": "Las líneas del documento, entre 1 y 60 (el máximo que admite el SII). Los totales del documento (neto, exento, IVA y total) los calcula Notta a partir de estas líneas: no se mandan."
    },
    "forma_pago": {
      "description": "1=Contado, 2=Crédito, 3=Sin costo. OBLIGATORIO para facturas (tipo_dte 33 y 34); una nota (56/61) no lo lleva. Pregúntaselo al usuario antes de emitir: sin él la llamada se rechaza en validación.",
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        },
        {
          "type": "number",
          "const": 3
        }
      ]
    },
    "references": {
      "description": "Los documentos que esta nota corrige o anula. Una nota (56 o 61) exige al menos uno; una factura (33 o 34) no admite ninguno en esta versión, porque sus referencias son de otra clase (orden de compra, contrato, HES) y este conector todavía no las expone.",
      "maxItems": 40,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "line_num": {
            "type": "integer",
            "minimum": 1,
            "maximum": 40,
            "description": "Número de línea de esta referencia dentro del documento, empezando en 1. No se deriva solo: lo declara quien emite, para controlar el orden."
          },
          "tipo_doc_ref": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Tipo del documento referenciado, con el código del catálogo del SII (33 factura afecta, 34 factura exenta). Una nota de crédito (61) solo puede referenciar una 33 o una 34."
          },
          "folio_ref": {
            "description": "Folio del documento referenciado, o sea el identificador del documento que esta nota corrige o anula. Va EN TEXTO (ej. \"4712\"): pásalo tal como viene en la fila de sii.rcv.consultar.",
            "type": "string"
          },
          "fecha_ref": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "Fecha de emisión del documento referenciado, en formato AAAA-MM-DD."
          },
          "cod_ref": {
            "anyOf": [
              {
                "type": "number",
                "const": 1
              },
              {
                "type": "number",
                "const": 2
              },
              {
                "type": "number",
                "const": 3
              }
            ],
            "description": "Qué le hace esta nota al documento referenciado: 1 lo anula, 2 corrige su texto (y entonces la nota no puede mover montos) y 3 corrige sus montos. En una nota de débito (56) tiene que calzar con nd_reason."
          },
          "razon_ref": {
            "type": "string",
            "minLength": 1,
            "description": "Por qué se emite esta nota sobre el documento referenciado, en texto libre. Viaja al documento tal cual."
          }
        },
        "required": [
          "line_num",
          "tipo_doc_ref",
          "folio_ref",
          "fecha_ref",
          "cod_ref",
          "razon_ref"
        ]
      }
    },
    "correo_receptor": {
      "description": "Correo del receptor. Si lo indicas, Notta le envía el PDF y el XML cuando el SII acepta el documento; si no, el documento se emite igual y se puede entregar después con notta.dte.reenviar.",
      "type": "string",
      "maxLength": 200,
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "descuento_global": {
      "description": "Descuentos o recargos que aplican al TOTAL del documento, no a una línea. Solo en facturas (33 y 34): una nota (56 o 61) que los lleve se rechaza en validación, porque la ruta de notas de Notta los descartaría en silencio.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "tipo": {
            "type": "string",
            "enum": [
              "descuento",
              "recargo"
            ],
            "description": "'descuento' resta del total del documento y 'recargo' se lo suma. El signo lo pone este campo, así que 'valor' va siempre positivo."
          },
          "es_porcentaje": {
            "type": "boolean",
            "description": "true lee 'valor' como un porcentaje; false lo lee como un monto fijo."
          },
          "valor": {
            "type": "number",
            "exclusiveMinimum": 0,
            "description": "Cuánto descontar o recargar, siempre positivo. Se interpreta como porcentaje o como monto fijo según 'es_porcentaje'."
          },
          "glosa": {
            "description": "Texto que explica el descuento o recargo. Viaja al documento tal cual.",
            "type": "string"
          },
          "aplica_exento": {
            "description": "true aplica el ajuste sobre la base EXENTA. Omitirlo o ponerlo en false lo aplica sobre la base AFECTA, o sea mueve el neto antes de que se calcule el IVA.",
            "type": "boolean"
          }
        },
        "required": [
          "tipo",
          "es_porcentaje",
          "valor"
        ]
      }
    },
    "rut_emisor": {
      "description": "Para notas de débito/crédito (56/61), el RUT emisor de la empresa: el de esta conexión. Las facturas (33/34) lo derivan solas.",
      "type": "string",
      "pattern": "^\\d{1,8}-[\\dkK]$"
    },
    "nd_reason": {
      "description": "Solo para nota de débito (56); el motivo cruza con el cod_ref de la referencia. correccion_monto: sube el monto de una factura ya emitida (cod_ref 3). reposicion_nc_anulada: repone una factura cuya nota de crédito se anuló (cod_ref 2, o 1 para anular la NC). interese_moratorio_contractual: intereses por mora PACTADOS en el contrato (cod_ref 3).",
      "type": "string",
      "enum": [
        "correccion_monto",
        "reposicion_nc_anulada",
        "interese_moratorio_contractual"
      ]
    }
  },
  "required": [
    "tipo_dte",
    "receptor",
    "fecha_emision",
    "items"
  ]
}

Salida

CampoTipoRequeridoDescripción
borrador_idstringUUID del borrador que quedó guardado en Notta. NO es un documento: no tiene folio, no llegó al SII y no tiene valor tributario.
urlstringEnlace al borrador en Notta, con el PDF tal como se imprimiría y el botón para emitirlo. Pide sesión de Notta, así que es para quien opera la cuenta y NUNCA para el receptor del documento.
tipo_dteenteroCódigo SII del tipo que se emitiría, el mismo que mandaste.
fecha_emisionstringFecha calendario chilena YYYY-MM-DD con que saldría el documento. Si no la declaraste, es HOY en Chile resuelto por el servidor de Notta.
sii_envstringAmbiente en el que se emitiría, y lo decide la credencial de la conexión: 'cert' (prueba, sin valor tributario) o 'prod' (real).
emisorobjetoQuién emitiría. Sale de la conexión, no del input: el emisor no se elige por llamada.
emisor.rutstringRUT de la empresa de esta conexión, en formato CUERPO-DV sin puntos.
emisor.razon_socialstringRazón social registrada de la empresa emisora.
receptorobjetoA quién se le emitiría, tal como quedó tras normalizar el input.
receptor.rutstringRUT del receptor que mandaste, normalizado a CUERPO-DV.
receptor.razon_socialstringRazón social del receptor que mandaste.
itemslista de objetoLas líneas como quedarían en el documento: el eco de lo que mandaste, normalizado y con su posición asignada.
items[].positionenteroPosición de la línea en el documento, partiendo en 1.
items[].nombrestringNombre del ítem tal como se imprimiría.
items[].cantidadnúmeroCantidad de la línea.
items[].precio_unitarionúmeroPrecio unitario de la línea.
items[].monto_itementeroTotal de la línea EN PESOS CHILENOS, con su descuento ya aplicado.
items[].exentobooleanotrue si la línea iría sin IVA.
totalesobjetoLos montos que se emitirían, calculados por el MISMO código que firma el documento. Cítalos tal cual al usuario: no los recalcules.
totales.netoenteroMonto neto afecto EN PESOS CHILENOS. 0 si todo va exento.
totales.exentoenteroMonto exento EN PESOS CHILENOS. 0 si todo va afecto.
totales.ivaenteroIVA EN PESOS CHILENOS, derivado del neto.
totales.totalenteroTotal del documento EN PESOS CHILENOS.
totales_de_lineasobjetoLos mismos cuatro montos derivados SÓLO de los ítems, ignorando los que traiga el input. Difieren de totales cuando declaraste alguno y no cuadra con las líneas.
totales_de_lineas.netoenteroMonto neto afecto EN PESOS CHILENOS. 0 si todo va exento.
totales_de_lineas.exentoenteroMonto exento EN PESOS CHILENOS. 0 si todo va afecto.
totales_de_lineas.ivaenteroIVA EN PESOS CHILENOS, derivado del neto.
totales_de_lineas.totalenteroTotal del documento EN PESOS CHILENOS.
advertenciaslista de stringDiferencias entre lo que declaraste y lo que se deriva de los ítems. Notta NO recalcula iva ni monto_total cuando vienen en el input, así que un valor equivocado se emitiría tal cual: revisa esto antes de emitir.
aprobacion_humanaobjetoQué haría el gate de aprobación con este documento si lo emitieras ahora, con el MISMO cálculo que corre la emisión.
aprobacion_humana.requeridabooleanotrue = emitir esto AHORA respondería con una aprobación pendiente en vez de un documento, sin folio y sin llegar al SII. Dícelo ANTES de emitir: es la única forma de saberlo sin intentar.
aprobacion_humana.codigostringCódigo estable de la decisión. La lista puede crecer, así que ramifica por 'requerida', nunca por este valor.
aprobacion_humana.motivostringLa misma decisión en prosa, para mostrársela a una persona. No ramifiques por este texto.
aprobacion_humana.monto_comparable_clpenteronull
no_verificadolista de stringLo que este ensayo NO comprobó porque depende del estado del servidor (folios del CAF, certificado vigente, y si el SII le autorizó ESE tipo de documento a esta empresa en producción). Un 200 afirma que el PAYLOAD es emitible, NO que la emisión vaya a salir bien.
JSON Schema de salida
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "borrador_id": {
      "type": "string",
      "description": "UUID del borrador que quedó guardado en Notta. NO es un documento: no tiene folio, no llegó al SII y no tiene valor tributario."
    },
    "url": {
      "type": "string",
      "description": "Enlace al borrador en Notta, con el PDF tal como se imprimiría y el botón para emitirlo. Pide sesión de Notta, así que es para quien opera la cuenta y NUNCA para el receptor del documento."
    },
    "tipo_dte": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Código SII del tipo que se emitiría, el mismo que mandaste."
    },
    "fecha_emision": {
      "type": "string",
      "description": "Fecha calendario chilena YYYY-MM-DD con que saldría el documento. Si no la declaraste, es HOY en Chile resuelto por el servidor de Notta."
    },
    "sii_env": {
      "type": "string",
      "description": "Ambiente en el que se emitiría, y lo decide la credencial de la conexión: 'cert' (prueba, sin valor tributario) o 'prod' (real)."
    },
    "emisor": {
      "type": "object",
      "properties": {
        "rut": {
          "type": "string",
          "description": "RUT de la empresa de esta conexión, en formato CUERPO-DV sin puntos."
        },
        "razon_social": {
          "type": "string",
          "description": "Razón social registrada de la empresa emisora."
        }
      },
      "required": [
        "rut",
        "razon_social"
      ],
      "additionalProperties": false,
      "description": "Quién emitiría. Sale de la conexión, no del input: el emisor no se elige por llamada."
    },
    "receptor": {
      "type": "object",
      "properties": {
        "rut": {
          "type": "string",
          "description": "RUT del receptor que mandaste, normalizado a CUERPO-DV."
        },
        "razon_social": {
          "type": "string",
          "description": "Razón social del receptor que mandaste."
        }
      },
      "required": [
        "rut",
        "razon_social"
      ],
      "additionalProperties": false,
      "description": "A quién se le emitiría, tal como quedó tras normalizar el input."
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "position": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Posición de la línea en el documento, partiendo en 1."
          },
          "nombre": {
            "type": "string",
            "description": "Nombre del ítem tal como se imprimiría."
          },
          "cantidad": {
            "type": "number",
            "description": "Cantidad de la línea."
          },
          "precio_unitario": {
            "type": "number",
            "description": "Precio unitario de la línea."
          },
          "monto_item": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Total de la línea EN PESOS CHILENOS, con su descuento ya aplicado."
          },
          "exento": {
            "type": "boolean",
            "description": "true si la línea iría sin IVA."
          }
        },
        "required": [
          "position",
          "nombre",
          "cantidad",
          "precio_unitario",
          "monto_item",
          "exento"
        ],
        "additionalProperties": false
      },
      "description": "Las líneas como quedarían en el documento: el eco de lo que mandaste, normalizado y con su posición asignada."
    },
    "totales": {
      "type": "object",
      "properties": {
        "neto": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Monto neto afecto EN PESOS CHILENOS. 0 si todo va exento."
        },
        "exento": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Monto exento EN PESOS CHILENOS. 0 si todo va afecto."
        },
        "iva": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "IVA EN PESOS CHILENOS, derivado del neto."
        },
        "total": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Total del documento EN PESOS CHILENOS."
        }
      },
      "required": [
        "neto",
        "exento",
        "iva",
        "total"
      ],
      "additionalProperties": false,
      "description": "Los montos que se emitirían, calculados por el MISMO código que firma el documento. Cítalos tal cual al usuario: no los recalcules."
    },
    "totales_de_lineas": {
      "type": "object",
      "properties": {
        "neto": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Monto neto afecto EN PESOS CHILENOS. 0 si todo va exento."
        },
        "exento": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Monto exento EN PESOS CHILENOS. 0 si todo va afecto."
        },
        "iva": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "IVA EN PESOS CHILENOS, derivado del neto."
        },
        "total": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Total del documento EN PESOS CHILENOS."
        }
      },
      "required": [
        "neto",
        "exento",
        "iva",
        "total"
      ],
      "additionalProperties": false,
      "description": "Los mismos cuatro montos derivados SÓLO de los ítems, ignorando los que traiga el input. Difieren de totales cuando declaraste alguno y no cuadra con las líneas."
    },
    "advertencias": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Diferencias entre lo que declaraste y lo que se deriva de los ítems. Notta NO recalcula iva ni monto_total cuando vienen en el input, así que un valor equivocado se emitiría tal cual: revisa esto antes de emitir."
    },
    "aprobacion_humana": {
      "type": "object",
      "properties": {
        "requerida": {
          "type": "boolean",
          "description": "true = emitir esto AHORA respondería con una aprobación pendiente en vez de un documento, sin folio y sin llegar al SII. Dícelo ANTES de emitir: es la única forma de saberlo sin intentar."
        },
        "codigo": {
          "type": "string",
          "description": "Código estable de la decisión. La lista puede crecer, así que ramifica por 'requerida', nunca por este valor."
        },
        "motivo": {
          "type": "string",
          "description": "La misma decisión en prosa, para mostrársela a una persona. No ramifiques por este texto."
        },
        "monto_comparable_clp": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ],
          "description": "El monto EN PESOS con que se comparó contra el umbral de la empresa. null cuando no se pudo calcular."
        }
      },
      "required": [
        "requerida",
        "codigo",
        "motivo",
        "monto_comparable_clp"
      ],
      "additionalProperties": false,
      "description": "Qué haría el gate de aprobación con este documento si lo emitieras ahora, con el MISMO cálculo que corre la emisión."
    },
    "no_verificado": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Lo que este ensayo NO comprobó porque depende del estado del servidor (folios del CAF, certificado vigente, y si el SII le autorizó ESE tipo de documento a esta empresa en producción). Un 200 afirma que el PAYLOAD es emitible, NO que la emisión vaya a salir bien."
    }
  },
  "required": [
    "borrador_id",
    "url",
    "tipo_dte",
    "fecha_emision",
    "sii_env",
    "emisor",
    "receptor",
    "items",
    "totales",
    "totales_de_lineas",
    "advertencias",
    "aprobacion_humana",
    "no_verificado"
  ],
  "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