factus-js iconfactus-js

Uso rápido

Configura FactusClient y emite tu primera factura electrónica usando Factus.

Instala los paquetes

npm install factus-js
yarn add factus-js
pnpm add factus-js
bun add factus-js

Configura las credenciales

Crea un archivo .env.local en la raíz de tu proyecto:

.env.local
FACTUS_CLIENT_ID=tu-client-id
FACTUS_CLIENT_SECRET=tu-client-secret
FACTUS_USERNAME=alanturing@enigmasas.com
FACTUS_PASSWORD=tu-contraseña

Inicializa el cliente

factus.ts
import { FactusClient } from "factus-js";

export const factus = new FactusClient({
  clientId: process.env.FACTUS_CLIENT_ID!,
  clientSecret: process.env.FACTUS_CLIENT_SECRET!,
  username: process.env.FACTUS_USERNAME!,
  password: process.env.FACTUS_PASSWORD!,
  environment: "sandbox", // "production" para el entorno real
});

El SDK obtiene y renueva el token de acceso de forma automática por lo que no necesitas llamar a ningún método de inicio de sesión manualmente. Consulta la documentación de autenticación para más detalles.

Crea tu primera factura

import factus from "./factus";
import {
  PaymentFormCode,
  PaymentMethodCode,
  IdentityDocumentTypeId,
  CustomerTributeId,
  OrganizationTypeId,
  ProductStandardId,
  FactusError,
} from "factus-js";

const createInvoice = async () => {
  try {
    const response = await factus.bills.create({
      numbering_range_id: 8,
      reference_code: "I3",
      observation: "Factura de prueba",
      payment_form: PaymentFormCode.CreditPayment,
      payment_method_code: PaymentMethodCode.Cash,
      payment_due_date: "2025-12-31",
      billing_period: {
        start_date: "2025-01-01",
        end_date: "2025-01-31",
      },
      customer: {
        identification: "123456789",
        dv: "3",
        company: "",
        trade_name: "",
        names: "Alan Turing",
        address: "calle 1 # 2-68",
        email: "alanturing@enigmasas.com",
        phone: "1234567890",
        legal_organization_id: OrganizationTypeId.NaturalPerson,
        tribute_id: CustomerTributeId.IVA,
        identification_document_id: IdentityDocumentTypeId.NIT,
        municipality_id: "980", // San Gil
      },
      items: [
        {
          code_reference: "12345",
          name: "Producto de ejemplo",
          quantity: 1,
          discount_rate: 20,
          price: 50000,
          tax_rate: "19.00",
          unit_measure_id: 70, // unidad
          standard_code_id: ProductStandardId.TaxpayerAdoption,
          is_excluded: 0,
          tribute_id: 1,
        },
      ],
    });

    return response.data;
  } catch (error) {
    if (error instanceof FactusError) {
      console.error(error);
    }
  }
};

En esta página