Buscar en este blog

miércoles, 22 de mayo de 2013

Cómo enviar un Documento Electronico al SII

Cómo enviar un DTE o Libro Compra Venta ( IECV ) al SII


Bueno ahora expongo codigo para realizar el envío de un documento electrónico al SII.

Antecedentes necesarios:


Nota: Documento = DTE, IECV, Etc

  • Rut del emisor del documento.
  • Rut de la empresa que genera el documento.
  • Nombre del documento a enviar.
  • FullPath del archivo a procesar.
  • Token del SII en el ambiente que corresponde.

Librerias necesarias:


using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Diagnostics;
using System.Security.Permissions;
using System.Net;


Secuencia de preparacion del documento electrónico a enviar al SII

   #region PREPARACION

   ////
   //// Prepare  los paramentros para utilizarlos
   //// en el envio del documento.
   rutEmisor     = rutEmisor.Replace("-", string.Empty);
   rutEmpresa    = rutEmpresa.Replace("-", string.Empty);

   ////
   //// Recupere el cuerpo y digito verificador de los 
   //// rut involucrados.
   string pRutEmisor   = rutEmisor.Substring(0, (rutEmisor.Length - 1));
   string pDigEmisor   = rutEmisor.Substring(rutEmisor.Length - 1); 
   string pRutEmpresa  = rutEmpresa.Substring(0, (rutEmpresa.Length - 1));
   string pDigEmpresa  = rutEmpresa.Substring(rutEmpresa.Length - 1);

   ////
   //// Cree el header del request a enviar al SII
   //// segun la información solicitada del SII
   secuencia.Append("--7d23e2a11301c4\r\n");
   secuencia.Append("Content-Disposition: form-data; name=\"rutSender\"\r\n");
   secuencia.Append("\r\n");
   secuencia.Append(pRutEmisor + "\r\n");
   secuencia.Append("--7d23e2a11301c4\r\n");
   secuencia.Append("Content-Disposition: form-data; name=\"dvSender\"\r\n");
   secuencia.Append("\r\n");
   secuencia.Append(pDigEmisor + "\r\n");
   secuencia.Append("--7d23e2a11301c4\r\n");
   secuencia.Append("Content-Disposition: form-data; name=\"rutCompany\"\r\n");
   secuencia.Append("\r\n");
   secuencia.Append(pRutEmpresa + "\r\n");
   secuencia.Append("--7d23e2a11301c4\r\n");
   secuencia.Append("Content-Disposition: form-data; name=\"dvCompany\"\r\n");
   secuencia.Append("\r\n");
   secuencia.Append(pDigEmpresa + "\r\n");
   secuencia.Append("--7d23e2a11301c4\r\n");
   secuencia.Append("Content-Disposition: form-data; name=\"archivo\"; filename=\"" + nombreArchivo + "\"\r\n");
   secuencia.Append("Content-Type: text/xml\r\n");
   secuencia.Append("\r\n");
   
   ////
   //// Lea el documento xml que se va a enviar al SII
   XDocument xdocument = XDocument.Load(uri, LoadOptions.PreserveWhitespace);
   
   ////
   //// Cargue el documento en el objeto secuencia
   secuencia.Append("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r");
   secuencia.Append(xdocument.ToString(SaveOptions.DisableFormatting));
   secuencia.Append("\r\n");

   #endregion



Ahora es necesario configurar el Request que sera enviado al SII

   ////
   //// Aqui se configura el request que hace la solicitud al SII
   #region CONFIGURACION DE REQUEST
   
   ////
   //// Defina que ambiente utilizar.
   //// Certificacion "https://maullin.sii.cl/cgi_dte/UPL/DTEUpload";
   string pUrl = "https://maullin.sii.cl/cgi_dte/UPL/DTEUpload";
   
   ////
   //// Cree los parametros del header.
   //// Token debe ser el valor asignado por el SII
   string pMethod = "POST";
   string pAccept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,application/vnd.ms-powerpoint, application/ms-excel,application/msword, */*";
   string pReferer = "www.hefestosDte.cl";
   string pToken = "TOKEN={0}";
   
   ////
   //// Cree un nuevo request para iniciar el proceso
   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(pUrl);
   request.Method = pMethod;
   request.Accept = pAccept;
   request.Referer = pReferer;
   
   ////
   //// Agregar el content-type
   request.ContentType = "multipart/form-data: boundary=7d23e2a11301c4";
   request.ContentLength = secuencia.Length;
   
   ////
   //// Defina manualmente los headers del request
   request.Headers.Add("Accept-Language", "es-cl");
   request.Headers.Add("Accept-Encoding", "gzip, deflate");
   request.Headers.Add("Cache-Control", "no-cache");
   request.Headers.Add("Cookie", string.Format(pToken, token));
   
   ////
   //// Defina el user agent
   request.UserAgent = "Mozilla/4.0 (compatible; PROG 1.0; Windows NT 5.0; YComp 5.0.2.4)";
   request.KeepAlive = true;
   
   #endregion


   ////
   //// Escritura del request
   #region ESCRIBE LA DATA NECESARIA
   
   ////
   //// Recupere el streamwriter para escribir la secuencia
   try
   {
   
    using (StreamWriter sw = new StreamWriter(request.GetRequestStream()))
    {
     sw.Write(secuencia.ToString());
    }
   
   }
   catch (Exception ex)
   {
     ////
     //// Error en el metodo
     //// Error del formato del envio

   
   }
   
   #endregion



Ahora puede realizar el envío al SII utilizando esta rutina

   ////
   //// Enviar libro/dte y solicitar la respuesta del SII
   #region ENVIA Y SOLICITA RESPUESTA
   
   try
   {
   
    ////
    //// Defina donde depositar el resultado
    string respuestaSii = string.Empty;
   
    ////
    //// Recupere la respuesta del sii
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
         using (StreamReader sr = new StreamReader(response.GetResponseStream()))
        { 
         respuestaSii = sr.ReadToEnd().Trim();
        }
   
    }
   
    ////
    //// Hay respuesta?
    if (string.IsNullOrEmpty(respuestaSii))
         throw new ArgumentNullException("Respuesta del SII es null");
   
   
    ////
    //// Interprete la respuesta del SII.
    //// respuestaSii contiene la respuesta del SII acerca del envio en formato XML

   
   }
   catch (Exception ex)
   {
    
     ////
     //// Error en el metodo
     //// No fue posible enviar o recepcionar la respuesta del SII
    
    
   }
   
   #endregion





Bueno sé que el ejemplo es muy simpe pero sé que les servirá, pronto agregaré los comentarios para hacerlo mas comprensible.

124 comentarios:

  1. Hola.

    ahora estoy en esta parte..(ya me fue bien con lo demas)

    te comento, cuando trato de hacer esto:

    //// Recupere el streamwriter para escribir la secuencia
    try
    {
    using (StreamWriter sw = new StreamWriter(request.GetRequestStream()))
    {
    sw.Write(secuencia.ToString());
    }

    Me da este error:

    Anulada la solicitud: La solicitud fue cancelada.


    alguna idea??

    gracia

    ResponderEliminar
    Respuestas
    1. Revisa los caracteres de tu documento, este problema se presenta cuando uno o varios caracteres de tu documento xml no se encuentran dentro del set e caraceteres ISO-8859-1. Tambien puede ser que el documento xml diga que es ISO-8859-1, pero en realidad su formato es UTF-8.

      En todo caso revisa los caracteres, eso debería solucionar el problema

      Eliminar
  2. solucionado...

    agrego linea para forzar el encodig.

    using (StreamWriter sw = new StreamWriter(request.GetRequestStream(), Encoding.GetEncoding("ISO-8859-1")))

    ResponderEliminar
  3. jaja..ahora ... llego al sii, pero me da error 7. como que mi archivo llega incompleto-

    ResponderEliminar
    Respuestas
    1. Buena solucion péro recuerda que aunque le indiques que el tipo de encoding es iso, esto no asegura que pueda transformar todos los caracteres. Ojo con eso.

      revisa esta página

      http://lenguajedemaquinas.blogspot.com/2013/04/codificacion-correcta-de-dte-y-iecv-en.html

      Eliminar
    2. ya manejo el tema de los caracteres, pero creo que es otra cosa.

      7


      Linea:106 XML document structures must start and end within the same entity.



      Eliminar
    3. hola logancl, me gustaría saber si solucionaste el problema y como lo solucionaste.

      Eliminar
    4. De acuerdo a lo que fue mi experiencia, dejé de obtener ese error al quitar el \r\n salto de linea al final del stream.

      Eliminar
  4. en la doc. del sii dice que me hace dudar (abajo lo pego).. mi firma queda como dice que no debe quedar...se puede hacer algo para que quedecon maximo de 76car?


    Respecto a los campos del tipo Base64, esto es la firma y datos del Certificado (X509 Certificate), de
    acuerdo al estándar estas líneas deben tener un máximo de 76 caracteres, debiendo insertarse saltos de
    línea según corresponda.

    Base64 con formato correcto Base64 incorrecto

    MIIEgjCC...AkGA1UEBhMC
    Q0wxHTA...QQHFAhTYW50
    AWFnbzE...MBIGA1UEChQ
    ZXJ0Awz...pY2Fkb3JhMRcw



    MIIEgj....Rcw

    ResponderEliminar
    Respuestas
    1. Tienes razon en este tema, pero hace mucho que envio los documentos xml al SII utilizando este forma y no me da error, de todas formas puede cortarlos como me comentas y no debería darte problemas.

      Eliminar
  5. También tengo problema en la carga de archivos, siempre trato de subir el archivo a través de solicitud rechazada. Sin embargo, en otro caso, trate de cargar el archivo a través de la página web manualmente `se aceptados. por favor explique por qué esto sucede

    ResponderEliminar
    Respuestas
    1. eso lo solucione con maquillando un poco esta linea

      using (StreamWriter sw = new StreamWriter(request.GetRequestStream(), Encoding.GetEncoding("ISO-8859-1")))


      le agregue el encoding ya que (aunque tuve el cuidado con lo caracteres especiales como comenta marcelo) igual por defecto tenia UTF8, lo cual me daba el error que comentas

      Eliminar
  6. ahora al subir el dte. me da esto..

    STATUS = 7


    Linea:106 XML document structures must start and end within the same entity.

    ResponderEliminar
    Respuestas
    1. En qué significa esto?

      STATUS = 7
      -
      Linea:2 The processing instruction target matching "[xX][mM][lL]" is not allowed.

      Eliminar
    2. Bueno estaba leyendo el valor del status 7 y me dice el SII que es de tipo error de schema. No tiene que ver con el envío si no mas bien con la forma del documento xml que estan enviando. Alguien podría enviarme el xml para validarlo contra el schema del SII, de esta forma podré responderles. Gracias

      Eliminar
    3. lo raro es que sobo el mismo xml envio manualmente y sube ok.
      a mi me tinca que es algo aqui:

      XDocument xdocument = XDocument.Load(uri, LoadOptions.PreserveWhitespace);

      ////
      //// Cargue el documento en el objeto secuencia
      secuencia.Append("\r");
      secuencia.Append(xdocument.ToString(SaveOptions.DisableFormatting));
      secuencia.Append("\r\n");

      Eliminar
    4. hola, me gustaría saber si solucionaste el problema y como lo solucionaste. gracias

      Eliminar
  7. Comprobar tanto la estructura favor, ¿es correcto. Primero Struch es de esta página https://maullin.sii.cl/cgi_dte/UPL/DTEauth?3.



    INPUT TYPE="hidden" NAME="rutQuery" SIZE=8 MAXLENGTH=8 value="12256104"
    INPUT TYPE="hidden" NAME="dvQuery" SIZE=1 MAXLENGTH=1 value="6"

    Rut Empresa

    INPUT TYPE="text" NAME="rutCompany" SIZE=8 MAXLENGTH=8> -
    INPUT TYPE="text" NAME="dvCompany" SIZE=1 MAXLENGTH=1>

    ___________________________________________________________________

    secuencia.Append ( "- 7d23e2a11301c4 \ r \ n" );
    secuencia.Append ( "Content-Disposition: form-data; name = \" rutSender \ "\ r \ n" );
    secuencia.Append ( "\ r \ n" );
    secuencia.Append (pRutEmisor + "\ r \ n" );
    secuencia.Append ( "- 7d23e2a11301c4 \ r \ n" );
    secuencia.Append ( "Content-Disposition: form-data; name = \" dvSender \ "\ r \ n" );
    secuencia.Append ( "\ r \ n" );
    secuencia.Append (pDigEmisor + "\ r \ n" );
    secuencia.Append ( "- 7d23e2a11301c4 \ r \ n" );
    secuencia.Append ( "Content-Disposition: form-data; name = \" rutCompany \ "\ r \ n" );
    secuencia.Append ( "\ r \ n" );
    secuencia.Append (pRutEmpresa + "\ r \ n" );
    secuencia.Append ( "- 7d23e2a11301c4 \ r \ n" );
    secuencia.Append ( "Content-Disposition: form-data; name = \" dvCompany \ "\ r \ n" );
    secuencia.Append ( "\ r \ n" );
    secuencia.Append (pDigEmpresa + "\ r \ n" );
    secuencia.Append ( "- 7d23e2a11301c4 \ r \ n" );
    secuencia.Append ( "Content-Disposition: form-data; name = \" archive \ "filename = \" " + nombreArchivo + "\" \ r \ n " );
    secuencia.Append ( "Content-Type: text / xml \ r \ n" );
    secuencia.Append ( "\ r \ n" );

    ResponderEliminar
    Respuestas
    1. Segun las especificaciones que me enviaste a esto deberias llegar:

      secuencia.Append( "- 7d23e2a11301c4 \ r \ n" );
      secuencia.Append( "Content-Disposition: form-data; name=\"rutSender\"\r\n");
      secuencia.Append( "\ r \ n" );
      secuencia.Append(rutQuery + "\ r \ n" );
      secuencia.Append( "- 7d23e2a11301c4 \ r \ n" );
      secuencia.Append( "Content-Disposition: form-data; name=\"dvSender\"\r\n");
      secuencia.Append( "\ r \ n" );
      secuencia.Append(dvQuery + "\ r \ n" );
      secuencia.Append( "- 7d23e2a11301c4 \ r \ n" );
      secuencia.Append( "Content-Disposition: form-data; name=\"rutCompany\"\r\n" );
      secuencia.Append( "\ r \ n" );
      secuencia.Append(rutCompany + "\ r \ n" );
      secuencia.Append( "- 7d23e2a11301c4 \ r \ n" );
      secuencia.Append( "Content-Disposition: form-data; name=\" dvCompany\"\r\n" );
      secuencia.Append( "\ r \ n" );
      secuencia.Append(dvCompany + "\ r \ n" );
      secuencia.Append( "- 7d23e2a11301c4 \ r \ n" );
      secuencia.Append( "Content-Disposition: form-data; name=\" archive\"filename=\""+nombreArchivo+"\"\r\n");
      secuencia.Append( "Content-Type: text / xml \ r \ n" );
      secuencia.Append( "\ r \ n" );

      Eliminar
  8. Estimado al hacer el envió del DTE el SII me devuelve el status 7 con el siguiente error:

    SCH-00001: Invalid Schema Name

    alguna idea de que se puede tratar y en donde se puede localizar el error?

    te agradecería tu ayuda

    ResponderEliminar
    Respuestas
    1. Este comentario ha sido eliminado por el autor.

      Eliminar
    2. agrega esto despues de que se agrega el enviodte a la secuencia:
      secuencia.Append("--7d23e2a11301c4--\r\n");

      asi:

      secuencia.Append("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r"); secuencia.Append(xdocument.ToString(SaveOptions.DisableFormatting));
      secuencia.Append("--7d23e2a11301c4--\r\n");

      Eliminar
  9. Macelo;

    Gracias por tu aporte y la entrega del material entregado en tu BLOG, ya que no existe mucha ayuda para este tema o bien la que existe no es tan
    Dinámica o tan exacta como la entrega de material encontrada en LA WEB , gracias a tu BLOG pude terminar mi proceso de facturación automático, no me queda más que felicitarte y desearte toda la suerte en tus futuros proyectos.

    Saludos y felicitaciones

    ResponderEliminar
  10. Marcelo;

    Al realizar el envío me devuelve esto:


    0-0
    0-0

    0 0
    5


    Según este status no estoy "autenticado", pero lo curioso que no devuelve los valores enviados, y estoy enviando el token recién obtenido.

    ResponderEliminar
    Respuestas
    1. Francisca

      Favor enviar el documento xml a mi correo para revisarlo

      Gracias

      Eliminar
    2. Hola, no se si mi comentario anterior se envió o no. Gracias por toda esta información, es súmamente útil.

      Estot en la misma situación de Francisca. Hubo alguna solución a su problema? Sospecho que tengo el mismo problema.

      Saludos.

      Eliminar
  11. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  12. Hola, tengo una duda.

    Que rut se le coloca en la caratula del EnvioDTE, porque coloco el rut del receptor y me los rechaza (por error de caratula).

    Gracias por tu tiempo y Saludos!

    ResponderEliminar
    Respuestas
    1. Encontraste la solución?
      Será problema del ambiente de certificacion?

      En mi caso obtengo:
      "RUT Receptor (Caratula) Invalido - [77818XXX-6]"

      Por si acaso, para resguardar la info, aca lo publique con XXX.
      Saludos,

      Eliminar
    2. ¡Hola! En el ambiente de certificación el RUT que debes ingresar en la caratula es el del SII: 60803000-K

      Eliminar
    3. Siendo más claros, en la carátula va el rut del SII en todos los envíos al SII(ya sea certificación o producción). Y el rut del otro contribuyente en los envíos al otro contribuyente.

      Eliminar
    4. Disculpa, como sabes que es de esa forma para ambos ambientes, esta en la documentacion?. Yo tenia entendido que solo era en el ambiente de certificacion

      Eliminar
    5. eso mismo tenía entendido yo, ya que nunca me lo habían explicado como lo acabo de explicar(lo harán a drede? xd), pero ya tengo instalaciones en producción y es como te digo.

      Eliminar
  13. Como podría enviar el archivo en PHP? ya tengo el token, solo me falta poder subir el archivo :S

    ResponderEliminar
    Respuestas
    1. En php debes utilizar curl con la funcion curlfile subes el xml a enviar.
      estoy subiendo tips para php en sitio www.factronica.cl/foros

      Eliminar
  14. Marcelo, estoy utilizando tus rutinas para enviar DTE, en VB.NET y estoy teniendo status 7 (SCH-00001 INVALID SCHEMA NAME), por mas que reviso xml y envio todo esta OK.- que podre hacer para encontrar que esta "invalido".

    De antemano, gracias
    Ricardo

    ResponderEliminar
  15. Yo estoy en la misma, hago todo bien tengo en famoso archivo en XML y nada cuando lo envío me sale (SCH-0001 Invalid Schema Name.

    Por favor necesito una ayudita ya que tengo que enviar mis Libros contables y no puedo enviarlos por el famoso Schema

    Saludos

    Miriam Gaus


    Miriam Gaus

    ResponderEliminar
  16. Estimado.

    Tengo una duda, en el primer código me pide 2 parámetros nombreArchivo y uri, los cuales no comprendo que son o para que sirven.

    saludos
    Calos.

    ResponderEliminar
  17. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  18. Hola, tengo una consulta, si alguien me puede ayudar. Implemente el código más las modificaciones que sugieren algunos usuarios. Puedo realizar el envío, me entrega el TRACKID, pero cuando verifico el estado me sale error de caratula:

    (CRT-3-18) RUT Receptor (Caratula) Invalido - [XX919071-K]
    (CRT-3-15) RUT Envía Diferente al registrado en Upload - [XX68530-k] <> [XX68530-K]

    No importa las modificaciones que haga en el código o al XML siempre me da lo mismo.
    Creo yo que puede ser como está declarada la variable "secuencia" ya que lo hice según yo creía que debería ser.
    No sé si quienes pudieron implementar el código me puedan indicar las líneas de código de la declaración y/o comentar que hicieron para realizar la implementación. Gracias de antemano.

    ResponderEliminar
    Respuestas
    1. Este comentario ha sido eliminado por el autor.

      Eliminar
    2. en la caratula en la parte del RutReceptor debes usar el Rut del SII, espero que te funcione.

      60803000-K

      Carlos

      Eliminar
    3. Gracias por el dato, ahora solo me queda:
      RUT Envia Diferente al registrado en Upload - [XX68530-k] <> [XX68530-K]
      No se porque me cambia la "K" a minuscula en el envio.
      He revisado el procedimiento y el codigo "n" veces y no logro dar con el problema

      Eliminar
    4. que extraño con un cliente nuevo me pasó lo mismo que a ti (rut envia diferente...) y eso que ya me ha tocado antes ruts de representantes legales con una k. Las manejo siempre con K mayúscula, y no me dio el error en certificación sino recién en producción que tontera más grande, sería bueno publicar aquí cualquiera solución luego.

      Eliminar
    5. al igual que uds, manejo varios clientes con rut con letra K pero es primera vez que me sale este mismo problema, ya que el sii registra el rut del sender como k minus, tambien busco como solucionar el problema, incluso cambiando el certificado no lo corrige

      Eliminar
  19. Estimados, alguien que tenga información acerca de este error, del cual no he podido salir ... (DTE-3-505) Firma DTE Incorrecta (Rechaza DTE)

    ResponderEliminar
    Respuestas
    1. Como haces el envio, en forma automatica o lo cargas a traves del portal del SII

      Eliminar
    2. Lo estoy haciendo de las 2 formas y me da el mismo error...

      Eliminar
    3. Este comentario ha sido eliminado por el autor.

      Eliminar
    4. Alguien tiene alguna ayuda con respecto a este tema ....

      Eliminar
    5. Es bastante simple , no has firmado correctamente el dte o el envio.

      Eliminar
    6. en administracion de la empresa se da de alta el rut que puede enviar dtes y cuando firmas en envio debe ser con uno de esos rut ,, sino esta registrado el rut del envio en impuestos internos arroja ese error .. esa es la respuesta

      Eliminar
  20. Estimado Mario, como te fue con el problema?
    (CRT-3-15) RUT Envía Diferente al registrado en Upload - [XX68530-k] <> [XX68530-K]

    Me pasa lo mismo y no he podido resolverlo. GRACIAS

    ResponderEliminar
  21. Hola Alex, la verdad es que lo deje de lado, ocupamos el certificado digital de otro usuario que no termina en K su rut.
    Si lo llegas a resolver me comentas. Si te puedo ayudar en otra cosa me dices.

    ResponderEliminar
  22. Estimados necesito ayuda urgente subo el libro de compras al sii y me da un error que dice SCH-00001 Invalid Shema Name,me dicen que debe tener algun caracter invalido pero lo e revisado muchas veces y nada ayuda plis.

    ResponderEliminar
  23. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  24. buenas en este momento me encuentro en esta etapa de desarrollo y me devuelve el 1 que corresponde a "El Sender no tiene permiso para enviar " , genero todo con el certificado digital y según la información del ambiente de certificación si tengo los permisos de envio, alguna idea de que puede ser o como otorgar los permisos para el envio?

    ResponderEliminar
  25. Para php easyinvoice.cl

    ResponderEliminar
  26. Re revisado todas las repuesta sobre la solución del mensaje ERROR SCH-00001, el cual aún, no tengo solución ya que, las que habían fueron eliminadas por el autor, por favor si alguien puede darme una respuesta para solucionar el envío Libro Compra XML al Sii.

    ResponderEliminar
  27. Hola amigos, para otros lenguajes como PowerBuilder, Delphi, FoxPro, etc. tenemos una DLL que les puede ahorrar horas de trabajo en http://facturaelectronicachile.com/
    saludos

    ResponderEliminar
  28. Estimado al subir un archivo me entrega la siguiente respuesta;



    128xxxxx-0
    0-0
    EnvioSet.xml
    0 0
    6


    No he podido resolverlo.

    No se que hago mal.

    ResponderEliminar
    Respuestas
    1. Estimado es posible que tu certificado no este inscrito en el SII. Favor comprobar que tienes permisos suficientes en el SII

      Eliminar
    2. Estimado el certificado esta correcto, ya que lo utilizo en varias empresas, de hecho subo el dte en la pagina del servicio y sube sin problemas.

      Por favor su ayuda.

      Eliminar
  29. Hola, alguna solución para el siguiente error
    SCH-00001: Invalid Schema Name
    He copiado el mismo del ejemplo y no logro dar con el famoso schema name

    ResponderEliminar
  30. tengo el mismo error SCH-00001: Invalid Schema Name, favor alguna repuesta

    ResponderEliminar
  31. Favor cambiar la instruccion de procesamiento donde dice iso-8859-1 a ISO-8859-1
    y probar

    ResponderEliminar
  32. Hola:
    Necesito enviar en el libro de ventas los totales de los rollos boletas registradora (codigo 36); pero el Schema
    no me lo valida, no se encuentra este codigo.

    Como envio esta información o
    existira un schame mas actualizado con este codigo en el sii.

    Gracias.

    ResponderEliminar
    Respuestas
    1. Estimado,
      No podría contestarte ahora, pero si me envías el libro lo puedo comprobar.

      Eliminar
  33. Hola Marcelo,
    Te escribe Cesar, estoy recien conociendo este tema de conversión a XML, mi problema es que no puedo enviar los libros porque me da el siguiente error:

    SCH-00001: Invalid Schema Name

    y no se que puede ser, si me pudieras ayudar, te lo agradecería mucho.

    Saludos.

    ResponderEliminar
  34. ¿A que se puede deber que la respuesta del SII venga de esta forma?


    0-0
    0-0

    0 0
    5

    ResponderEliminar
    Respuestas
    1. Solucionado, era problema del Header que estaba creando

      Eliminar
  35. Hola Marcelo Rojas
    Primero felicitarte por compartir con nosotros, los nuevos desarrolladores en facturación electrónica, estos tips de confección, creación y posterior envío de los DTE al SII.
    En estos momentos me encuentro con el siguiente inconveniente en el upload con el servicio:
    CHR-00001: Invalid Character Set

    ¿Que podrá ser específicamente?

    ResponderEliminar
    Respuestas
    1. Buenas, aunque es vieja la publicacion puede que a alguien le sea de ayuda. Tenia el mismo error y se soluciono cambiando el encoding="iso-8859-1" el nombre iso lo pasamos a mayuscula y nos dejo de dar el error de set: encoding="ISO-8859-1"

      Saludos.

      Eliminar
  36. Hola! no has encontrado el problema? yo tengo el mismo error cuando lo envío manual y cuando lo hago automático recibo el error Error en Schema - [0] LPX-00230: invalid character 0 (U+0000) found in a Name or Nmtoken
    Alguna ayuda?

    ResponderEliminar
  37. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  38. estimados, alguien sabe de que se trata este error CHR-00004: no se encontro envio(XML)

    me retorna el STATUS = 7

    ResponderEliminar
  39. estimados, ayuda, alguien sabe de que se trata este error CHR-00004: no se encontro envio(XML)

    me retorna el STATUS = 7

    como poder solucionarlo?...

    ResponderEliminar
  40. Marcelo:
    si puedes ayudarme, te lo agradeceré:
    en ocasiones el envió automático me da el error: CHR-00004: no se encontro envio(XML) me retorna el STATUS = 7
    pero luego de ese error me indica:
    lo extraño es que el RUTCOMPANY siempre me lo entrega en 0-0, alguna idea, tanto para los errores y el dato RUT?

    RECEPCIONDTE
    RUTSENDER 8579185-0 RUTSENDER
    RUTCOMPANY 0-0 RUTCOMPANY
    FILE EnvioDTE-F34106.xml FILE
    TIMESTAMP 0 0 TIMESTAMP
    STATUS 99 STATUS

    DETAIL
    ERROR Archivo ya fue enviado 114 veces con Trackid 61336810. Debe esperar 900 segundos antes de reintentar ERROR

    gracias...
    Pablo...

    ResponderEliminar
  41. parece que nadie tiene información de este error: CHR-00004: no se encontro envio(XML) me retorna el STATUS = 7y el servicio de impuestos no ayuda técnicamente...

    ResponderEliminar
    Respuestas
    1. Estimado

      Es muy probable que el documento xml que intentas subir al sii tenga un caracter especial. Cuando existe un caracter especial que no este bien escapado corta el documento xml y este queda como incompleto. Verifica esta información

      Eliminar
    2. hola Marcelo..
      he revisado el XML con muchos software para detectar caracteres especiales y ninguno me indica su existencia.
      originalmente lo generaba con S.O. Linux y ahora con Windows, pero nada.
      hice test case manuales, creando el XML manual desde un editor de XML y el mismo resultado.

      Eliminar
    3. Marcelo, puedo enviarte el XML?
      saludos..

      Eliminar
    4. Cuando construyas el archivo rfc verifica que este este en ISO-8859-1 para que no tengas problemas. Mandame el XML
      abaddon.1974@gmail.com

      Eliminar
    5. Habéis podido resolver el error. A mi me da el mismo no hay caracteres raros tampoco...

      Eliminar
    6. A mi también me salía el error: "CHR-00004: no se encontro envio(XML)". Me pasó porque estaba usando un RUT emisor inválido (en la caratula y en el DTE). Lo corregí y funcionó.

      Eliminar
  42. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  43. Lo conseguí!.Al menos no ha dado error al subirlo.

    He pasado por todos los errores...

    Me faltaba agregar el EnvioDTE , SETDTE y firmar el SET.




    Marcelo muchisimas gracias por todo sin tu blog habría sido imposible.Si aceptas un pequeño consejo podrías poner en las instrucciones un ejemplo de XML totalmente preparado para su envío porque no he visto por ningún lado en el blog que tuviera que añadir esto.

    Un saludo y muchísimas gracias de nuevo.

    ResponderEliminar
    Respuestas
    1. Hola José ...como pudiste resolver el error
      CHR-00004 saludos

      Eliminar
  44. Marcelo:
    consulta, hay datos adicionales de un documento que no están en el schema de los DTE's, por ser monto escrito, numero de cliente, o datos propios (numero interno, leyendas que quisiera incorporar en el PDF, Etc), y me indican que esos datos deben ser enviados al SII en el envió del DTE. que consideraciones hay que tener para no invalidar el DTE?
    gracias...
    saludos...

    ResponderEliminar
  45. Estimado Pablo,

    En realidad si estas interesado en colocar mas datos a tu documento pdf, no es necesario enviar esa cantidad de información al SII. Si son datos fijos puedes fijarlos en la plantilla que transforma a Pdf, sin son datos variables como graficos, listas, etc. Puedes sacar una copia del documento xml y agregarle esos datos en un nuevo nodo como datos adicionales. Luego envías ese xml para que lo transforme a pdf utilizando toda la información. El detalle esta en no realizar cambios en el nodo TED para que la impresión del mismo no te de errores.

    Espero que la información te ayude.




    ResponderEliminar
  46. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  47. Al realizar el EnvioDTE lo hace perfecto pero a la hora de subir el set de prueba me establece el estado "Enviado con errores o reparos".¿Donde puedo ver esos errores?

    ResponderEliminar
    Respuestas
    1. Estimado,

      Los errores del proceso son enviados vía email al email que Ud. Define en el SII. Estos emails tienen el detalle de por que no puede realizar el avance en el proceso en el SII.

      Eliminar
    2. Muchísimas gracias por algún motivo no me llegaban los correos

      Eliminar
  48. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  49. ¿Como se puede agregar un DTE al SetDTE?.Al agregar el nodo al nodo matriz "SETDTE" pierde la codificación e invalida la firma.

    ResponderEliminar
  50. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  51. Si a alguien le sirve:
    A lo mejor ha sido solo en mi caso.

    Al enviarlo, se envía correctamente pero luego me envían un correo con el siguiente error
    (ENV-3-0) Error en Schema - [0] LPX-00231: invalid character 47 ('/') found in a Name or Nmtoken

    Solución:
    Quitar el \r de la codificación

    asi:
    secuencia.Append("");

    Esto me estaba generando un salto de linea y por lo tanto el rechazo del EnvioDTE.

    Un saludo y de nuevo muchísimas gracias por todo Marcelo.

    ResponderEliminar
    Respuestas
    1. Hola. sabes que tengo el mismo error y no logro solucionarlo. podrías comunicarte.. gracias

      Eliminar
    2. Agrega esto al final de secuencia

      secuencia.Append("--7d23e2a11301c4--\r\n");

      deberia quedar asi:

      secuencia.Append("");
      secuencia.Append(xdocument.ToString(SaveOptions.DisableFormatting));
      secuencia.Append("\r\n");

      Eliminar
    3. perdon asi, deberia quedar:

      secuencia.Append("");
      secuencia.Append(xdocument.ToString(SaveOptions.DisableFormatting));
      secuencia.Append("\r\n");
      secuencia.Append("--7d23e2a11301c4--\r\n");

      Eliminar
    4. secuencia.Append("");
      secuencia.Append(xdocument.ToString(SaveOptions.DisableFormatting));
      secuencia.Append("\r\n");
      secuencia.Append("--7d23e2a11301c4--\r\n");

      Esta instrucción me resolvió el problema del arhivo truncado cuando revisaba el estado del envio en el SII. Gracias Marcelo y a todos los que aportan... :)

      Eliminar
  52. Tengo el software ok ejecutándose en un Windows Server 2003. Pero al cambiar a un Windows Server 2008 R2 me da el error

    "HTTP/1.1 400 Bad Request Date: Thu, 15 Mar 2018 13:48:28 GMT Server: version 1.1 version 1.2 Apache Content-Length: 9 Connection: close Content-Type: text/html; charset=iso-8859-1 Error 400"

    Estoy usando TcpClient y no HttpWebRequest ya que tengo un Servicio Windows.

    ¿alguien que me pueda ayudar?

    ResponderEliminar
  53. Dejare esto por aqui por si alguien lo quiere http://www.bitingenieria.com.ar/

    ResponderEliminar
  54. Hola, tengo el mismo problema con la iso-8859-1, me da error, pero lo cambio a mano a mayúscula dejando ISO-8859-1 y se soluciona el problema, el SII me lo recibe bien... ahora mi problema es, cómo lo cambio a mayuscula en .net

    utilizo esta instrucción

    Dim objStreamWriter As New StreamWriter(filename, False, System.Text.Encoding.GetEncoding("ISO-8859-1"))

    Pero aún así lo cambia a minúscula...

    Su ayuda por favor.

    ResponderEliminar
  55. Hola Marcelo:
    tengo dos consultas...
    1.- como empresa estamos autorizados como emisores de documentos electrónicos, pero no tengo la alternativa a solicitar folios CAF para boletas de ventas. ¿Cómo activo esta opción?
    2.- tengo todo desarrollado para la generación de boletas electrónicas de venta, pero no se de donde obtener el SCHEMA para validar la boleta(39 y 41), el SII solo tiene EnvioBOLETA_v11.xsd.

    saludos y gracias...

    ResponderEliminar
    Respuestas
    1. Estimado,

      Para poder obtener folios de boletas y de esa forma iniciar tus procesos de boletas electrónicas, debes realizar el proceso de certificación de boletas electrónicas. debes realizar el set del SII para boletas electrónicas y en ese momento te darán folios de certificación. Luego cuando pases la certificación de boletas podrás empezar a trabajar en producción con las boletas.

      En el caso de el schema puedes escribirme a mi email abaddon.1974@gmail.com y te mando el schema que utilizo para las boletas.

      Atte.
      Marcelo Rojas Rojas
      997800285

      Eliminar
    2. Hola Marcelo:
      ahora tengo el siguiente inconveniente al generar el libro de boletas:
      1.- estoy utilizando el schema LibroBOLETA_v10.xsd
      2.- al firmar, me acepta la firma pero el XML esta invalido indicando
      VALIDATING ERROR #1 :FILE 'LibroBoletas23-01-2019.xml', LINE 1: Element '{http://www.sii.cl/SiiDte}LibroBoleta': No matching global declaration available for the validation root.

      alguna sugerencia?
      gracias..
      saludos...

      Eliminar
    3. Puedes enviarme el xml para revisarlo.
      Abaddon.1974@gmail.com

      Eliminar
  56. estimado, agradeceria si me ayuda, llevo un tiempo trabajando on dte con un servidor que sigue con php5 y funciona sin problemas, pero habilite un servidor nuevo 5.6 el cual da este error cuando realizo los envios


    12343213-3
    0-0

    2019-01-30 15:33:20
    7

    CHR-00004: no se encontro envio(XML)


    probe realizando el envio del mismo archivo ya timbrado en el servidor antiguo y funciona correctamente.

    he realizado varios cambios pero no logro hacer que funcione.

    este es el fuente que envia (verifique y todas las variables tienen datos):


    $data = [
    'rutSender' => $this->rutEnvia[0],
    'dvSender' => $this->rutEnvia[1],
    'rutCompany' => $this->rutEmpresa[0],
    'dvCompany' => $this->rutEmpresa[1],
    'archivo' => $this-> curl_file_create(
    $this->fileXML,
    'application/xml',
    basename($this->fileXML)
    ),
    ];

    $curl = curl_init();

    if($this->METHOD=="POST"):
    curl_setopt($curl, CURLOPT_POST, true);
    endif;

    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $this->headers);
    curl_setopt($curl, CURLOPT_URL, $this->URL);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);


    for ($i=0; $i<$retry; $i++) {
    $response .= curl_exec($curl);
    $this->RESPONSE = $response;
    if ($response and $response!='Error 500')
    break;
    }


    de antemano muchas gracias.

    ResponderEliminar
    Respuestas
    1. verifica que el Rut del receptor del archivo que envías sea el del SII (60803000-K)

      Eliminar
  57. Cómo se solucina? SCH-00001: Invalid Schema Name

    ResponderEliminar
  58. Marcelo:
    existe forma de obtener folios CAF automatizadamente? algún webservices del SII o que paso se deben tener en cuenta?
    algo similar a la publicación de un DTE?
    gracias...
    Pablo

    ResponderEliminar
  59. Hola Estimado:

    Al momento de enviar el DTE me aparece el siguiente error:
    "anulada la solicitud: la solicitud fue cancelada".-

    Alguna idea de lo que piede ser?

    Saludos.-

    ResponderEliminar
  60. Estimados:
    estoy en etapa de certificación de una empresa y el SII me informa:
    error técnico timbre electrónico y firma en CAF invalido.

    el CAF que me entrega el SII, la razón social esta con acentos y eñes, pero al querer leer el CAF como XML me da error. Yo reemplazo los acentos y eñes, pero creo que eso invalida el CAF.

    al alguna solución?

    como antecedente: otras empresas están correctamente certificadas.

    gracias..
    Saludos...

    ResponderEliminar
  61. A los interesados: Link del Grupo Facturación Electrónica SII Chile en WhatsApp:
    https://chat.whatsapp.com/JFFDnn6Eo7DG7dvWR1Rj3m

    ResponderEliminar
  62. Hola, al enviar un AEC para ceder una factura estoy recibiendo STATUS = 1, "El Sender no tiene permiso para enviar", a que se podrá deber? El certificado es válido y se prueba directamente en el Sii y si permite ceder. Alguna idea?

    ResponderEliminar
  63. HI, What does CHR-00001 i cant find anything in the XML that can produce this. any idea what are not allowed characters?

    ResponderEliminar
  64. Por si a alguien le sirve, pase horas con el:
    error SCH-00001: Invalid Schema Name

    fue por que estaba enviando un set de pruebas al servidor de produccion!!! XD XD , compare todo con un set de envio funcional:/firmas/timbre/secuencia de envio/etc.. y estaba bien, hice el envio a traves de la pagina de SII y el archivo estaba ok;
    cuando depure mi software me di cuenta que estaba mal configurada la url de envio. Cuando corregi de "palena" a "maullin" todo OK.

    espero a alguien le sirva ;)

    ResponderEliminar