Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

Company Hierarchy

Mando organizes business data in a three-level hierarchy: Company → Location → POS. Companies also form a parent-child tree, enabling multi-brand and franchise setups that share common features, such as products.

Root Company (parent_id = null, data.root = true)
├── Child Company A (parent_id → Root)
│ ├── Location 1
│ │ ├── POS 1 (postype: FlowPOS Windows)
│ │ └── POS 2 (postype: Android POS)
│ └── Location 2
│ └── POS 3
└── Child Company B (parent_id → Root)
└── Location 3
├── POS 4
└── POS 5

A restaurant chain “Burger Palace Oy” has restaurants in two cities, each operated as a separate company:

LevelEntityNameNotes
Root companyCompanyBurger Palace Oydata.root = true, owns shared product catalog
Child companyCompanyBurger Palace Helsinkiparent_id → Burger Palace Oy
Child companyCompanyBurger Palace Tampereparent_id → Burger Palace Oy
LocationLocationKamppi Restaurantcompany_id → Helsinki company
LocationLocationKallio Restaurantcompany_id → Helsinki company
POSPOSKamppi Register 1location_id → Kamppi, postype_id → FlowPOS config
POSPOSKamppi Self-Servicelocation_id → Kamppi, postype_id → Android config

The root company defines shared settings (accounting integrations, customer groups, product numbering). Child companies inherit products and can override location-specific settings.

A company represents a business entity (legal entity with a business ID).

FieldTypeDescription
idguidUnique identifier
namestringCompany name
identstringBusiness ID (Y-tunnus)
parent_ididReference to parent company (null for root company)
activebooleanWhether the company is active
statestringCompany state
datacompany_dataNested configuration (see below)

The company_type enum defines the role: mando, mando_mini, root, reseller.

Key flags in data:

  • data.root — marks a root company (top of the tree)
  • data.reseller — marks a reseller that can create child companies
  • data.type — the company type enum value

Each reseller company manages its own companies and has access to them. In API context this can be ignored.

The data field (type company_data) contains most of the company configuration:

  • address — company address (line1, line2, postnumber, city, country)
  • display_name — display name shown in UI, commonly a shop name
  • contact, phone, admin_email — contact information
  • additional_fields — custom field definitions for various entities (products, customers, locations, etc.)
  • languages — available translation languages
  • default_tags — default product tags
  • product_numbering — product numbering template
  • Accounting integrationsnetvisor, procountor, fennoa (each with active flag, credentials, sync settings)
  • E-commerce integrationsshopify, woocommerce, ecommerce
  • franchising — franchise fee configuration
  • timesheets — timesheet tracking configuration
  • sales_channels — sales channel definitions (e.g. dine-in, takeaway, delivery)

A location is a physical place of business (store, restaurant, warehouse) belonging to a company.

FieldTypeDescription
idguidUnique identifier
company_idguidOwning company
parent_ididOptional parent location (for sub-locations)
namestringLocation name
activebooleanWhether the location is active
datalocation_dataNested configuration (see below)
  • address — street address
  • position — GPS coordinates (lat, lng)
  • email, phone — contact info
  • opening_hours — per-day open/close times with optional time slots
  • service_periods — named time periods (Breakfast, Lunch, Dinner) with schedules
  • Location type flagssales_location, stock_location, weeklyreport_location
  • Calculation flagscalculate_stock, calculate_wastage, calculate_profit, calculate_labor_metrics, track_table_turnover
  • tables / tableMaps — restaurant table/seating map configuration
  • stock_locations — warehouse stock location mappings
  • assortment — products not for sale or out of stock at this location
  • weekly — weekly report parameters and data availability flags
  • email_reports — automated email report settings
  • wolt — Wolt delivery platform integration
  • stock_settings — inventory management settings (auto-update, thresholds, cost method)

A POS (point of sale) is a terminal/register at a location.

FieldTypeDescription
idguidUnique identifier
company_idguidOwning company
location_ididLocation where this POS is installed
namestringPOS name (e.g. “Register 1”)
activebooleanWhether the POS is active
postype_ididReference to POS type (configuration template)
datapos_dataNested configuration (see below)
  • subscriptions — which tenders, pricings, discounts, and infocodes this POS uses
  • receipt — receipt header/footer text and image
  • eft — payment terminal identifier
  • hostname — network hostname
  • network_typestandalone, host, mobile, or selfservice
  • network_host — reference to host POS (for networked setups)
  • sales_channels — active sales channels for this POS
  • automatic_open / automatic_close — auto open/close times

Each POS references a postype — a configuration template that defines:

  • Hardware settings (posagent) — payment terminal mode, printer configuration, customer display, scale
  • Feature flags (flowpos) — table sales, kitchen printing, delivery, wastage tracking, order numbers, etc.
  • Terminal platformflowpos (Windows), android, castles, pos2 (POS 2026), etc.
  • Receipt templates — which templates to use for customer receipts, kitchen slips, reports
  • Peripheral devices — connected printers, scales, displays

Multiple POS devices can share the same postype, making it easy to configure a fleet of identical terminals.

Company (tree via parent_id)
└── has many → Location (tree via parent_id)
└── has many → POS
└── references → POS Type (configuration template)
  • Company → Company: parent-child tree via parent_id. Root companies have parent_id = null.
  • Company → Location: one-to-many via location.company_id.
  • Location → Location: optional sub-hierarchy via location.parent_id.
  • Location → POS: one-to-many via pos.location_id.
  • POS → POS Type: many-to-one via pos.postype_id. The postype is a shared configuration template.
  • POS → Company: also linked via pos.company_id (same company as the location).