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:

Esta versión del SDK utiliza la API v2 de Factus, asegúrate de que tus credenciales estén habilitadas para usar este entorno — Si lo necesitas puedes encontrar la versión anterior del SDK aquí.

.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 {
  CustomerTributeCode,
  PaymentFormCode,
  PaymentMethodCode,
  FactusError,
  IdentityDocumentCode,
  OperationTypeCode,
  OrganizationTypeCode,
  ProductStandardCode,
} from "factus-js";

const createBill = async () => {
  try {
    const response = await factus.bills.create({
      numbering_range_id: 8,
      reference_code: "FACT-2026-0001",
      observation: "Factura de prueba",
      operation_type: OperationTypeCode.Standard,
      payment_details: [
        {
          payment_form: PaymentFormCode.CreditPayment,
          payment_method_code: PaymentMethodCode.Cash,
          amount: "50000.00",
          due_date: "2026-12-31",
        },
      ],
      billing_period: {
        start_date: "2026-01-01",
        end_date: "2026-01-31",
      },
      customer: {
        identification: "123456789",
        names: "Alan Turing",
        address: "Calle 1 # 2-68",
        email: "alanturing@enigmasas.com",
        phone: "1234567890",
        legal_organization_code: OrganizationTypeCode.NaturalPerson,
        tribute_code: CustomerTributeCode.NotApplicable,
        identification_document_code: IdentityDocumentCode.CitizenshipCard,
        municipality_code: "11001",
      },
      items: [
        {
          code_reference: "PROD-001",
          name: "Producto de ejemplo",
          quantity: "1.00",
          discount_rate: "0.00",
          price: "50000.00",
          unit_measure_code: "94",
          standard_code: ProductStandardCode.TaxpayerAdoption,
          taxes: [{ code: "01", rate: "19.00" }],
        },
      ],
    });

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

En esta página