JSPM

  • Created
  • Published
  • Downloads 6
  • Score
    100M100P100Q64963F
  • License ISC

SDK oficial para Lessa Billing API

Package Exports

  • lessa-billing-sdk
  • lessa-billing-sdk/dist/index.js
  • lessa-billing-sdk/dist/index.mjs

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (lessa-billing-sdk) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Lessa Billing SDK

npm version License: ISC

SDK oficial para la API de facturación electrónica de Lessa Billing. Simplifica la integración con el sistema de facturación electrónica ecuatoriano, proporcionando una interfaz TypeScript/JavaScript fácil de usar.

🚀 Características

  • Facturación electrónica completa - Emisión, firma y envío de facturas
  • Facturación por lotes - Procesamiento masivo de facturas
  • Gestión de compañías y clientes - CRUD completo
  • Firmas electrónicas - Gestión de certificados digitales
  • Reportes y PDFs - Generación de documentos
  • Validaciones ecuatorianas - RUC, cédula, secuenciales
  • TypeScript nativo - Tipado completo y autocompletado
  • Múltiples ambientes - Producción, pruebas y desarrollo

📦 Instalación

npm install lessa-billing-sdk
yarn add lessa-billing-sdk
pnpm add lessa-billing-sdk

🔧 Configuración

Inicialización básica

import { LessaBillingSDK } from "lessa-billing-sdk";

// Ambiente de pruebas (por defecto)
const sdk = new LessaBillingSDK("TU_API_KEY");

// Ambiente específico
const sdk = new LessaBillingSDK("TU_API_KEY", {
  environment: "Production", // 'Production' | 'Test' | 'Development'
});

Ambientes disponibles

Ambiente Descripción URL
Test Pruebas (por defecto) https://lessa-billing-api-preview.up.railway.app
Production Producción https://lessa-billing-api-production.up.railway.app
Development Desarrollo local http://localhost:5000

📖 Guía de uso

Facturación simple

import {
  LessaBillingSDK,
  PAYMENT_METHOD_WITHOUT_USING_FINANCIAL_SYSTEM,
} from "lessa-billing-sdk";

const sdk = new LessaBillingSDK("TU_API_KEY", { environment: "Test" });

const invoiceData = {
  clientOnCompanyId: "0401869691_0401869691001",
  paymentMethodCode: PAYMENT_METHOD_WITHOUT_USING_FINANCIAL_SYSTEM.code,
  details: [
    {
      code: "001",
      stubCode: "A001",
      description: "Producto o servicio",
      discount: 0,
      quantity: 1,
      unitPrice: 100,
      taxes: ["iva:15"],
      AdditionalDetails: [
        { name: "Detalle extra", value: "Información adicional" },
      ],
    },
  ],
};

try {
  const invoice = await sdk.billing.invoice(
    "ruc_empresa",
    "codigo_establecimiento",
    "punto_emision",
    invoiceData
  );
  console.log("Factura creada:", invoice);
} catch (error) {
  console.error("Error al facturar:", error);
}

Gestión de compañías

// Obtener compañías de un usuario
const companies = await sdk.companies.getUserCompanies("userId");

// Obtener información de una compañía
const company = await sdk.companies.getCompany("1234567890001");

// Crear nueva compañía
const newCompany = await sdk.companies.createCompany({
  ruc: "1234567890001",
  businessName: "Mi Empresa S.A.",
  // ... otros campos
});

Gestión de clientes

// Buscar cliente
const client = await sdk.clients.findClient("0401869691", "1234567890001");

// Actualizar cliente
await sdk.clients.updateClient("0401869691", "1234567890001", {
  name: "Nuevo nombre",
  email: "nuevo@email.com",
});

// Obtener créditos de cliente
const credits = await sdk.clients.getCredits("0401869691", "1234567890001");

Facturación por lotes

const batchData = [
  // Array de facturas
  invoiceData1,
  invoiceData2,
  // ...
];

// Generar lote
const batch = await sdk.batchBilling.generateBatch(
  "ruc",
  "establecimiento",
  "punto_emision",
  batchData
);

// Firmar lote
await sdk.batchBilling.signBatch(batch.billingProcessId);

// Enviar lote
await sdk.batchBilling.sendBatch(batch.billingProcessId);

// Verificar estado
const status = await sdk.batchBilling.checkBatch(batch.billingProcessId);

🛠️ Recursos disponibles

El SDK proporciona acceso a los siguientes recursos:

  • sdk.companies - Gestión de compañías
  • sdk.clients - Gestión de clientes
  • sdk.billing - Facturación individual
  • sdk.batchBilling - Facturación por lotes
  • sdk.signatures - Gestión de firmas electrónicas
  • sdk.invoices - Consulta de facturas
  • sdk.reports - Generación de reportes y PDFs
  • sdk.people - Validación de personas
  • sdk.establishments - Gestión de establecimientos
  • sdk.emissionPoints - Gestión de puntos de emisión
  • sdk.taxes - Consulta de impuestos

🔍 Utilidades incluidas

El SDK incluye utilidades para validación de datos ecuatorianos:

import {
  validateRuc,
  validateCedula,
  generateAccessKey,
  calculateInvoiceTotals,
} from "lessa-billing-sdk";

// Validar RUC
const isValidRuc = validateRuc("1234567890001");

// Validar cédula
const isValidCedula = validateCedula("0401869691");

// Generar clave de acceso
const accessKey = generateAccessKey({
  issueDate: new Date(),
  receiptType: "01",
  ruc: "1234567890001",
  environment: "1",
  establishment: "001",
  emissionPoint: "001",
  sequential: "000000001",
  numericCode: "12345678",
});

📚 Constantes predefinidas

import {
  PAYMENT_METHOD_WITHOUT_USING_FINANCIAL_SYSTEM,
  IVA_TAX_CODE,
  IVA_PERCENTAGE_CODE_15,
  IVA_FEE_CODE_15,
} from "lessa-billing-sdk";

🐛 Manejo de errores

try {
  const result = await sdk.billing.invoice(ruc, establishment, point, data);
} catch (error) {
  if (error.response) {
    // Error de la API
    console.error("Error de API:", error.response.data);
  } else if (error.request) {
    // Error de red
    console.error("Error de conexión:", error.message);
  } else {
    // Otro error
    console.error("Error:", error.message);
  }
}

📄 Licencia

ISC License - ver LICENSE para más detalles.

🤝 Soporte

Para soporte técnico o consultas:

🔄 Changelog

v0.0.46

  • Versión actual estable
  • Soporte completo para facturación electrónica ecuatoriana

Endpoints

Batch Billing

  • POST /billing/batch/invoices/generate/{ruc}/{establishmentCode}/{emissionPointCode}: Generate a batch of invoices.
  • POST /billing/batch/invoices/sign/{billingProcessId}: Sign a batch of invoices.
  • POST /billing/batch/invoices/send/{billingProcessId}: Send a batch of invoices.
  • POST /billing/batch/invoices/check/{billingProcessId}: Check the authorization status of a batch of invoices.
  • POST /billing/batch/invoices/{ruc}/{establishmentCode}/{emissionPointCode}: Send a batch of invoices with a timeout of 0.

Billing

  • POST /billing/invoice/{ruc}/{establishmentCode}/{emissionPointCode}: Create an invoice.
  • POST /billing/invoice/generate/{ruc}/{establishmentCode}/{emissionPoint}: Generate an invoice.
  • POST /billing/invoice/sign/{accessKey}: Sign an invoice.
  • POST /billing/invoice/send/{accessKey}: Send an invoice.
  • POST /billing/invoice/check/{accessKey}: Check the authorization status of an invoice.

Clients

  • GET /clients/find/{identificationID}/{rucID}: Find a client in a company.
  • PATCH /clients/update/{currentIdentificationID}/{rucID}: Update a client's information.
  • GET /credits/{identificationID}/{rucID}: Get a client's credits.
  • POST /credits/create/{identificationID}/{rucID}: Create a credit for a client.
  • GET /paymentsHistory/find/{creditID}: Get the payment history for a credit.
  • POST /paymentHistory/create/{identificationID}/{rucID}: Create a payment for a client.

Companies

  • POST /companies/create: Create a new company.
  • GET /companies/{ruc}: Get a company by its RUC.
  • PATCH /companies/{ruc}: Update a company's information.
  • GET /companies/clients/{ruc}: Get a company's clients.
  • GET /companies/clients/mapped/{ruc}: Get a company's clients in a mapped format.
  • GET /companies/clients/count/{ruc}: Count a company's clients.
  • POST /companies/{ruc}/create-person-relation: Create a person-company relationship.
  • GET /companies/user/{userId}: Get the companies associated with a user.
  • GET /companies/billing-status/{ruc}: Get the billing status of a company.
  • POST /companies/create-relation/{rucProvider}/{rucClient}: Create a relationship between two companies.
  • PATCH /companies/update-relation/{rucProvider}/{rucClient}: Update a relationship between two companies.
  • GET /companies/is-registered/{ruc}: Check if a company is registered.
  • GET /companies/{ruc}/establishments-and-emission-points: Get a company's establishments and emission points.
  • GET /companies/{userId}/companies-establishments-and-emission-points: Get the establishments and emission points of the companies associated with a user.

Emission Points

  • GET /emission-points/establishment/{establishmentId}: Get the emission points of an establishment.
  • GET /emission-points/find-one/{ruc}/{establishmentCode}/{emissionPoint}: Get a specific emission point.
  • GET /emission-points/find/{ruc}/{establishmentCode}: Get the emission points of an establishment.
  • PATCH /emission-points/{emissionPointId}: Update an emission point.

Establishments

  • GET /establishments/company/{ruc}: Get the establishments of a company.

Invoices

  • GET /invoices/association/{clientOnCompanyId}: Get invoices by association ID.
  • GET /invoices/company/{ruc}: Get invoices by company RUC.
  • GET /invoices/clientOnCompany/{identificationID}/{rucID}: Get invoices by client and company.

People

  • GET /people/find/{identification}: Find a person by their identification.
  • GET /people/validate/{identification}: Validate a person's identification.

Reports

  • GET /reports/bill/{accessKey}: Get an invoice PDF.

Signatures

  • GET /signatures/company/{ruc}: Get the signatures of a company.
  • PATCH /signatures/update/{ruc}/{id}: Update a signature.
  • POST /signatures/create/{ruc}: Create a signature.
  • PATCH /signatures/select/{id}: Select a signature.

Taxes

  • GET /taxes: Get a list of taxes.