Skip to content

Shopcaisse Onboarding Flow

Overview

Shopcaisse is a location-specific POS system that syncs menu items and orders with Upvendo. Each Upvendo location connects to one Shopcaisse store. Shopcaisse does NOT include payment processing - you need a separate payment provider (Stripe or Viva Wallet).

Key Concepts

  1. A Shopcaisse token can include multiple stores - One External Application can cover your entire company
  2. Upvendo locations are NOT auto-created - You must create locations in Upvendo first, then connect each to a Shopcaisse store
  3. Same token can be reused across multiple locations - Each location selects a different store from the token

Shopcaisse Structure

  • Company → contains stores and owns the product catalog
  • Store → operational unit (maps to Upvendo location)
  • POS → point of sale device within a store
  • External Application → defines token scope (company, stores, permissions, webhook URL)

Integration Type

  • Scope: Location-specific (each location connects to one store)
  • Payment Processing: NOT included (requires Stripe or Viva Wallet)
  • Menu Sync: Pull from Shopcaisse (items imported from POS)
  • Order Sync: Push to Shopcaisse (orders sent after payment confirmed)
  • Token Model: Merchant must create an External Application in Shopcaisse to generate a token

Discovery Flow (JSON - for deterministic parsing)

discovery_questions
[
  {
    "id": "channels",
    "text": "What channels do you want to set up with Shopcaisse?",
    "options": ["Kiosk only", "Online ordering only", "Both"]
  },
  {
    "id": "store_count",
    "text": "How many Shopcaisse stores do you want to connect to Upvendo?",
    "options": ["1 store", "2-5 stores", "6+ stores"],
    "guidance": {
      "1 store": "single_store_app",
      "2-5 stores": "multi_store_app",
      "6+ stores": "multi_store_app"
    }
  },
  {
    "id": "same_menu",
    "text": "Do these stores use the same menu/product catalog?",
    "options": ["Yes, same menu everywhere", "No, menus differ per store", "Not sure"],
    "skip_if": {"store_count": "1 store"},
    "guidance": {
      "Yes, same menu everywhere": "One External Application with all stores is recommended.",
      "No, menus differ per store": "One External Application with all stores works, but each location will maintain its own menu copy in Upvendo.",
      "Not sure": "We recommend one External Application per store for simplicity. You can consolidate later."
    }
  },
  {
    "id": "menu_ready",
    "text": "Do you already have your menu set up in Shopcaisse?",
    "options": ["Yes, my menu is in Shopcaisse", "No, I need to create it"],
    "abort_if": "No, I need to create it",
    "abort_message": "Shopcaisse requires your menu to be set up in the POS first. Please create your menu items in Shopcaisse, then come back to continue the setup."
  }
]

Shopcaisse Account Prerequisites

Before pasting a token into Upvendo, the merchant must satisfy all of these on their Shopcaisse side. Without each, the integration will fail at a specific gate:

#RequirementCostGate if missing
1Public API subscription€19.99/month + VATNo External Application can be created — there's nowhere to paste the token from
2Order Management Module activated on each POSPaid; per-deviceAPI returns HTTP 401 — "Pos {id} does not have an Order Management Module license! Please activate the module in the POS/Cash register in order to receive orders". Orders cannot be received.
3Exit Discovery ModeFree (one-time action)iPad app blocks "Track open orders" with "feature not available in demo mode" — orders stay stuck in not_acked
4iPad POS app installed, logged in, and runningFreeNo device to acknowledge incoming orders → orders stall in not_acked indefinitely
5Menu created in ShopcaisseFreeUpvendo cannot create items in Shopcaisse; menu must originate from the POS

If the merchant is brand new to Shopcaisse, they'll also see a yellow Discovery Mode banner ("No sales are fiscally recorded") with a "Start collecting payments" button — that's the toggle to exit Discovery Mode (#3).

External Application Creation Guide

To connect Shopcaisse to Upvendo, merchants must create a new External Application in Shopcaisse. Existing tokens cannot be reused because the application must be configured with Upvendo's webhook URL and the correct store scope.

Backoffice path (current UI as of 2026-06)

In bo.shopcaisse.com:

  1. Sidebar → FeaturesIntegrationsConnectors & API
  2. Click Public APIConfigure (the Buy button if not yet subscribed — see Prerequisites #1)
  3. The "Your External Applications" dialog opens. Click the + tile.

Note: the older "Settings → External Applications" path no longer exists in the new Shopcaisse UI. Always use the path above.

Single Store Setup

If connecting 1 store:

  1. Follow the backoffice path above to open the External Applications dialog
  2. Click + to create a new application with:
    • Name: e.g. "Upvendo Integration"
    • Description: optional
    • Webhook URL: https://api.upvendo.com/api/webhook/shopcaisse (production) or your reseller's webhook URL
    • Resource list: select the Company and the Store to connect. POS is auto-included under the selected store.
  3. Click Edit application / Create to save and get the JWT
  4. Copy the generated token
  5. Paste token in Upvendo when connecting

Multi-Store Setup

If connecting 2+ stores:

  1. Follow the backoffice path above
  2. Create new application with:
    • Resource list: select the Company and ALL Stores you want to connect
  3. Copy the generated token
  4. In Upvendo, for each location:
    • Paste the same token
    • Upvendo will detect the available stores and prompt you to select which Shopcaisse store maps to that location

Multiple Companies

If you have stores under different companies in Shopcaisse:

  • Each company requires its own External Application
  • Each company = separate token
  • Connect each Upvendo location with the appropriate token

Setup Steps (JSON - for deterministic parsing)

setup_steps
{
  "Kiosk only": [
    {"id": "branding_profile", "title": "Set up Store Branding", "route": "/settings/brand"},
    {"id": "create_location", "title": "Create Location", "route": "/settings/locations"},
    {"id": "select_location", "title": "Select Location from Topbar", "action": "topbar_location_select"},
    {"id": "create_external_app", "title": "Create Shopcaisse External Application", "action": "external_guidance", "guidance_section": "external_app_creation"},
    {"id": "connect_pos", "title": "Connect Shopcaisse and Select Store", "route": "/shopcaisse", "modal_type": "ShopcaisseChannelDialog"},
    {"id": "setup_menu_kiosk", "title": "Set up Menu for Kiosk", "route": "/menus"},
    {"id": "in_house_settings", "title": "Set up In-House Settings", "route": "/in-house/settings"},
    {"id": "device_profile", "title": "Set up Device Profile", "route": "/device-management/profiles"},
    {"id": "configure_kiosk", "title": "Configure Kiosk", "route": "/device-management/devices"},
    {"id": "test_kiosk", "title": "Test Kiosk"},
    {"id": "payment_profile", "title": "Set up Payment Profile", "route": "/settings/payments", "required": false},
    {"id": "billing_profile", "title": "Set up Billing Profile", "route": "/settings/billing", "required": false}
  ],
  "Online ordering only": [
    {"id": "branding_profile", "title": "Set up Store Branding", "route": "/settings/brand"},
    {"id": "create_location", "title": "Create Location", "route": "/settings/locations"},
    {"id": "select_location", "title": "Select Location from Topbar", "action": "topbar_location_select"},
    {"id": "create_external_app", "title": "Create Shopcaisse External Application", "action": "external_guidance", "guidance_section": "external_app_creation"},
    {"id": "connect_pos", "title": "Connect Shopcaisse and Select Store", "route": "/shopcaisse", "modal_type": "ShopcaisseChannelDialog"},
    {"id": "setup_menu_online", "title": "Set up Menu for Online Ordering", "route": "/menus"},
    {"id": "online_settings", "title": "Set up Online Settings", "route": "/online-settings"},
    {"id": "configure_online_ordering", "title": "Configure Online Ordering", "route": "/online/online-ordering"},
    {"id": "test_online_ordering", "title": "Test Online Ordering"},
    {"id": "payment_profile", "title": "Set up Payment Profile", "route": "/settings/payments", "required": false},
    {"id": "billing_profile", "title": "Set up Billing Profile", "route": "/settings/billing", "required": false}
  ],
  "Both": [
    {"id": "branding_profile", "title": "Set up Store Branding", "route": "/settings/brand"},
    {"id": "create_location", "title": "Create Location", "route": "/settings/locations"},
    {"id": "select_location", "title": "Select Location from Topbar", "action": "topbar_location_select"},
    {"id": "create_external_app", "title": "Create Shopcaisse External Application", "action": "external_guidance", "guidance_section": "external_app_creation"},
    {"id": "connect_pos", "title": "Connect Shopcaisse and Select Store", "route": "/shopcaisse", "modal_type": "ShopcaisseChannelDialog"},
    {"id": "setup_menu_kiosk", "title": "Set up Menu for Kiosk", "route": "/menus"},
    {"id": "setup_menu_online", "title": "Set up Menu for Online Ordering", "route": "/menus"},
    {"id": "in_house_settings", "title": "Set up In-House Settings", "route": "/in-house/settings"},
    {"id": "device_profile", "title": "Set up Device Profile", "route": "/device-management/profiles"},
    {"id": "configure_kiosk", "title": "Configure Kiosk", "route": "/device-management/devices"},
    {"id": "online_settings", "title": "Set up Online Settings", "route": "/online-settings"},
    {"id": "configure_online_ordering", "title": "Configure Online Ordering", "route": "/online/online-ordering"},
    {"id": "test_kiosk", "title": "Test Kiosk"},
    {"id": "test_online_ordering", "title": "Test Online Ordering"},
    {"id": "payment_profile", "title": "Set up Payment Profile", "route": "/settings/payments", "required": false},
    {"id": "billing_profile", "title": "Set up Billing Profile", "route": "/settings/billing", "required": false}
  ]
}

Troubleshooting

"I can't see my store in Upvendo"

  • Check that your External Application in Shopcaisse includes that store
  • Verify the token was created with the correct scope

"I have multiple locations but only one token"

  • This is normal! One token can include multiple stores
  • Paste the same token for each Upvendo location
  • Select a different Shopcaisse store for each location

"My orders aren't syncing to Shopcaisse"

  • Check that the webhook URL is correctly set in your External Application
  • Verify the token has the required permissions (orders.write)
  • Ensure your menu is fully set up in Shopcaisse before connecting
  • Check that the External Application has items.read permission