Skip to main content
Crear una venta es el primer flujo recomendado para probar una integración real: envía un payload de negocio, impacta los efectos que correspondan y devuelve una respuesta tipada con requestId, datos persistidos, efectos y warnings.
import { Lapyme } from "lapyme";

const lapyme = new Lapyme({
  bearerAuth: process.env["LAPYME_API_KEY"] ?? "",
});

const externalOrderId = "shopify-1001";

const sale = await lapyme.sales.create({
  idempotencyKey: `sale:shopify:${externalOrderId}`,
  body: {
    customerId: "9c692e8b-0f9a-4f7c-8b99-061a2eb188ae",
    pointOfSaleId: "8d3e9c5a-0b1d-4a8c-9b55-4f1d6b6d4a10",
    voucherType: 6,
    invoiceDate: new Date(),
    currency: "PES",
    notes: `Pedido externo ${externalOrderId}`,
    items: [
      {
        productId: "4fb3af29-4ee4-4a8d-8b20-9a95b2431b73",
        quantity: 1,
        unitPrice: 125000,
      },
    ],
  },
});

console.log({
  requestId: sale.result.requestId,
  sale: sale.result.data.sale,
  effects: sale.result.data.projectedEffects,
  warnings: sale.result.warnings,
});

Reintentos seguros

Si tu worker, backend o job reintenta la misma venta, reenviá el mismo idempotencyKey. No generes una key nueva para cada intento del mismo pedido.
const idempotencyKey = `sale:shopify:${externalOrderId}`;

await lapyme.sales.create({
  idempotencyKey,
  body: salePayload,
});
Usá importes monetarios en centavos. Por ejemplo, $1.250,00 se envía como 125000.