Empezar
Autenticación e idempotencia
Todo vía SDK: la API key vive en el constructor y la idempotencia en las opciones del método.
API key por tenant
Cada empresa recibe su `X-API-Key` al registrarse. El SDK la envía en cada llamada y aísla sucursales, puntos de venta, certificados, clientes, productos y facturas por tenant. Nunca mezcles keys entre empresas.
index.ts
1import { Supay } from "@supay/sdk";2 3const supay = new Supay({4 apiKey: process.env.SUPAY_API_KEY!, // sup_live_xxx por tenant5 baseUrl: "https://api.supay.bo", // opcional6 timeoutMs: 30_000,7});Reintentos seguros
Las creaciones aceptan clave de idempotencia (máximo 100 caracteres). Misma key = misma factura, sin duplicar. Úsala siempre en `emit` desde tu POS.
index.ts
1import { withIdempotency } from "@supay/sdk";2 3// Reintentos seguros: misma key = misma factura, sin duplicar4const factura = await supay.invoices.emit(5 { pointOfSaleId: POS_ID, customer, items },6 { idempotencyKey: "pos-7-2026-000147" }, // ≤ 100 chars7);Buena práctica
Genera la key como `pos-7-2026-000147` (punto de venta + fecha + correlativo). Guárdala con tu venta local para poder reintentar tras un corte de red.