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 tenant
5 baseUrl: "https://api.supay.bo", // opcional
6 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 duplicar
4const factura = await supay.invoices.emit(
5 { pointOfSaleId: POS_ID, customer, items },
6 { idempotencyKey: "pos-7-2026-000147" }, // ≤ 100 chars
7);

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.