> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tupana.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Obtener documento específico

> Obtiene toda la información completa de un documento tributario específico, incluyendo:

- **PDF y XML** cuando están disponibles (el PDF siempre se incluye en la respuesta, campo `pdf_url`)
- **Detalles (productos/líneas)** del documento (campo `details`)
- **Header completo** con información de transacción, pago y tipo de compra (campo `header`)
- **Información del emisor** completa (campo `document_issuer`)
- **Información del receptor** completa (campo `document_receiver`)
- **Referencias** a otros documentos, como notas de crédito (campo `references`)

Este endpoint es útil para consultar detalles completos de un documento ya emitido o recibido.

**Seguridad:** El usuario solo puede acceder al documento si es emisor (sender) o receptor (receiver) del documento. Si el usuario no tiene acceso, se retorna un error 403 Forbidden.

## Qué hace

Obtiene toda la información completa de un documento tributario específico, incluyendo PDF, XML, productos, información del emisor y receptor, header, y referencias. Este endpoint es útil para consultar detalles completos de un documento ya emitido o recibido.

## Ejemplos de uso

* Consultar detalles completos de un documento ya emitido
* Descargar el PDF de un documento específico
* Obtener el XML para procesos de integración
* Verificar información de un documento recibido
* Auditar documentos antes de procesarlos

## Campos propios (`json_param`)

Si al crear el documento enviaste `json_param`, la respuesta lo devuelve tal cual en el campo `json_param` (`null` si no se envió). Para buscar un documento por uno de esos valores usa `json_param__<key>=<valor>` en el listado.

## Información adicional (`additional_info`)

Si al crear el documento enviaste `additional_info`, la respuesta lo devuelve en el campo `additional_info` (`null` si no se envió). Es el texto que se imprime en el recuadro "Información adicional" del PDF; no forma parte del XML enviado al SII. Solo se imprime si tu empresa usa el PDF propio de Tu Pana o emite con el facturador de mercado; con el PDF oficial del SII el texto se guarda pero no aparece en el PDF.

## Trazabilidad SII

La respuesta incluye siempre el array `traces` con cada traza del documento en el SII y, dentro de cada una, la lista `events` con los eventos registrados (acuse de recibo, reclamos, notas de crédito asociadas, etc.). Revisa los schemas `Trace` y `TraceEvent` en la referencia para el detalle de cada campo.

A diferencia del endpoint de listado — donde estos eventos son opt-in vía `include_trace_events=true` — aquí no necesitas ningún flag adicional.


## OpenAPI

````yaml api-reference/openapi-v2.json GET /documents/{document_id}/
openapi: 3.0.0
info:
  title: Tupana API — v2
  description: >-
    API v2 de Tupana: facturación electrónica, cesiones, recaudación, consultas,
    boleta de honorarios y nómina. Los identificadores de recursos son public
    IDs opacos con prefijo (docu_, ment_, cred_, doce_, empl_…).
  version: 2.0.0
servers:
  - url: https://api.tupana.ai/v2
    description: Producción (v2)
security:
  - apiKeyAuth: []
paths:
  /documents/{document_id}/:
    get:
      tags:
        - Documentos
      summary: Obtener documento específico
      description: >-
        Obtiene toda la información completa de un documento tributario
        específico, incluyendo:


        - **PDF y XML** cuando están disponibles (el PDF siempre se incluye en
        la respuesta, campo `pdf_url`)

        - **Detalles (productos/líneas)** del documento (campo `details`)

        - **Header completo** con información de transacción, pago y tipo de
        compra (campo `header`)

        - **Información del emisor** completa (campo `document_issuer`)

        - **Información del receptor** completa (campo `document_receiver`)

        - **Referencias** a otros documentos, como notas de crédito (campo
        `references`)


        Este endpoint es útil para consultar detalles completos de un documento
        ya emitido o recibido.


        **Seguridad:** El usuario solo puede acceder al documento si es emisor
        (sender) o receptor (receiver) del documento. Si el usuario no tiene
        acceso, se retorna un error 403 Forbidden.
      operationId: getDocument_v2
      parameters:
        - name: document_id
          in: path
          description: ID único del documento a consultar (entero)
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: >-
            Documento obtenido exitosamente con toda la información completa:
            PDF, XML, detalles (productos), header, información del emisor y
            receptor, y referencias
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentDetailWithFiles'
        '400':
          description: Parámetros inválidos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: API Key faltante o inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            Sin permisos para acceder al documento. El usuario debe ser emisor
            (sender) o receptor (receiver) del documento.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: No tienes acceso a este documento
        '404':
          description: Documento o entidad no encontrada
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKeyAuth: []
components:
  schemas:
    DocumentDetailWithFiles:
      type: object
      allOf:
        - $ref: '#/components/schemas/DocumentDetail'
        - type: object
          properties:
            amount_iva:
              type: number
              format: float
              description: Monto del IVA
              nullable: true
            amount_without_iva:
              type: number
              format: float
              description: Monto sin IVA
              nullable: true
            currency:
              type: string
              description: Moneda del documento
              enum:
                - CLP
                - UF
                - USD
                - EUR
              example: CLP
            sender_id:
              type: integer
              description: ID de la entidad emisora
            sender_name:
              type: string
              description: Nombre de la entidad emisora
            sender_tax_id:
              type: string
              description: RUT de la entidad emisora
            receiver_id:
              type: string
              description: >-
                ID de la entidad receptora (como string, puede ser null para
                algunos tipos de documentos)
              nullable: true
            receiver_name:
              type: string
              description: Nombre de la entidad receptora
              nullable: true
            receiver_tax_id:
              type: string
              description: RUT de la entidad receptora
              nullable: true
            has_credit_note:
              type: boolean
              description: Indica si el documento tiene una nota de crédito asociada
            is_paid:
              type: boolean
              description: Indica si el documento está marcado como pagado
            traces:
              type: array
              description: >-
                Array de trazas del documento en el SII, cada una con su lista
                de `events`. En el endpoint de detalle siempre se incluye; en el
                endpoint de listado solo se incluye cuando se pasa
                `include_trace_events=true`.
              items:
                $ref: '#/components/schemas/Trace'
            vat_withheld:
              type: boolean
              description: Indica si se retuvo IVA
              nullable: true
            exchange_rate:
              type: string
              description: Tipo de cambio para facturas internacionales
              nullable: true
            original_amount:
              type: string
              description: >-
                Monto original en moneda extranjera para facturas
                internacionales
              nullable: true
            state:
              type: string
              description: Estado del documento (draft, issued, etc.)
              nullable: true
            dte_type_description:
              type: string
              description: Descripción del tipo de DTE
            pdf:
              type: string
              format: uri
              description: >-
                URL presignada al PDF del documento (válida por tiempo limitado,
                generalmente 1 hora)
              nullable: true
            xml:
              type: string
              description: Contenido completo del XML del documento tributario electrónico
              nullable: true
            xml_error:
              type: string
              description: >-
                Mensaje de error si no se pudo obtener el XML (null si está
                disponible)
              nullable: true
            references:
              type: array
              description: Array de documentos referenciados (para notas de crédito, etc.)
              items:
                $ref: '#/components/schemas/ReferenceItem'
            details:
              type: array
              description: Array de productos/líneas del documento
              items:
                $ref: '#/components/schemas/DetailItem'
              nullable: true
            header:
              $ref: '#/components/schemas/DocumentHeader'
              description: >-
                Información del encabezado del documento (transacción, pago,
                etc.)
              nullable: true
            document_issuer:
              $ref: '#/components/schemas/DocumentIssuer'
              description: Información completa del emisor del documento
              nullable: true
            document_receiver:
              $ref: '#/components/schemas/DocumentReceiver'
              description: Información completa del receptor del documento
              nullable: true
            document_total:
              type: object
              nullable: true
              description: Totales del documento
              properties:
                net_amount:
                  type: number
                  nullable: true
                  description: Monto neto afecto (sin IVA)
                iva_rate:
                  type: number
                  nullable: true
                  description: Tasa de IVA aplicada
                iva_amount:
                  type: number
                  nullable: true
                  description: Monto del IVA
                exempt_amount:
                  type: number
                  nullable: true
                  description: >-
                    Monto exento: suma de las líneas con is_exempt en true.
                    total_amount = net_amount + iva_amount + exempt_amount.
                total_amount:
                  type: number
                  nullable: true
                  description: Monto total
            transport_data:
              $ref: '#/components/schemas/TransportData'
              description: >-
                Datos de transporte del documento (guía de despacho DTE 52 y
                otros documentos con transporte), con todos los campos de
                TransportData
              nullable: true
    Error:
      required:
        - error
        - message
      type: object
      properties:
        error:
          type: string
          description: Código de error
          example: VALIDATION_ERROR
          enum:
            - VALIDATION_ERROR
            - AUTHENTICATION_ERROR
            - AUTHORIZATION_ERROR
            - NOT_FOUND
            - SII_ERROR
            - INTERNAL_ERROR
        message:
          type: string
          description: Mensaje de error
    DocumentDetail:
      type: object
      properties:
        id:
          type: string
          description: ID único del documento
          example: docu_9f2a7c1b8e4d0
        folio:
          type: string
          nullable: true
          description: Número de folio del documento
        date_issued:
          type: string
          format: date
          description: Fecha de emisión del documento
        amount_with_iva:
          type: number
          format: float
          description: Monto total con IVA
        dte_type_code:
          type: string
          description: 'Código del tipo de DTE (ej: "33" para Factura Electrónica)'
        created_at:
          type: string
          format: date-time
          description: Fecha de creación del registro (ISO 8601)
        updated_at:
          type: string
          format: date-time
          description: Fecha de última actualización (ISO 8601)
        has_trace:
          type: boolean
          description: true si el documento tiene al menos una traza registrada del SII.
        json_param:
          type: object
          additionalProperties: true
          nullable: true
          description: >-
            Campos propios del cliente enviados en `json_param` al crear el
            documento. `null` si no se envió.
          example:
            external_order_id: PED-123
        additional_info:
          type: string
          nullable: true
          description: >-
            Texto enviado en `additional_info` al crear el documento. `null` si
            no se envió. Solo se imprime en el PDF si la empresa usa el PDF
            propio de Tu Pana o el facturador de mercado.
          example: 'Orden de compra N° 4500123 - Centro de costo: Operaciones'
    Trace:
      type: object
      description: >-
        Traza del documento en el SII. Contiene los flags de acceso/estado y la
        lista de `events` con el detalle de cada hito (recepción, acuse,
        reclamo, etc.).
      properties:
        date_reception:
          type: string
          format: date-time
          description: Fecha y hora en que el SII registró la recepción del documento.
          nullable: true
        has_receiver_access:
          type: boolean
          description: El receptor tiene acceso al documento en el portal del SII.
        has_issuer_access:
          type: boolean
          description: El emisor tiene acceso al documento en el portal del SII.
        has_holder_access:
          type: boolean
          description: El tenedor vigente tiene acceso al documento.
        is_paid_cash:
          type: boolean
          description: Documento marcado como pagado al contado en el SII.
        has_claims:
          type: boolean
          description: El documento tiene al menos un reclamo registrado (RCD, RFP o RFT).
        is_more_than_eight_days:
          type: boolean
          description: >-
            Han pasado más de 8 días desde la recepción (relevante para mérito
            ejecutivo).
        has_acknowledgments:
          type: boolean
          description: El documento tiene un acuse de recibo (ACD o ERM).
        has_guide_reference:
          type: boolean
          description: El documento referencia una guía de despacho.
          nullable: true
        is_rejected:
          type: boolean
          description: >-
            Calculado: el documento fue rechazado (existe un evento RCD, RFP o
            RFT).
        days_until_executive_merit:
          type: integer
          description: >-
            Días que faltan para que el documento entre en mérito ejecutivo
            (negativo si ya pasó). `null` si no aplica (sin recepción, con acuse
            o rechazado).
          nullable: true
        executive_merit_alert_level:
          type: string
          description: Nivel de alerta para mérito ejecutivo.
          enum:
            - none
            - warning
            - critical
        events:
          type: array
          description: >-
            Eventos registrados en el SII para esta traza (ordenados por fecha
            descendente).
          items:
            $ref: '#/components/schemas/TraceEvent'
    ReferenceItem:
      type: object
      required:
        - reference_folio
        - reference_date
        - dte_type_code
      properties:
        reference_folio:
          type: integer
          description: Folio de referencia
        reference_date:
          type: string
          format: date
          description: Fecha de referencia
        reference_reason:
          type: string
          description: >-
            Razón de referencia. Para notas de crédito totales debe ser 'ANULA
            DOCUMENTO DE LA REFERENCIA'.
          example: ANULA DOCUMENTO DE LA REFERENCIA
        dte_type_code:
          type: string
          description: Código del tipo de DTE del documento referenciado
    DetailItem:
      type: object
      required:
        - item_name
        - quantity
        - unit_price
      properties:
        item_name:
          type: string
          description: Nombre del ítem
        quantity:
          type: number
          description: Cantidad
        unit_price:
          type: number
          format: float
          minimum: 0
          description: Precio unitario neto, sin IVA (no puede ser negativo)
        gross_unit_price:
          type: number
          format: float
          description: >-
            Precio unitario bruto, con IVA incluido. Solo válido para boletas
            electrónicas (dte_type 39 y 41); en cualquier otro tipo de documento
            la API responde 422. No se puede combinar con unit_price en el mismo
            documento: todas las líneas deben usar uno u otro. Si se envía, se
            usa como unit_price para calcular item_total, y el neto/IVA del
            documento se derivan a partir del bruto.
        is_exempt:
          type: boolean
          default: false
          description: >-
            Marca la línea como no afecta o exenta de IVA (Detalle/IndExe = 1):
            su monto va a exempt_amount y no genera IVA. Por ahora sólo en guía
            de despacho (DTE 52); en otro tipo de documento la API responde 422.
            No disponible para emisores del facturador gratuito del SII (422).
        item_description:
          type: string
          description: Descripción del ítem
        discount_percent:
          type: number
          format: float
          description: Porcentaje de descuento
        item_code:
          type: string
          description: Código del ítem
        unit:
          type: string
          description: Unidad de medida
        other_tax:
          type: number
          format: float
          description: Otros impuestos
        item_type_code:
          type: integer
          description: Código de tipo de ítem
        line_number:
          type: integer
          description: >-
            Número de línea del ítem. Opcional: si no viene, se usa el orden del
            arreglo.
          example: 1
        item_total:
          type: number
          description: >-
            Total de la línea. La API lo recalcula a partir de quantity,
            unit_price y discount_percent; el valor enviado no se usa para
            emitir.
          example: 4050000
        show_item_type:
          type: string
          enum:
            - '01'
            - '02'
          description: >-
            Sólo boletas (39/41) de espectáculos emitidas por cuenta de terceros
            (ItemEspectaculo): "01" si la línea es la entrada, "02" si es el
            valor por servicio que cobra el emisor. Obligatorio en todas las
            líneas en ese caso.
          nullable: true
        ticket:
          type: object
          nullable: true
          description: >-
            Datos del ticket de la entrada (línea con show_item_type "01"). El
            SII exige imprimirlos en la boleta.
          properties:
            ticket_folio:
              type: integer
              description: Folio del ticket, único para el evento (máximo 6 dígitos).
            generated_at:
              type: string
              format: date-time
              description: Fecha y hora de generación del ticket.
            event_name:
              type: string
              maxLength: 80
              description: Nombre del espectáculo.
            ticket_type:
              type: string
              maxLength: 10
              description: Tipo de ticket.
            event_code:
              type: string
              maxLength: 5
              description: Código asociado al evento.
            event_datetime:
              type: string
              format: date-time
              description: Fecha y hora de realización del evento.
            event_place:
              type: string
              maxLength: 80
              description: Dirección o recinto donde se realiza el evento.
            event_location:
              type: string
              maxLength: 20
              description: Sector o sección de la ubicación en el evento.
            row:
              type: string
              maxLength: 3
              nullable: true
              description: Fila de la ubicación.
            seat:
              type: string
              maxLength: 3
              nullable: true
              description: Asiento de la ubicación.
    DocumentHeader:
      type: object
      properties:
        purchase_transaction_type:
          type: string
          description: Tipo de transacción de compra
          nullable: true
        sale_transaction_type:
          type: string
          description: Tipo de transacción de venta
          nullable: true
        payment_method:
          type: string
          description: Método de pago
          enum:
            - '1'
            - '2'
            - '3'
          nullable: true
        due_date:
          type: string
          format: date
          description: Fecha de vencimiento
          nullable: true
        vat_withheld:
          type: boolean
          description: >-
            Indica si el IVA está retenido. Solo aplicable para facturas de
            compra (DTE 46) y notas de crédito que referencian facturas de
            compra.
          example: false
          nullable: true
        retention_type:
          type: string
          description: >-
            Tipo de retención obligatorio para boletas de honorarios (DTE 80,
            90). Define quién retiene el 14,5% legal.
          enum:
            - RETRECEPTOR
            - RETCONTRIBUYENTE
          example: RETRECEPTOR
          nullable: true
        purchase_type:
          type: string
          description: Tipo de compra para facturas recibidas en el SII
          enum:
            - '1'
            - '2'
            - '3'
            - '4'
            - '5'
            - '6'
            - '7'
          example: '1'
          nullable: true
    DocumentIssuer:
      type: object
      required:
        - rut
      properties:
        rut:
          type: string
          description: >-
            RUT sin puntos y con guion, ej: 76543210-K. Si X-Use-Defaults es
            true, los demás campos se rellenarán automáticamente según la
            configuración.
          pattern: ^[0-9]{7,8}-[0-9K]$
        business_name:
          type: string
          description: Razón social
        phone_number:
          type: string
          description: Número de teléfono
        email:
          type: string
          description: Correo electrónico
        business_activity:
          type: string
          description: Giro comercial
        activity_code:
          type: integer
          description: Código de actividad económica
        sii_branch_code:
          type: string
          description: Código de sucursal SII
        address:
          type: string
          description: Dirección
        district:
          type: string
          description: Comuna
        city:
          type: string
          description: Ciudad
    DocumentReceiver:
      type: object
      required:
        - rut
      properties:
        rut:
          type: string
          description: >-
            RUT sin puntos y con guion, ej: 76543210-K. Si X-Use-Defaults es
            true, los demás campos se rellenarán automáticamente según la
            configuración.
          pattern: ^[0-9]{7,8}-[0-9K]$
        business_name:
          type: string
          description: Razón social
        contact:
          type: string
          description: Contacto
        business_activity:
          type: string
          description: Giro comercial
        address:
          type: string
          description: Dirección
        district:
          type: string
          description: Comuna
        city:
          type: string
          description: Ciudad
    TransportData:
      type: object
      description: >-
        Datos de transporte de la guía de despacho (DTE 52): tipo de traslado,
        tipo de despacho, transportista, chofer, destino y datos de Aduana. Los
        campos de transporte y destino también se aceptan en otros tipos de
        documento; los de Aduana, sólo con transport_type 8 o 9. Con
        timber_enabled en true se incluyen los datos de origen de la madera que
        exige el SII (CONAF). Res. Ex. SII N°154 (vigente desde el 2026-11-01):
        tipo de traslado, patente, RUT del transportista, chofer (o
        transport_unknown_reason), destino con comuna, fecha y hora de salida y
        unidad de medida en cada línea pasan a ser obligatorios en la guía;
        hasta esa fecha la respuesta del batch sólo trae un aviso (warnings,
        code res154_*). Con emisores del facturador gratuito del SII (MiPyme),
        los datos de Aduana y el destino de la madera no están disponibles: la
        API responde 422; tipo de despacho, destino, salida, llegada, patente
        del carro y motivos se imprimen como texto en la primera línea del
        detalle porque el formulario del SII no tiene esos campos.
      properties:
        transport_type:
          type: string
          description: >-
            Tipo de traslado (IdDoc/IndTraslado). 1=Operación constituye venta,
            2=Ventas por efectuar, 3=Consignaciones, 4=Entrega gratuita,
            5=Traslados internos, 6=Otros traslados no venta, 7=Devolución de
            mercaderías, 8=Traslado para exportación (no venta), 9=Venta para
            exportación. Si no se envía, se usa 1.
          enum:
            - '1'
            - '2'
            - '3'
            - '4'
            - '5'
            - '6'
            - '7'
            - '8'
            - '9'
          default: '1'
          example: '1'
        dispatch_type:
          type: string
          nullable: true
          description: >-
            Tipo de despacho (IdDoc/TipoDespacho). 1=Por cuenta del receptor (el
            cliente retira), 2=Por cuenta del emisor a instalaciones del
            cliente, 3=Por cuenta del emisor a otras instalaciones. Si no se
            envía, se emite 3. No se permite con transport_type 5 (422). Con
            emisores del facturador gratuito del SII (MiPyme) va como texto en
            la primera línea del detalle (su formulario no tiene el campo).
          enum:
            - '1'
            - '2'
            - '3'
          example: '2'
        transport_rut:
          type: string
          nullable: true
          description: >-
            RUT de la empresa de transporte (Transporte/RUTTrans), formato
            12345678-9. Si el dígito verificador es inválido se emite igual y la
            respuesta trae un aviso invalid_rut.
          example: 76234567-6
        transport_plate:
          type: string
          nullable: true
          description: >-
            Patente del vehículo (Transporte/Patente). Se normaliza a mayúsculas
            sin guion ni espacios y queda en máximo 8 caracteres.
          example: PJRL69
        driver_rut:
          type: string
          nullable: true
          description: >-
            RUT del chofer (Transporte/Chofer/RUTChofer). Si el dígito
            verificador es inválido se emite igual y la respuesta trae un aviso
            invalid_rut. Se envía junto con driver_name, o ninguno de los dos
            (422 si falta uno).
          example: 12345678-5
        driver_name:
          type: string
          nullable: true
          description: >-
            Nombre completo del chofer (Transporte/Chofer/NombreChofer). Se
            trunca a 30 caracteres en el DTE. Se envía junto con driver_rut, o
            ninguno de los dos (422 si falta uno).
          example: Juan Pérez
        destination_address:
          type: string
          nullable: true
          maxLength: 70
          description: >-
            Dirección de destino (Transporte/DirDest). Se informa cuando el
            destino es distinto de la dirección del receptor. Con emisores del
            facturador gratuito del SII (MiPyme) va como texto en la primera
            línea del detalle (su formulario no tiene el campo).
          example: Aeropuerto Arturo Merino Benitez
        destination_district:
          type: string
          nullable: true
          maxLength: 20
          description: >-
            Comuna de destino (Transporte/CmnaDest). Con emisores del facturador
            gratuito del SII (MiPyme) va como texto en la primera línea del
            detalle (su formulario no tiene el campo).
          example: Pudahuel
        destination_city:
          type: string
          nullable: true
          maxLength: 20
          description: >-
            Ciudad de destino (Transporte/CiudadDest). Con emisores del
            facturador gratuito del SII (MiPyme) va como texto en la primera
            línea del detalle (su formulario no tiene el campo).
          example: Santiago
        transfer_issuer_code:
          type: string
          nullable: true
          enum:
            - '1'
            - '2'
            - '3'
            - '4'
          description: >-
            Quién realiza el traslado de exportación
            (Emisor/GuiaExport/CdgTraslado): 1=Exportador, 2=Agente de Aduana,
            3=Vendedor, 4=Contribuyente autorizado expresamente por el SII. Sólo
            con transport_type 8 o 9 (422 en otro caso); obligatorio con 8 o 9
            en el facturador de mercado (sin él el SII acepta la guía con reparo
            HED-2-804). No disponible para emisores del facturador gratuito del
            SII (422).
          example: '1'
        authorization_resolution_number:
          type: integer
          nullable: true
          minimum: 1
          description: >-
            Número de la resolución del SII que autoriza al contribuyente a
            emitir la guía de exportación (Emisor/GuiaExport/FolioAut).
            Obligatorio con transfer_issuer_code 4 y no permitido con otro
            código (422).
          example: 1234
        authorization_resolution_date:
          type: string
          format: date
          nullable: true
          description: >-
            Fecha de la resolución del SII que autoriza al contribuyente
            (Emisor/GuiaExport/FchAut), formato YYYY-MM-DD. Obligatoria con
            transfer_issuer_code 4 y no permitida con otro código (422).
          example: '2024-03-01'
        departure_port_code:
          type: string
          nullable: true
          description: >-
            Puerto de embarque (Aduana/CodPtoEmbarque). Código o nombre exacto
            de la tabla de puertos de Aduana del SII (ej: 992 o
            AEROP.A.M.BENITEZ; 906=SAN ANTONIO, 905=VALPARAISO). Sólo con
            transport_type 8 o 9 (422 en otro caso); obligatorio con 8 o 9 en el
            facturador de mercado. No disponible para emisores del facturador
            gratuito del SII (422).
          example: '992'
        arrival_port_code:
          type: string
          nullable: true
          description: >-
            Puerto de desembarque (Aduana/CodPtoDesemb). Código o nombre exacto
            de la tabla de puertos de Aduana del SII (ej: 134=NEW YORK,
            292=SANTOS). Sólo con transport_type 8 o 9 (422 en otro caso);
            obligatorio con 8 o 9 en el facturador de mercado. No disponible
            para emisores del facturador gratuito del SII (422).
          example: '134'
        gross_weight:
          type: string
          format: decimal
          nullable: true
          pattern: ^\d{1,10}(\.\d{1,2})?$
          description: >-
            Peso bruto de la carga (Aduana/PesoBruto), mayor a 0 y con hasta 2
            decimales. Sólo con transport_type 8 o 9 (422 en otro caso);
            obligatorio con 8 o 9 en el facturador de mercado. No disponible
            para emisores del facturador gratuito del SII (422).
          example: '1414.00'
        gross_weight_unit_code:
          type: string
          nullable: true
          description: >-
            Unidad del peso bruto (Aduana/CodUnidPesoBruto), según la tabla de
            unidades de medida de Aduana del SII (ej: 6=KN). Sólo con
            transport_type 8 o 9 (422 en otro caso); obligatorio con 8 o 9 en el
            facturador de mercado. No disponible para emisores del facturador
            gratuito del SII (422).
          example: '6'
        total_packages:
          type: integer
          nullable: true
          minimum: 1
          description: >-
            Total de bultos (Aduana/TotBultos), mayor a 0. Si se envía,
            package_type_code es obligatorio. Sólo con transport_type 8 o 9 (422
            en otro caso). No disponible para emisores del facturador gratuito
            del SII (422).
          example: 3
        package_type_code:
          type: string
          nullable: true
          description: >-
            Tipo de bulto (Aduana/TipoBultos/CodTpoBultos), según la tabla de
            tipos de bulto de Aduana del SII (ej: 22=CAJA DE CARTON).
            Obligatorio si se envía total_packages. Sólo con transport_type 8 o
            9 (422 en otro caso). No disponible para emisores del facturador
            gratuito del SII (422).
          example: '22'
        timber_enabled:
          type: boolean
          description: >-
            Si es true, la guía incluye los datos de origen de la madera para
            CONAF.
          default: false
          example: false
        comuna_rol:
          type: string
          nullable: true
          description: Código de comuna del SII del rol del predio de origen.
          example: '13101'
        manzana_rol:
          type: string
          nullable: true
          description: Manzana del rol del predio de origen.
          example: '12'
        predio_rol:
          type: string
          nullable: true
          description: Predio del rol del predio de origen.
          example: '345'
        geo_ref_system:
          type: string
          nullable: true
          description: 'Código del sistema de referencia geográfica (ej: 1 = WGS84).'
          example: '1'
        latitude:
          type: string
          nullable: true
          description: >-
            Latitud del origen de la madera, como string (normalmente con dos
            decimales, según el SII).
          example: '-33.45'
        longitude:
          type: string
          nullable: true
          description: >-
            Longitud del origen de la madera, como string (normalmente con dos
            decimales, según el SII).
          example: '-70.65'
        conaf_plan_code:
          type: string
          nullable: true
          description: Código del plan de manejo forestal de CONAF.
          example: PM-2024-001
        trailer_plate:
          type: string
          nullable: true
          description: >-
            Patente del carro o remolque (Transporte/PatenteCarro), cuando el
            vehículo lleva uno. Se normaliza igual que transport_plate:
            mayúsculas, sin guion ni espacios, máximo 8 caracteres. Res. Ex. SII
            N°154.
          example: JK1234
        departure_date:
          type: string
          format: date
          nullable: true
          description: >-
            Fecha de inicio del traslado (Transporte/FchSalida), AAAA-MM-DD.
            Res. Ex. SII N°154: obligatoria en la guía desde el 2026-11-01.
          example: '2026-11-02'
        departure_time:
          type: string
          nullable: true
          description: >-
            Hora de inicio del traslado (Transporte/HraSalida), HH:MM (también
            se acepta HH:MM:SS). Res. Ex. SII N°154: obligatoria en la guía
            desde el 2026-11-01.
          example: '08:30'
        arrival_date:
          type: string
          format: date
          nullable: true
          description: >-
            Fecha estimada de llegada (Transporte/FchLlegada), AAAA-MM-DD. No
            puede ser anterior a departure_date (422).
          example: '2026-11-02'
        transfer_reason:
          type: string
          maxLength: 200
          description: >-
            Motivo del traslado. Res. Ex. SII N°154: en un traslado que no es
            venta (transport_type distinto de 1 y 9) permite omitir el precio
            unitario de las líneas. Se imprime en el detalle del documento.
          example: Traslado a bodega central para reposición de stock
        transport_unknown_reason:
          type: string
          maxLength: 100
          description: >-
            Declaración expresa de que no se conocen los datos del transporte
            (patente, RUT del transportista, chofer) y por qué. Res. Ex. SII
            N°154 y nota 4 del Formato DTE 2026-02: desde el 2026-11-01 la guía
            se rechaza sin patente, transportista y chofer salvo que venga esta
            declaración. Se imprime en el detalle del documento.
          example: El cliente retira con transporte propio no informado
        destination_commune_role:
          type: string
          pattern: ^\d{1,6}$
          description: >-
            Rol predial de destino de la madera: comuna
            (ManejoMadera/ComunaRolDestino). Sólo con timber_enabled en true y
            emisor del facturador de mercado; Res. Ex. SII N°75 de 2024,
            obligatorio desde el 2026-11-01.
          example: '13101'
        destination_block_role:
          type: string
          pattern: ^\d{1,6}$
          description: >-
            Rol predial de destino de la madera: manzana
            (ManejoMadera/MnzRolDestino). Sólo con timber_enabled en true y
            emisor del facturador de mercado.
          example: '1234'
        destination_property_role:
          type: string
          pattern: ^\d{1,6}$
          description: >-
            Rol predial de destino de la madera: predio
            (ManejoMadera/PrdRolDestino). Sólo con timber_enabled en true y
            emisor del facturador de mercado.
          example: '56'
        work_execution_notice:
          type: string
          maxLength: 40
          description: >-
            Número del aviso de ejecución de faena de CONAF
            (ManejoMadera/AvisoEjecucionFaena). Sólo con timber_enabled en true
            y emisor del facturador de mercado.
          example: AEF-2026-0457
        destination_latitude:
          type: string
          maxLength: 30
          description: >-
            Latitud del destino de la madera
            (ManejoMadera/LatitudDestinoMadera). Sólo con timber_enabled en true
            y emisor del facturador de mercado.
          example: '-36.82'
        destination_longitude:
          type: string
          maxLength: 30
          description: >-
            Longitud del destino de la madera
            (ManejoMadera/LongitudDestinoMadera). Sólo con timber_enabled en
            true y emisor del facturador de mercado.
          example: '-73.05'
    TraceEvent:
      type: object
      description: >-
        Evento de trazabilidad del SII para un documento (ej: aceptación,
        reclamo, acuse).
      properties:
        event_code:
          type: string
          description: >-
            Código del evento del SII. Algunos comunes: `ACD` (acepta
            contenido), `ERM` (acuse de recibo), `RCD` (reclamo de contenido),
            `RFP` (reclamo forma de pago), `RFT` (reclamo forma de transporte),
            `NCA` (nota de crédito asociada).
          example: ACD
        event_description:
          type: string
          description: Descripción del evento entregada por el SII.
          example: Acepta Contenido del Documento
        event_date:
          type: string
          format: date-time
          description: Fecha y hora del evento en zona horaria de Chile.
        responsable_rut:
          type: integer
          description: RUT (sin DV) de quien registró el evento en el SII.
          nullable: true
        responsable_dv:
          type: string
          description: Dígito verificador del RUT del responsable.
          nullable: true
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        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)

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.