Skip to content

MplusKassa Onboarding (Reseller)

Overview

Streamlined onboarding flow for resellers onboarding merchants with MplusKassa POS. Merchant-scoped integration commonly used in Netherlands. Requires Stripe (recommended for iDEAL) or Viva Wallet.


Discovery Flow (JSON - for deterministic parsing)

discovery_questions
[
  {
    "id": "channels",
    "text": "Which channels for this merchant?",
    "options": ["Kiosk only", "Online ordering only", "Both"]
  },
  {
    "id": "menu_ready",
    "text": "Does the merchant have their menu set up in MplusKassa?",
    "options": ["Yes, menu is in MplusKassa", "No, will create in Upvendo"]
  }
]
setup_steps
{
  "Kiosk only": [
    {"id": "branding_profile", "title": "Set up Store Branding", "route": "/settings/brand", "required": true},
    {"id": "connect_pos", "title": "Connect MplusKassa", "route": "/mpluskassa", "required": true},
    {"id": "sync_locations", "title": "Sync Locations", "route": "/mpluskassa", "required": true},
    {"id": "complete_location", "title": "Complete Location Details", "route": "/settings/locations", "required": true},
    {"id": "sync_menu", "title": "Sync Menu", "route": "/mpluskassa", "required": true},
    {"id": "configure_kiosk", "title": "Configure Kiosk", "route": "/devices", "required": true},
    {"id": "billing_profile", "title": "Set up Billing Profile", "route": "/settings/billing", "required": false, "note": "Optional if reseller invoices merchant directly."},
    {"id": "payment_profile", "title": "Set up Payment Profile", "route": "/settings/payments", "required": false, "note": "Required to accept customer payments."},
    {"id": "test_integration", "title": "Go Live", "route": "/orders", "required": false}
  ],
  "Online ordering only": [
    {"id": "branding_profile", "title": "Set up Store Branding", "route": "/settings/brand", "required": true},
    {"id": "connect_pos", "title": "Connect MplusKassa", "route": "/mpluskassa", "required": true},
    {"id": "sync_locations", "title": "Sync Locations", "route": "/mpluskassa", "required": true},
    {"id": "complete_location", "title": "Complete Location Details", "route": "/settings/locations", "required": true},
    {"id": "sync_menu", "title": "Sync Menu", "route": "/mpluskassa", "required": true},
    {"id": "configure_online_ordering", "title": "Configure Online Ordering", "route": "/pickup-and-delivery/online-ordering", "required": true},
    {"id": "billing_profile", "title": "Set up Billing Profile", "route": "/settings/billing", "required": false, "note": "Optional if reseller invoices merchant directly."},
    {"id": "payment_profile", "title": "Set up Payment Profile", "route": "/settings/payments", "required": false, "note": "Required to accept customer payments."},
    {"id": "test_online_ordering", "title": "Go Live", "route": "/pickup-and-delivery/online-ordering", "required": false}
  ],
  "Both": [
    {"id": "branding_profile", "title": "Set up Store Branding", "route": "/settings/brand", "required": true},
    {"id": "connect_pos", "title": "Connect MplusKassa", "route": "/mpluskassa", "required": true},
    {"id": "sync_locations", "title": "Sync Locations", "route": "/mpluskassa", "required": true},
    {"id": "complete_location", "title": "Complete Location Details", "route": "/settings/locations", "required": true},
    {"id": "sync_menu", "title": "Sync Menu", "route": "/mpluskassa", "required": true},
    {"id": "configure_kiosk", "title": "Configure Kiosk", "route": "/devices", "required": true},
    {"id": "configure_online_ordering", "title": "Configure Online Ordering", "route": "/pickup-and-delivery/online-ordering", "required": true},
    {"id": "billing_profile", "title": "Set up Billing Profile", "route": "/settings/billing", "required": false, "note": "Optional if reseller invoices merchant directly."},
    {"id": "payment_profile", "title": "Set up Payment Profile", "route": "/settings/payments", "required": false, "note": "Required to accept customer payments."},
    {"id": "test_integration", "title": "Go Live", "route": "/orders", "required": false}
  ]
}