Colossus DTE

v1Referencia de la API

API de facturación electrónica

Conecta tu sistema o tu ERP una vez y emite facturas, facturas exentas y notas de crédito y de débito (DTE) en cada venta. Aquí está todo: cómo autenticarte, cómo emitir sin duplicar y cómo seguir cada documento ante el SII.

URL base
https://api.colossusdte.cl
Formato
REST con JSON
Autenticación
Clave de la API (Bearer)
Versión
v1

Antes de empezar

Tu clave de la API

Creas las claves en el portal, en la página Administración de tu empresa, sección Claves de la API. Ahí también ves el ID del emisor (issuer_id), que va en cada ruta.

Cada clave es de una empresa y de un ambiente: pruebas o emisión real. La URL es la misma; la clave decide el ambiente. Lo que emites con una clave de pruebas va al ambiente de pruebas del SII y no tiene validez tributaria.

La clave se muestra una sola vez: guárdala en el sistema que la usará, nunca en el código ni en el navegador. Dura hasta 366 días; crea la nueva antes de que venza la anterior y revoca la anterior cuando ya no la uses. Si la pierdes, revócala y crea otra.

Permisos

Al crear la clave eliges qué puede hacer. Dale solo lo que tu sistema necesita.

issuer:read
Leer los datos de la empresa y si puede emitir.
documents:read
Leer los documentos emitidos, su estado, su historial y sus envíos.
artifacts:read
Descargar el XML y los PDF, junto con documents:read o receptions:read.
documents:issue
Validar y emitir documentos.
receptions:read
Leer los documentos recibidos y la lista del SII.

Cabeceras

Cada solicitud lleva tu clave en Authorization. X-Request-ID es opcional: un UUID que generas tú y que te devolvemos en la respuesta, útil para encontrar una solicitud si nos escribes. Las respuestas también lo traen cuando no lo envías.

Cabeceras
Authorization: Bearer dte_k1_…
Content-Type: application/json
X-Request-ID: 9b2e6f1c-7d4a-4f0e-8c3b-2a1d5e6f7a80

Montos y fechas

  • Las cantidades y los precios van como texto, con punto decimal ("1", "2.5", "100000"), para no perder precisión. Un número en su lugar se rechaza.
  • Los precios de una factura van sin IVA: calculamos el neto, el IVA y el total. Los montos que te devolvemos son enteros, en pesos.
  • Las fechas van como AAAA-MM-DD; las fechas con hora, en ISO 8601.

Emite una factura

Dos llamadas: validas la venta y, si todo está bien, la emites. La emisión le asigna folio al documento, lo firma, lo timbra y lo envía al SII.

  1. 01

    Valida

    La validación revisa la solicitud con las mismas reglas que la emisión y te devuelve los totales y la fecha de emisión. No emite nada ni usa folios. Si blockers trae algo, por ejemplo un certificado vencido, la emisión se rechazaría ahora.

  2. 02

    Emite con una Idempotency-Key

    Genera un UUID en minúsculas por venta y envíalo en la cabecera Idempotency-Key, con el mismo cuerpo más la fecha y los totales que te devolvió la validación (totales_esperados). Si no coinciden con lo que calculamos, la emisión se rechaza indicando el campo.

  3. 03

    Guarda la clave con la venta

    Si se corta la conexión o no llega la respuesta, repite la emisión con la misma clave y el mismo cuerpo: te devolvemos el mismo documento con el mismo folio (200), nunca uno nuevo. La misma clave con otro cuerpo se rechaza con 409 idempotency_conflict.

Validar y emitir una facturaEjemplo

cURL

# Tu clave de la API y el ID del emisor, del portal.
export DTE_API_KEY='dte_k1_…'
export DTE_ISSUER_ID='…'
API="https://api.colossusdte.cl/v1/issuers/$DTE_ISSUER_ID"

# 1. Valida: no emite nada y te devuelve la fecha y los totales.
curl "$API/documents/validate" \
  -H "Authorization: Bearer $DTE_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "tipo_dte": 33,
    "receptor": {
      "rut": "76543210-3",
      "razon_social": "Ejemplo Comercial SpA",
      "giro": "Venta de artículos de oficina",
      "direccion": "Av. Providencia 1234, oficina 501",
      "comuna": "Providencia"
    },
    "items": [
      { "nombre": "Plan mensual", "cantidad": "1", "precio": "100000" },
      { "nombre": "Horas de soporte", "cantidad": "2.5", "precio": "18000" }
    ]
  }'

# 2. Emite con una Idempotency-Key en minúsculas, una por venta, y la
#    fecha y los totales que te devolvió la validación.
CLAVE=$(uuidgen | tr 'A-F' 'a-f')
curl "$API/documents" \
  -H "Authorization: Bearer $DTE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $CLAVE" \
  -d '{
    "tipo_dte": 33,
    "receptor": {
      "rut": "76543210-3",
      "razon_social": "Ejemplo Comercial SpA",
      "giro": "Venta de artículos de oficina",
      "direccion": "Av. Providencia 1234, oficina 501",
      "comuna": "Providencia"
    },
    "items": [
      { "nombre": "Plan mensual", "cantidad": "1", "precio": "100000" },
      { "nombre": "Horas de soporte", "cantidad": "2.5", "precio": "18000" }
    ],
    "fecha_emision": "2026-10-30",
    "totales_esperados": {
      "neto": 145000,
      "exento": 0,
      "iva": 27550,
      "total": 172550
    }
  }'

Node.js

// Node.js 18 o superior, como módulo (archivo .mjs).
import { randomUUID } from 'node:crypto'

const api = `https://api.colossusdte.cl/v1/issuers/${process.env.DTE_ISSUER_ID}`

// Llama a la API; si responde un error, lanza su mensaje.
async function llamar(ruta, { metodo = 'GET', cuerpo, cabeceras = {} } = {}) {
  const respuesta = await fetch(api + ruta, {
    method: metodo,
    headers: {
      Authorization: `Bearer ${process.env.DTE_API_KEY}`,
      ...(cuerpo && { 'Content-Type': 'application/json' }),
      ...cabeceras,
    },
    body: cuerpo && JSON.stringify(cuerpo),
    signal: AbortSignal.timeout(30_000),
  })
  if (!respuesta.ok) throw new Error((await respuesta.json()).message)
  return respuesta
}

const factura = {
  tipo_dte: 33,
  receptor: {
    rut: '76543210-3',
    razon_social: 'Ejemplo Comercial SpA',
    giro: 'Venta de artículos de oficina',
    direccion: 'Av. Providencia 1234, oficina 501',
    comuna: 'Providencia',
  },
  items: [
    { nombre: 'Plan mensual', cantidad: '1', precio: '100000' },
    { nombre: 'Horas de soporte', cantidad: '2.5', precio: '18000' },
  ],
}

// 1. Valida: no emite nada y te devuelve la fecha y los totales.
const validacion = await (await llamar('/documents/validate', { metodo: 'POST', cuerpo: factura })).json()
if (validacion.blockers.length > 0) throw new Error(validacion.blockers[0].message)

// 2. Emite. Guarda la clave con la venta: si no llega la respuesta,
//    reintenta con la misma clave y el mismo cuerpo.
const clave = randomUUID()
const documento = await (
  await llamar('/documents', {
    metodo: 'POST',
    cuerpo: { ...factura, fecha_emision: validacion.fecha_emision, totales_esperados: validacion.totales },
    cabeceras: { 'Idempotency-Key': clave },
  })
).json()
console.log(documento.folio, documento.state, documento.envio_error)

Python

# Python 3 con requests (pip install requests).
import os
import uuid

import requests

API = f"https://api.colossusdte.cl/v1/issuers/{os.environ['DTE_ISSUER_ID']}"
sesion = requests.Session()
sesion.headers["Authorization"] = f"Bearer {os.environ['DTE_API_KEY']}"


def llamar(metodo, ruta, **opciones):
    """Llama a la API; si responde un error, lanza su mensaje."""
    respuesta = sesion.request(metodo, API + ruta, timeout=30, **opciones)
    if not respuesta.ok:
        raise RuntimeError(respuesta.json()["message"])
    return respuesta


factura = {
    "tipo_dte": 33,
    "receptor": {
        "rut": "76543210-3",
        "razon_social": "Ejemplo Comercial SpA",
        "giro": "Venta de artículos de oficina",
        "direccion": "Av. Providencia 1234, oficina 501",
        "comuna": "Providencia",
    },
    "items": [
        {"nombre": "Plan mensual", "cantidad": "1", "precio": "100000"},
        {"nombre": "Horas de soporte", "cantidad": "2.5", "precio": "18000"},
    ],
}

# 1. Valida: no emite nada y te devuelve la fecha y los totales.
validacion = llamar("POST", "/documents/validate", json=factura).json()
if validacion["blockers"]:
    raise RuntimeError(validacion["blockers"][0]["message"])

# 2. Emite. Guarda la clave con la venta: si no llega la respuesta,
#    reintenta con la misma clave y el mismo cuerpo.
clave = str(uuid.uuid4())
documento = llamar(
    "POST",
    "/documents",
    json={
        **factura,
        "fecha_emision": validacion["fecha_emision"],
        "totales_esperados": validacion["totales"],
    },
    headers={"Idempotency-Key": clave},
).json()
print(documento["folio"], documento["state"], documento["envio_error"])

PHP

<?php
// Llama a la API y devuelve el cuerpo de la respuesta; si responde un
// error, lanza su mensaje.
function llamar(string $metodo, string $ruta, ?array $cuerpo = null, array $cabeceras = []): string
{
    $url = 'https://api.colossusdte.cl/v1/issuers/' . getenv('DTE_ISSUER_ID') . $ruta;
    $cabeceras[] = 'Authorization: Bearer ' . getenv('DTE_API_KEY');
    $opciones = [CURLOPT_CUSTOMREQUEST => $metodo, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 30];
    if ($cuerpo !== null) {
        $cabeceras[] = 'Content-Type: application/json';
        $opciones[CURLOPT_POSTFIELDS] = json_encode($cuerpo, JSON_UNESCAPED_UNICODE);
    }
    $opciones[CURLOPT_HTTPHEADER] = $cabeceras;
    $c = curl_init($url);
    curl_setopt_array($c, $opciones);
    $respuesta = curl_exec($c);
    if ($respuesta === false) {
        throw new RuntimeException(curl_error($c));
    }
    if (curl_getinfo($c, CURLINFO_RESPONSE_CODE) >= 400) {
        throw new RuntimeException(json_decode($respuesta, true)['message']);
    }
    return $respuesta;
}

$factura = [
    'tipo_dte' => 33,
    'receptor' => [
        'rut' => '76543210-3',
        'razon_social' => 'Ejemplo Comercial SpA',
        'giro' => 'Venta de artículos de oficina',
        'direccion' => 'Av. Providencia 1234, oficina 501',
        'comuna' => 'Providencia',
    ],
    'items' => [
        ['nombre' => 'Plan mensual', 'cantidad' => '1', 'precio' => '100000'],
        ['nombre' => 'Horas de soporte', 'cantidad' => '2.5', 'precio' => '18000'],
    ],
];

// 1. Valida: no emite nada y te devuelve la fecha y los totales.
$validacion = json_decode(llamar('POST', '/documents/validate', $factura), true);
if ($validacion['blockers']) {
    throw new RuntimeException($validacion['blockers'][0]['message']);
}

// 2. Emite con un UUID en minúsculas. Guarda la clave con la venta: si no
//    llega la respuesta, reintenta con la misma clave y el mismo cuerpo.
$b = random_bytes(16);
$b[6] = chr(ord($b[6]) & 0x0f | 0x40);
$b[8] = chr(ord($b[8]) & 0x3f | 0x80);
$clave = vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($b), 4));

$documento = json_decode(llamar('POST', '/documents', $factura + [
    'fecha_emision' => $validacion['fecha_emision'],
    'totales_esperados' => $validacion['totales'],
], ['Idempotency-Key: ' . $clave]), true);
echo $documento['folio'], ' ', $documento['state'], PHP_EOL;
Respuesta de la emisiónEjemplo
{
  "id": "5f0c2a8e-3b1d-4c7a-9e62-1d4b8f3a7c90",
  "tipo_dte": 33,
  "folio": 1043,
  "fecha_emision": "2026-10-30",
  "receptor": {
    "rut": "76543210-3",
    "razon_social": "Ejemplo Comercial SpA"
  },
  "totales": { "neto": 145000, "exento": 0, "iva": 27550, "total": 172550 },
  "state": "submitted",
  "submission": {
    "state": "received",
    "track_id": "6153842907",
    "updated_at": "2026-10-30T15:04:12Z"
  },
  "created_at": "2026-10-30T15:04:09Z",
  "warnings": [],
  "envio_error": null
}

Si envio_error no es null, el documento quedó emitido pero no llegó al SII. Con timeout, repite la emisión con la misma Idempotency-Key para enviarlo; con requires_operator, nuestro equipo lo recupera.

Consulta su estado ante el SII

Después de emitir, el SII revisa el documento. Consulta el documento cada pocos minutos hasta que su estado sea accepted, accepted_with_remarks o rejected.

Consultar un documentoEjemplo

cURL

# Con $API y $DTE_API_KEY del ejemplo anterior, y el id de la emisión.
DOCUMENTO_ID='5f0c2a8e-3b1d-4c7a-9e62-1d4b8f3a7c90'
curl "$API/documents/$DOCUMENTO_ID" \
  -H "Authorization: Bearer $DTE_API_KEY"

Node.js

// Con llamar() y documento del ejemplo anterior.
const detalle = await (await llamar(`/documents/${documento.id}`)).json()

// submitted mientras el SII lo revisa; accepted, accepted_with_remarks
// o rejected cuando responde.
console.log(detalle.state, detalle.outcome)

Python

# Con llamar() y documento del ejemplo anterior.
detalle = llamar("GET", f"/documents/{documento['id']}").json()

# submitted mientras el SII lo revisa; accepted, accepted_with_remarks
# o rejected cuando responde.
print(detalle["state"], detalle["outcome"])

PHP

<?php
// Con llamar() y $documento del ejemplo anterior.
$detalle = json_decode(llamar('GET', '/documents/' . $documento['id']), true);

// submitted mientras el SII lo revisa; accepted, accepted_with_remarks
// o rejected cuando responde.
echo $detalle['state'], ' ', $detalle['outcome'] ?? '', PHP_EOL;
RespuestaEjemplo
{
  "id": "5f0c2a8e-3b1d-4c7a-9e62-1d4b8f3a7c90",
  "tipo_dte": 33,
  "folio": 1043,
  "fecha_emision": "2026-10-30",
  "receptor": {
    "rut": "76543210-3",
    "razon_social": "Ejemplo Comercial SpA",
    "giro": "Venta de artículos de oficina",
    "direccion": "Av. Providencia 1234, oficina 501",
    "comuna": "Providencia"
  },
  "totales": { "neto": 145000, "exento": 0, "iva": 27550, "total": 172550 },
  "state": "accepted",
  "submission": {
    "state": "processed",
    "track_id": "6153842907",
    "updated_at": "2026-10-30T15:09:40Z",
    "sii_estado": "EPR"
  },
  "created_at": "2026-10-30T15:04:09Z",
  "outcome": "accepted"
}

Estados de un documento

built
Emitido y firmado, todavía sin llegar al SII. Si la emisión trajo envio_error, ahí está el motivo.
sending
Enviándose al SII.
voided_unsent
Anulado antes de llegar al SII.
submitted
El SII lo recibió y lo está revisando.
accepted
El SII lo aceptó.
accepted_with_remarks
El SII lo aceptó con reparos: observaciones que no lo invalidan.
rejected
El SII lo rechazó y no tiene validez tributaria. Corrige y emite un documento nuevo.

Descarga el XML y el PDF

El XML es el documento tributario firmado, en ISO-8859-1: guarda los bytes tal como llegan, sin convertirlos, porque cualquier cambio invalida la firma. El PDF es su versión impresa; las facturas tienen además una copia cedible.

Descargar el XML y los PDFEjemplo

cURL

# Con $API, $DTE_API_KEY y $DOCUMENTO_ID de los ejemplos anteriores.
curl --fail-with-body -o factura.xml "$API/documents/$DOCUMENTO_ID/dte.xml" \
  -H "Authorization: Bearer $DTE_API_KEY"
curl --fail-with-body -o factura.pdf "$API/documents/$DOCUMENTO_ID/dte.pdf" \
  -H "Authorization: Bearer $DTE_API_KEY"
curl --fail-with-body -o factura-cedible.pdf "$API/documents/$DOCUMENTO_ID/cedible.pdf" \
  -H "Authorization: Bearer $DTE_API_KEY"

Node.js

import { writeFile } from 'node:fs/promises'

// Con llamar() y documento de los ejemplos anteriores. Guarda los bytes
// tal como llegan: el XML va en ISO-8859-1 y no debe convertirse.
const archivos = {
  'dte.xml': 'factura.xml',
  'dte.pdf': 'factura.pdf',
  'cedible.pdf': 'factura-cedible.pdf',
}
for (const [ruta, archivo] of Object.entries(archivos)) {
  const respuesta = await llamar(`/documents/${documento.id}/${ruta}`)
  await writeFile(archivo, Buffer.from(await respuesta.arrayBuffer()))
}

Python

# Con llamar() y documento de los ejemplos anteriores. Guarda los bytes
# tal como llegan: el XML va en ISO-8859-1 y no debe convertirse.
archivos = {
    "dte.xml": "factura.xml",
    "dte.pdf": "factura.pdf",
    "cedible.pdf": "factura-cedible.pdf",
}
for ruta, archivo in archivos.items():
    respuesta = llamar("GET", f"/documents/{documento['id']}/{ruta}")
    with open(archivo, "wb") as salida:
        salida.write(respuesta.content)

PHP

<?php
// Con llamar() y $documento de los ejemplos anteriores. Guarda los bytes
// tal como llegan: el XML va en ISO-8859-1 y no debe convertirse.
$archivos = [
    'dte.xml' => 'factura.xml',
    'dte.pdf' => 'factura.pdf',
    'cedible.pdf' => 'factura-cedible.pdf',
];
foreach ($archivos as $ruta => $archivo) {
    file_put_contents($archivo, llamar('GET', "/documents/{$documento['id']}/$ruta"));
}

Errores

Un error responde con un código estable para tu sistema y un mensaje en español para tu equipo. Una solicitud rechazada no emite nada ni usa folios.

Cuando algún campo no es válido (422), errors trae cada problema, con el campo, un código y un mensaje:

422Ejemplo
{
  "code": "validation_failed",
  "message": "La solicitud tiene errores. Revisa cada campo.",
  "errors": [
    {
      "field": "receptor.comuna",
      "code": "required",
      "message": "Este campo es obligatorio."
    }
  ]
}

Códigos por respuesta

400La solicitud no tiene la forma esperada

malformed_request
El cuerpo no es un objeto JSON con la forma de la solicitud: un campo desconocido o repetido, un nombre en mayúsculas, o un número donde va un decimal en texto.
body_too_large
El cuerpo es demasiado grande.
invalid_idempotency_key
Falta la Idempotency-Key o no es un UUID en minúsculas.

401La clave no es válida

unauthorized
Falta la clave, está mal escrita, venció o fue revocada. La respuesta es la misma en todos los casos.

403La clave no tiene permiso, o la empresa está suspendida

insufficient_scope
La clave no tiene el permiso que pide la ruta.
issuer_suspended
La empresa está suspendida y por ahora no puede emitir ni leer sus documentos. Escríbenos a contacto@colossusdte.cl.

404No existe, o no es de tu empresa

not_found
La ruta no existe, el documento no es de tu empresa, o pediste la copia cedible de una nota. Una clave de otra empresa o de otro ambiente recibe la misma respuesta.

409Algo impide hacerlo ahora

idempotency_conflict
Ya usaste esta Idempotency-Key con otra solicitud. Repite exactamente la solicitud original, o usa una clave nueva para un documento nuevo.
signer_not_confirmed
Falta confirmar a la persona que firma los documentos de la empresa.
no_active_certificate
La empresa no tiene un certificado digital activo.
certificate_expired
El certificado digital de la empresa venció.
certificate_not_yet_valid
El certificado digital de la empresa todavía no está vigente.
certificate_not_active
El certificado digital de la empresa no está activo.
no_folios
No quedan folios para ese tipo de documento. Pide un nuevo archivo de folios desde el portal.
document_not_printable
El documento fue anulado o el SII lo rechazó: no tiene PDF.
tenant_without_unidad_sii
Falta la oficina del SII de la empresa, que va impresa en el documento.
issuer_without_resolution
Falta la autorización del SII de la empresa, que va impresa en el documento.
printout_totals_too_long
Los montos son demasiado largos para imprimirlos.
print_sample_multipage
Solo en pruebas: el documento ocupa más de una página, y la muestra impresa para el SII debe caber en una.

422Algún campo no es válido

validation_failed
Uno o más campos no son válidos. errors trae cada uno, con el campo (como items[2].precio), un código y un mensaje en español.

503La solicitud no alcanzó a terminar

timeout
La solicitud no terminó a tiempo. Repite la emisión con la misma Idempotency-Key: si el documento alcanzó a quedar emitido, te lo devuelve.

Referencia

Todas las rutas de la API, con sus permisos, parámetros, campos y respuestas. URL base: https://api.colossusdte.cl.

Tu empresa

Los datos de la empresa de la clave y si puede emitir.

GET/v1/issuers/{issuer_id}

Leer los datos de tu empresa

Los datos con que tu empresa emite: RUT, razón social, giro y dirección, si la clave es de pruebas o de emisión real, y la autorización del SII. Responde aunque la empresa esté suspendida.

Permisos:issuer:read

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.

Respuesta

200Los datos de la empresa.application/json

Campos de la respuesta (13)
issuer_idUUID
El ID del emisor.
environmenttexto
certificacion si la clave es de pruebas, produccion si es de emisión real.certificacionproduccion
resolucion_nroentero o null
Número de la autorización del SII con que la empresa emite; null si todavía no la tiene.
resolucion_fechafecha o null
Fecha de esa autorización; null si todavía no la tiene.
tenantobjeto
La empresa.
tenant.idUUID
El id de la empresa, el mismo en pruebas y en emisión real.
tenant.ruttexto
RUT de la empresa.
tenant.razon_socialtexto
Razón social.
tenant.girotexto
Giro.
tenant.actecolista de enteros
Códigos de actividad económica de la empresa ante el SII.
tenant.direcciontexto
Dirección.
tenant.comunatexto
Comuna.
tenant.ciudadtexto o null
Ciudad; null si no la tiene registrada.

Errores:401403404

GET/v1/issuers/{issuer_id}/status

Saber si tu empresa puede emitir

Indica si la empresa está activa o suspendida. Responde aunque esté suspendida.

Permisos:issuer:read

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.

Respuesta

200El estado de la empresa.application/json

Campos de la respuesta (2)
issuer_idUUID
El ID del emisor.
statustexto
active si la empresa puede emitir; suspended si está suspendida.activesuspended

Errores:401403404

Emisión

Facturas (33), facturas exentas (34), notas de débito (56) y notas de crédito (61).

POST/v1/issuers/{issuer_id}/documents/validate

Validar un documento antes de emitirlo

Revisa la solicitud con las mismas reglas que la emisión y te devuelve los totales, la fecha de emisión, los avisos y lo que impediría emitir ahora. No emite nada ni usa folios: puedes llamarla las veces que quieras.

Permisos:documents:issue

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.

Cuerpo de la solicitud application/json

tipo_dteenteroobligatorio
Tipo de documento: 33 factura, 34 factura exenta, 56 nota de débito, 61 nota de crédito.33345661
fecha_emisionfecha
Fecha de emisión. En la validación es opcional: sin ella es hoy, en hora de Santiago, y nunca puede ser futura. Al emitir es obligatoria: envía la que te devolvió la validación.
fecha_vencimientofecha
Fecha de vencimiento del pago.
forma_pagoentero
Forma de pago: 1 contado, 2 crédito, 3 sin costo.123
receptorobjetoobligatorio
Tu cliente, quien recibe el documento.
receptor.ruttextoobligatorio
RUT con dígito verificador, como 76543210-3.
receptor.razon_socialtexto, hasta 100 caracteresobligatorio
Razón social o nombre.
receptor.girotexto, hasta 40 caracteres
Giro. Obligatorio en facturas.
receptor.direcciontexto, hasta 70 caracteres
Dirección. Obligatoria en facturas.
receptor.comunatexto, hasta 20 caracteres
Comuna. Obligatoria en facturas.
receptor.ciudadtexto, hasta 20 caracteres
Ciudad.
receptor.contactotexto, hasta 80 caracteres
Teléfono o correo de contacto.
receptor.correotexto, hasta 80 caracteres
Correo electrónico.
itemslista de objetosobligatorio
Las líneas del documento; al menos una.
items[].nombretexto, hasta 80 caracteresobligatorio
Nombre del producto o servicio.
items[].descripciontexto
Descripción adicional.
items[].cantidaddecimal en texto
Cantidad, en texto y con punto decimal: "1" o "2.5". Obligatoria, salvo en una nota que solo corrige texto.
items[].unidadtexto
Unidad de medida, como "kg" o "hr".
items[].preciodecimal en texto
Precio unitario sin IVA, en texto: "100000" o "990.5". Obligatorio, salvo en una nota que solo corrige texto.
items[].descuento_porcentajetexto
Descuento en porcentaje, en texto y con hasta dos decimales: "10" o "12.5". Usa este o descuento_monto, no los dos.
items[].descuento_montoentero
Descuento en pesos. Usa este o descuento_porcentaje, no los dos.
items[].exentobooleano
Marca la línea como exenta de IVA. En una factura exenta (34), todas lo son.
referenciaslista de objetos
Los documentos a los que se refiere este. Una nota de crédito o de débito indica aquí el documento que modifica.
referencias[].tipo_documentotextoobligatorio
Tipo del documento referido, como "33".
referencias[].foliotextoobligatorio
Folio del documento referido.
referencias[].fechafechaobligatorio
Fecha de emisión del documento referido.
referencias[].codigoentero
En una nota: 1 anula el documento, 2 corrige un texto, 3 corrige montos.123
referencias[].razontexto, hasta 90 caracteres
Motivo de la referencia.
descuentos_recargoslista de objetos
Descuentos o recargos sobre el total del documento.
descuentos_recargos[].tipotextoobligatorio
D para un descuento, R para un recargo.DR
descuentos_recargos[].glosatexto
Descripción.
descuentos_recargos[].porcentajetexto
Porcentaje, en texto. Usa porcentaje o monto, no los dos.
descuentos_recargos[].montoentero
Monto en pesos. Usa porcentaje o monto, no los dos.
descuentos_recargos[].exentobooleano
Aplica a las líneas exentas.
totales_esperadosobjeto
Los totales que te devolvió la validación. Cada uno debe coincidir con el que calculamos; si no, la solicitud se rechaza indicando cuál. Al emitir son obligatorios.
totales_esperados.netoenteroobligatorio
Monto neto, en pesos.
totales_esperados.exentoenteroobligatorio
Monto exento, en pesos.
totales_esperados.ivaenteroobligatorio
IVA, en pesos.
totales_esperados.totalenteroobligatorio
Monto total, en pesos.

Respuesta

200La solicitud es válida. Si blockers trae algo, la emisión se rechazaría ahora por ese motivo.application/json

Campos de la respuesta (13)
tipo_dteentero
Tipo de documento: 33 factura, 34 factura exenta, 56 nota de débito, 61 nota de crédito.
fecha_emisionfecha
La fecha de emisión que tendrá el documento. Envíala al emitir.
totalesobjeto
Los totales que calculamos. Envíalos al emitir, como totales_esperados.
totales.netoentero
Monto neto, en pesos.
totales.exentoentero
Monto exento, en pesos.
totales.ivaentero
IVA, en pesos.
totales.totalentero
Monto total, en pesos.
warningslista de objetos
Avisos que no impiden emitir, como folios por acabarse o un certificado por vencer.
warnings[].codetexto
Código del aviso, estable, para que tu sistema lo reconozca.
warnings[].messagetexto
El aviso en español, para mostrarlo a tu equipo.
blockerslista de objetos
Lo que impediría emitir ahora, como un certificado vencido o la falta de folios. Si viene vacía, puedes emitir.
blockers[].codetexto
Código del motivo, estable, para que tu sistema lo reconozca.
blockers[].messagetexto
El motivo en español, para mostrarlo a tu equipo.

Errores:400401403404422

POST/v1/issuers/{issuer_id}/documents

Emitir un documento y enviarlo al SII

Le asigna su folio, lo firma, lo timbra y lo envía al SII en la misma llamada, en hasta 25 segundos. Lleva una Idempotency-Key: un reintento con la misma clave y el mismo cuerpo te devuelve el mismo documento, nunca uno nuevo. Si el documento quedó emitido pero no alcanzó a llegar al SII, la respuesta lo indica en envio_error.

Permisos:documents:issue

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.
Idempotency-KeyUUID· cabeceraobligatorio
Un UUID en minúsculas, uno por documento. Guárdalo con la venta y repítelo en cada reintento de esa venta.

Cuerpo de la solicitud application/json

Los mismos campos que en Validar un documento antes de emitirlo.

En esta ruta también son obligatorios: fecha_emision y totales_esperados.

Respuesta

201El documento quedó emitido con esta llamada.application/json

Campos de la respuesta (24)
idUUID
El id del documento.
tipo_dteentero
Tipo de documento: 33 factura, 34 factura exenta, 56 nota de débito, 61 nota de crédito.
folioentero
Folio del documento.
fecha_emisionfecha
Fecha de emisión.
receptorobjeto
Quien recibe el documento.
receptor.ruttexto
RUT del receptor.
receptor.razon_socialtexto
Razón social o nombre del receptor.
totalesobjeto
Totales del documento.
totales.netoentero
Monto neto, en pesos.
totales.exentoentero
Monto exento, en pesos.
totales.ivaentero
IVA, en pesos.
totales.totalentero
Monto total, en pesos.
statetexto
Estado del documento ante el SII.builtsendingvoided_unsentsubmittedacceptedaccepted_with_remarksrejected
submissionobjeto o null
El último envío del documento al SII; null si todavía no se envía.
submission.statetexto
Estado de ese envío.pendinguploadingunknownreceivedprocessedreconciledresolvedenvelope_rejectednot_received
submission.track_idtexto o null
El número de seguimiento que el SII le dio al envío (track ID); null hasta que el SII lo recibe.
submission.updated_atfecha y hora
Última actualización del envío.
created_atfecha y hora
Cuándo lo registramos.
warningslista de objetos
Avisos que no impiden emitir, como folios por acabarse o un certificado por vencer.
warnings[].codetexto
Código del aviso, estable, para que tu sistema lo reconozca.
warnings[].messagetexto
El aviso en español, para mostrarlo a tu equipo.
envio_errorobjeto o null
null si el documento llegó al SII. Si no, el documento quedó emitido (built) y aquí viene el motivo: con timeout, repite la emisión con la misma Idempotency-Key para enviarlo; con requires_operator, nuestro equipo lo recupera.
envio_error.codetexto
Código del motivo, como timeout o requires_operator.
envio_error.messagetexto
El motivo en español.

200Un reintento: el documento ya estaba emitido con esta Idempotency-Key. Es el mismo documento, con el mismo folio.application/json

Los mismos campos que la respuesta 201.

Errores:400401403404409422503

Documentos emitidos

Su estado ante el SII, su historial, su XML y sus PDF, y los envíos a tu cliente.

GET/v1/issuers/{issuer_id}/documents

Listar los documentos emitidos

Los documentos que emitió tu empresa, del más reciente al más antiguo y por páginas. Puedes filtrar por tipo, folio, RUT del receptor, estado o fecha de emisión.

Permisos:documents:read

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.
limitentero· en la consulta
Cuántos documentos por página, de 1 a 100. Si no lo indicas, 50.
cursortexto· en la consulta
El next_cursor de una página, para leer la siguiente. Sin cursor lees la primera.
tipo_dteentero· en la consulta
Solo los documentos de este tipo, como 33.
folioentero· en la consulta
Solo el documento con este folio.
receptor_ruttexto· en la consulta
Solo los documentos emitidos a este RUT, con o sin puntos.
statetexto· en la consulta
Solo los documentos en este estado.builtsendingvoided_unsentsubmittedacceptedaccepted_with_remarksrejected
desdefecha· en la consulta
Desde esta fecha de emisión, incluida.
hastafecha· en la consulta
Hasta esta fecha de emisión, incluida.

Respuesta

200Una página de documentos.application/json

Campos de la respuesta (20)
documentslista de objetos
Los documentos de esta página.
documents[].idUUID
El id del documento.
documents[].tipo_dteentero
Tipo de documento: 33 factura, 34 factura exenta, 56 nota de débito, 61 nota de crédito.
documents[].folioentero
Folio del documento.
documents[].fecha_emisionfecha
Fecha de emisión.
documents[].receptorobjeto
Quien recibe el documento.
documents[].receptor.ruttexto
RUT del receptor.
documents[].receptor.razon_socialtexto
Razón social o nombre del receptor.
documents[].totalesobjeto
Totales del documento.
documents[].totales.netoentero
Monto neto, en pesos.
documents[].totales.exentoentero
Monto exento, en pesos.
documents[].totales.ivaentero
IVA, en pesos.
documents[].totales.totalentero
Monto total, en pesos.
documents[].statetexto
Estado del documento ante el SII.builtsendingvoided_unsentsubmittedacceptedaccepted_with_remarksrejected
documents[].submissionobjeto o null
El último envío del documento al SII; null si todavía no se envía.
documents[].submission.statetexto
Estado de ese envío.pendinguploadingunknownreceivedprocessedreconciledresolvedenvelope_rejectednot_received
documents[].submission.track_idtexto o null
El número de seguimiento que el SII le dio al envío (track ID); null hasta que el SII lo recibe.
documents[].submission.updated_atfecha y hora
Última actualización del envío.
documents[].created_atfecha y hora
Cuándo lo registramos.
next_cursortexto o null
Cursor de la página siguiente; null en la última.

Errores:401403404422

GET/v1/issuers/{issuer_id}/documents/{document_id}

Consultar un documento y su estado ante el SII

El documento con su receptor, sus totales, su estado y la última respuesta del SII. Consúltalo después de emitir para saber si el SII lo aceptó.

Permisos:documents:read

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.
document_idtexto· en la rutaobligatorio
El id del documento, de la emisión o de la lista.

Respuesta

200El documento.application/json

Campos de la respuesta (23)
idUUID
El id del documento.
tipo_dteentero
Tipo de documento: 33 factura, 34 factura exenta, 56 nota de débito, 61 nota de crédito.
folioentero
Folio del documento.
fecha_emisionfecha
Fecha de emisión.
receptorobjeto
Quien recibe el documento.
receptor.ruttexto
RUT del receptor.
receptor.razon_socialtexto
Razón social o nombre del receptor.
receptor.girotexto o null
Giro del receptor.
receptor.direcciontexto o null
Dirección del receptor.
receptor.comunatexto o null
Comuna del receptor.
totalesobjeto
Totales del documento.
totales.netoentero
Monto neto, en pesos.
totales.exentoentero
Monto exento, en pesos.
totales.ivaentero
IVA, en pesos.
totales.totalentero
Monto total, en pesos.
statetexto
Estado del documento ante el SII.builtsendingvoided_unsentsubmittedacceptedaccepted_with_remarksrejected
submissionobjeto o null
El último envío del documento al SII; null si todavía no se envía.
submission.statetexto
Estado de ese envío.pendinguploadingunknownreceivedprocessedreconciledresolvedenvelope_rejectednot_received
submission.track_idtexto o null
El número de seguimiento que el SII le dio al envío (track ID); null hasta que el SII lo recibe.
submission.updated_atfecha y hora
Última actualización del envío.
submission.sii_estadotexto o null
El último estado del envío según el SII, con su propio código, como EPR (envío procesado).
created_atfecha y hora
Cuándo lo registramos.
outcometexto o null
La respuesta del SII al documento; null mientras no responde.acceptedaccepted_with_remarksrejectednot_received

Errores:401403404

GET/v1/issuers/{issuer_id}/documents/{document_id}/history

Ver el historial de un documento

Cada paso del documento, con su fecha y hora: la emisión, los envíos al SII y las respuestas del SII.

Permisos:documents:read

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.
document_idtexto· en la rutaobligatorio
El id del documento, de la emisión o de la lista.

Respuesta

200El historial.application/json

Campos de la respuesta (4)
eventslista de objetos
Los pasos del documento.
events[].atfecha y hora
Fecha y hora del paso.
events[].kindtexto
Qué ocurrió.issuedvoidedenvelopedreceiver_envelopedsubmittedsii_uploadsii_upload_unknownsii_statussii_document_statusprocessedoutcome_recordedreconciledcaf_expiredother
events[].codetexto o null
El detalle, cuando lo hay: la respuesta del SII al documento, el estado que informó el SII (como EPR o DOK) o el motivo; null si no hay detalle.

Errores:401403404

GET/v1/issuers/{issuer_id}/documents/{document_id}/dte.xml

Descargar el XML firmado

El documento tal como se firmó y se envió al SII, en ISO-8859-1. Guarda los bytes tal como llegan: convertirlos a otra codificación invalida la firma.

Permisos:documents:readartifacts:read

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.
document_idtexto· en la rutaobligatorio
El id del documento, de la emisión o de la lista.

Respuesta

200El XML, como archivo adjunto.application/xml; charset=ISO-8859-1

Errores:401403404

GET/v1/issuers/{issuer_id}/documents/{document_id}/dte.pdf

Descargar el PDF

La versión impresa del documento, con su timbre electrónico.

Permisos:documents:readartifacts:read

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.
document_idtexto· en la rutaobligatorio
El id del documento, de la emisión o de la lista.

Respuesta

200El PDF, como archivo adjunto.application/pdf

Errores:401403404409

GET/v1/issuers/{issuer_id}/documents/{document_id}/cedible.pdf

Descargar la copia cedible

La copia cedible de una factura (33 o 34), en PDF. Las notas de crédito y de débito no tienen copia cedible.

Permisos:documents:readartifacts:read

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.
document_idtexto· en la rutaobligatorio
El id del documento, de la emisión o de la lista.

Respuesta

200El PDF de la copia cedible, como archivo adjunto.application/pdf

Errores:401403404409

GET/v1/issuers/{issuer_id}/documents/{document_id}/deliveries

Ver los envíos del documento a tu cliente

Los envíos del XML al correo de intercambio de tu cliente, con su estado y lo que pasó en cada uno.

Permisos:documents:read

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.
document_idtexto· en la rutaobligatorio
El id del documento, de la emisión o de la lista.

Respuesta

200Los envíos.application/json

Campos de la respuesta (8)
deliverieslista de objetos
Los envíos del documento a tu cliente.
deliveries[].idUUID
El id del envío.
deliveries[].recipienttexto o null
El correo de intercambio de tu cliente; null si no lo encontramos.
deliveries[].statetexto
Estado del envío.pendingsentdeliveredfailed
deliveries[].eventslista de objetos
Lo que pasó con el envío.
deliveries[].events[].atfecha y hora
Fecha y hora.
deliveries[].events[].kindtexto
Qué ocurrió.sentdeliveredfailedstale_list
deliveries[].events[].codetexto o null
El motivo de una falla, como receiver_not_listed: tu cliente no tiene un correo de intercambio registrado en el SII. null si no falló.

Errores:401403404

Documentos recibidos

Las facturas de tus proveedores y la lista del SII para compararlas.

GET/v1/issuers/{issuer_id}/received-documents

Listar los documentos que recibiste

Los documentos que tus proveedores enviaron a tu empresa y que nos llegaron, con su recepción y lo que respondiste. Por páginas; puedes filtrar por tipo, folio, RUT del proveedor o fecha de emisión.

Permisos:receptions:read

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.
limitentero· en la consulta
Cuántos documentos por página, de 1 a 100. Si no lo indicas, 50.
cursortexto· en la consulta
El next_cursor de una página, para leer la siguiente. Sin cursor lees la primera.
tipo_dteentero· en la consulta
Solo los documentos de este tipo, como 33.
folioentero· en la consulta
Solo el documento con este folio.
emisor_ruttexto· en la consulta
Solo los documentos de este proveedor, por su RUT, con o sin puntos.
desdefecha· en la consulta
Desde esta fecha de emisión, incluida.
hastafecha· en la consulta
Hasta esta fecha de emisión, incluida.

Respuesta

200Una página de documentos recibidos.application/json

Campos de la respuesta (24)
documentslista de objetos
Los documentos de esta página.
documents[].idUUID
El id del documento recibido.
documents[].tipo_dteentero
Tipo de documento, como 33 (factura).
documents[].folioentero
Folio del documento.
documents[].fecha_emisionfecha o null
Fecha de emisión; null si no se puede leer.
documents[].estado_siitexto o null
El documento frente a la lista del SII de lo que recibió tu empresa: matched coincide, differs tiene otro total o fecha, not_in_sii no está en la lista, null mientras no se puede saber.matcheddiffersnot_in_sii
documents[].emisorobjeto
Tu proveedor, quien emitió el documento.
documents[].emisor.ruttexto
RUT del proveedor.
documents[].emisor.razon_socialtexto o null
Razón social del proveedor, como viene en el documento; null si no se puede leer.
documents[].receptor_ruttexto
El RUT de tu empresa, como receptora.
documents[].monto_totalentero
Monto total, en pesos.
documents[].receptionobjeto
Cómo nos llegó el documento.
documents[].reception.estadoentero
Resultado de la recepción: 0 bien, 1 error de firma, 2 error en el RUT del emisor, 3 error en el RUT del receptor, 4 repetido.01234
documents[].reception.glosatexto
El resultado en palabras.
documents[].reception.received_atfecha y hora
Cuándo llegó.
documents[].exchangeobjeto
Lo que tu empresa respondió al proveedor.
documents[].exchange.acuse_atfecha y hora o null
Cuándo se envió el acuse de recibo; null si todavía no.
documents[].exchange.resultadoobjeto o null
La respuesta comercial al documento; null si no la hay.
documents[].exchange.resultado.estadoentero
0 aceptado, 1 aceptado con diferencias, 2 rechazado.012
documents[].exchange.resultado.glosatexto o null
El motivo, si lo hay.
documents[].exchange.resultado.atfecha y hora
Cuándo se respondió.
documents[].exchange.recibo_atfecha y hora o null
Cuándo se otorgó el recibo de mercaderías o servicios (Ley 19.983); null si no se ha otorgado.
documents[].created_atfecha y hora
Cuándo lo registramos.
next_cursortexto o null
Cursor de la página siguiente; null en la última.

Errores:401403404422

GET/v1/issuers/{issuer_id}/sii-received-documents

Comparar con la lista del SII

La lista del SII de los documentos emitidos a tu empresa, según nuestra última lectura diaria, cada uno cruzado con el documento recibido que le corresponde. Así ves lo que el SII tiene y a ti no te llegó, y cuánto plazo queda para reclamarlo.

Permisos:receptions:read

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.
limitentero· en la consulta
Cuántos documentos por página, de 1 a 100. Si no lo indicas, 50.
cursortexto· en la consulta
El next_cursor o el prev_cursor de una página, para leer la siguiente o la anterior. Sin cursor lees la primera.
tipo_dteentero· en la consulta
Solo los documentos de este tipo, como 33.
folioentero· en la consulta
Solo el documento con este folio.
emisor_ruttexto· en la consulta
Solo los documentos de este proveedor, por su RUT, con o sin puntos.
estadotexto· en la consulta
Solo los de este cruce: matched (coinciden), differs (hay diferencias) u only_in_sii (solo están en el SII).matcheddiffersonly_in_sii
desdefecha· en la consulta
Desde esta fecha de recepción en el SII, incluida.
hastafecha· en la consulta
Hasta esta fecha de recepción en el SII, incluida.
vence_antesfecha y hora· en la consulta
Una fecha y hora con su zona, como 2026-11-06T23:59:59-03:00. Solo las facturas (33, 34 y 43) cuyo plazo para reclamar sigue abierto y vence hasta ese momento, sin aceptación ni reclamo en el registro del SII.

Respuesta

200Una página de la lista del SII, con la última lectura.application/json

Campos de la respuesta (32)
documentslista de objetos
Los documentos de esta página, según la lista del SII.
documents[].idUUID
El id de este documento en la lista del SII.
documents[].tipo_dteentero
Tipo de documento, como 33 (factura).
documents[].folioentero
Folio del documento.
documents[].emisorobjeto
Tu proveedor, quien emitió el documento.
documents[].emisor.ruttexto
RUT del proveedor.
documents[].emisor.razon_socialtexto
Razón social del proveedor, como la muestra el SII.
documents[].fecha_emisionfecha
Fecha de emisión.
documents[].fecha_recepcion_siifecha
El día en que el SII lo recibió; el SII no informa la hora.
documents[].montosobjeto
Montos según el SII.
documents[].montos.netoentero o null
Monto neto, en pesos; null si el SII no lo informa.
documents[].montos.exentoentero o null
Monto exento, en pesos; null si el SII no lo informa.
documents[].montos.ivaentero o null
IVA, en pesos; null si el SII no lo informa.
documents[].montos.totalentero
Monto total, en pesos.
documents[].evento_siitexto
El código de evento que muestra el SII, tal como lo entrega.
documents[].estadotexto
matched: coincide con un documento recibido. differs: hay uno del mismo proveedor, tipo y folio, con otro total o fecha. only_in_sii: el SII lo tiene y a nosotros no nos llegó.matcheddiffersonly_in_sii
documents[].received_document_idtexto o null
El id del documento recibido que le corresponde, en matched y differs; null en only_in_sii.
documents[].first_seen_atfecha y hora
La primera lectura en que apareció.
documents[].last_seen_atfecha y hora
La última lectura en que apareció.
documents[].plazo_reclamo_hastafecha y hora o null
El último segundo para reclamarlo, en hora de Santiago: el octavo día corrido después de que el SII lo recibió, a las 23:59:59 (Ley 19.983). Solo en los tipos 33, 34 y 43; null en los demás.
documents[].eventos_siilista de objetos o null
Sus eventos en el registro de aceptación o reclamo del SII, según la última consulta; null si no se ha consultado.
documents[].eventos_sii[].codigotexto
ACD o ERM lo aceptan; RCD, RFP o RFT lo reclaman; NCA y ENC son notas de crédito.
documents[].eventos_sii[].fechatexto
La fecha, como la muestra el registro.
documents[].eventos_read_atfecha y hora o null
Cuándo se consultaron esos eventos; null si nunca.
documents[].respuestatexto o null
reclamado si hay un reclamo; aceptado si hay una aceptación y ningún reclamo; null si no hay ninguno.aceptadoreclamado
next_cursortexto o null
Cursor de la página siguiente; null en la última.
prev_cursortexto o null
Cursor de la página anterior; null en la primera.
has_prevbooleano
Si hay una página antes de esta.
last_readobjeto o null
La última lectura diaria de la lista del SII; null antes de la primera.
last_read.read_atfecha y hora o null
La última lectura que funcionó.
last_read.failed_atfecha y hora o null
El último intento que falló, si fue después de read_at.
last_read.error_codetexto o null
Por qué falló, como certificate_unusable.

Errores:401403404422

GET/v1/issuers/{issuer_id}/received-documents/{received_document_id}

Consultar un documento recibido

Un documento recibido, con sus totales, su recepción y lo que respondiste.

Permisos:receptions:read

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.
received_document_idtexto· en la rutaobligatorio
El id del documento recibido, de la lista de recibidos.

Respuesta

200El documento recibido.application/json

Campos de la respuesta (28)
idUUID
El id del documento recibido.
tipo_dteentero
Tipo de documento, como 33 (factura).
folioentero
Folio del documento.
fecha_emisionfecha o null
Fecha de emisión; null si no se puede leer.
estado_siitexto o null
El documento frente a la lista del SII de lo que recibió tu empresa: matched coincide, differs tiene otro total o fecha, not_in_sii no está en la lista, null mientras no se puede saber.matcheddiffersnot_in_sii
emisorobjeto
Tu proveedor, quien emitió el documento.
emisor.ruttexto
RUT del proveedor.
emisor.razon_socialtexto o null
Razón social del proveedor, como viene en el documento; null si no se puede leer.
receptor_ruttexto
El RUT de tu empresa, como receptora.
monto_totalentero
Monto total, en pesos.
receptionobjeto
Cómo nos llegó el documento.
reception.estadoentero
Resultado de la recepción: 0 bien, 1 error de firma, 2 error en el RUT del emisor, 3 error en el RUT del receptor, 4 repetido.
reception.glosatexto
El resultado en palabras.
reception.received_atfecha y hora
Cuándo llegó.
reception.file_nametexto
Nombre del archivo recibido.
exchangeobjeto
Lo que tu empresa respondió al proveedor.
exchange.acuse_atfecha y hora o null
Cuándo se envió el acuse de recibo; null si todavía no.
exchange.resultadoobjeto o null
La respuesta comercial al documento; null si no la hay.
exchange.resultado.estadoentero
0 aceptado, 1 aceptado con diferencias, 2 rechazado.012
exchange.resultado.glosatexto o null
El motivo, si lo hay.
exchange.resultado.atfecha y hora
Cuándo se respondió.
exchange.recibo_atfecha y hora o null
Cuándo se otorgó el recibo de mercaderías o servicios (Ley 19.983); null si no se ha otorgado.
created_atfecha y hora
Cuándo lo registramos.
totalesobjeto
Totales como vienen en el documento.
totales.netoentero o null
Monto neto, en pesos; null si falta o no se puede leer.
totales.exentoentero o null
Monto exento, en pesos; null si falta o no se puede leer.
totales.ivaentero o null
IVA, en pesos; null si falta o no se puede leer.
totales.totalentero o null
Monto total, en pesos; null si falta o no se puede leer.

Errores:401403404

GET/v1/issuers/{issuer_id}/received-documents/{received_document_id}/dte.xml

Descargar el XML de un documento recibido

El XML tal como lo envió tu proveedor, en la codificación que declara su envío.

Permisos:receptions:readartifacts:read

Parámetros

issuer_idUUID· en la rutaobligatorio
El ID del emisor: la empresa y el ambiente de tu clave. Lo ves en el portal junto a tus claves.
received_document_idtexto· en la rutaobligatorio
El id del documento recibido, de la lista de recibidos.

Respuesta

200El XML de tu proveedor.application/xml

Errores:401403404

Te acompañamos en la integración

Si mantienes el ERP de una o varias empresas, o tienes una duda que esta página no responde, escríbenos a contacto@colossusdte.cl. Te responde una persona.

Crear cuenta

Referencia generada desde la descripción de la API v1, actualizada el 30 de octubre de 2026.