Omni Way developer docs v1.0.0
Business baseline

Profit, expenses & loss control

Every Omni Way merchant, in every sector, gets the same three things that matter most: stock control, a money & profit picture, and loss & theft protection. The catalog/sales/till docs cover stock; this page covers profit, expenses and loss. The industry overlay sits on top, never replacing the baseline.

โ—†
One core, every sector

A tuck shop, a clinic, a kombi operator and a school all get the same baseline. The industry profile only adds sector-specific overlays (recipes, batch/expiry, vehicles, students) and the right words. The baseline is always present.

Cost price โ†’ profit

Give a product a cost price alongside its selling price and the platform tracks gross profit and margin for you. Cost is a moving average: each stock receipt re-weights it by the quantity and unit cost you paid, so it always reflects what your inventory really cost.

curl https://omniway.online/v1/products \
  -H "Authorization: Bearer sk_live_..." -H "Content-Type: application/json" \
  -d '{ "name":"Cooking oil 2L", "price_cents":450, "cost_cents":300,
        "track_stock":true, "low_stock_at":3 }'
# margin_cents 150, margin_bps 3333 (33.3%) come back on every product
curl https://omniway.online/v1/stock/receive \
  -H "Authorization: Bearer sk_live_..." -H "Content-Type: application/json" \
  -d '{ "product_id":"โ€ฆ", "qty":10, "unit_cost_cents":320 }'
# 0 on hand @300 + 10 @320  ->  new moving-average cost 320

Each sale line snapshots the cost at the moment of sale, so the cost of goods sold (COGS) stays historically accurate even when costs change later. Stock is valued at cost on the stock report (with a retail value shown alongside).

Profit & loss

curl "https://omniway.online/v1/reports/pnl?from=2026-06-01" \
  -H "Authorization: Bearer sk_live_..."
Line (per currency)How it is computed
revenue_centsCompleted sales total in the period
cogs_centsSum of (qty ร— snapshotted cost) on those sales
gross_profit_cents ยท gross_margin_bpsRevenue โˆ’ COGS, and the margin in basis points
expenses_centsAll expenses recorded in the period
net_profit_centsGross profit โˆ’ expenses. The bottom line.

Expenses

Expenses are what turn gross profit into net profit. Record rent, wages, fuel, stock purchases, utilities and more. They are operational records, not InnBucks settlement, so they live outside the payout ledger.

curl https://omniway.online/v1/expenses \
  -H "Authorization: Bearer sk_live_..." -H "Content-Type: application/json" \
  -d '{ "category":"rent", "amount_cents":50000, "currency":"USD",
        "paid_via":"bank", "note":"June rent" }'

Categories: stock, wages, rent, utilities, fuel, transport, maintenance, supplies, fees, tax, other. paid_via is cash | bank | innbucks | other โ€” only cash expenses affect the drawer cash-up.

Loss & theft control

The four oldest leaks in any business, each made visible and attributable to a named cashier.

ControlWhat it does
DiscountsA discount needs a reason and is attributed to the cashier. The loss report totals discounted sales and their value.
VoidsPOST /v1/sales/:id/void on a completed cash sale restocks the items and flags it with a reason and cashier. Voiding is the classic way to pocket cash, so every void is logged and counted.
Stock shrinkageNegative stock adjustments and stocktake shortfalls are valued at cost in the loss report โ€” what the missing stock actually cost you.
Cash-up varianceAt end of shift the platform computes the expected drawer (opening float + cash sales โˆ’ cash expenses); the cashier enters the counted cash; the variance is the headline signal.
curl "https://omniway.online/v1/cashups/expected?currency=USD&opening_float_cents=2000" \
  -H "Authorization: Bearer sk_live_..."   # preview expected drawer

curl https://omniway.online/v1/cashups \
  -H "Authorization: Bearer sk_live_..." -H "Content-Type: application/json" \
  -d '{ "currency":"USD", "opening_float_cents":2000, "counted_cents":18750 }'
# -> variance_cents: counted โˆ’ expected  (negative = short)
curl https://omniway.online/v1/reports/loss -H "Authorization: Bearer sk_live_..."
# voids, discounts, shrinkage value, cash shortage โ€” per currency
# plus a by_cashier rollup (sales / voids / discounts) to spot a pattern

Staff & cashiers

Attribution needs people. Add staff with a role (owner / manager / cashier) and an optional 4โ€“6 digit PIN. The till can take a cashier PIN for the shift so every sale, void and cash-up carries a name.

curl https://omniway.online/v1/staff \
  -H "Authorization: Bearer sk_live_..." -H "Content-Type: application/json" \
  -d '{ "name":"Rudo", "role":"cashier", "pin":"4821" }'

curl https://omniway.online/v1/staff/verify \
  -H "Authorization: Bearer sk_live_..." -H "Content-Type: application/json" \
  -d '{ "cashier_id":"โ€ฆ", "pin":"4821" }'   # shift sign-in

Industry profile (the overlay)

The baseline above is identical for everyone. GET /v1/profile returns the merchant's industry profile: the baseline pillars and modules (always present), plus the sector overlay, default expense categories and units, the words that sector uses, and a top-metrics ordering hint for the dashboard and till.

{
  "type": "fleet",
  "label": "Fleet / transport operator",
  "baseline": { "pillars": ["stock","money","loss_control"],
                "modules": ["catalog","stock","sales","expenses","cashup","staff","pnl","loss"] },
  "overlay": ["vehicles","routes","driver_settlement","fuel"],
  "terms":   { "customer":"passenger", "sale":"fare", "cashier":"conductor" },
  "top_metrics": ["takings_today","fuel_spend","net_profit","cash_variance"]
}

A school calls a sale a "fee" and a customer a "learner"; a clinic says "bill" and "patient". Same engine, sector behaviour as data โ€” so a new industry is a profile entry, not a code fork.

Where to see it

  • Merchant dashboard (/merchant): a Profit & Loss view, a Loss-control view (with the by-cashier table), Expenses, and Staff โ€” plus net profit and gross margin on the overview.
  • Till (/till): cost on new products and on receive, an Expense and a Cash-up button on the Today screen, and a Void action on recent cash sales.

Omni Way is the financial core; your storefront or till is the surface it powers. Integrate once and the same ledger, payouts and reporting work across every product you adopt.

omniway.online ยท InnBucksPowered by InnBucks (MicroBank Limited) ยท USD & ZWG.