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:
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 {
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);
}
}
};