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.
Hierarchy Overview
Section titled “Hierarchy Overview”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 5Example: Restaurant Chain
Section titled “Example: Restaurant Chain”A restaurant chain “Burger Palace Oy” has restaurants in two cities, each operated as a separate company:
| Level | Entity | Name | Notes |
|---|---|---|---|
| Root company | Company | Burger Palace Oy | data.root = true, owns shared product catalog |
| Child company | Company | Burger Palace Helsinki | parent_id → Burger Palace Oy |
| Child company | Company | Burger Palace Tampere | parent_id → Burger Palace Oy |
| Location | Location | Kamppi Restaurant | company_id → Helsinki company |
| Location | Location | Kallio Restaurant | company_id → Helsinki company |
| POS | POS | Kamppi Register 1 | location_id → Kamppi, postype_id → FlowPOS config |
| POS | POS | Kamppi Self-Service | location_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.
Company Model
Section titled “Company Model”A company represents a business entity (legal entity with a business ID).
| Field | Type | Description |
|---|---|---|
id | guid | Unique identifier |
name | string | Company name |
ident | string | Business ID (Y-tunnus) |
parent_id | id | Reference to parent company (null for root company) |
active | boolean | Whether the company is active |
state | string | Company state |
data | company_data | Nested configuration (see below) |
Company Types
Section titled “Company Types”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 companiesdata.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.
Company Data (key sections)
Section titled “Company Data (key sections)”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 namecontact,phone,admin_email— contact informationadditional_fields— custom field definitions for various entities (products, customers, locations, etc.)languages— available translation languagesdefault_tags— default product tagsproduct_numbering— product numbering template- Accounting integrations —
netvisor,procountor,fennoa(each with active flag, credentials, sync settings) - E-commerce integrations —
shopify,woocommerce,ecommerce franchising— franchise fee configurationtimesheets— timesheet tracking configurationsales_channels— sales channel definitions (e.g. dine-in, takeaway, delivery)
Location Model
Section titled “Location Model”A location is a physical place of business (store, restaurant, warehouse) belonging to a company.
| Field | Type | Description |
|---|---|---|
id | guid | Unique identifier |
company_id | guid | Owning company |
parent_id | id | Optional parent location (for sub-locations) |
name | string | Location name |
active | boolean | Whether the location is active |
data | location_data | Nested configuration (see below) |
Location Data (key sections)
Section titled “Location Data (key sections)”address— street addressposition— GPS coordinates (lat, lng)email,phone— contact infoopening_hours— per-day open/close times with optional time slotsservice_periods— named time periods (Breakfast, Lunch, Dinner) with schedules- Location type flags —
sales_location,stock_location,weeklyreport_location - Calculation flags —
calculate_stock,calculate_wastage,calculate_profit,calculate_labor_metrics,track_table_turnover tables/tableMaps— restaurant table/seating map configurationstock_locations— warehouse stock location mappingsassortment— products not for sale or out of stock at this locationweekly— weekly report parameters and data availability flagsemail_reports— automated email report settingswolt— Wolt delivery platform integrationstock_settings— inventory management settings (auto-update, thresholds, cost method)
POS Model
Section titled “POS Model”A POS (point of sale) is a terminal/register at a location.
| Field | Type | Description |
|---|---|---|
id | guid | Unique identifier |
company_id | guid | Owning company |
location_id | id | Location where this POS is installed |
name | string | POS name (e.g. “Register 1”) |
active | boolean | Whether the POS is active |
postype_id | id | Reference to POS type (configuration template) |
data | pos_data | Nested configuration (see below) |
POS Data (key sections)
Section titled “POS Data (key sections)”subscriptions— which tenders, pricings, discounts, and infocodes this POS usesreceipt— receipt header/footer text and imageeft— payment terminal identifierhostname— network hostnamenetwork_type—standalone,host,mobile, orselfservicenetwork_host— reference to host POS (for networked setups)sales_channels— active sales channels for this POSautomatic_open/automatic_close— auto open/close times
POS Type
Section titled “POS Type”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 platform —
flowpos(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.
Relationships Summary
Section titled “Relationships Summary”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 haveparent_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).