Integración con POS
Conecta tu punto de venta con Xtarly Rewards para acreditar puntos o sellos automáticamente cuando un cliente realiza una compra.
La integración con POS permite que tu sistema de punto de venta registre transacciones directamente vía una API REST. Cada vez que un cliente paga, tu POS llama al endpoint de Xtarly y el cliente recibe sus puntos o sellos al instante — sin necesidad de escanear manualmente.
Obtener tu API key
- Abre el dashboard de tu organización y ve a Configuración → General.
- Desplázate hasta la sección Integración con POS.
- Haz clic en Generar API key. La clave se muestra una sola vez — cópiala de inmediato y guárdala de forma segura (por ejemplo, en las variables de entorno de tu POS).
- Si la clave se ve comprometida, haz clic en Rotar para invalidar la clave anterior y generar una nueva.
La API key solo se muestra una vez al generarse. Si la pierdes, deberás rotar la clave y actualizar todas las integraciones que la usaban.
URL base
Todos los endpoints POS se sirven desde tu dominio de Xtarly:
https://www.xtarly.com/api/integrations/posAutenticación
Incluye tu API key en cada solicitud mediante el header X-API-Key:
X-API-Key: xtarly_pos_<tu_clave>Las solicitudes sin una clave válida devuelven 401 Unauthorized.
Endpoints
Registrar una transacción
POST /api/integrations/pos/transactionLlama a este endpoint cuando un cliente completa una compra. Xtarly calcula los puntos o sellos ganados según tu programa de recompensas activo y los acredita al cliente.
Cuerpo de la solicitud
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
amount | number | ✓ | Total de la compra en la unidad monetaria más pequeña (por ejemplo, centavos para MXN/USD). |
customerId | string | ✓ (o customerEmail) | ID de cliente en Xtarly. |
customerEmail | string | ✓ (o customerId) | Correo electrónico registrado del cliente. |
metadata | object | — | Objeto libre opcional adjunto a la transacción (por ejemplo, { "ticket": "1234" }). |
Proporciona customerId o customerEmail — al menos uno es obligatorio.
Ejemplo de solicitud
curl -X POST https://www.xtarly.com/api/integrations/pos/transaction \
-H "Content-Type: application/json" \
-H "X-API-Key: xtarly_pos_<tu_clave>" \
-d '{
"amount": 35000,
"customerEmail": "cliente@ejemplo.com",
"metadata": { "ticket": "T-00412" }
}'Respuesta exitosa 200 OK
{
"success": true,
"data": {
"transactionId": "txn_abc123",
"earnedPoints": 35,
"earnedStamps": 0,
"customerPoints": 210,
"customerStamps": 0
}
}| Campo | Descripción |
|---|---|
transactionId | ID único de la transacción registrada. |
earnedPoints | Puntos acreditados en esta transacción. |
earnedStamps | Sellos acreditados en esta transacción (programas de sellos). |
customerPoints | Total de puntos del cliente después de esta transacción. |
customerStamps | Total de sellos del cliente después de esta transacción. |
Consultar un cliente
GET /api/integrations/pos/customer/:idDevuelve el saldo y nivel actual de un cliente. Útil para mostrar el estado de fidelización en el punto de venta antes o después de una transacción.
Ejemplo de solicitud
curl https://www.xtarly.com/api/integrations/pos/customer/cus_abc123 \
-H "X-API-Key: xtarly_pos_<tu_clave>"Respuesta exitosa 200 OK
{
"success": true,
"data": {
"id": "cus_abc123",
"name": "María García",
"email": "cliente@ejemplo.com",
"points": 210,
"stamps": 0,
"tier": null
}
}Cálculo de puntos
Los puntos o sellos acreditados por transacción dependen del tipo de programa activo:
| Tipo de programa | Cálculo |
|---|---|
| Puntos | floor(amount / currencyUnit × pointsPerCurrency) |
| Niveles | Igual que Puntos, multiplicado por el multiplicador del nivel del cliente. |
| Sellos | 1 sello por transacción, sin importar el monto. |
Configuras currencyUnit y pointsPerCurrency en Configuración → Programa.
Códigos de error
| Código | HTTP | Descripción |
|---|---|---|
UNAUTHORIZED | 401 | API key ausente o inválida. |
VALIDATION_ERROR | 400 | Falta amount o el identificador del cliente. |
NOT_FOUND | 404 | No se encontró ningún cliente con el ID o correo dado en tu organización. |
BAD_REQUEST | 400 | Tu organización no tiene un programa de recompensas activo. |