# 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.



{/* AUTO-GENERATED by @emisso/codegen. DO NOT EDIT. */}

|                     |                                                                     |
| ------------------- | ------------------------------------------------------------------- |
| **Tool ID**         | `notta.dte.previsualizar`                                           |
| **Nombre MCP**      | `notta__dte__previsualizar`                                         |
| **Conector**        | `notta`                                                             |
| **Plano**           | `action`                                                            |
| **Scope (permiso)** | `notta:write`                                                       |
| **Auth**            | `connection_credentials`                                            |
| **Versión**         | `1`                                                                 |
| **Sensible**        | sí                                                                  |
| **Deprecado**       | no                                                                  |
| **Comportamiento**  | readOnly=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`](../conexiones/estado-consultar).

## Qué hace [#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 [#entrada]

| Campo                              | Tipo                                                                                                      | Requerido | Descripción                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ---------------------------------- | --------------------------------------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `tipo_dte`                         | valor                                                                                                     | sí        | 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`                         | objeto                                                                                                    | sí        | 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.                                                                                                                                                                                                                                                                                                       |
| `receptor.rut`                     | string `^\d{1,8}-[\dkK]$`                                                                                 | sí        | 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_social`            | string                                                                                                    | sí        | Nombre legal de la empresa o persona que recibe el documento, tal como saldrá impreso.                                                                                                                                                                                                                                                                                                                                                           |
| `receptor.giro`                    | string                                                                                                    | no        | 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. |
| `receptor.direccion`               | string                                                                                                    | no        | Dirección del receptor. OBLIGATORIA para facturas (33/34) por norma del SII de junio 2026; opcional en notas (56/61).                                                                                                                                                                                                                                                                                                                            |
| `receptor.comuna`                  | string                                                                                                    | no        | Comuna del receptor. OBLIGATORIA para facturas (33/34) por norma del SII de junio 2026; opcional en notas (56/61).                                                                                                                                                                                                                                                                                                                               |
| `fecha_emision`                    | string `^\d{4}-\d{2}-\d{2}$`                                                                              | sí        | Fecha de emisión del documento, en formato AAAA-MM-DD. Es obligatoria: Notta no la deriva del día en curso.                                                                                                                                                                                                                                                                                                                                      |
| `items`                            | lista de objeto                                                                                           | sí        | 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.                                                                                                                                                                                                                                                            |
| `items[].nombre`                   | string                                                                                                    | sí        | Qué se está cobrando en esta línea, tal como saldrá impreso en el documento.                                                                                                                                                                                                                                                                                                                                                                     |
| `items[].cantidad`                 | entero                                                                                                    | sí        | 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.                                                                                                                                                                                                                                      |
| `items[].precio_unitario`          | entero                                                                                                    | sí        | 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í).                                                                                                                                                                                                                                                                                       |
| `items[].exento`                   | booleano                                                                                                  | sí        | 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.                                                                                                                                                                                                                                                             |
| `items[].monto_item`               | entero                                                                                                    | sí        | 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'.                                                                                                                                                                                        |
| `items[].descuento_pct`            | número                                                                                                    | no        | 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.                                                                                                                                                                                                                                                                                           |
| `forma_pago`                       | valor                                                                                                     | no        | 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.                                                                                                                                                                                                                                             |
| `references`                       | lista de objeto                                                                                           | no        | 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.                                                                                                                                                                                   |
| `references[].line_num`            | entero 1-40                                                                                               | sí        | 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.                                                                                                                                                                                                                                                                                                     |
| `references[].tipo_doc_ref`        | entero                                                                                                    | sí        | 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.                                                                                                                                                                                                                                                                     |
| `references[].folio_ref`           | string                                                                                                    | sí        | 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.                                                                                                                                                                                                                                                           |
| `references[].fecha_ref`           | string `^\d{4}-\d{2}-\d{2}$`                                                                              | sí        | Fecha de emisión del documento referenciado, en formato AAAA-MM-DD.                                                                                                                                                                                                                                                                                                                                                                              |
| `references[].cod_ref`             | valor                                                                                                     | sí        | 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.                                                                                                                                                                                                                                   |
| `references[].razon_ref`           | string                                                                                                    | sí        | Por qué se emite esta nota sobre el documento referenciado, en texto libre. Viaja al documento tal cual.                                                                                                                                                                                                                                                                                                                                         |
| `correo_receptor`                  | string `^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$` | no        | 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.                                                                                                                                                                                                                                                     |
| `descuento_global`                 | lista de objeto                                                                                           | no        | 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.                                                                                                                                                                                                                   |
| `descuento_global[].tipo`          | `"descuento"` · `"recargo"`                                                                               | sí        | '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_porcentaje` | booleano                                                                                                  | sí        | true lee 'valor' como un porcentaje; false lo lee como un monto fijo.                                                                                                                                                                                                                                                                                                                                                                            |
| `descuento_global[].valor`         | número                                                                                                    | sí        | Cuánto descontar o recargar, siempre positivo. Se interpreta como porcentaje o como monto fijo según 'es\_porcentaje'.                                                                                                                                                                                                                                                                                                                           |
| `descuento_global[].glosa`         | string                                                                                                    | no        | Texto que explica el descuento o recargo. Viaja al documento tal cual.                                                                                                                                                                                                                                                                                                                                                                           |
| `descuento_global[].aplica_exento` | booleano                                                                                                  | no        | 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.                                                                                                                                                                                                                                                                                      |
| `rut_emisor`                       | string `^\d{1,8}-[\dkK]$`                                                                                 | no        | 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.                                                                                                                                                                                                                                                                                                                   |
| `nd_reason`                        | `"correccion_monto"` · `"reposicion_nc_anulada"` · `"interese_moratorio_contractual"`                     | no        | 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).                                                                              |

<details>
  <summary>
    JSON Schema de entrada
  </summary>

  ```json
  {
    "$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"
    ]
  }
  ```
</details>

## Salida [#salida]

| Campo                                    | Tipo            | Requerido | Descripción                                                                                                                                                                                                                                                             |                                                                                                       |
| ---------------------------------------- | --------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| `borrador_id`                            | string          | sí        | 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`                                    | string          | sí        | 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`                               | entero          | sí        | Código SII del tipo que se emitiría, el mismo que mandaste.                                                                                                                                                                                                             |                                                                                                       |
| `fecha_emision`                          | string          | sí        | 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`                                | string          | sí        | 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`                                 | objeto          | sí        | Quién emitiría. Sale de la conexión, no del input: el emisor no se elige por llamada.                                                                                                                                                                                   |                                                                                                       |
| `emisor.rut`                             | string          | sí        | RUT de la empresa de esta conexión, en formato CUERPO-DV sin puntos.                                                                                                                                                                                                    |                                                                                                       |
| `emisor.razon_social`                    | string          | sí        | Razón social registrada de la empresa emisora.                                                                                                                                                                                                                          |                                                                                                       |
| `receptor`                               | objeto          | sí        | A quién se le emitiría, tal como quedó tras normalizar el input.                                                                                                                                                                                                        |                                                                                                       |
| `receptor.rut`                           | string          | sí        | RUT del receptor que mandaste, normalizado a CUERPO-DV.                                                                                                                                                                                                                 |                                                                                                       |
| `receptor.razon_social`                  | string          | sí        | Razón social del receptor que mandaste.                                                                                                                                                                                                                                 |                                                                                                       |
| `items`                                  | lista de objeto | sí        | Las líneas como quedarían en el documento: el eco de lo que mandaste, normalizado y con su posición asignada.                                                                                                                                                           |                                                                                                       |
| `items[].position`                       | entero          | sí        | Posición de la línea en el documento, partiendo en 1.                                                                                                                                                                                                                   |                                                                                                       |
| `items[].nombre`                         | string          | sí        | Nombre del ítem tal como se imprimiría.                                                                                                                                                                                                                                 |                                                                                                       |
| `items[].cantidad`                       | número          | sí        | Cantidad de la línea.                                                                                                                                                                                                                                                   |                                                                                                       |
| `items[].precio_unitario`                | número          | sí        | Precio unitario de la línea.                                                                                                                                                                                                                                            |                                                                                                       |
| `items[].monto_item`                     | entero          | sí        | Total de la línea EN PESOS CHILENOS, con su descuento ya aplicado.                                                                                                                                                                                                      |                                                                                                       |
| `items[].exento`                         | booleano        | sí        | true si la línea iría sin IVA.                                                                                                                                                                                                                                          |                                                                                                       |
| `totales`                                | objeto          | sí        | 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.neto`                           | entero          | sí        | Monto neto afecto EN PESOS CHILENOS. 0 si todo va exento.                                                                                                                                                                                                               |                                                                                                       |
| `totales.exento`                         | entero          | sí        | Monto exento EN PESOS CHILENOS. 0 si todo va afecto.                                                                                                                                                                                                                    |                                                                                                       |
| `totales.iva`                            | entero          | sí        | IVA EN PESOS CHILENOS, derivado del neto.                                                                                                                                                                                                                               |                                                                                                       |
| `totales.total`                          | entero          | sí        | Total del documento EN PESOS CHILENOS.                                                                                                                                                                                                                                  |                                                                                                       |
| `totales_de_lineas`                      | objeto          | sí        | 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.                                                                                                       |                                                                                                       |
| `totales_de_lineas.neto`                 | entero          | sí        | Monto neto afecto EN PESOS CHILENOS. 0 si todo va exento.                                                                                                                                                                                                               |                                                                                                       |
| `totales_de_lineas.exento`               | entero          | sí        | Monto exento EN PESOS CHILENOS. 0 si todo va afecto.                                                                                                                                                                                                                    |                                                                                                       |
| `totales_de_lineas.iva`                  | entero          | sí        | IVA EN PESOS CHILENOS, derivado del neto.                                                                                                                                                                                                                               |                                                                                                       |
| `totales_de_lineas.total`                | entero          | sí        | Total del documento EN PESOS CHILENOS.                                                                                                                                                                                                                                  |                                                                                                       |
| `advertencias`                           | lista de string | sí        | 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`                      | objeto          | sí        | 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.                                                                                                                                                    |                                                                                                       |
| `aprobacion_humana.requerida`            | booleano        | sí        | 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.                                                                             |                                                                                                       |
| `aprobacion_humana.codigo`               | string          | sí        | Código estable de la decisión. La lista puede crecer, así que ramifica por 'requerida', nunca por este valor.                                                                                                                                                           |                                                                                                       |
| `aprobacion_humana.motivo`               | string          | sí        | La misma decisión en prosa, para mostrársela a una persona. No ramifiques por este texto.                                                                                                                                                                               |                                                                                                       |
| `aprobacion_humana.monto_comparable_clp` | entero          | null      | sí                                                                                                                                                                                                                                                                      | El monto EN PESOS con que se comparó contra el umbral de la empresa. null cuando no se pudo calcular. |
| `no_verificado`                          | lista de string | sí        | 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. |                                                                                                       |

<details>
  <summary>
    JSON Schema de salida
  </summary>

  ```json
  {
    "$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
  }
  ```
</details>

## Errores de esta tool [#errores-de-esta-tool]

| Código                           | HTTP | Reintentable | Qué hacer                                                                                                                                                                                |
| -------------------------------- | ---- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `connection_disabled`            | 403  | no           | Reactívala en /connections o usa otra conexión del mismo sistema.                                                                                                                        |
| `connection_credential_required` | 428  | no           | Crea 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_busy`                | 409  | sí           | Espera unos segundos y reintenta. Es una espera transitoria: no necesitas volver a conectar ni ingresar la credencial otra vez.                                                          |
| `upstream_error`                 | 502  | sí           | Reintenta más tarde. Si persiste, el problema está en el sistema externo, no en tu integración.                                                                                          |
| `timeout`                        | 504  | sí           | Reintenta. 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](../errores).
