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 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-Connectionen REST, campoconnectionIden elexecute_writede 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 deconexiones.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
| 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). |
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
| 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í |
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. |
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ó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.
Obtener un documento emitido
Devuelve el detalle completo de un documento emitido, por su id en Notta: receptor, montos, items, referencias, correo de entrega, el estado en el SII con su glosa y el historial de transiciones.
Reenviar un documento por correo
Manda un correo REAL al receptor, con el PDF y el XML de un documento ya emitido, a la dirección que tiene registrada en Notta.