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 existente10const emitida = await supay.invoices.emitById(borrador.id);11 12// Consultar + documentos13const 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.