Skip to main content
POST
Envío de documentos en lote
Crea hasta 200 documentos tributarios electrónicos en una sola llamada. La respuesta con el PDF y los detalles completos se entrega a través del webhook configurado.

Headers

Idempotency-Key (Opcional)

  • Tipo: String
  • Descripción: Header opcional que previene la creación de lotes duplicados
  • Restricciones: Máximo 256 caracteres, expira después de 24 horas
  • Ejemplo: "batch_2024_01_15_001"

X-Use-Defaults (Opcional)

⚠️ IMPORTANTE: Se recomienda encarecidamente usar el header X-Use-Defaults: true en todas tus solicitudes de emisión masiva de documentos. Este header simplifica significativamente la creación de documentos al hacer opcionales muchos campos y completar automáticamente los datos faltantes según tu configuración en Tupana.
  • Tipo: String
  • Valores permitidos: "true", "false"
  • Por defecto: "false"
  • Descripción: Si se establece como "true", el sistema usará valores por defecto para campos no proporcionados, reduciendo la complejidad y cantidad de datos que necesitas enviar

Campos que se vuelven opcionales o se completan automáticamente

A nivel del documento:
  • date_issued: Si no se proporciona, se usa la fecha actual (en zona horaria de Chile)
  • folio: Si no se proporciona, se genera automáticamente por el sistema
  • dte_type.code: Si no se proporciona, se usa "33" (Factura Electrónica) por defecto
  • header.payment_method: Si no se proporciona, se establece como "2" (crédito)
En document_issuer (solo con RUT): Con X-Use-Defaults: true, solo necesitas proporcionar el rut del emisor. El sistema completa automáticamente todos los demás campos desde tu configuración:
  • business_name: Razón social del emisor
  • business_activity: Giro o actividad económica
  • address: Dirección del emisor
  • district: Comuna
  • city: Ciudad
  • email: Email de contacto
  • phone_number: Teléfono
  • activity_code: Código de actividad económica
En document_receiver (solo con RUT): Con X-Use-Defaults: true, solo necesitas proporcionar el rut del receptor. El sistema completa automáticamente todos los demás campos desde la configuración del cliente o datos disponibles:
  • business_name: Razón social del receptor ✅ Opcional
  • contact: Contacto del receptor ✅ Opcional
  • business_activity: Giro o actividad económica ✅ Opcional (no se valida si está vacío)
  • address: Dirección del receptor ✅ Opcional (no se valida si está vacío)
  • district: Comuna ✅ Opcional (no se valida si está vacío)
  • city: Ciudad ✅ Opcional (no se valida si está vacío)

Request Body

documents (Obligatorio)

  • Tipo: Array
  • Descripción: Lista de documentos a crear en el lote
  • Restricciones: Máximo 200 documentos por lote

Estructura de cada documento

Campos base (aplican a todos los tipos de documentos)

dte_type (Obligatorio)
  • Tipo: Object
  • Campos:
    • code (String): Código del tipo de documento
date_issued (Condicional)
  • Tipo: String (formato YYYY-MM-DD)
  • Descripción: Fecha de emisión del documento
  • Obligatorio: Sí, excepto si se usa X-Use-Defaults: true (usa fecha actual)
folio (Opcional)
  • Tipo: Integer
  • Descripción: Número de folio del documento
  • Comportamiento: Si no se proporciona, se genera automáticamente

Tipos de Documentos Soportados

Validación de campos desconocidos

La API compara cada documento con los campos que acepta. Un campo que no existe (por ejemplo, un nombre mal escrito o de una versión antigua de la documentación) no se usa al emitir: antes se descartaba sin aviso; ahora se informa.

Modo aviso: warnings

La respuesta del batch (v1 y v2) puede incluir un arreglo warnings en el primer nivel, con un elemento por campo desconocido. El documento se crea igual, sin ese campo.
Sugerencias conocidas:
Un aviso significa que el dato no llegó al documento. Por ejemplo, con header.transfer_indicator la guía se emite con el tipo de traslado por defecto ("1", venta), y con export_data.export_clause la factura de exportación sale sin cláusula de venta. Revisa los warnings en cada respuesta y corrige tu integración.

Modo estricto: 422

Las API keys con validación estricta reciben 422 en vez del aviso, y no se crea ningún documento del batch. El error va bajo la posición del documento (como string, desde "0") y la ruta del campo; en las listas (details, references, payments) la posición de la línea también es una llave:
Es el mismo formato que el resto de los errores de validación del batch, en v1 y en v2.
  • Las API keys nuevas tienen la validación estricta activada.
  • Las integraciones existentes reciben primero los warnings, para que puedan corregir sus campos sin que se rompa la emisión. El paso a modo estricto de una API key existente se coordina con Tupana.
  • El texto del mensaje puede cambiar: usa la ruta del campo para identificar el error.
  • API keys del flujo diferido (prefijo gw_): el aviso llega en el 202 junto a batch_id, y con validación estricta el 422 trae el mismo objeto dentro de errors ({"errors": {"documents": {...}}, "request": {...}}).

Respuesta

Respuesta Inmediata de la API

201 - Documentos creados exitosamente

  • Tipo: Object
  • Campos:
    • batch_id (String): Identificador único del lote
    • status (String): Estado del procesamiento ("processing")
    • total_documents (Integer): Número total de documentos en el lote
    • message (String): Mensaje descriptivo del estado
    • warnings (Array, opcional): Avisos sobre campos desconocidos que se ignoraron. Ver Validación de campos desconocidos

413 - Límite excedido

  • Descripción: Más de 200 documentos en el array
  • Campos:
    • error (String): Descripción del error
    • code (String): Código de error

400 - Credenciales no activas

  • Descripción: La empresa emisora no tiene credenciales SII activas configuradas
  • Campos:
    • error (String): Mensaje descriptivo indicando que no hay credenciales activas para el RUT especificado

422 - Error de validación

  • Descripción: Cuerpo malformado o fallo de validación
  • Cuerpo malformado (por ejemplo documents no es una lista): {"error": "..."}.
  • Validación de documentos: los errores van bajo documents, con la posición del documento como llave y la ruta del campo adentro. Ejemplo con una guía de traslado de exportación sin datos de Aduana:

Respuesta del Webhook

Cuando un documento se emite exitosamente, Tupana envía un webhook con la siguiente estructura: event (Obligatorio)
  • Tipo: String
  • Valor: "document.issued"
  • Descripción: Tipo de evento del webhook
created_at (Obligatorio)
  • Tipo: String (ISO 8601)
  • Descripción: Timestamp de cuando se generó el webhook
data (Obligatorio)
  • Tipo: Object
  • Descripción: Datos completos del documento emitido

Campos del objeto data

Información básica del documento:
  • id (Integer): ID único del documento en Tupana
  • folio (String): Folio asignado por el SII
  • date_issued (String): Fecha de emisión (formato YYYY-MM-DD)
  • amount_with_iva (Number): Monto total con IVA incluido
  • is_sandbox (Boolean): Indica si es un documento de prueba
dte_type (Object):
  • code (String): Código del tipo de documento
  • description (String): Descripción del tipo de documento
sender (Object):
  • id (Integer): ID del emisor en Tupana
  • name (String): Nombre/razón social del emisor
  • tax_id (String): RUT del emisor (formato con puntos y guión)
  • email (String): Email del emisor
receiver (Object):
  • id (Integer): ID del receptor en Tupana
  • name (String): Nombre/razón social del receptor
  • tax_id (String): RUT del receptor (formato con puntos y guión)
  • email (String): Email del receptor
header (Object):
  • purchase_transaction_type (Integer): Tipo de transacción de compra
  • sale_transaction_type (Integer): Tipo de transacción de venta
  • payment_method (String): Método de pago
  • due_date (String): Fecha de vencimiento (formato YYYY-MM-DD)
  • retention_type (String): Tipo de retención (solo para boletas de honorarios)
document_issuer (Object):
  • rut (String): RUT del emisor
  • business_name (String): Razón social
  • business_activity (String): Giro o actividad económica
  • phone_number (String): Teléfono
  • email (String): Email
  • activity_code (Integer): Código de actividad económica
  • sii_branch_code (String): Código de sucursal SII
  • address (String): Dirección
  • district (String): Comuna
  • city (String): Ciudad
document_receiver (Object):
  • rut (String): RUT del receptor
  • business_name (String): Razón social
  • business_activity (String): Giro o actividad económica
  • contact (String): Contacto
  • address (String): Dirección
  • district (String): Comuna
  • city (String): Ciudad
document_total (Object):
  • net_amount (Number): Monto neto (sin IVA)
  • iva_rate (Number): Tasa de IVA aplicada
  • iva_amount (Number): Monto del IVA
  • total_amount (Number): Monto total
details (Array): Lista de productos/servicios del documento. Cada elemento contiene:
  • item_name (String): Nombre del producto/servicio
  • item_description (String): Descripción del producto/servicio
  • quantity (Number): Cantidad
  • unit_price (Number): Precio unitario neto, sin IVA. Si el documento se emitió en bruto (boletas 39/41 con gross_unit_price), este campo refleja el monto bruto de la línea — gross_unit_price es solo de entrada y no se retorna en la respuesta.
  • item_code (String): Código del producto/servicio
  • item_type_code (String): Código del tipo de ítem
  • unit (String): Unidad de medida
  • discount_percent (Number): Porcentaje de descuento
  • other_tax (Number): Otros impuestos
references (Array): Referencias a otros documentos (solo para notas de crédito). Cada elemento contiene:
  • dte_type_code (String): Código del tipo de DTE de referencia
  • reference_folio (String): Folio del documento referenciado
  • reference_date (String): Fecha del documento referenciado
  • reference_reason (String): Razón de la referencia
Archivos generados:
  • pdf_file (String): URL temporal para descargar el PDF del documento
  • xml_file (String): URL temporal para descargar el XML del documento
json_param (Object):
  • Descripción: Campos propios del cliente que se guardan tal cual junto con el documento. Se envía dentro de cada elemento de documents (mismo nivel que header, details, etc.).
  • Estructura: Objeto JSON libre, ej. {"external_order_id": "PED-123", "idempotency_key": "..."}. No se valida ni se transforma.
  • Lectura: vuelve en el detalle (GET /documents/{document_id}/) y en el listado.
  • Búsqueda: el listado permite json_param__<key>=<valor> (ver Filtrar por json_param). Guarda ahí tu propio identificador (por ejemplo el Idempotency-Key con que creaste el batch) para reencontrar el documento aunque pierdas la respuesta de creación.
additional_info (String):
Este campo solo tiene efecto si tu empresa usa el PDF propio (PDF personalizado de Tu Pana) o emite con el facturador de mercado. Si tu empresa usa el PDF oficial del SII, el texto se guarda y se devuelve en la API, pero no aparece en el PDF.
  • Descripción: Texto libre que se imprime en un recuadro “Información adicional” al final del PDF, justo antes del timbre. Se envía dentro de cada elemento de documents (mismo nivel que header, details, etc.).
  • Largo máximo: 1000 caracteres. Los saltos de línea (\n) separan líneas dentro del recuadro.
  • No se envía al SII: no forma parte del XML del documento, solo del PDF.
  • Dónde aparece: solo en el PDF propio de Tu Pana o del facturador de mercado (ver aviso arriba).
  • Edición: se puede cambiar mientras el documento es borrador; una vez emitido no se puede modificar.
  • Lectura: vuelve en la respuesta del batch, en el detalle (GET /documents/{document_id}/), en el listado y en los webhooks (null si no se envió).

Consideraciones Especiales por Tipo de Documento

Ejemplos de Uso por Tipo de Documento

Factura Electrónica (DTE 33)

Factura de Compra (DTE 46)

Guía de Despacho de venta (DTE 52)

Guía que acompaña una venta, despachada por el emisor a una bodega del cliente distinta de su dirección. Las líneas son afectas: la guía lleva IVA.

Guía de Despacho de traslado para exportación (DTE 52)

Traslado de mercadería de exportación desde la fábrica al aeropuerto. La venta va en la factura de exportación; la guía declara el tipo de traslado "8", los datos de Aduana, el valor de la carga como línea exenta y el DUS como referencia.
La guía queda con exempt_amount 4.050.000, IVA 0 y total 4.050.000.

Factura de Exportación (DTE 110)

Nota de Crédito (DTE 61)

Boleta de Honorarios por usuario autorizado (DTE 80)

El emisor de la boleta es document_issuer.rut, pero la emite un usuario autorizado por el SII (dueño de una credencial sii_company). header.authorized_user_rut indica cuál credencial usar cuando hay varias accesibles.

Boleta de Honorarios de Terceros (DTE 90)

Ejemplo mínimo con header X-Use-Defaults: true: con solo RUT en emisor y receptor el backend completa business_name y el resto si existen en Tupana; usa fecha actual si se omite date_issued.

🧾 Factura de Compra (DTE 46)

Campos específicos del header:

  • purchase_transaction_type (Integer, Obligatorio):
    • 1: Compras del giro - Productos/servicios relacionados con tu actividad principal
    • 2: Compras fuera del giro - Productos/servicios no relacionados con tu actividad principal
    • 3: Activo fijo - Bienes que se incorporan al patrimonio de la empresa (maquinaria, muebles, etc.)
  • payment_method (String, Opcional):
    • "1": Contado - Pago inmediato
    • "2": Crédito - Pago diferido
    • "3": Sin costo - Producto/servicio recibido gratuitamente

Validaciones importantes:

  • Registro contable: Este documento genera asiento automático en tu contabilidad
  • IVA recuperable: El IVA pagado puede ser recuperado según el tipo de compra
  • Proveedor extranjero: Si el proveedor es extranjero, usar RUT genérico 55555555-5
  • Fecha límite: Las compras deben registrarse dentro del mes siguiente a la recepción

Casos de uso comunes:

  • Registro de compras a proveedores locales
  • Incorporación de activos fijos
  • Servicios profesionales recibidos
  • Compras de materias primas o insumos

🚚 Guía de Despacho (DTE 52)

Campos de transport_data

Todos los campos son opcionales salvo lo que se indica. Los mismos campos se aceptan en POST /v1/documents/batch/ y en POST /v2/documents/batch/. La columna Res. 154 marca lo que pasa a ser obligatorio en la guía el 1 de noviembre de 2026 (ver Resolución 154). Los campos de transporte y destino también se aceptan en otros tipos de documento; los de Aduana y el emisor del traslado, sólo con transport_type "8" o "9".

Tipo de traslado (transport_type)

Tipo de despacho (dispatch_type)

Datos de Aduana (traslados "8" y "9")

  • El SII los exige en guías con tipo de traslado 8 y 9: con el facturador de mercado, transfer_issuer_code, departure_port_code, arrival_port_code, gross_weight y gross_weight_unit_code son obligatorios.
  • Mismos nombres que en export_data de la factura de exportación, para usar las mismas llaves en la guía y en la factura.
  • Los puertos aceptan el código o el nombre exacto de la tabla de Aduana del SII ("992" o "AEROP.A.M.BENITEZ", indistintamente). Ejemplos: "906" = SAN ANTONIO, "905" = VALPARAISO, "992" = AEROP.A.M.BENITEZ, "134" = NEW YORK, "292" = SANTOS.
  • gross_weight_unit_code usa la tabla de unidades de Aduana (ej: "6" = KN). package_type_code usa la tabla de tipos de bulto (ej: "22" = CAJA DE CARTON).
  • Tablas completas de puertos, unidades y tipos de bulto: Códigos de transporte y Aduana. Ejemplo:

Emisor del traslado (transfer_issuer_code)

En guías de traslado 8 y 9 el SII exige indicar en qué calidad se emite la guía (Emisor/GuiaExport/CdgTraslado). Sin este dato el SII acepta la guía con reparo (HED-2-804), por eso con el facturador de mercado es obligatorio.

Resolución 154 (DTE 52)

La Resolución Exenta SII N°154 de 2025, prorrogada por la Resolución Exenta N°52 de 2026, fija el contenido mínimo de la guía de despacho y rige desde el 1 de noviembre de 2026. La API aplica las mismas reglas en v1 y v2:
  • Hasta el 31 de octubre de 2026: la guía se acepta igual y la respuesta del batch trae un aviso por cada dato faltante en warnings, con document_index, field, code (res154_*), message y suggestion. Los avisos también aparecen en el borrador y en la vista previa de la plataforma.
  • Desde el 1 de noviembre de 2026: los mismos datos faltantes responden 422 con el campo bajo documents → posición → transport_data o details[], y la guía no se crea. El único aviso que nunca pasa a 422 es res154_trailer_plate.
Ejemplo de aviso (misma forma en v1 y v2):

Origen efectivo del traslado

La resolución exige el origen efectivo de las mercaderías. La guía toma como origen la dirección del emisor (document_issuer.address, district, city). Puedes usar cualquier dirección de la empresa registrada en el SII (casa matriz o sucursal): Tupana las sincroniza al perfil de la empresa con su código de sucursal, y al coincidir el texto de document_issuer.address con una de ellas la guía sale con ese código en Emisor/CdgSIISucur. Usa exactamente el mismo texto que figura en el perfil de la empresa. Si la bodega no está registrada en el SII, regístrala primero allí; las direcciones no se administran por la API.

Anulación de una guía

Si cambia lo informado (cantidad, destino, transporte), la resolución pide emitir una guía nueva que referencie a la anterior (references[] con dte_type_code "52") y registrar la original como anulada. La anulación se registra con el endpoint de estados del documento:
Respuesta 200:
  • Sólo el emisor puede anular (403), sólo guías (DTE 52) emitidas con folio y siempre con reason (400 con code annulment_only_for_delivery_notes, annulment_only_for_issued_delivery_notes o annulment_reason_required).
  • registry indica dónde queda el registro mientras el SII no habilite el Registro de Guías: delivery_note_book (Libro de Guías, facturador de mercado) o portal_follow_up (facturador gratuito del SII: además hay que anotarla en “Seguimiento del documento” del portal).
  • Anular dos veces responde 200 con already_annulled: true. El mismo endpoint existe en v1 (POST /v1/documents/{document_id}/states/).

Líneas exentas (details[].is_exempt)

  • is_exempt: true marca la línea como no afecta o exenta (IndExe = 1 en el DTE).
  • Las líneas exentas suman a document_total.exempt_amount y no generan IVA; las afectas suman al neto y llevan IVA 19%. total_amount = net_amount + iva_amount + exempt_amount.
  • Para una guía toda exenta, marca todas las líneas. No hay marca a nivel de documento.
  • Por ahora sólo en DTE 52: en otros tipos de documento la API responde 422.

Facturador gratuito del SII (MiPyme)

El mensaje de error indica que el campo está “no disponible para emisores del facturador gratuito del SII”. Lo que va como texto se escribe al inicio de la descripción de la primera línea, por ejemplo: Destino: Camino Lo Boza 120, Pudahuel, Santiago. Despacho: Por cuenta del emisor a instalaciones del cliente. Salida: 02-11-2026 08:30.
En el facturador gratuito del SII una guía con precios siempre lleva IVA 19%: el formulario del SII no permite líneas exentas. Para un traslado de exportación con valor sin IVA, el emisor necesita el facturador de mercado.

Errores de validación (422)

La guía se valida al recibir el batch, antes de emitir, para no quemar folios con rechazos del SII. Cada error indica el documento y la ruta del campo: Ejemplo de respuesta v1 (el error va en la posición del documento dentro de documents):
En v2 el error usa el formato de errores v2 con type validation_error.

Respuesta

GET /v1/documents/{id} y GET /v2/documents/{id}/ devuelven transport_data con todos los campos anteriores, details[].is_exempt y document_total.exempt_amount.

✈️ Factura de Exportación (DTE 110)

Campos requeridos en export_data:

  • destination_country_code (String, Obligatorio):
    • No es código ISO 3166-1. Es el código de país del SII (ej: "225" = U.S.A., "220" = Brasil, "224" = Argentina). Ver Países de exportación para la tabla completa.
    • Es el destino final de la mercadería (CodPaisDestin). Si el receptor está en otro país, ver la sección “País y nacionalidad del receptor” más abajo
  • currency_code (String, Obligatorio):
    • Código de moneda del SII (ej: "13" = Dólar USA). No es ISO 4217.
  • sale_mode_code (String, Obligatorio):

País y nacionalidad del receptor

El DTE de exportación declara tres países distintos. Normalmente son el mismo y basta con destination_country_code. Cuando no coinciden (por ejemplo, el comprador es una distribuidora en Holanda y la carga va directo a Alemania), se informan por separado: Los tres usan los códigos de país del SII (Países de exportación). Un código fuera de la tabla devuelve 400.
En este ejemplo la carga va a Alemania (563), el comprador está en Holanda (515) y su nacionalidad también queda como Holanda, porque no se envió receiver_nationality_code.

Cláusula de venta (Incoterm)

  • sale_clause_code (String, Opcional):
    • Es el Incoterm de la operación (CodClauVenta del DTE): FOB, EXW, CIF, etc.
    • No confundir con sale_mode_code: ése es la modalidad de venta (a firme, en consignación…). Son dos campos distintos del DTE.
    • Se acepta el código o el nombre: "5" y "FOB" son equivalentes.
    Ejemplo — pasar de Ex Works a FOB:

Forma de pago de exportación

  • export_payment_method_code (String, Opcional, por defecto "21"):
    • Es la forma de pago de la operación de exportación (FmaPagExp del DTE).
    • header.payment_method no aplica a exportación: el DTE de exportación no lleva la forma de pago nacional (contado / crédito), así que ese campo se ignora en los tipos 110, 111 y 112.
    • Se acepta el código o el nombre: "11" y "ACRED" son equivalentes.
    • Sin el campo el documento sale como sin pago ("21"): el SII exige entonces que el total en pesos (MntTotOtrMnda) vaya en cero.
    • Con ANTICIPO ("32") el DTE declara como fecha de pago la fecha de emisión.
    • La forma de pago se muestra en el PDF, en el recuadro de exportación.

Campos específicos del header:

  • sale_transaction_type (Integer, Obligatorio):
    • 1: Operación constituye venta - Venta normal
    • 2: Ventas por acto o contrato - Contratos especiales
    • 3: Boleto de pasaje - Para agencias de viajes
  • currency (String, Obligatorio):
    • "USD": Dólares americanos
    • "EUR": Euros
    • "CLP": Pesos chilenos
    • "UF": Unidades de Fomento

Información del receptor extranjero:

  • RUT: Puede usar identificadores especiales como 99999999-9 para extranjeros
  • Dirección: Dirección completa en el extranjero
  • País: document_receiver no lleva país. Los países van en export_data: destination_country_code (destino) y, si son distintos, receiver_country_code y receiver_nationality_code

Precios y cálculos:

  • FOB (Free on Board): Los precios deben incluir costos hasta la entrega al transportista
  • Moneda: Debe coincidir con header.currency
  • Sin IVA: Las exportaciones están exentas de IVA chileno

Requisitos legales:

  • Registro de exportación: Debe estar registrado en el sistema aduanero
  • Certificado de origen: Puede requerirse según acuerdos comerciales
  • Documentos aduaneros: Factura comercial, certificado de origen, etc.

💼 Boletas de Honorarios (DTE 80, 90)

Campos específicos del header:

  • retention_type (String, Obligatorio):
    • "RETRECEPTOR": La retención la realiza el receptor (99% de los casos)
    • "RETCONTRIBUYENTE": La retención la realiza el contribuyente emisor (casos excepcionales)
  • authorized_user_rut (String, Opcional): RUT del usuario autorizado por el SII (dueño de la credencial sii_company) que emite en representación del emisor. Selecciona determinísticamente la credencial cuando hay varias accesibles. Solo válido para DTE 80 y 90.

Retención automática del 14.5%:

  • Cálculo: Se aplica sobre el monto bruto antes de IVA
  • Responsable: Normalmente el pagador retiene y declara el impuesto
  • Pago al profesional: Se paga el 85.5% restante (bruto menos retención)

Información del receptor (profesional):

  • Campos opcionales: A diferencia de facturas, no todos los datos son obligatorios
  • RUT obligatorio: Siempre se requiere el RUT del profesional
  • Actividad económica: Debe corresponder a servicios profesionales

Diferencias entre DTE 80 y 90:

DTE 80 - Boleta de Honorarios:
  • Emisión directa por el pagador al profesional
  • Relación directa pagador-profesional
  • document_issuer: Quien paga (empresa o persona que contrata)
DTE 90 - Boleta de Honorarios de Terceros:
  • Emisión por intermediario (plataformas, marketplaces)
  • document_issuer: Contribuyente real (quien paga — restaurante, empresa cliente)
  • document_receiver: Profesional que recibe (repartidor, freelancer, instructor)
  • Requiere enrolamiento de usuarios autorizados para emisión por terceros
  • Misma estructura de request que DTE 80; solo cambia dte_type.code: "90"

Validaciones específicas:

  • Tope mensual: Límite de emisión sin retención ampliada
  • Tipo de servicio: Debe corresponder a honorarios profesionales
  • Declaración: El retenedor debe declarar y pagar el impuesto retenido

Casos de uso:

  • DTE 80: Honorarios de abogados, contadores, médicos; servicios de consultoría; pagos directos a freelancers
  • DTE 90: Apps de delivery (Rappi, Uber Eats); plataformas freelance; marketplaces de servicios; plataformas educativas

🔒 Seguridad y URLs temporales

URLs de archivos temporales:

  • PDF y XML: URLs válidas por 1 hora aproximadamente
  • Autenticación: Incluyen tokens de acceso automático
  • Recomendación: Descargar inmediatamente al recibir el webhook

Medidas de seguridad:

  • Encriptación: Archivos transmitidos de forma segura
  • Validación: Solo el emisor puede acceder a sus documentos
  • Auditoría: Todas las descargas quedan registradas

Authorizations

Authorization
string
header
required

API Key para autenticación. Debe proporcionarse en el header Authorization con el formato: 'Api-Key YOUR-API-KEY' (incluye el prefijo 'Api-Key ' seguido de tu API key)

Headers

Idempotency-Key
string

Previene lotes duplicados (≤ 256 caracteres, expira después de 24 h)

X-Use-Defaults
boolean
default:false

Si se establece como true, el sistema usará valores por defecto para campos no proporcionados:

  • Fecha actual para date_issued
  • Datos del emisor según configuración de la plataforma o primera actividad/dirección disponible
  • Datos del receptor según configuración del cliente o primera actividad/dirección disponible
  • Payment method = '2' (crédito) en el header del documento

Body

application/json

Lote de documentos a crear

documents
object[]
required

Array de documentos a crear (máximo 200)

Response

Solicitud de creación de documentos aceptada. Los resultados se enviarán por webhook.

batch_id
string<uuid>

Identificador único del lote

status
enum<string>

Estado del batch

Available options:
created,
processing,
completed,
failed
Example:

"processing"

created_at
string<date-time>

Fecha y hora de creación del batch

documents
object[]

Array de documentos procesados en el batch

warnings
object[]

Avisos sobre campos desconocidos que se ignoraron (modo aviso). Sólo aparece si hay avisos. Con validación estricta, la API responde 422 en vez de avisar.