Certificación
Antes de emitir documentos tributarios electrónicos en producción, la empresa postula al SII como emisor electrónico (postulación) y pasa un proceso de certificación en el ambiente de certificación del SII. dte-sdk cubre ese proceso desde el set de pruebas que el SII genera para ti hasta la declaración de cumplimiento: lee el set de pruebas, emite los documentos y libros que pide, recorre los portales del SII por cada etapa, responde el intercambio, sube las muestras impresas y, solo cuando tú lo indicas, hace la declaración. La certificación de boletas es una postulación aparte, y el SDK la cubre como piezas que encadenas tú.
Todo lo de esta página vive en dte-sdk/portal (las muestras impresas usan además dte-sdk/pdf) y requiere Node.
Nada de esto se ha ejecutado todavía contra los portales reales de
certificación. Las pruebas usan respuestas sintéticas del SII, así que cada
forma de página, formato de petición y texto sigue sin comprobarse. La primera
corrida real debería conservar todos los artefactos que escribe el almacén
(ahí queda cada respuesta del portal) como fixtures. La 0.8.0 de dte-sdk
está en npm, la versión más reciente. Todavía no se recomienda para
producción: la mayoría de las áreas no se ha probado contra el SII real, y
hasta la 1.0.0 la API puede cambiar en cualquier versión. Revisa
Estado.
La declaración de cumplimiento es la declaración jurada del representante
legal y no se puede deshacer. El ejecutor la hace solo cuando pasas
declareCompliance: true; sin esa opción se detiene en compliance. La
declaración de boletas es igual de definitiva.
Descargar de nuevo el set de pruebas lo regenera en el SII. El SII asigna los casos otra vez, así que todo lo que enviaste para el set anterior queda sin efecto. El ejecutor lo descarga una sola vez; una corrida que ya tiene un plan y descarga de nuevo parte de cero.
El estado contiene llaves privadas de CAF. CertificationState.cafs
guarda los archivos CAF que obtuvo la corrida, cada uno con su llave privada.
El almacén en directorio los escribe legibles solo por ti. Mantén el almacén
fuera del control de versiones y trátalo como un secreto. Ver
Seguridad.
Qué es la certificación del SII#
El SII genera un set de pruebas para el postulante: un texto con un número de atención y una lista de casos, cada uno describe un documento a emitir (una factura, una nota de crédito, una guía) con sus ítems y referencias. Tú emites esos documentos con tus CAF y tu certificado, los envías y declaras los track id en el portal del SII. El SII revisa cada sobre y luego pide los libros armados con ellos, una simulación, un intercambio y las muestras impresas. Las etapas, en el orden en que las lleva el ejecutor (CERTIFICATION_STAGES):
| Etapa | Qué ocurre |
|---|---|
testSets | Descargas el set de pruebas y emites los cuatro sets: básico (facturas 33, notas de crédito 61, notas de débito 56), exento (34, 61, 56), guías (52) y compra (46, 61, 56). Cada uno va en su propio sobre; declaras sus track id. El SII aprueba cada set (REVISADO CONFORME). |
books | Envías el libro de compras, el libro de ventas y el libro de guías (y el libro de compras para contribuyentes exentos cuando el set de pruebas lo trajo), armados desde los sets y desde los documentos de proveedor que lista el set de pruebas. Luego pides al portal la etapa siguiente. |
simulation | Emites de nuevo cada caso de los cuatro sets, con folios nuevos, en un solo sobre. Lo envías, declaras su track id, esperas la aprobación y lo confirmas. |
exchange | El SII envía a tu empresa un set de documentos dirigidos a ella. Respondes con tres archivos firmados: la respuesta de recepción, los recibos de la Ley 19.983 y la aprobación comercial, y confirmas el intercambio. |
printedSamples | Subes el PDF de cada documento que emitieron los sets y la simulación, como una revisión que el validador automático del SII comprueba. |
compliance | El representante legal declara el cumplimiento. |
done | La certificación está completa. |
La certificación de boletas es otra postulación. Tiene su propio portal, su propio set de pruebas (un texto plano de casos, cada uno una boleta tipo 39), su propio sobre (EnvioBOLETA), su propio reporte de consumo de folios (RCOF) y su propia declaración. El SII valida el set de boletas a su ritmo y responde por correo. Ver Boletas.
Cómo lo cubre dte-sdk#
La mitad determinista, todo datos: parsear el texto del set de pruebas, planificar lo que emite cada set, emitir los cuatro sets y la simulación, y armar los libros. No se envía nada.
El ejecutorrunCertification: todo el lado HTML, reanudable desde un almacén, con cada
paso disponible también por separado. Folios, envíos, declaraciones, esperas.
Las tres respuestas firmadas del intercambio, la revisión de muestras impresas y los portales GWT-RPC que hay debajo.
BoletasLa certificación aparte de boletas: set, emisión, envío, reporte, declaración y verificación, como piezas para encadenar.
- La mitad determinista (
parseTestSetText,planCertificationSets,createFolioAllocator,issueTestSet,issueSimulation,createCertificationSalesBook,createCertificationPurchaseBook,createCertificationGuideBook) convierte texto en XML firmado. No envía nada, no lee más reloj que el que le inyectas y no necesita ningún portal. Puedes usarla sola, por ejemplo para revisar qué va a emitir un set de pruebas. - El ejecutor (
runCertificationy las funciones de paso que tiene debajo) envía, espera y declara. Guarda su avance en unCertificationStorey se reanuda desde él, así que una corrida que se detiene se puede repetir tras una corrección sin repetir lo que ya está hecho. - El intercambio y las muestras impresas son las dos últimas etapas:
createExchangeAnswersy las operaciones del portal de intercambio,writePrintedSamplesy las operaciones del portal de muestras. - Las boletas no tienen ejecutor: la validación del set de boletas por parte del SII toma su propio tiempo, así que encadenas las piezas tú mismo y vuelves a leer el estado más tarde.
Requisitos previos#
- Una empresa inscrita en el proceso de certificación del SII. Sin eso, la descarga del set de pruebas se rechaza (
SII_PORTAL_REJECTEDconnotEnrolled). La inscripción se hace en sii.cl, no con el SDK. - La verificación de actividades, para emitir con IVA. El SII exige una verificación positiva de las actividades de la empresa en terreno, o una en proceso, antes de que la empresa emita documentos con IVA (sus requisitos); sin ella, una solicitud de CAF para un tipo que la necesita se rechaza con
activityVerificationPending. Lee en qué está conunstable_fetchActivityVerification, todavía inestable (ver Portal y la referencia de la API). - Un certificado digital habilitado como método de ingreso al portal del SII. Si no, el inicio de sesión lanza
SII_PORTAL_CERT_NOT_ENABLED. La guía del portal (Portal) explica la sesión. La declaración de boletas se hace como el dueño de la sesión (ver Boletas). Las claves vienen de tu entorno (process.env.PFX_PASSWORD!), nunca del código. - Los CAF. El ejecutor los obtiene por ti a través del registro de folios y el cupo del portal (ver Folios); las piezas sueltas usan los CAF que les des. La simulación nunca reutiliza los CAF de los cuatro sets.
- El almacén.
createDirectoryCertificationStore({ dir })para un script,createMemoryCertificationStore()para pruebas, o tu propioCertificationStore. Más un registro de folios (createDirectoryFolioRegistrydedte-sdk/node, que debe sobrevivir a los reinicios) para el ejecutor. - Datos del emisor. RUT, razón social y dirección; el giro, el código de actividad, la comuna y la ciudad tienen valores por defecto en el ejecutor.
dte-sdk/pdfy sus peers opcionalespdf-libybwip-jspara las muestras impresas.
Dónde vive cada función#
| Quieres | Usa | Página |
|---|---|---|
| Leer el texto del set de pruebas del SII | parseTestSetText, planCertificationSets | Sets de pruebas |
| Emitir los sets, la simulación y los libros | issueTestSet, issueSimulation, createCertification*Book | Sets de pruebas |
| Correr todo el lado HTML | runCertification | El ejecutor |
| Rehacer un paso tras un rechazo | sendTestSet, declareTestSets, runBooks… | El ejecutor |
| Responder el intercambio | createExchangeAnswers, runExchange | Intercambio y muestras |
| Subir las muestras impresas | writePrintedSamples, uploadPrintedSamples | Intercambio y muestras |
| Certificar boletas | downloadReceiptsTestSet… declareReceiptsCompliance | Boletas |
Próximos pasos#
- Empieza por Sets de pruebas para ver qué pide el SII sin tocar ningún portal.
- Lee El ejecutor antes de tu primera corrida real, en particular las advertencias sobre folios y sobre la declaración.
- La generación de los PDF se explica en Muestras impresas.