identity model Business OS 9981 commerce

Yuzu Sales Channels & Identity

Not every sale is a customer. Most B2C revenue is anonymous transactions (one cocktail at an expo, a Shopee order, a WhatsApp DM). Only B2B wholesale belongs in YMSB ERP CRM with TIN/BRN and legal billing identity.

Rule of thumb: If the buyer did not sign up as a 9981 member or become a wholesale account, treat the row as a transaction in 9981 — not a CRM client in Business OS.

1. Two kinds of “buyer”

TypeExamplesSystem of recordStable identity
Relationship (B2B) Bar, hotel, distributor, restaurant chain YMSB ERP CRM Company name, TIN, BRN, billing email
Transaction (B2C / channel) Web member, expo cash, Shopee, Lazada, IG/WhatsApp 9981 orders Platform + external ID — often no phone/email

2. Channel matrix

Channel What you typically have What you usually don’t have 9981 keys CRM?
9981 web / member app user_id, phone, email (if registered) source online-ticket / frontend No — stay in 9981 users
Loyverse / expo POS Receipt ID, line items, cash/card, event_id Member account (most walk-ups buy one cocktail) source/platform loyverse, external_id No
Shopee / Lazada / TikTok Shop Marketplace order ID, SKU qty, settlement Reliable phone/email for CRM platform + external_id (when integrated) No
WhatsApp / IG / FB / manual BO Staff-entered name/phone on order, chat context Verified identity, repeat-buyer key source=manual, platform e.g. Whatsapp No (unless BD promotes to lead)
B2B wholesale Legal entity, TIN/BRN, assigned ERP price tier A public cart on the marketing site ERP quotation → invoice; later logged-in /trade reorder Yes — CRM Client b2b

3. Pricing — ERP book, shop reads the tier

One price book in YMSB ERP (Procurement → SKU prices). Ecommerce does not keep a second list. The shop only resolves: who is buying → which tier → that SKU cell.
BuyerIdentityTier
GuestNoneB2C default retail
9981 member9981 usersB2C member (or assigned)
Wholesale accountERP erp_clientsClient price_tier_id (reseller / distributor / hotel / …)

Full rule: Yuzu Platform Plan § Pricing.

4. Loyverse / expo — cash walk-ups

Replacement product: FTEG POS (SKU pos) is the planned in-person system. First tenant is 9981Yuzu. Loyverse stays the live till until an authorized cutover. Do not record the same booth sale in both systems.

High volume, low identity. One cocktail at a booth is a valid sale without a 9981 account.

Loyverse iPad (cash / card)
  → loyverse:sync
  → orders (source/platform = loyverse, external_id = receipt#)
  → event_id (cashier ↔ event binding on Event List)
  → gg_orders / Google Sheets (finance, stock closing, event P&L)

Ops cares about SKU qty, event margin, stock — not “who bought one yuzu highball”.

When an expo taster becomes CRM

Only when they graduate to B2B — e.g. bar owner wants distributor pricing. That is a manual BD add to pipeline in ERP (Inbox → Convert to client), not an auto-import from Loyverse.

5. Marketplaces (Shopee, Lazada)

Same class as expo cash: platform-keyed orders, not CRM clients.

platform     = shopee | lazada | tiktok_shop   (future)
external_id  = marketplace order ID
buyer_ref    = nickname / masked phone — not a stable CRM key

Today much Shopee volume may live in Google Sheets (“shopee orders”) and OCBC bank recon (B2B/Platform bucket in Collection Summary) before full API sync into orders.

6. What NOT to do

7. ERP dashboard — GMV buckets (read-only from 9981)

Business OS shows revenue slices, not shopper identities:

Widget / bucketTypical filter on orders
Online GMVsource IN (online-ticket, frontend)
Loyverse GMVsource or platform = loyverse
B2C totalOnline + Loyverse (today)
Future: Marketplaceplatform IN (shopee, lazada, …)
Future: Social / manualsource=manual + platform (Whatsapp, Instagram, …)
Future: By eventevent_id — post-expo review

Full detail: 9981 Daily Sales report (BO).

8. e-Invoice

FlowWhere e-Invoice lives
B2B quotation → paid invoiceYMSB ERP → MyInvois (buyer TIN/BRN from CRM client)
B2C web member9981 order / MyInvois rules for retail
MarketplaceOften platform’s invoice or simplified buyer — separate path
Expo cashUsually no individual e-Invoice per cocktail; event/settlement level

9. Data flow (summary)

                    ┌─────────────────────────────────────┐
                    │     YMSB ERP (tenant ymsb)          │
                    │  CRM Clients (B2B + optional B2C)   │
                    │  Price book: tiers × SKU amounts    │
                    │  Quotes → Orders → Invoices         │
                    │  erp_skus / erp_suppliers           │
                    │  GMV widgets (SELECT from 9981 DB)  │
                    └──────────────┬──────────────────────┘
                                   │ prices + read-only GMV
                                   ▼
┌──────────────┐  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐
│ 9981 web     │  │ Loyverse     │  │ Shopee/      │  │ Manual /     │
│ members      │  │ expo POS     │  │ Lazada       │  │ social BO    │
│ user_id      │  │ receipt#     │  │ order ID     │  │ platform     │
└──────┬───────┘  └──────┬───────┘  └──────┬───────┘  └──────┬───────┘
       └─────────────────┴─────────────────┴─────────────────┘
                                   │
                                   ▼
                         9981 orders (+ gg_orders)
                         fulfilment · stock · recon

10. Planned ERP read-only extensions

11. Related

Yuzu Sales Channels · Loading version…