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 to Top