API Para Factura Electrónica SII FECL

La API para factura electrónica SII FECL es una interfaz para integrar en los sistemas de facturación. La API está concebida para agilizar la implementación de todas las funcionalidades requeridas por el Servicio de Impuestos Internos para la facturación desde sistemas de mercado.

Funcionalides

Conformación de archivos digitales

Todos los procesos de intercambio de información con los servicios de SII utilizan como formato de intercambio el XML.

Con la API para factura electrónica Chile FECL se incluye la posibilidad de crear directamente estos archivos según las especificaciones de cada caso.

Firma electrónica

La firma electrónica es el proceso informático que garantiza que el emisor del documento es quien dice ser y no otro. Con este objetivo utilizan los certificados digitales emitidos por entidades emisoras autorizadas.

Generación de documento PDF

Utilizando FECL la generación de documentos tributarios en formato PDF queda resuelta de manera sencilla. Un diseñador gráfico incorporado facilita la personalización de los mismos, pudiendo editar campos visibles, ubicarlos, cambiar logos, etc.

Documentos que se pueden emitir

  • DTE Factura, Notas de Débito y Crédito
  • Guía de despacho
  • Boleta electrónica
  • Factura de exportación
  • Descarga de folios automática

Compatibilidad

  • C++
  • Delphi
  • Visual Foxpro
  • Visual Basic 6
  • FORTRAN
  • C#.NET
  • VisualBasic.NET
  • Java
  • COBOL
  • Harbour
  • Powerbuilder
  • Perl
  • Python
  • JavaScript/JScript
  • VBScript
  • Microsoft Office (todos los productos!)
  • PHP

Como probar la API para factura electrónica SII FECL

Descargue el paquete de instalación que incluye los archivos que implementan las funciones necesarias y los ejemplos.

Códigos de ejemplo

Visual Basic .NetVisual FoxproDelphi

Descargar Proyecto en Visual Basic .Net

        'Para poder evaluar necesitas las siguienets condiciones:
        '- Poseer un certificado y claves en formato PFX o PEM
        '- Poseer un archivo de folios solicitado a SII (https://maullin.sii.cl/cvc_cgi/dte/of_solicita_folios)
        '- Registrar la fecl ejecutando FECLRegistrar.exe
        '- Modificar los datos del emisor en el proyecto acorde a los datos de la empresa (Se pueden obtener de la web de SII)

        ' SI EL CERTIFICADO ES PFX
        Const ArchivoCertificado = "C:\Datos\certificado.pfx"
        Const Clave = "ClaveCertificado"

        ' SI EL CERTIFICADO ES CRT(PEM)
        'Const ArchivoCertificado = "C:\Datos\certificado.crt"
        'Const Clave = "C:\Datos\clave.key"


        'ARCHIVO DE FOLIO DESCARGADO DE LA PAGINA DE SII
        Const ArchivoFolio = "C:\Datos\Folio_1898.xml"

        'Numero de Folio
        Dim Folio As Integer = 5

        Dim vFecl As Fecl
        vFecl = New Fecl

        If vFecl.Autenticar(ArchivoCertificado, Clave) Then

            Dim vEnvio As fecllib.EnvioDTE
            vEnvio = vFecl.NuevoEnvioDTE

            Dim vCar As Caratula
            vCar = vEnvio.SetDTE.Caratula
            vCar.RutEmisor = "97975000-5"
            vCar.RutEnvia = "7880442-4"
            vCar.RutReceptor = "60803000-K"
            vCar.FchResol = "2003-09-02"
            vCar.NroResol = 0
            vCar.TmstFirmaEnv = ""
            vCar.AgregaSubTotDTE(33, 1)


            Dim vDoc As Documento
            vDoc = vEnvio.SetDTE.DTE(0).Documento
            vDoc.Encabezado.IdDoc.TipoDTE = 33
            vDoc.Encabezado.IdDoc.Folio = Folio
            vDoc.Encabezado.IdDoc.FchEmis = Format(Now, "yyyy-MM-dd")

            vDoc.Encabezado.Emisor.RutEmisor = vCar.RutEmisor
            vDoc.Encabezado.Emisor.RznSoc = "RUT DE PRUEBA"
            vDoc.Encabezado.Emisor.GiroEmis = "Insumos de Computacion"
            vDoc.Encabezado.Emisor.AgregaActeco(31341)
            vDoc.Encabezado.Emisor.DirOrigen = "Teatinos 120, Piso 4"
            vDoc.Encabezado.Emisor.CmnaOrigen = "Santiago"

            vDoc.Encabezado.Receptor.RUTRecep = vCar.RutReceptor
            vDoc.Encabezado.Receptor.RznSocRecep = "EMPRESA  LTDA"
            vDoc.Encabezado.Receptor.GiroRecep = "COMPUTACION"
            vDoc.Encabezado.Receptor.DirRecep = "SAN DIEGO 2222"
            vDoc.Encabezado.Receptor.CmnaRecep = "LA FLORIDA"

            vDoc.Encabezado.Totales.MntNeto = 171639
            vDoc.Encabezado.Totales.TasaIVA = 19
            vDoc.Encabezado.Totales.IVA = 32611
            vDoc.Encabezado.Totales.MntTotal = 204250

            vDoc.Detalle(0).NroLinDet = 1
            vDoc.Detalle(0).TpoCodigo = "INT1"
            vDoc.Detalle(0).VlrCodigo = "011"
            vDoc.Detalle(0).NmbItem = "Cajón AFECTO"
            vDoc.Detalle(0).DscItem = "Cajón AFECTO"
            vDoc.Detalle(0).QtyItem = 122
            vDoc.Detalle(0).PrcItem = 833
            vDoc.Detalle(0).MontoItem = 101626

            vDoc.Detalle(1).NroLinDet = 2
            vDoc.Detalle(1).TpoCodigo = "INT1"
            vDoc.Detalle(1).VlrCodigo = "0231"
            vDoc.Detalle(1).NmbItem = "Relleno AFECTO"
            vDoc.Detalle(1).DscItem = "Relleno AFECTO"
            vDoc.Detalle(1).QtyItem = 53
            vDoc.Detalle(1).PrcItem = 1321
            vDoc.Detalle(1).MontoItem = 70013

            vDoc.TED.RE = vDoc.Encabezado.Emisor.RutEmisor
            vDoc.TED.TD = vDoc.Encabezado.IdDoc.TipoDTE
            vDoc.TED.F = vDoc.Encabezado.IdDoc.Folio
            vDoc.TED.FE = vDoc.Encabezado.IdDoc.FchEmis
            vDoc.TED.RR = vDoc.Encabezado.Receptor.RUTRecep
            vDoc.TED.RSR = vDoc.Encabezado.Receptor.RznSocRecep
            vDoc.TED.MNT = vDoc.Encabezado.Totales.MntTotal
            vDoc.TED.IT1 = vDoc.Detalle(0).DscItem
            vDoc.TED.CAF.CargaDesdeArchivo(ArchivoFolio)

            vEnvio.Firma()

            If vFecl.EnviarDTE() Then
                MsgBox("DTE enviado con éxito! TrackID: " + vFecl.TrackID)
            Else
                MsgBox(vFecl.ErrorDesc)
            End If

        Else
            MsgBox(vFecl.ErrorDesc)
        End If

Descargar Proyecto en Visual Foxpro

  *EJECUTE FECLRegistrar.exe si no lo hizo antes

  * SI EL CERTIFICADO ES PFX 
  #define ArchivoCertificado "C:\Datos\cotillon.pfx"
  #define Clave "ClaveCertificado"

  * SI EL CERTIFICADO ES CRT(PEM) 
  *#define ArchivoCertificado "C:\Datos\cotillon.crt"
  *#define Clave "C:\Datos\cotillon.key"


  *ARCHIVO DE FOLIO DESCARGADO DE LA PAGINA DE SII
  #define ArchivoFolio "C:\Datos\Folio_1898.xml"

  Folio = 5

  vFecl = CreateObject("fecllib.Fecl")

  if vFecl.Autenticar(ArchivoCertificado, Clave) then
	  vEnvio = vFecl.NuevoEnvioDTE

	  vDTE = vEnvio.SetDTE
	  vCar = VDTE.Caratula

	  vCar.RutEmisor = "97975000-5"
	  vCar.RutEnvia = "7880442-4"
	  vCar.RutReceptor = "60803000-K"
	  vCar.FchResol = "2003-09-02"
	  vCar.NroResol = 0
	  vCar.TmstFirmaEnv = ""
	  vCar.AgregaSubTotDTE(33, 1)

	  Fecha = "2016-06-01"
	  vSetDTE = vEnvio.SetDTE

      vDoc = vEnvio.SetDTE.DTE(0).Documento
      vDoc.Encabezado.IdDoc.TipoDTE = 33
      vDoc.Encabezado.IdDoc.Folio = Folio
      vDoc.Encabezado.IdDoc.FchEmis = transform(year(date()),"@L 9999") + "-" + transform(month(date()),"@L 99") + "-" + transform(day(date()),"@L 99")

      vDoc.Encabezado.Emisor.RutEmisor = vCar.RutEmisor
      vDoc.Encabezado.Emisor.RznSoc = "RUT DE PRUEBA"
      vDoc.Encabezado.Emisor.GiroEmis = "Insumos de Computacion"
      vDoc.Encabezado.Emisor.AgregaActeco (31341)
      vDoc.Encabezado.Emisor.DirOrigen = "Teatinos 120, Piso 4"
      vDoc.Encabezado.Emisor.CmnaOrigen = "Santiago"

      vDoc.Encabezado.Receptor.RUTRecep = vCar.RutReceptor
      vDoc.Encabezado.Receptor.RznSocRecep = "EMPRESA  LTDA"
      vDoc.Encabezado.Receptor.GiroRecep = "COMPUTACION"
      vDoc.Encabezado.Receptor.DirRecep = "SAN DIEGO 2222"
      vDoc.Encabezado.Receptor.CmnaRecep = "LA FLORIDA"

      vDoc.Encabezado.Totales.MntNeto = 171639
      vDoc.Encabezado.Totales.TasaIVA = 19
      vDoc.Encabezado.Totales.IVA = 32611
      vDoc.Encabezado.Totales.MntTotal = 204250

      vDoc.Detalle(0).NroLinDet = 1
      vDoc.Detalle(0).TpoCodigo = "INT1"
      vDoc.Detalle(0).VlrCodigo = "011"
      vDoc.Detalle(0).NmbItem = "Cajón AFECTO"
      vDoc.Detalle(0).DscItem = "Cajón AFECTO"
      vDoc.Detalle(0).QtyItem = 122
      vDoc.Detalle(0).PrcItem = 833
      vDoc.Detalle(0).MontoItem = 101626

      vDoc.Detalle(1).NroLinDet = 2
      vDoc.Detalle(1).TpoCodigo = "INT1"
      vDoc.Detalle(1).VlrCodigo = "0231"
      vDoc.Detalle(1).NmbItem = "Relleno AFECTO"
      vDoc.Detalle(1).DscItem = "Relleno AFECTO"
      vDoc.Detalle(1).QtyItem = 53
      vDoc.Detalle(1).PrcItem = 1321
      vDoc.Detalle(1).MontoItem = 70013

      vDoc.TED.RE = vDoc.Encabezado.Emisor.RutEmisor
      vDoc.TED.TD = vDoc.Encabezado.IdDoc.TipoDTE
      vDoc.TED.F = vDoc.Encabezado.IdDoc.Folio
      vDoc.TED.FE = vDoc.Encabezado.IdDoc.FchEmis
      vDoc.TED.RR = vDoc.Encabezado.Receptor.RUTRecep
      vDoc.TED.RSR = vDoc.Encabezado.Receptor.RznSocRecep
      vDoc.TED.MNT = vDoc.Encabezado.Totales.MntTotal
      vDoc.TED.IT1 = vDoc.Detalle(0).DscItem
      vDoc.TED.CAF.CargaDesdeArchivo (ArchivoFolio)

      vEnvio.Firma

      If vFecl.EnviarDTE() Then
        MsgBox ("DTE enviado con éxito! TrackID: " + vFecl.TrackID)
      Else
        MsgBox (vFecl.ErrorDesc)
      EndIf

  Else
      MsgBox (vFecl.ErrorDesc)
  EndIf

const
  // CONFIGURAR ESTAS RUTAS ACORDE A LA UBICACION DE LOS ARCHIVOS
  ArchivoCertificado = 'C:\Datos\Empresa.crt';
  ArchivoClave = 'C:\Datos\Empresa.key';
  ArchivoFolio = 'C:\Datos\Folio.xml';
var
  vFecl: IFecl;
  vEnvio: IEnvioDTE;
  vCar: ICaratula;
  vDoc: IDocumento;
  Folio: Integer;
begin
  //Numero de Folio
  Folio := 5;

  vFecl := CoFecl.Create;

  if vFecl.Autenticar(ArchivoCertificado, ArchivoClave) then begin

    vEnvio := vFecl.NuevoEnvioDTE;

    vEnvio.ArchivoCertificado := ArchivoCertificado;
    vEnvio.ArchivoClave := ArchivoClave;


    vCar := vEnvio.SetDTE.Caratula;
    vCar.RutEmisor := '97975000-5';
    vCar.RutEnvia := '7880442-4';
    vCar.RutReceptor := '60803000-K';
    vCar.FchResol := '2003-09-02';
    vCar.NroResol := 0;
    vCar.TmstFirmaEnv := '';
    vCar.AgregaSubTotDTE(33, 1);

    vDoc := vEnvio.SetDTE.DTE(0).Documento;
    vDoc.Encabezado.IdDoc.TipoDTE := 33;
    vDoc.Encabezado.IdDoc.Folio := Folio;
    vDoc.Encabezado.IdDoc.FchEmis := FormatDateTime('yyyy-MM-dd', Now);

    vDoc.Encabezado.Emisor.RutEmisor := vCar.RutEmisor;
    vDoc.Encabezado.Emisor.RznSoc := 'RUT DE PRUEBA';
    vDoc.Encabezado.Emisor.GiroEmis := 'Insumos de Computacion';
    vDoc.Encabezado.Emisor.AgregaActeco(31341);
    vDoc.Encabezado.Emisor.DirOrigen := 'Teatinos 120, Piso 4';
    vDoc.Encabezado.Emisor.CmnaOrigen := 'Santiago';

    vDoc.Encabezado.Receptor.RUTRecep := vCar.RutReceptor;
    vDoc.Encabezado.Receptor.RznSocRecep := 'EMPRESA  LTDA';
    vDoc.Encabezado.Receptor.GiroRecep := 'COMPUTACION';
    vDoc.Encabezado.Receptor.DirRecep := 'SAN DIEGO 2222';
    vDoc.Encabezado.Receptor.CmnaRecep := 'LA FLORIDA';

    vDoc.Encabezado.Totales.MntNeto := 171639;
    vDoc.Encabezado.Totales.TasaIVA := 19;
    vDoc.Encabezado.Totales.IVA := 32611;
    vDoc.Encabezado.Totales.MntTotal := 204250;

    vDoc.Detalle(0).NroLinDet := 1;
    vDoc.Detalle(0).TpoCodigo := 'INT1';
    vDoc.Detalle(0).VlrCodigo := '011';
    vDoc.Detalle(0).NmbItem := 'Cajón AFECTO';
    vDoc.Detalle(0).DscItem := 'Cajón AFECTO';
    vDoc.Detalle(0).QtyItem := 122;
    vDoc.Detalle(0).PrcItem := 833;
    vDoc.Detalle(0).MontoItem := 101626;

    vDoc.Detalle(1).NroLinDet := 2;
    vDoc.Detalle(1).TpoCodigo := 'INT1';
    vDoc.Detalle(1).VlrCodigo := '0231';
    vDoc.Detalle(1).NmbItem := 'Relleno AFECTO';
    vDoc.Detalle(1).DscItem := 'Relleno AFECTO';
    vDoc.Detalle(1).QtyItem := 53;
    vDoc.Detalle(1).PrcItem := 1321;
    vDoc.Detalle(1).MontoItem := 70013;

    vDoc.TED.RE := vDoc.Encabezado.Emisor.RutEmisor;
    vDoc.TED.TD := vDoc.Encabezado.IdDoc.TipoDTE;
    vDoc.TED.F := vDoc.Encabezado.IdDoc.Folio;
    vDoc.TED.FE := vDoc.Encabezado.IdDoc.FchEmis;
    vDoc.TED.RR := vDoc.Encabezado.Receptor.RUTRecep;
    vDoc.TED.RSR := vDoc.Encabezado.Receptor.RznSocRecep;
    vDoc.TED.MNT := vDoc.Encabezado.Totales.MntTotal;
    vDoc.TED.IT1 := vDoc.Detalle(0).DscItem;
    vDoc.TED.CAF.CargaDesdeArchivo(ArchivoFolio);

    vEnvio.Firma;

    if vFecl.EnviarDTE() then
      ShowMessage('DTE enviado con éxito! TrackID: ' + vFecl.TrackID)
    else
      ShowMessage(vFecl.ErrorDesc);
  end
  else
    ShowMessage(vFecl.ErrorDesc);
end;

Solicite presupuesto

Formulario de contacto

Ah ocurrido un error
Hola, por favor use el siguiente formulario para ponerse en contacto con nuestro equipo.
Remitente
Elija la cantidad de empresas o CUITs en las que planea implementar la solución
Seleccione el lenguaje de programación
Scroll al inicio