Skip to content

Hendrickx POS Integration

Overview

Hendrickx POS integration connects Upvendo with Hendrickx point-of-sale systems for order synchronization and terminal payments.

Key Purpose: Integrate with Hendrickx POS system.

Purpose

This page lets you connect Upvendo to a Hendrickx POS system so that orders placed through Upvendo channels are sent to the POS, and menu data can be imported from it.

Key Concepts

  • Kassanet Protocol: Hendrickx uses the Kassanet communication protocol (shared with Vanhoutte POS), which transmits data as Blowfish-encrypted, HMAC-signed JSON payloads over HTTPS.
  • App Signature: A shared HMAC-SHA256 key used to sign every API request, ensuring message integrity between Upvendo and the Hendrickx POS.
  • Encryption Token: A Blowfish CBC encryption key used to encrypt and decrypt all request/response bodies, providing end-to-end payload confidentiality.
  • Table Section Linking: Hendrickx table sections can be linked to QR ordering sections, enabling dine-in QR orders to be automatically forwarded to the correct POS table bill.
  • Menu Import: The integration can pull the full menu structure (categories, items, modifiers) from Hendrickx into Upvendo, creating corresponding display groups and items.

Actions

Enable Hendrickx Integration

Enter the API endpoint URL, API key (signature), encryption token, terminal ID, and store ID to establish the connection with the Hendrickx POS.

Import Menu from POS

Trigger a menu import job that fetches categories, items, and modifier groups from Hendrickx and creates them in Upvendo's menu system.

Send Orders to POS

When enabled, every Upvendo order is transformed into a Kassanet-format request and sent to the Hendrickx POS for processing and kitchen display.

Retrieve POS Bill

For table QR ordering, the system can fetch the current bill total from the Hendrickx POS for a specific table number, used to validate order binding.

Location

  • Backoffice Route: /integrations/hendrickx
  • Backend Controller: app/Http/Controllers/Api/HendrickxController.php
  • Vue Component: src/views/integrations/HendrickxComponent.vue

Fields

Hendrickx Enabled

PropertyValue
Field IDenabled
LabelEnable Hendrickx
TypeToggle
Defaultfalse

Description: Enable Hendrickx POS integration.


API Endpoint

PropertyValue
Field IDapi_endpoint
LabelAPI Endpoint
TypeURL
RequiredYes

Description: Hendrickx API endpoint URL.


API Key

PropertyValue
Field IDapi_key
LabelAPI Key
TypePassword
RequiredYes

Description: API key for authentication.


Terminal ID

PropertyValue
Field IDterminal_id
LabelTerminal ID
TypeText
RequiredYes

Description: Hendrickx terminal identifier.


Store ID

PropertyValue
Field IDstore_id
LabelStore ID
TypeText
RequiredYes

Description: Hendrickx store identifier.


Sync Settings

Send Orders to POS

PropertyValue
Field IDsend_orders
LabelSend Orders to POS
TypeToggle
Defaulttrue

Description: Send Upvendo orders to Hendrickx POS.


Sync Menu

PropertyValue
Field IDsync_menu
LabelSync Menu
TypeToggle
Defaultfalse

Description: Sync menu items with POS.


Business Logic

Order Flow

Order placed in Upvendo
        |
        v
Send to Hendrickx POS
        |
        v
POS processes order
        |
        v
Status synced back

Business Rules

  • All communication with the Hendrickx POS uses Blowfish CBC encryption with an 8-byte null IV; the JSON payload is space-padded to an 8-byte boundary before encryption.
  • Every API request includes an HMAC-SHA256 signature computed over the date string concatenated with the request body, using the app signature key.
  • When binding a QR order to a Hendrickx table, the system first checks the POS bill total; if the table already has an open bill (total > 0), the bind is rejected with a 409 error.
  • Only orders with dining option "For Here" and payment status "Complete" can be bound to a Hendrickx POS table session; takeaway or unpaid orders are rejected.
  • The Hendrickx integration is initialized per location; changing the location ID re-fetches the integration credentials and re-establishes the encryption context.

FAQs

  • What is the difference between Hendrickx and Vanhoutte integrations? Both use the same Kassanet protocol (AbstractKassanetService); Hendrickx is a specific POS brand that extends this shared base with its own provider constant.
  • Can I import menu items from Hendrickx and still edit them in Upvendo? Yes, imported items are created as regular Upvendo items and can be freely edited. However, re-importing will create duplicates unless items are matched by external ID.
  • Does the integration support real-time two-way sync? No, the current implementation primarily pushes orders from Upvendo to Hendrickx and pulls bills on demand. Menu import is a manual one-time operation.
  • What happens if the POS is offline when an order is placed? The order send will fail, and the error is logged. The order remains in Upvendo but will not appear on the POS until connectivity is restored and the order is retried.
  • Can I use Hendrickx POS alongside Square POS? They serve different purposes: Hendrickx handles kitchen/order management via the Kassanet protocol, while Square handles payment processing. Both can be active simultaneously.

Troubleshooting

Problem: Orders not syncing

Causes:

  1. Integration disabled
  2. API credentials invalid
  3. Network issue

Solutions:

  1. Enable integration
  2. Verify credentials
  3. Check network

Examples

Basic Setup

json
{
  "enabled": true,
  "api_endpoint": "https://api.hendrickx.com",
  "api_key": "your-api-key",
  "terminal_id": "terminal-001",
  "store_id": "store-001",
  "send_orders": true,
  "sync_menu": false
}