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
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;