Merch corporativo en otros países:AMArmeniaGEGeorgiaTRTürkiyeRSSerbiaAEUAECYCyprusITItalyPTPortugalPLPoland

SDK Node.js para España

@corp-merch/sdk — TypeScript-first, cero dependencias, funciona en Node 18+, Bun, Deno, Vercel y AWS Lambda.

Instalación e init

npm install @corp-merch/sdk. Inicializa: const cm = new CorpMerch({ apiKey: process.env.CM_KEY, country: 'ES', env: 'production' }). El cliente autoload IVA 21% y enruta facturas vía FACe/SII (AEAT); hub Madrid por defecto.

Quickstart — enviar pedido

const order = await cm.orders.create({ idempotencyKey: crypto.randomUUID(), buyer: { vatId: 'ES…' }, lines: [{ sku: 'TSH-001', qty: 200 }], promisedDate: '2026-07-01' }); console.log(order.id, order.estimatedIvaAmountCents). Devuelve Order tipado con status discriminated-union. Errores lanzados como ValidationError / RateLimitError etc.

Verificación webhook

En una ruta Express/Fastify: const event = cm.webhooks.constructEvent(rawBody, req.headers['x-corp-signature'], process.env.CM_WEBHOOK_SECRET); switch (event.type) { case 'invoice.issued': … }. Lanza SignatureVerificationError en mismatch o timestamp obsoleto (>5 min).

FAQ

¿ESM o CommonJS?

Ambos — dual package. ESM preferido (.mjs + .d.ts), CommonJS vía require() funciona vía package.json exports.

¿Funciona con Bun y Deno?

Sí — probado en CI en Bun 1.x y Deno 1.x con la misma test suite que Node. Usa npm: specifier en Deno o simplemente import en Bun.

¿Cómo se configuran los reintentos?

3 reintentos por defecto en 5xx, 429 y errores de red con backoff. Override vía new CorpMerch({ retries: 5, retryBackoffMs: 200 }).

¿Hay método catalog streaming?

Sí — cm.catalog.list({ country: 'ES' }) devuelve AsyncIterator; for await (const item of …) itera todas las páginas automáticamente.

¿Código fuente disponible?

MIT en GitHub: github.com/corp-merch/sdk-js. PRs bienvenidos; CLA requerido para contribuciones no triviales.

Habla con un especialista