Para desarrolladoresFor developers

Conecta tu POS o ERP
con fidelización WhatsApp
Connect your POS or ERP
to WhatsApp loyalty

Bizzlink se integra en tu sistema de facturación en minutos. Genera PINs en cada venta, imprímelos como QR en la factura, y deja que el cliente active sus puntos directamente desde WhatsApp — sin apps, sin registro manual. Bizzlink integrates into your billing system in minutes. Generate PINs on each sale, print them as QR codes on the invoice, and let the customer activate their points directly from WhatsApp — no apps, no manual registration.

🌐 REST + JSON
🔑 Sin auth del lado del integrador
📱 Activación 100% en WhatsApp
🎁 Canje opcional en el POS
🌐 REST + JSON
🔑 No auth on integrator side
📱 100% WhatsApp activation
🎁 Optional POS redemption
flujo de integración rápidaquick integration flow
1. Generar PINGenerate PIN
2. QR en facturaon invoice
3. Canje (opcional)Redeem (optional)
# ES: Al facturar, si el monto supera el mínimo configurado, solicitar un PIN
# EN: On invoice, if amount exceeds configured minimum, request a PIN
 
POST https://panel.bizzlink.io/api/v1/integraciones/pin/generar
X-API-Key: {API_KEY_COMERCIO}
 
{ "ok": true, "pin": "8432", "expires_in": 1800 }
 
→ 200 OK
{ "ok": true, "pin": "8432", "expires_at": "2026-05-07T15:30:00", "expires_in": 1800 }
# ES: Construir el URL del QR con el PIN y el WhatsApp del bot Bizzlink
# EN: Build the QR URL with the PIN and Bizzlink's WhatsApp bot
 
# whatsapp_bot_url se obtiene del panel superadmin
# whatsapp_bot_url is obtained from the superadmin panel
 
# Construir URL: https://wa.me/{BOT}?text=Quiero+activar+mi+PIN:+{PIN}
 
# Imprimir este URL como QR en la factura
# Print this URL as QR code on the invoice
# El cliente escanea → abre WhatsApp → Bizzlink activa el PIN
# Customer scans → opens WhatsApp → Bizzlink activates the PIN
# ES: Opcional — consultar si el cliente tiene puntos canjeables
# EN: Optional — check if the customer has redeemable points
 
GET https://panel.bizzlink.io/api/v1/redimir/puntos/%2B50688887777
 
→ { "ok": true, "data": [{ "puntos": 10, "proxima_recompensa": {...} }] }
 
# Si el cliente quiere canjear → aplicar descuento o regalía en el POS
POST /api/v1/redimir/canjear
{ "whatsapp": "+50688887777", "id_comercio": 1, "id_promocion": 3 }
Visión generalOverview

Bizzlink es una plataforma SaaS multi-tenant de fidelización de clientes vía WhatsApp. La integración con POS y ERPs se limita a dos responsabilidades: generar el PIN al momento de facturar e imprimir el QR en la factura. Todo el proceso de activación, registro de nombre y acumulación de puntos ocurre en WhatsApp — Bizzlink lo maneja de forma autónoma. Bizzlink is a multi-tenant SaaS customer loyalty platform via WhatsApp. The POS/ERP integration has two responsibilities only: generate the PIN at checkout and print the QR on the invoice. The entire activation, name registration, and point accumulation process happens on WhatsApp — Bizzlink handles it autonomously.

Base URLBase URL

Endpoint de generación de PIN (autenticado con API Key):PIN generation endpoint (authenticated with API Key):

https://panel.bizzlink.io/api/v1/integraciones/

Endpoints públicosPublic endpoints

Consulta y canje — sin token:Lookup and redeem — no token:

https://panel.bizzlink.io/api/v1/redimir/

AutenticaciónAuthentication

Generar PIN requiere API key del comercio. Consultas y canjes son públicos.PIN generation requires the merchant API key. Lookups and redemptions are public.

X-API-Key: {API_KEY}

Formato

Todas las peticiones y respuestas usan JSON con UTF-8.All requests and responses use JSON with UTF-8.

Content-Type: application/json
Cómo funcionaHow it works

El sistema de fidelización opera en dos mundos separados: el POS genera el PIN y el bot de WhatsApp activa los puntos. No existe comunicación en tiempo real entre ambos — el cliente es el puente. The loyalty system operates in two separate worlds: the POS generates the PIN and the WhatsApp bot activates the points. There's no real-time communication between them — the customer is the bridge.

ℹ️
Separación de responsabilidades: El POS/ERP solo genera el PIN y construye el QR. Todo lo demás — activación, nombre del cliente, acumulación de puntos — ocurre en WhatsApp con el bot de Bizzlink. El integrador no necesita implementar ni conocer ese proceso. Separation of concerns: The POS/ERP only generates the PIN and builds the QR. Everything else — activation, customer name, point accumulation — happens on WhatsApp with the Bizzlink bot. The integrator doesn't need to implement or know that process.
Flujo de integración POS / ERPPOS / ERP integration flow

Desde la perspectiva del sistema de facturación, la integración completa implica los siguientes pasos en cada venta. From the billing system's perspective, the complete integration involves the following steps on each sale.

1
Verificar monto mínimoCheck minimum amount

Cada comercio configura un monto mínimo de compra para ser elegible a recibir un PIN. El POS consulta ese valor y lo compara con el total de la factura. Si no supera el mínimo, no se genera PIN y el flujo termina aquí. Each merchant configures a minimum purchase amount to be eligible for a PIN. The POS checks that value against the invoice total. If below the minimum, no PIN is generated and the flow ends here.

POS / ERP
2
Solicitar PIN a BizzlinkRequest PIN from Bizzlink

Si el monto califica, el POS hace una llamada POST a /integraciones/pin/generar con el header X-API-Key. Sin body. Bizzlink genera un PIN de 4 dígitos único, lo asocia al comercio y retorna el PIN con su fecha de expiración. If the amount qualifies, the POS makes a POST call to /integraciones/pin/generar with the X-API-Key header. No body required. Bizzlink generates a unique 4-digit PIN, associates it to the merchant, and returns the PIN with its expiration date.

API call — POST /pin/generar
3
Construir el URL del QRBuild the QR URL

Con el PIN recibido, el POS construye un URL de WhatsApp que incluye el número del bot Bizzlink y un mensaje pre-cargado con el PIN. Este URL se convierte en un código QR. With the received PIN, the POS builds a WhatsApp URL that includes the Bizzlink bot number and a pre-loaded message with the PIN. This URL is converted into a QR code.

# Formato del URL
https://wa.me/{NUMERO_BOT}?text=Quiero+activar+mi+PIN:+{PIN}

# Ejemplo
https://wa.me/50600000000?text=Quiero+activar+mi+PIN:+8432
💡
El número del bot Bizzlink (NUMERO_BOT) se obtiene desde el panel superadmin de Bizzlink y no cambia. Se configura una sola vez en el sistema.The Bizzlink bot number (NUMERO_BOT) is obtained from the Bizzlink superadmin panel and doesn't change. Configure it once in the system.
POS / ERP
4
Imprimir QR en la facturaPrint QR on the invoice

El POS imprime el QR en la factura junto a un texto como "Escaneá para acumular puntos en tu programa de fidelización". El integrador puede usar cualquier librería de generación de QR disponible en su stack. The POS prints the QR on the invoice next to text like "Scan to earn loyalty points". The integrator can use any QR generation library available in their stack.

POS / ERP
5
Cliente activa el PIN en WhatsAppCustomer activates the PIN on WhatsApp

El cliente escanea el QR con su teléfono, se abre WhatsApp con el mensaje pre-cargado, y lo envía al bot de Bizzlink. El bot valida el PIN, acredita el punto, solicita el nombre si es la primera vez, y confirma la acumulación. Este proceso es 100% autónomo — el POS no interviene. The customer scans the QR with their phone, WhatsApp opens with the pre-loaded message, and they send it to the Bizzlink bot. The bot validates the PIN, credits the point, requests the name if it's the first time, and confirms the accumulation. This process is 100% autonomous — the POS does not intervene.

WhatsApp Bot — Bizzlink
6
Integración completa ✓Integration complete ✓

El POS no necesita saber qué sucedió después de imprimir el QR. Bizzlink maneja toda la lógica de fidelización de forma autónoma. Opcionalmente, el POS puede consultar puntos y ejecutar canjes (ver siguiente sección). The POS doesn't need to know what happened after printing the QR. Bizzlink handles all loyalty logic autonomously. Optionally, the POS can query points and execute redemptions (see next section).

Bizzlink
Funciones opcionales — Canje en el POSOptional features — POS redemption

Si el comercio quiere permitir que el cliente canjee sus puntos directamente en el POS (para obtener un descuento o regalía aplicado en la factura), puede implementar el flujo opcional de canje. If the merchant wants to allow customers to redeem points directly at the POS (to get a discount or gift applied on the invoice), they can implement the optional redemption flow.

1
Cajero ingresa WhatsApp del clienteCashier enters customer's WhatsApp

El cajero solicita el número de WhatsApp del cliente e ingresa al POS.The cashier asks for the customer's WhatsApp number and enters it in the POS.

POS / ERP
2
Consultar puntos y recompensasQuery points and rewards

El POS consulta GET /redimir/puntos/{wa} para ver los puntos del cliente y las recompensas disponibles para el comercio.The POS queries GET /redimir/puntos/{wa} to see the customer's points and available rewards for the merchant.

API call — GET /puntos/{wa}
3
Cliente elige recompensaCustomer chooses reward

Si el cliente tiene puntos suficientes, el POS muestra las opciones de canje disponibles (descuento, regalía, producto gratis, etc.).If the customer has enough points, the POS shows available redemption options (discount, gift, free product, etc.).

POS / ERP
4
Ejecutar canjeExecute redemption

El POS llama POST /redimir/canjear con el WhatsApp, ID del comercio e ID de la promoción. Si el canje es exitoso, el POS aplica el beneficio en la factura (descuento, regalía, etc.).The POS calls POST /redimir/canjear with the WhatsApp, merchant ID, and promotion ID. If redemption is successful, the POS applies the benefit on the invoice (discount, gift, etc.).

API call — POST /canjear (opcional)
⚠️
El canje es irreversible. Una vez ejecutado POST /canjear, los puntos se descuentan y el canje queda registrado. Confirmar con el cliente antes de ejecutar. Redemption is irreversible. Once POST /canjear is executed, points are deducted and the redemption is recorded. Confirm with the customer before executing.
Referencia de la APIAPI Reference
POST /api/v1/integraciones/pin/generar Generar PIN para facturaGenerate PIN for invoice 30/min
DescripciónDescription

Genera un PIN de 4 dígitos asociado al comercio autenticado. Si el monto de la compra no supera el monto mínimo configurado por el comercio, retorna el PIN con su tiempo de expiración. Generates a 4-digit PIN associated to the authenticated merchant. If the purchase amount doesn't exceed the minimum configured by the merchant, returns the PIN with its expiration time.

🔐
Este endpoint requiere autenticación mediante API Key en el header X-API-Key: {API_KEY}. La API Key se genera desde el panel Bizzlink en Integraciones → Nueva API Key. No expira — se puede revocar desde el panel. This endpoint requires authentication via API Key in the header X-API-Key: {API_KEY}. The API Key is generated from the Bizzlink panel in Integrations → New API Key. Does not expire — revocable from the panel.
HeadersHeaders
HeaderTipo / TypeDescripciónDescription
X-API-Key* string API Key del comercio generada desde el panel. Merchant API Key generated from the panel.

Sin body requerido. No body required.

Ejemplo de peticiónRequest example
# Header requerido / Required header
X-API-Key: bz_live_xxxxxxxxxxxxxxxxxxxx

# Sin body / No body
Respuesta exitosaSuccess response
{
  "ok": true,
  "pin": "8432",
  "expires_at": "2026-05-07T15:30:00-06:00",
  "expires_in": 1800,
  "id_comercio": 1
}
💡
Con el PIN recibido, el integrador construye el URL de WhatsApp: https://wa.me/{NUMERO_BOT}?text=Quiero+activar+mi+PIN:+{PIN} y lo convierte en QR para imprimir en la factura. El número del bot se obtiene del panel superadmin y se configura una sola vez. With the received PIN, the integrator builds the WhatsApp URL: https://wa.me/{BOT_NUMBER}?text=Quiero+activar+mi+PIN:+{PIN} and converts it to a QR to print on the invoice. The bot number is obtained from the superadmin panel and configured once.
POST /api/v1/integraciones/pin/generar Generar PIN desde sistema externoGenerate PIN from external system 60/min
DescripciónDescription

Genera un PIN de 4 dígitos desde un sistema externo (POS, agente de impresión, ecommerce). Equivalente al PIN del cajero — el cliente lo ingresa en WhatsApp para acreditar su punto. No requiere body. Generates a 4-digit PIN from an external system (POS, print agent, ecommerce). Equivalent to the cashier PIN — the customer enters it in WhatsApp to earn their point. No body required.

🔑
Requiere API Key en el header X-API-Key: {API_KEY}. Generada desde el panel en Integraciones → Nueva API Key. No expira — revocable desde el panel. Requires API Key in the header X-API-Key: {API_KEY}. Generated from the panel in Integrations → New API Key. Does not expire — revocable from the panel.
HeadersHeaders
HeaderTipo / TypeDescripciónDescription
X-API-Key*stringAPI Key del comercioMerchant API Key
Ejemplo de peticiónRequest example
# Sin body — solo el header de autenticación
X-API-Key: bz_live_xxxxxxxxxxxxxxxxxxxx

POST /api/v1/integraciones/pin/generar
Respuesta exitosaSuccessful response
{
  "ok": true,
  "pin": "4821",
  "expires_at": "2026-05-15T22:30:00Z",
  "expires_in": 1800,
  "id_comercio": 1
}
Errores posiblesPossible errors
HTTPcodigoCausaCauseAcciónAction
401UNAUTHORIZEDAPI Key inválida o revocadaInvalid or revoked API KeyVerificar la key en el panelCheck the key in the panel
500PIN_GENERATION_FAILEDError interno al generar el PINInternal error generating the PINReintentarRetry
GET /api/v1/redimir/comercio/{slug} Recompensas del comercioMerchant rewards 30/min
DescripciónDescription

Retorna la información del comercio y sus recompensas activas. Útil para mostrar al cajero qué recompensas puede ofrecer al cliente para el canje. Returns merchant information and active rewards. Useful to show the cashier what rewards can be offered to the customer for redemption.

Parámetro de rutaPath parameter
Parámetro / ParameterTipo / TypeDescripciónDescription
slug*stringIdentificador único del comercio. Ej: "cafe-demo"Unique merchant identifier. Ex: "cafe-demo"
RespuestaResponse
{
  "ok": true,
  "comercio": { "id": 1, "nombre": "Café Demo", "slug": "cafe-demo" },
  "promociones": [
    { "id": 3, "titulo": "Café gratis", "descripcion": "Un café americano de cortesía", "puntos_requeridos": 10 }
  ]
}
GET /api/v1/redimir/puntos/{wa} Puntos del clienteCustomer points 30/min
DescripciónDescription

Consulta los puntos del cliente en todos sus comercios. No requiere autenticación. El campo + del número debe ir URL-encoded como %2B. Queries the customer's points across all merchants. No authentication required. The + in the number must be URL-encoded as %2B.

Parámetro de rutaPath parameter
Parámetro / ParameterTipo / TypeDescripciónDescription
wa*stringNúmero WhatsApp URL-encoded. El + como %2B. Ej: %2B50688887777URL-encoded WhatsApp number. + as %2B. Ex: %2B50688887777
RespuestaResponse
{
  "ok": true,
  "total": 1,
  "data": [{
    "tipo": "individual", // "individual" o "grupo"
    "nombre": "Café Demo",
    "id_comercio": 1,
    "puntos": 10,
    "proxima_recompensa": {
      "titulo": "Café gratis",
      "puntos_requeridos": 10,
      "puntos_faltantes": 0 // 0 = puede canjear ahora
    }
  }]
}
POST /api/v1/redimir/canjear Canjear recompensaRedeem reward 30/min
DescripciónDescription

Ejecuta el canje de una recompensa. Descuenta los puntos del cliente y registra el canje. Acción irreversible — confirmar con el cliente antes de ejecutar. Executes a reward redemption. Deducts the customer's points and records the redemption. Irreversible action — confirm with the customer before executing.

🔒
Verificación de visita reciente requerida. El número de WhatsApp debe haber acreditado al menos 1 punto en el mismo comercio en los últimos 30 minutos. Si no existe una acreditación reciente, la API retorna VERIFICACION_REQUERIDA (403). Esto garantiza que el cliente está físicamente presente al momento del canje. Recent visit verification required. The WhatsApp number must have credited at least 1 point at the same merchant in the last 30 minutes. If no recent accreditation exists, the API returns VERIFICACION_REQUERIDA (403). This ensures the customer is physically present at the time of redemption.
Body
Campo / FieldTipo / TypeDescripciónDescription
whatsapp*stringNúmero WhatsApp del cliente con código de país.Customer WhatsApp number with country code.
id_comercio*integerID del comercio donde se realiza el canje.ID of the merchant where redemption takes place.
id_promocion*integerID de la recompensa a canjear (obtenido de /comercio/{slug}).ID of the reward to redeem (obtained from /comercio/{slug}).
EjemploExample
{ "whatsapp": "+50688887777", "id_comercio": 1, "id_promocion": 3 }
Respuesta exitosaSuccess response
{
  "ok": true,
  "puntos_restantes": 0,
  "recompensa": "Café gratis",
  "mensaje": "¡Canje exitoso! Aplicá el beneficio en la factura."
}
⚠️
Una vez ejecutado el canje, los puntos se descuentan de forma permanente. El POS es responsable de aplicar el beneficio correspondiente (descuento, regalía, etc.) en la factura.Once the redemption is executed, points are permanently deducted. The POS is responsible for applying the corresponding benefit (discount, gift, etc.) on the invoice.
Códigos de errorError codes

Todas las respuestas de error incluyen ok: false, codigo y mensaje.All error responses include ok: false, codigo and mensaje.

HTTPCódigo / CodeDescripciónDescriptionAcciónAction
200ÉxitoSuccessok: true
403VERIFICACION_REQUERIDANo hay acreditación reciente (últimos 30 min) en ese comercioNo recent accreditation (last 30 min) at that merchantEl cliente debe activar un PIN primeroCustomer must activate a PIN first
422PUNTOS_INSUFICIENTESNo tiene puntos para canjearNot enough points to redeemMostrar saldo al clienteShow balance to customer
404COMERCIO_NOT_FOUNDSlug del comercio inválidoInvalid merchant slugVerificar configuraciónVerify configuration
404CLIENTE_NOT_FOUNDWhatsApp sin registros de puntosWhatsApp has no point recordsEl cliente aún no tiene puntosCustomer has no points yet
429TOO_MANY_REQUESTSRate limit excedidoRate limit exceededBackoff exponencialExponential backoff
401UNAUTHORIZEDAPI key inválida o ausenteInvalid or missing API keyVerificar Authorization headerCheck Authorization header
500INTERNAL_ERRORError interno del servidorInternal server errorReintentar en 30sRetry in 30s
Rate limits

Los límites se aplican por IP. Si el POS o ERP corre desde una sola IP, todos los clientes comparten el contador.Limits are applied per IP. If the POS or ERP runs from a single IP, all customers share the counter.

EndpointLímiteLimitVentanaWindow
POST /pin/generar30 req1 min
GET /comercio/{slug}30 req1 min
GET /puntos/{wa}30 req1 min
POST /canjear30 req1 min
Bizzlink Developer Portal
API v1.0 · Mayo 2026 · REST/JSON · HTTPS
bizzlink.io hola@bizzlink.io