Open Factura es un proyecto opensource de facturación electrónica para Ecuador compatible con la ficha técnica para comprobantes electrónicos emitido por el SRI.
Está publicada como librería en npm y la puedes utilizar simplemente instalandola como dependencia en tu proyecto de Node o Bun.
La librería cuenta actualmente con las siguientes funciones:
Aquí puedes ver un ejemplo de cómo utilizar las funciones principales:
import {
generateInvoice,
generateInvoiceXml,
getP12FromUrl,
signXml,
} from "open-factura";
const { invoice, accessKey } = generateInvoice({
infoTributaria: {
...
},
infoFactura: {
...
},
detalles: {
...
},
reembolsos: {
...
},
retenciones: {
...
},
infoSustitutivaGuiaRemision: {
...
},
otrosRubrosTerceros: {
...
},
tipoNegociable: { correo: "correo0" },
maquinaFiscal: {
...
},
infoAdicional: {
...
},
});
const invoiceXml = generateInvoiceXml(invoice);
const signature: ArrayBuffer = await getP12FromUrl("yoururl");
const password = "yourpassword";
const signedInvoice = await signXml(sign, password, invoiceXml);
const receptionResult = await documentReception(
signedInvoice,
process.env.SRI_RECEPTION_URL!
);
const authorizationResult = await documentAuthorization(
accessKey,
process.env.SRI_AUTHORIZATION_URL!
);
Un ejemplo completo lo puedes encontrar en la carpeta tests
Ejemplos de los archivos generados los encuentras en src/example
El SRI ha habilitado dos endpoints para cada ambiente (pruebas, producción).
Producción
SRI_RECEPTION_URL="https://cel.sri.gob.ec/comprobantes-electronicos-ws/RecepcionComprobantesOffline?wsdl"
SRI_AUTHORIZATION_URL="https://cel.sri.gob.ec/comprobantes-electronicos-ws/AutorizacionComprobantesOffline?wsdl"
Pruebas
SRI_RECEPTION_URL="https://celcer.sri.gob.ec/comprobantes-electronicos-ws/RecepcionComprobantesOffline?wsdl"
SRI_AUTHORIZATION_URL="https://celcer.sri.gob.ec/comprobantes-electronicos-ws/AutorizacionComprobantesOffline?wsdl"
Ten en cuenta que para poder utilizar estos endpoints con tu RUC debes activar el ambiente de pruebas/producción en tu cuenta del SRI. Aquí un tutorial de cómo hacerlo
Si deseas contribuir a este proyecto puedes comprarme un café o Crea un Pull Request con los cambios que pienses que pueden aportar para que el proyecto siga creciendo.