La norma la publica el SII. El mensaje de error también. Lo que no está escrito en ninguna parte es la línea del medio: qué significaba ese mensaje de verdad.
Estos son los rechazos que nos tocaron a nosotros certificando, entre agosto y septiembre de 2026. Son nuestros: ninguno viene del documento de un tercero. Cada uno lleva su fecha, porque un defecto de septiembre contado sin fecha se lee como el estado de hoy — y eso vale doble cuando se habla de un organismo público.
Ninguno de estos casos enseña a saltarse una validación. Enseñan a cumplirla, que es lo contrario.
El que no está en ninguna guía: el esquema lo permite y el validador no
(2026-09-01 · arreglado)
Lo que decía el SII: REPARO — Firma Timbre Electrónico Incorrecta, código 510, sección TED, en los cinco documentos. Y al pedir la revisión del set, un segundo mensaje que parecía de otro tema: «CASO-1 Tipo Doc. 00 Folio 0 / El Documento no esta en el envio».
Qué pasaba de verdad: la razón social del receptor iba vacía, porque una boleta sin cliente identificado no lleva razón social. El SII no verifica los bytes que uno manda: reconstruye el bloque y compara — y con un elemento vacío su reconstrucción y la nuestra no coinciden. Como un documento reparado no cuenta como recibido, la revisión del set no encontraba ninguno: de ahí el «no está en el envío», que no hablaba de lo que parecía.
Qué había que cambiar: poner CONSUMIDOR FINAL y el RUT genérico 66666666-6 cuando no hay cliente identificado.
🔴 Y acá está el dato que no está en ninguna guía: el esquema publicado del SII permite ese campo vacío y su validador no lo permite. El .xsd lo admite. Ningún test contra el esquema podía encontrar esto — sólo se ve midiendo contra el servicio.
Cómo lo comprobamos, que es el método que vale más que el caso: dos envíos del mismo set, seis minutos de diferencia, un solo campo distinto.
| Envío | El campo | Respuesta del SII |
|---|---|---|
| Primero | vacío | 0 aceptados, 5 reparos |
| Segundo | con contenido | 5 aceptados, 0 reparos |
El mismo código, tres causas distintas
El 510 fue el que más nos costó, y es el que mejor explica por qué un código de error no es un diagnóstico.
Escapar de más (2026-09-05 · arreglado)
Escapábamos ' y " como ' y ", por aquello de «las cinco entidades predefinidas de XML». Pero las comillas sólo hay que escaparlas dentro de un atributo: en el contenido de un elemento, un apóstrofo es un carácter común.
Así que firmábamos sobre PLC's y el SII, que parsea el XML antes de verificar, firmaba sobre PLC's. Bytes distintos, firma distinta.
La regla que deja, y sirve para cualquier firma electrónica: cuando un tercero verifica reconstruyendo lo firmado, escapar de más es tan peligroso como escapar de menos.
Tres lugares sanitizando distinto (2026-09-05 · arreglado)
El apóstrofo tipográfico ’ —el que ponen Word y los teléfonos— no existe en ISO-8859-1, que es la codificación del documento. Cada generador lo resolvía por su cuenta: uno lo borraba (PLCs), otro lo volvía ? (PLC?s). Dos textos para el mismo producto.
La causa no era el carácter: era la misma decisión escrita en tres lugares, que ya había divergido en tres. Se arregló sanitizando en uno solo.
SCH-00001, que eran dos cosas sin relación
El formulario web no acepta boletas (2026-08-13 · resuelto cambiando de canal)
Lo que decía el SII: SCH-00001: Invalid Schema Name.
Qué pasaba: el formulario «Enviar DTE y libros electrónicos» valida contra el esquema de factura. Un envío de boletas no es ese esquema, así que lo rechaza siempre. No había nada malo en el archivo. Las boletas van por la API, que es otro camino completo.
🔴 Lo caro no fue el rechazo: fue la conclusión. De ese error dedujimos «el archivo está mal», y después «este canal no sirve» — y estuvimos días buscando canales que no existen. El canal era el correcto; el error era del otro esquema.
Faltaba un salto de línea (arreglado)
El mismo código, otra causa: faltaba el salto de línea después de la declaración XML. Ese byte es parte de lo que el validador espera.
Código 516 — el folio del ambiente equivocado
(2026-09-02 · arreglado)
Lo que decía el SII: código 516, «IDK no corresponde al ambiente — CAF IDK enviado es de certificación».
Qué pasaba: el folio salió de un CAF de certificación y se emitió en producción. Los CAF traen un identificador que dice de qué ambiente son: 100 es certificación, 300 es producción.
🔴 Costó un folio, y un folio consumido no se devuelve. Y cargar el CAF de producción no bastaba: el folio lo decide cuál está marcado como activo, no cuál se cargó último. La comprobación tiene que correr al cargar el archivo, no al emitir.
RCT — no era el contenido, era el envoltorio
(2026-09-04, tres veces seguidas · arreglado)
Lo que decía el SII: RCT, error en carátula. Tres envíos, el mismo resultado.
Qué pasaba: la carátula declara la resolución del SII que autoriza al emisor, y llevaba la de certificación —número 0— en un envío a producción. En certificación ese 0 es correcto y está en el manual del propio SII; en producción declara una autorización que no es la que se tiene.
Y la fecha calzaba exacto: el rechazado era el del primer día emitiendo como contribuyente autorizado. El dato de certificación llevaba ahí desde antes y nadie tenía por qué mirarlo.
El set de factura: nueve observaciones, y la lección no es técnica
(2026-09-07 · arreglado en el código)
Éste no es un error de formato: son reglas del instructivo del set. De las nueve observaciones, seis salían de tres reglas no implementadas — notas que sólo corrigen texto y no deben llevar líneas de ítems, el precio heredado de una factura original sin su descuento, y una diferencia que debe aplicarse a todas las unidades.
🔴 Pero lo útil apareció después, al recorrer el instructivo entero en vez de arreglar sólo lo observado: dos de esas reglas estaban leídas, citadas textualmente en documentos nuestros, y no implementadas. Una tenía un comentario en el código que decía «eso no está escrito en ninguna parte del set» — y estaba escrito, en el archivo que ese mismo día se había citado en otro documento.
Una cita no es una implementación. Cuando una fuente se lee y se cita, hay que dejar dicho qué parte llegó al código y cuál no.
⚠️ Y lo que corresponde decir: el trámite de factura no está cerrado. Las reglas quedaron implementadas; rendir el set de nuevo es otra cosa.
Las 35 muestras impresas, rechazadas en pantalla
(2026-09-09 · arreglado)
No las rechaza el sistema de envíos: las revisa la pantalla del SII cuando uno las sube. Y son tres cosas que no aparecen juntas en ningún instructivo:
- El RUT va con puntos, y el validador lo busca en el texto del PDF — así que nunca puede ir dentro de una imagen.
- El timbre no puede llevar saltos de línea. El CAF viene del SII con saltos, y en el papel eran los únicos caracteres que su lector transformaba: rompían la firma con un «CAF alterado».
- Falta la leyenda bajo el timbre, textual del manual.
Y uno que no fue un rechazo: un aviso que señalaba el lado equivocado
(2026-09-07 · arreglado)
El giro del emisor se cortaba a 40 caracteres. Los dos esquemas del SII dan 80. El 40 era una constante nuestra.
🔴 Y llevaba días avisando en el registro —«texto truncado, campo giro, máximo 40, medía 67»— pero el aviso se leía como «hay que acortar el giro», cuando lo que había que acortar era nuestro límite.
Un aviso correcto puede señalar el lado equivocado. Si el número que el mensaje da por bueno sale de una constante propia, ese aviso está midiendo una decisión nuestra, no una regla del organismo.
Una cosa más, si estás certificando
Hay observaciones que el emisor no ve nunca si no va a buscarlas. El resultado de un envío y el detalle de lo que el SII observó no siempre están en la misma pantalla. Conviene ir a mirar el detalle aunque el envío parezca haber salido bien.
Dónde estamos nosotros
Webiados emite sus propias boletas electrónicas desde el 2 de septiembre de 2026. Todo lo de arriba es lo que hubo que pasar para llegar ahí.
Si estás en el medio de eso, la otra decisión que conviene tomar antes es si necesitas certificarte: el SII tiene un sistema gratuito que para muchos negocios alcanza de sobra, y la mayoría de estos rechazos no los vas a ver nunca si te quedas ahí.
