Facturar

Facturación

Payload mínimo de 6 campos: el SDK resuelve sku → SIN, cliente por identidad fiscal y códigos SIAT.

Crear, emitir y consultar

index.ts
1// Borrador (revisable en dashboard)
2const borrador = await supay.invoices.create({
3 pointOfSaleId: POS_ID,
4 customer: { documentType: "nit", documentNumber: "123456789", name: "Empresa SAC" },
5 items: [{ sku: "SERV-001", quantity: 2, price: 400 }],
6 payment: { methodCode: 1, currencyCode: 1, exchangeRate: 1 },
7});
8 
9// Emitir borrador existente
10const emitida = await supay.invoices.emitById(borrador.id);
11 
12// Consultar + documentos
13const actual = await supay.invoices.get(emitida.id);
14const xml = await supay.invoices.xml(emitida.id);
15const estado = await supay.invoices.siatStatus(emitida.id);
16const lista = await supay.invoices.list({ pointOfSaleId: POS_ID, status: "ACCEPTED", limit: 20 });

`preview` valida y calcula totales sin crear nada ni tocar el SIAT. `create` guarda borrador. `emit` crea y emite en el mismo paso y devuelve `ACCEPTED`, `OBSERVED` u `OFFLINE` (ver Contingencia). `payment` acepta método, moneda y tipo de cambio; si lo omites usa 1/1/1.

Cliente y producto sin fricción

Envía `customer` por identidad fiscal (`ci`, `nit`, `cex`, `pasaporte`, `otro`) y el SDK reutiliza el cliente o lo crea si `name` viene incluido. Los `items` van por `sku` y el SDK obtiene actividad, producto SIN y unidad de medida del catálogo vigente.