Uso rápido
Configura FactusClient y emite tu primera factura electrónica usando Factus.
Instala los paquetes
npm install factus-jsyarn add factus-jspnpm add factus-jsbun add factus-jsConfigura 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í.
FACTUS_CLIENT_ID=tu-client-id
FACTUS_CLIENT_SECRET=tu-client-secret
FACTUS_USERNAME=alanturing@enigmasas.com
FACTUS_PASSWORD=tu-contraseñaInicializa el cliente
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);
}
}
};