Skip to content

Shopcaisse Onboarding (Reseller)

Overview

Streamlined onboarding flow for resellers onboarding merchants with Shopcaisse POS. Location-specific integration. Requires Stripe or Viva Wallet for payments.

Merchant-side Shopcaisse prerequisites the reseller must verify

These must all be satisfied on the merchant's Shopcaisse account before connecting. Verify each with the merchant before starting the Upvendo setup:

#RequirementCostWhy it matters
1Public API subscription active in Features → Integrations → Connectors & API€19.99/month + VATRequired to generate the JWT we'll paste into Upvendo
2Order Management Module activated on each POS devicePaid; per-deviceWithout it the API returns HTTP 401 on order creation — no orders flow at all
3Discovery Mode exited (the "Start collecting payments" banner is gone)Free toggleDiscovery Mode locks the iPad's "Track open orders" view; incoming orders stall in not_acked
4iPad POS app installed, logged in, runningFreeActs as the order-acknowledgement counterpart; without it orders never progress
5Menu fully configured in Shopcaisse (items, modifiers, VAT rates, categories)FreeUpvendo cannot create items in Shopcaisse — menu must originate there

Once those are confirmed, the merchant goes to Features → Integrations → Connectors & API → Public API → Configure → Your External Applications → + to create the Upvendo application and copy the JWT. (Note: the older "Settings → External Applications" path no longer exists.)


Discovery Flow (JSON - for deterministic parsing)

discovery_questions
[
  {
    "id": "channels",
    "text": "Which channels for this merchant?",
    "options": ["Kiosk only", "Online ordering only", "Both"]
  },
  {
    "id": "prerequisites_confirmed",
    "text": "Have you confirmed with the merchant that all Shopcaisse-side prerequisites are met (Public API subscribed, Order Management Module per POS, Discovery Mode exited, iPad app running, menu configured)?",
    "options": ["Yes, all confirmed", "Not yet"],
    "abort_if": "Not yet",
    "abort_message": "Walk the merchant through each prerequisite before proceeding. Without Public API the JWT can't be created; without Order Management Module orders fail with HTTP 401; without exiting Discovery Mode orders stall on the iPad. See the prerequisites table at the top of this doc."
  },
  {
    "id": "menu_ready",
    "text": "Does the merchant have their menu set up in Shopcaisse?",
    "options": ["Yes, menu is in Shopcaisse", "No, not yet"],
    "abort_if": "No, not yet",
    "abort_message": "The merchant needs to set up their menu in Shopcaisse first. Shopcaisse only supports pulling menu items from the POS - items cannot be created in Upvendo. Please have them create their menu in Shopcaisse, then restart the onboarding."
  }
]
setup_steps
{
  "Kiosk only": [
    {"id": "branding_profile", "title": "Set up Store Branding", "route": "/settings/brand"},
    {"id": "billing_profile", "title": "Set up Billing Profile", "route": "/settings/billing"},
    {"id": "create_location", "title": "Create Location", "route": "/settings/locations"},
    {"id": "select_location", "title": "Select Location from Topbar", "action": "topbar_location_select"},
    {"id": "connect_pos", "title": "Connect Shopcaisse", "route": "/shopcaisse", "modal_type": "ShopcaisseChannelDialog"},
    {"id": "sync_menu", "title": "Sync Menu", "route": "/shopcaisse"},
    {"id": "payment_profile", "title": "Set up Payment Profile", "route": "/settings/payments", "required": false},
    {"id": "test_integration", "title": "Test Integration", "route": "/orders"}
  ],
  "Online ordering only": [
    {"id": "branding_profile", "title": "Set up Store Branding", "route": "/settings/brand"},
    {"id": "billing_profile", "title": "Set up Billing Profile", "route": "/settings/billing"},
    {"id": "create_location", "title": "Create Location", "route": "/settings/locations"},
    {"id": "select_location", "title": "Select Location from Topbar", "action": "topbar_location_select"},
    {"id": "connect_pos", "title": "Connect Shopcaisse", "route": "/shopcaisse", "modal_type": "ShopcaisseChannelDialog"},
    {"id": "sync_menu", "title": "Sync Menu", "route": "/shopcaisse"},
    {"id": "configure_online_ordering", "title": "Configure Online Ordering", "route": "/pickup-and-delivery/online-ordering"},
    {"id": "payment_profile", "title": "Set up Payment Profile", "route": "/settings/payments", "required": false},
    {"id": "test_online_ordering", "title": "Test Online Ordering", "route": "/pickup-and-delivery/online-ordering"}
  ],
  "Both": [
    {"id": "branding_profile", "title": "Set up Store Branding", "route": "/settings/brand"},
    {"id": "billing_profile", "title": "Set up Billing Profile", "route": "/settings/billing"},
    {"id": "create_location", "title": "Create Location", "route": "/settings/locations"},
    {"id": "select_location", "title": "Select Location from Topbar", "action": "topbar_location_select"},
    {"id": "connect_pos", "title": "Connect Shopcaisse", "route": "/shopcaisse", "modal_type": "ShopcaisseChannelDialog"},
    {"id": "sync_menu", "title": "Sync Menu", "route": "/shopcaisse"},
    {"id": "configure_online_ordering", "title": "Configure Online Ordering", "route": "/pickup-and-delivery/online-ordering"},
    {"id": "payment_profile", "title": "Set up Payment Profile", "route": "/settings/payments", "required": false},
    {"id": "test_kiosk", "title": "Test Kiosk", "route": "/orders"},
    {"id": "test_online_ordering", "title": "Test Online Ordering", "route": "/pickup-and-delivery/online-ordering"}
  ]
}