facturacion-open-api
v1.0.5
Published
Librería de facturación electrónica para Ecuador (SRI) compatible con los 6 tipos de comprobantes electrónicos y generación de RIDE en A4 y POS.
Maintainers
Readme
facturacion-open-api
Facturación Open API es un proyecto 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 y la puedes utilizar simplemente instalándola como dependencia en tu proyecto de Node o Bun.
Funciones
La librería cuenta actualmente con las siguientes funciones:
- Tipado de campos para comprobantes electrónicos de acuerdo a las especificaciones del SRI.
- Generación de archivo JSON con el formato de los 6 tipos de comprobantes electrónicos del SRI.
- Generación de XML con el formato de los 6 tipos de comprobantes del SRI (Factura, Nota de Crédito, Nota de Débito, Comprobante de Retención, Liquidación de Compra y Guía de Remisión).
- Firmado de XML con archivo .p12 (Compatible con Security Data y Banco Central)
- Envío de documento a endpoint de recepción del SRI
- Autorización de documento en endpoint del SRI
- Cargar Firma electrónica desde archivo local o URL
- Cargar XML desde archivo local o URL
- Generación de RIDE (Representación Impresa de Documento Electrónico) en formato PDF con soporte para diseño A4 y formato POS (80mm/58mm).
Generación de RIDE (A4 y POS)
El ecosistema de la librería incluye soporte nativo para la generación de la representación impresa del comprobante electrónico (RIDE) en formato PDF (con códigos QR generados dinámicamente y tablas de desglose tributario):
- Formato A4: Diseño estructurado oficial estándar para los 6 tipos de comprobantes (Facturas, Notas de Crédito, Notas de Débito, Retenciones, Liquidación de Compras y Guías de Remisión).
- Formato POS (80mm y 58mm): Diseño compacto de ticket adaptado para ticketeras térmicas de puntos de venta (disponible para Facturas, Notas de Crédito, Notas de Débito, Retenciones y Liquidaciones de Compra).
Ejemplo
Aquí puedes ver un ejemplo de cómo utilizar las funciones principales:
import {
generateInvoice,
generateInvoiceXml,
getP12FromUrl,
signXml,
} from "facturacion-open-api";
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!
);Generación de otros comprobantes
La librería expone funciones equivalentes para la generación de los otros tipos de documentos electrónicos de la misma manera:
- Retención:
generateRetention(data)ygenerateRetentionXml(retention) - Nota de Crédito:
generateCreditNote(data)ygenerateCreditNoteXml(creditNote) - Nota de Débito:
generateNotaDebito(data)ygenerateNotaDebitoXml(notaDebito) - Liquidación de Compra:
generateLiquidacionCompra(data)ygenerateLiquidacionCompraXml(liquidacionCompra) - Guía de Remisión:
generateGuiaRemision(data)ygenerateGuiaRemisionXml(guiaRemision)
Un ejemplo completo lo puedes encontrar en la carpeta tests
Ejemplos de los archivos generados los encuentras en src/example
Endpoints del SRI
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"Contribuir
Si deseas contribuir a este proyecto, crea un Pull Request con los cambios que pienses que pueden aportar para que el proyecto siga creciendo.
