Skip to content
← Back to Pocketbird
With other people

Shop — a side business, kept separate

A separate online ledger for a market stall or side business — sales, costs, shop-only categories and customers, shared with co-owners and kept out of your personal budget entirely.

Find it atMore → ShopLast updated · 2026-08-07
01

What a shop is

Money that passes through a market stall is not money you can spend. Stock goes out, takings come in, and if all of it lands in your personal budget both numbers stop meaning anything — a good selling day looks like a windfall, a stock run looks like overspending.

Shop is a separate ledger for that money. Inside it you log Sales — money in — and Costs — the stock and goods you paid for — and none of it ever touches the personal side of the app.

A shop also lives online rather than on your phone, so more than one person can co-own it. Whatever one of you logs appears on everyone else's screen a second or two later.

  • Shop money never enters Safe-to-Spend, the personal Summary, budgets, insights, the home-screen widgets, or the CSV and PDF cycle exports.
  • Sale means income, Cost means expense. Every other figure — the net, the margin, the charts — is derived from that one rule.
  • A shop's categories and its customers and suppliers are its own lists. They have nothing to do with your personal categories or counterparties.
  • Everyone who joins is a full co-owner: they can add, edit and delete any entry, manage members, and invite more people. Only the owner can additionally rename the shop and close it.
Heads upShop is online-first, and there is no offline copy that survives a restart. A shop you already opened in this session keeps showing what it loaded if the signal drops, but launch the app offline and you get "No internet connection" / "ไม่มีการเชื่อมต่ออินเทอร์เน็ต" over an empty ledger. Saving, editing and deleting always need a connection. The one thing that works without one is reading a receipt photo with the scanner.
02

Getting to your shop

Shop sits behind More, with two gates in front of it: you have to be signed in, and you have to have allowed cloud sync.

  1. Tap "More" / "เพิ่มเติม" in the tab bar, then "Shop" / "ร้านค้า" in the tool list. On iPad every tab is a sidebar row, so Shop is right there in the sidebar.
  2. Signed out, you get "Sign In to Open a Shop" / "เข้าสู่ระบบเพื่อเปิดร้าน" with a button, "Open Account Settings" / "เปิดการตั้งค่าบัญชี".
  3. Signed in but without cloud-sync consent, you get "Cloud Consent Required" / "ต้องยินยอมใช้คลาวด์ก่อน" with "Open Privacy Settings" / "เปิดการตั้งค่าความเป็นส่วนตัว".
  4. Past both gates, the hub opens and sends you on.
  • With no shops yet you get an empty state offering Create Shop and Join.
  • With exactly one shop the picker is skipped entirely and you land inside that shop.
  • With two or more you get a list of shop cards — one column on iPhone, two across on iPad — each showing the cover photo or a storefront glyph, the name, an "Owner" / "เจ้าของ" capsule when it is yours, and "%lld members" / "สมาชิก %lld คน".
  • With no shops, no internet and nothing left on the device, the hub shows "No Connection" / "ไม่มีการเชื่อมต่อ" and asks you to connect.

Inside a shop everything happens on one screen with a pinned three-way control: "Log" / "บันทึก" is the daily counter work, "Insights" / "ข้อมูลเชิงลึก" is the analytics, "Manage" / "จัดการ" is the admin. Every fresh open lands on Log — the app deliberately does not remember which segment you were last on — and each segment keeps its own scroll position.

  • The sticky Sale and Cost bar, the receipt-scan button and the list/calendar toggle exist only on Log.
  • The nav-bar title becomes a storefront glyph plus the shop name in the shop accent colour, and the whole screen takes that colour — a shop never looks like your personal app by accident.
  • Once you belong to at least one shop, a "Shop" / "ร้านค้า" card with the subtitle "Log sales & costs" / "ลงยอดขายและต้นทุน" appears on the Transactions screen and opens the same hub. It is hidden for anyone with zero shops, and because it reads a cached count it can lag behind until the next successful load.
  • On iPhone you can promote Shop onto the main tab bar from the edit-tabs button in the More screen. The bar holds at most four tools beside More, and Transactions is pinned to the first slot. On iPad the sidebar can be reordered or Shop hidden — again, everything except Transactions.
Hidden feature
The + for a second shop follows you inside your only shop
Do thisBelong to exactly one shop, open Shop, then look at the + in the nav bar
With one shop you are dropped straight into it and never see the hub — but the hub's + menu is merged onto that screen's nav bar, so Create Shop and Join a Shop are still one tap away. One person can own several shops: a stall and a weekend market, or one shop per partner group.
TipIf you used the older on-device shop, the hub shows a status card while that data moves online — "Your shop is on this device" / "ร้านของคุณอยู่ในเครื่องนี้", "Moving your shop online" / "กำลังย้ายร้านขึ้นออนไลน์", and so on — with a read-only "My shop" / "ร้านของฉัน" row underneath showing how many entries are still on the phone. The move copies and verifies before it flags anything, so nothing is deleted. It runs by itself once you are signed in, consented and online.
03

Creating a shop, or joining one

Both start from the + in the shop hub's nav bar, and both are offered as pills on the empty state when you have no shops yet.

  1. Tap + → "Create Shop" / "สร้างร้าน".
  2. Optionally tap "Choose Photo" / "เลือกรูป" to give the shop a cover.
  3. Type the shop name.
  4. Add a description if you want one.
  5. Tap "Save" / "บันทึก".
Cover Photo — "รูปหน้าปก"
Optional. The photo is shrunk to a 1024 px long edge, then stepped down through 768, 512 and 384 until it fits under 1 MB; if even 384 px will not fit, the shop is created without a cover. Footer: "Add a photo so the shop is easy to spot." / "เพิ่มรูปเพื่อให้จำร้านได้ง่าย".
Shop Name — "ชื่อร้าน"
Required. Placeholder "e.g. My market stall" / "เช่น แผงตลาดของฉัน". Cut to 100 characters when you save.
Description — "รายละเอียด"
Optional, one to four visible lines, cut to 500 characters. Placeholder "What does the shop sell? (optional)" / "ร้านขายอะไร? (ไม่บังคับ)". It shows under the cover banner, two lines at most.
TipThe shop row is created first and the cover and description are attached in a second call. A shop can therefore appear with its photo quietly missing if that second call fails — open the shop editor and add it again. Any failure shows "Couldn't Save" / "บันทึกไม่สำเร็จ".
  1. Tap + → "Join a Shop" / "เข้าร่วมร้าน".
  2. Type the 8-character code into "Invite Code" / "รหัสเชิญ", or tap "Scan QR Code" / "สแกน QR" and point the camera at the owner's code.
  3. Tap "Join" / "เข้าร่วม".
  • The sheet is titled "Join Group" / "เข้าร่วมกลุ่ม" even when you reach it from Shop — a shop is a group underneath, and the same join sheet is reused.
  • Codes are upper-cased and trimmed for you, and accepted at 4 to 32 letters and digits; the codes the server issues are 8 hex characters.
  • You can also join by tapping an invite link, or by pointing the plain iPhone Camera app at the QR — no need to open Pocketbird first.
  • Your name on the roster comes from your Account Profile display name, otherwise the part of your email before the @, otherwise "Member". It is cut to 50 characters.
  • The sheet cannot be swiped away while a join is in flight.
Heads upJoining is not a guest pass. Whoever joins becomes a full co-owner: they can add, edit and delete any entry, remove members — including you — and invite other people. There is no read-only role and no per-person permission. Give the code only to the people who genuinely run the shop.
04

Logging a sale or a cost

The bottom of the Log tab holds two capsules and nothing in their way: "Sale" / "ยอดขาย" and "Cost" / "ต้นทุน". They stay there while you scroll, because at a stall you are logging with one hand.

  1. Tap "Sale" or "Cost" — the sheet "Log Sale or Cost" / "บันทึกยอดขายหรือต้นทุน" opens with that type already chosen.
  2. Type the amount. That is the only field the app insists on.
  3. Fill in as much or as little of the rest as you have time for.
  4. Tap "Save" / "บันทึก".
Type — "ประเภท"
Sale or Cost. Switching it inside the sheet clears the category you picked and re-applies that side's default, because the two sides have separate category lists.
Amount — "จำนวนเงิน"
The hero field, on a decimal pad. It must be more than 0 or Save stays disabled.
Item (Optional) — "ชื่อ/รายการ (ไม่บังคับ)"
The product name, placeholder "e.g. rambutan" / "เช่น เงาะ". Autocorrect is off, and it is cut to 200 characters. This is the field "Top products" / "สินค้าขายดี" later groups by, so it is worth filling in.
Category — "หมวดหมู่"
A grid of the shop's categories for the current side, plus "No category" / "ไม่ระบุหมวด" and "Add Category" / "สร้างหมวดหมู่". A parent tile shows a chevron and opens its subcategories. A Sale starts on the seeded ทั่วไป category; a Cost starts on "No category".
Received from / Paid to — "รับจาก" / "จ่ายให้"
The header flips with the type: a customer on a sale, a supplier on a cost. Optional either way — the placeholders read "Customer (optional)" / "ลูกค้า (ไม่บังคับ)" and "Supplier (optional)" / "ซัพพลายเออร์ (ไม่บังคับ)".
Paid With — "จ่ายด้วย"
"Cash" / "เงินสด" or "Digital" / "ดิจิทัล", defaulting to Cash. A shop deliberately offers no credit-card option.
Note (Optional) — "หมายเหตุ (ไม่บังคับ)"
Free text, cut to 500 characters. Placeholder "e.g. customer paid later" / "เช่น ลูกค้าค้างชำระ".
Receipt — "ใบเสร็จ"
One photo per entry, visible to every co-owner.
Date — "วันที่"
A day picker, not a time picker. The time stamped on the entry is the moment you opened the sheet, and that is the time the ledger row shows.
  • Any member can log, and the entry is attributed to whoever logged it.
  • The first time an entry sheet opens in a brand-new shop, four default categories are seeded: ทั่วไป on the sale side, and วัตถุดิบ, ค่าขนส่ง and อื่นๆ on the cost side.
  • The customer or supplier's name is copied onto the entry as plain text, so deleting that person later still leaves the entry readable.
  • Saving gives a short haptic and closes the sheet, and the new row is slotted into the list on screen without a full reload.
Heads upOffline, Save is disabled and a banner reads "You're offline. Your scanned details are kept — connect to save them to the shop." / "คุณออฟไลน์อยู่ รายละเอียดที่สแกนไว้ถูกเก็บไว้แล้ว — เชื่อมต่ออินเทอร์เน็ตเพื่อบันทึกเข้าร้าน". Nothing you typed is thrown away, it just waits. With nothing cached, the category grid collapses to "No connection" / "ไม่มีการเชื่อมต่อ" as well.
Hidden feature
Type arithmetic straight into the amount field
Do thisTap the "Amount" / "จำนวนเงิน" field, then tap the small +/− "Calculator" / "เครื่องคิดเลข" button that appears beside it
The number pad is replaced by a calculator, so you can type 1200+350+80 for three sales in a row, (100+50)×2 for two of a pair, or 200−10% for a discount, which gives 180. Press = and the result is written back as a normal amount. The maths is exact — it never goes through floating point, so a long expression cannot drift by a satang. The button only appears once the field is focused, which is why most people never find it.
Hidden feature
The item field remembers what you last charged for that product
Do thisTap into "Item (Optional)" / "ชื่อ/รายการ (ไม่บังคับ)" in the entry sheet
Up to five chips of past products appear — your recents when you first focus the field, then filtered as you type — and each chip carries the last amount you logged for it. Tapping a chip fills the item, and if the amount is still empty it fills that remembered amount too, so a repeat sale is two taps. Chips are ranked most-logged first, then most-recent, and sale items and cost items keep separate vocabularies with separate remembered prices.
Hidden feature
Add a new customer or supplier without leaving the form
Do thisIn the entry sheet's customer or supplier field, type a name that does not exist yet
An "Add %@" / "เพิ่ม %@" row appears under the field. Tapping it — or pressing Done on the keyboard — creates that person in the shop's shared list straight away and links them to the entry you are writing. Typing a name that already exists shows that person to tap instead, so you cannot accidentally create a duplicate. It is a server write, so it needs a connection.
05

Receipts and slips

You can photograph a receipt and let the phone read it instead of typing it out. The reading happens on the device, so it works with no signal at all — it is only saving the result into the shop that needs a connection.

  1. On the Log tab, tap the scan button in the nav bar — "Scan Receipt" / "สแกนใบเสร็จ".
  2. Choose "Take Photo" / "ถ่ายรูป", "Choose from Library" / "เลือกจากคลังรูป", or "Scan Multiple Slips" / "สแกนหลายสลิป".
  3. A "Reading receipt…" / "กำลังอ่านใบเสร็จ…" overlay runs the scan.
  4. A pre-filled entry sheet opens. Check it, fix anything the scan got wrong, and save.
  • A scan defaults to a Cost, because a shopkeeper photographing a receipt is usually recording stock they bought. One tap on the type control turns it into a Sale, and every other field stays editable.
  • The scan fills the amount (left blank when it cannot read it), the date (today when it cannot read it), Cash or Digital guessed from words on the slip, and the merchant line into the note.
  • When the amount was read with low confidence you get "This value may be misread — please check" / "อ่านค่านี้ไม่ชัด — โปรดตรวจสอบ". The warning clears the moment you touch the amount yourself.
  • Inside the form the control reads "Attach Photo" / "แนบรูป", and once there is a photo it becomes "Replace Photo" / "เปลี่ยนรูป" plus "Remove Photo" / "ลบรูป". The hint under it — "Shop partners can see this photo" / "หุ้นส่วนในร้านเห็นรูปนี้ได้" — is literally true: any member can open it, not only the person who attached it.
  • Tap a thumbnail for a full-screen viewer titled "Receipt" / "ใบเสร็จ" that you can pinch to zoom. The image downloads lazily, so offline it stays a placeholder and tries again next time.
  • Photos are shrunk to a 2048 px long edge and must come in under 2 MB; anything that will not fit is refused with "That photo was too large to attach." / "รูปนี้ใหญ่เกินไป แนบไม่ได้".
  • The camera option is hidden on hardware with no document scanner. Importing from the photo library is always offered.
Hidden feature
Scan a whole stack of slips in one go
Do thisShop → Log → the scan button → "Scan Multiple Slips" / "สแกนหลายสลิป"
Pick up to 20 photos with "Choose Slip Photos" / "เลือกรูปสลิป" and each one is read in turn. Under "Import as" / "นำเข้าเป็น" you set the default for the batch — Sale or Cost, and it starts on Cost — then tap any row's coloured tag to override just that row, and switch off the rows you do not want. Only rows recognised as slips with a readable amount can import; the rest are marked "Not a slip" / "ไม่ใช่สลิป" or "Needs review" / "รอตรวจสอบ". Imported entries carry the amount, the date, the merchant line as their note, and Cash — no item, no category, and the source photos are not attached as receipts on this path. The run writes one row at a time and stops at the first failure.
Heads upReceipt photos are not part of the data export you can request under PDPA — that export covers the shop entries you wrote yourself, not any image. The photos live in a private per-shop bucket that only members can read, and the way to get them back is to sign in.
06

Reading and fixing the ledger

The Log tab shows only the most recently recorded day, flat and short, so the screen you work on all day stays quick. "See all entries" / "ดูรายการทั้งหมด" pushes the full list — "All Entries" / "รายการทั้งหมด" — grouped by day.

  • The swatch on the left is the category's colour and glyph; an uncategorized entry gets a neutral grey tag.
  • The title is the item, or the note when there is no item, or just "Sale" / "Cost". When you filled in both, the note becomes a quiet second line.
  • The third line is who logged it, the time of day, and Cash or Digital. A paperclip means a receipt is attached.
  • The amount is green for a sale and red for a cost.
  • A day header carries the day label — "Today" / "วันนี้", "Yesterday" / "เมื่อวาน", or an abbreviated date — a count badge, and that day's net. Today and yesterday start expanded; older days start collapsed. Tap a header to fold or unfold it.
TipOpening a shop downloads the last 45 days. The list draws 14 day-sections at a time; each "Show older entries" / "ดูเก่ากว่านี้" reveals 14 more of the days already loaded, and once those run out it fetches another 60 days from the server. Leaving the shop screen resets the window back to 45 days. If a shop has been quiet for longer than the window, the Log tab offers "See all entries" instead of wrongly claiming there is nothing there.
Hidden feature
Long-press an entry row for Edit, Delete and View Receipt
Do thisPress and hold any entry row — on Log, on All Entries, or on a customer's Recent Activity
A context menu appears with "View Receipt" / "ดูใบเสร็จ" (only when the row has a paperclip), "Edit" / "แก้ไข", and a destructive "Delete" / "ลบ". There is deliberately no swipe-to-delete anywhere on the shop ledger — this menu is the only gesture, because a delete removes the row for every co-owner. The same three actions are mirrored into the VoiceOver rotor. On a calendar day sheet the menu is shorter: View Receipt and Edit, no Delete.
  1. Tap a row to open it — the sheet is titled "Edit Entry" / "แก้ไขรายการ".
  2. Change what you need. "Save" / "บันทึก" only becomes tappable once something is actually different.
  3. To remove it, scroll to "Delete Entry" / "ลบรายการ" at the bottom and confirm.
  • Any member may edit or delete any entry, not only the person who wrote it. The server enforces exactly the same rule.
  • A delete is permanent, and it is permanent for everyone.
  • Changing the amount or the note never drops an attached receipt — the photo is only touched when you replace it or remove it yourself.
  • Every edit and every delete is written into the shop's Activity feed, so nothing happens quietly behind a partner's back.
  • Editing and deleting both need a connection.
Heads upTwo people can have the same entry open. If the other one saves first, your Save does not overwrite theirs — the form reloads their version and says "This entry changed — review the latest below, then Save again to overwrite, or Cancel." / "รายการนี้มีการเปลี่ยนแปลง — ตรวจสอบข้อมูลล่าสุดด้านล่าง แล้วกดบันทึกอีกครั้งเพื่อเขียนทับ หรือกดยกเลิก". If they deleted it instead, you get "Entry removed" / "รายการถูกลบ" — nothing you typed was applied to anything.

The "Search entries" / "ค้นหารายการ" bar on All Entries opens a full-screen search that downloads the whole ledger first, so it reaches entries months older than the 45 days the browsing list holds. In calendar mode the same bar sits inline on the Log tab, since a calendar has no "see all" list to hang it off.

  • It matches on the item, the note, the amount and sale/cost keywords, and text matching ignores case and Thai tone marks.
  • Amounts match as substrings, so typing 120 finds ฿120 and ฿1,200.
  • Type keywords work in both languages from two characters up: sale, sales, ขาย and ยอดขาย on one side; cost, costs, ต้นทุน and ทุน on the other.
  • Type nothing and you get up to 8 suggestion chips built from your own shop — your most-used items, categories and people, at most four of any one kind — plus your 10 most recent entries under "Recent" / "ล่าสุด". A chip filters by that exact thing rather than guessing at your text.
  • Shop search has no facet filters and no long-press menu on its results; those belong to the personal transaction search only.

The toolbar toggle swaps the entries area for a month calendar — its icon shows the mode you would switch to, "Calendar View" / "มุมมองปฏิทิน" or "List View" / "มุมมองรายการ". The cover and the summary card stay exactly where they are, and the choice is remembered on this device only; it is not shared with your co-owners.

  • Three colour modes: "Net" / "สุทธิ" tints each day by the sign and size of its profit, "In vs Out" / "เข้า–ออก" draws money in against money out, and "Heatmap" / "ฮีตแมป" shades by how busy the day was regardless of sign. A one-line legend under the grid always spells the current code out in words. It starts on Net and, unlike the list/calendar choice, is not remembered.
  • The header shows the month and "Net this month" / "คงเหลือเดือนนี้".
  • Days with no activity are not tappable. A day that does have entries opens a sheet with the date, "%lld entries" / "%lld รายการ", that day's net, and the same rows you see in the list.
Hidden feature
Swipe the calendar sideways to change month
Do thisIn calendar mode, drag horizontally anywhere on the calendar card
Left goes to the next month, right to the previous one, with a haptic each time; the chevrons do the same thing more slowly. Moving to a month older than what is loaded fetches just that month rather than the whole history, and the result is cached, so swiping back and forth over the same few months does not re-download anything.
07

The shop's own categories and people

A shop keeps two lists of its own, both shared with every member and both completely separate from your personal ones: the categories you file sales and costs under, and the customers and suppliers you deal with.

  1. Go to Manage → "Sale & Cost Categories" / "หมวดหมู่การขายและต้นทุน". The sheet it opens is titled "Categories" / "หมวดหมู่".
  2. It has a "Sales" / "ยอดขาย" section and a "Costs" / "ต้นทุน" section. Add with "Add Sale Category" / "เพิ่มหมวดหมู่การขาย" or "Add Cost Category" / "เพิ่มหมวดหมู่ต้นทุน".
  3. Tap a row to edit it, or swipe it left to delete it.
  4. Tap Edit at the top right, then drag the handles to reorder. The order you save is the order everyone in the shop sees. Dragging is sibling-scoped: a sale category can never land among the costs, and a subcategory never crosses to a different parent.
Category Name — "ชื่อหมวดหมู่"
Placeholder "e.g. Drinks" / "เช่น เครื่องดื่ม". Category names are data, never translated — they render exactly as typed in both languages.
Icon and colour
A curated symbol set plus any emoji you like, and preset colours plus a custom one.
Parent Category — "หมวดหมู่หลัก"
Optional, default "None" / "ไม่ระบุ". Only same-side top-level categories are offered, the whole section is hidden when there is no eligible parent, and a category that already has children cannot become a child itself. Nesting is one level deep.
  • A category's side is fixed when you create it — there is no control anywhere for moving a category from Sales to Costs.
  • Deleting a category never deletes entries. Its entries simply become uncategorized and its subcategories are promoted to top level — the confirmation spells both out before you commit.
  • Any member can add, rename, reorder and delete categories — this is not an owner-only screen.
  • Until somebody drags something, categories sit in name order; once a category has been dragged it sorts ahead of everything nobody has touched. Putting your busiest sellers at the front of the grid takes a second off every entry you log afterwards.

Manage → "Customers & Suppliers" / "ลูกค้าและซัพพลายเออร์" is the shop's address book. It is not the member list — these are the people you sell to and buy from, not the people who can log entries.

Name — "ชื่อ"
Required. Placeholder "e.g. Pa Daeng's shop" / "เช่น ร้านป้าแดง".
Note (Optional) — "หมายเหตุ (ไม่บังคับ)"
Placeholder "e.g. morning market" / "เช่น ตลาดเช้า" — the kind of thing that reminds you where you know them from.
Role — "บทบาท"
"Customer" / "ลูกค้า", "Supplier" / "ซัพพลายเออร์" or "Both" / "ทั้งสองแบบ", defaulting to Both. It decides which section they sit in and which log button comes first on their detail screen.
Icon & Color — "ไอคอนและสี"
Two switches, "Custom icon" / "ไอคอนกำหนดเอง" and "Custom color" / "สีกำหนดเอง", both off by default, with a live "Preview" / "ตัวอย่าง" avatar. Turning one off clears that value.
Merge Into — "รวมเข้ากับ"
Edit mode only. Folds this person into another one: every entry of theirs moves across, then this record is deleted. The confirmation says it cannot be undone, and it means it.
  • The list is sectioned Customers, then Suppliers, then Both, and empty sections are dropped. Filtering by "Customers" / "ลูกค้า" shows only people whose role is exactly Customer — someone set to Both stays in the Both bucket.
  • Deleting a person leaves every past entry intact and still showing their name — the confirmation says "Past entries keep the name." / "รายการที่ผ่านมายังคงชื่อไว้".
  • A person's detail screen offers "Log a Sale" / "บันทึกการขาย" and "Log a Cost" / "บันทึกต้นทุน", their recent activity, and a shortcut into your personal Debts — "Track What They Owe You" / "บันทึกเงินที่เขาค้างคุณ" or "Track as a Debt You Owe" / "บันทึกเป็นหนี้ที่คุณต้องจ่าย". That debt is private to you, and it saves without a connection; the two log buttons do not.
  • The "Recent Activity" / "ความเคลื่อนไหวล่าสุด" list only covers what has been downloaded, and the caption says so: "About the last 45 days — not an all-time total." / "ประมาณ 45 วันล่าสุด — ไม่ใช่ยอดรวมทั้งหมด". Do not read it as a running balance for that customer.
Hidden feature
Swipe a person right to pin them to the top
Do thisManage → Customers & Suppliers → swipe a row rightwards (a full swipe works too)
"Pin" / "ปักหมุด" and "Unpin" / "เลิกปักหมุด" float a person to the top of their section with a pin marker. Pins are stored on your device only and are never synced, so pinning the three suppliers you actually buy from does not clutter anyone else's list — and it still works with no connection.
Hidden feature
Long-press a person to log a sale with them already filled in
Do thisPress and hold a row in Manage → Customers & Suppliers
The menu holds "Log a Sale" / "บันทึกการขาย" and "Log a Cost" / "บันทึกต้นทุน" — ordered so the one that matches their role comes first — plus Pin or Unpin, "Rename" / "เปลี่ยนชื่อ", "Merge Into…" / "รวมเข้ากับ…" with a submenu of every other person, and "Delete" / "ลบ". Choosing a log action opens the entry sheet with that person and that type already set, which is the fastest route in when a regular walks up.
08

Insights, highlights and closing the day

A stall's profit swings wildly from one day to the next, because stock is bought before it is sold. Both the summary card on Log and the whole Insights segment are built to pull your eye off a single day and onto the week.

  • The card at the top of Log has a "Today" / "วันนี้" · "Week" / "สัปดาห์นี้" · "Month" / "เดือนนี้" picker, starting on Today, over "Net" / "สุทธิ", "Sales" / "ยอดขาย" and "Costs" / "ต้นทุน". Figures on this card are whole baht.
  • Today adds a 7-day net sparkline; Week adds the full 7-day bar chart and the reminder that you buy stock ahead of selling it; Month is the current calendar month.
  • The windows are exact: Today is the calendar day, Week is the last seven days ending today, and Month is the current calendar month.
  • Tapping anywhere on the card except the period picker switches to Insights. The quiet "See insights" / "ดูข้อมูลเชิงลึก" chevron is only a hint — the whole card is the target.
  • The Insights segment has its own "Insights period" / "ช่วงเวลาข้อมูลเชิงลึก" picker, and this one starts on Week rather than Today.
  • "Profit" / "กำไร" shows "Margin" / "อัตรากำไร" (net divided by sales) and "Markup" / "ส่วนบวกเพิ่ม" (net divided by costs) as whole percentages; either reads "—" when its denominator is zero. The sales-against-costs bar chart needs at least two days of data, so it never appears on Today.
  • "By category" / "ตามหมวดหมู่" ranks sales and then costs, rolling every subcategory into its parent, with the untagged bucket labelled "No category" / "ไม่ระบุหมวด".
  • "Top products" / "สินค้าขายดี" is the top five by revenue, and it merges quantities — เงาะ and เงาะ 10 ลัง count as one product. Sales logged with no item collapse into a single "Unnamed" / "ไม่ระบุชื่อ" row.
  • "Trends" / "แนวโน้ม" ignores the period picker on purpose: week-over-week sales and net, "Best day" / "วันที่ดีที่สุด" and "Worst day" / "วันที่แย่ที่สุด" chosen from the last seven days among the days that had activity, "Month so far" / "เดือนนี้จนถึงตอนนี้", and "Projected month-end" / "คาดการณ์สิ้นเดือน", which is withheld until a tenth of the month has passed.
  • "Operational" / "การดำเนินงาน" splits sales into Cash against Digital and shows who logged them.

Up to four "Highlights" / "ไฮไลต์" cards sit at the top of Insights, ranked by how much they matter: costs beating sales three selling days running, a margin that fell five percentage points or more against last week, sales up 20% or more, this week's top-earning named product, the best of the last seven days, and — only in a shop with two or more members — who logged the most sales. Tapping a card scrolls to the section it came from.

Hidden feature
Long-press a highlight card to snooze it for a week
Do thisPress and hold a Highlights card on the Insights segment
"Snooze for a week" / "เลื่อนไปอีกสัปดาห์" hides it for exactly seven days; "Dismiss" / "ปิด" removes it now, which is also what the small ✕ in the corner does. A card's identity includes the week it belongs to, so a dismissed finding comes back next week if it is still true. Both choices are stored on your device only — your co-owners still see the card.
Hidden feature
The "No category" row in Insights is a door, not a label
Do thisInsights → the "By category" / "ตามหมวดหมู่" card → tap the "No category" / "ไม่ระบุหมวด" row
It is the only row in that card with a chevron, and it opens a full-screen "Categorize" / "จัดหมวดหมู่" cleanup. "Grouped" / "จัดกลุ่ม" mode, the default, clusters entries that share the same item and note, so one pick tags the whole cluster at once; "One by One" / "ทีละรายการ" lets you multi-select and then "Assign Category" / "กำหนดหมวดหมู่". Sales never merge with costs even for the same product name, and the picker only offers the sides actually present in the batch.

Manage → "End of Day" / "สรุปท้ายวัน" → "Close today's shop" / "ปิดยอดวันนี้" opens a read-only wrap-up: "Today's net" / "กำไรสุทธิวันนี้" and "This week so far" / "สัปดาห์นี้จนถึงตอนนี้", which runs from the start of the current calendar week rather than the rolling seven days used elsewhere. It writes nothing — entries were already logged as they happened, so closing the day is a moment of reflection, not a book-keeping step you can forget.

TipIf the week to date is in profit the wrap-up is titled "Nice week! 🎉" / "สัปดาห์นี้ดีมาก! 🎉" and arrives with confetti, a celebrating mascot and a haptic; otherwise it reads "Day closed" / "ปิดยอดแล้ว" without ceremony. Reduce Motion turns the animation off. Any member can open it.
09

Running a shop with other people

Everything in a shop is shared, including the power to change it. The Manage segment is where you see who else is in, what they have been doing, and how to get out.

  1. Manage → the "Members" / "สมาชิก" card lists everyone, with an "Owner" / "เจ้าของ" badge and "You" / "คุณ" where they apply.
  2. Tap "Invite a Co-owner" / "เชิญเจ้าของร่วม" for the "Invite Friends" / "ชวนเพื่อน" sheet — a QR on an always-white background so it scans in dark mode, the code in monospace, "Share Invite Link" / "แชร์ลิงก์คำเชิญ" and "Copy Code" / "คัดลอกรหัส".
  3. Tap the ⋯ on someone else's row for "Make owner" / "ตั้งเป็นเจ้าของ" or "Remove from shop" / "นำออกจากร้าน".
  • Any member — not only the owner — can hand ownership to someone else or remove another member.
  • The owner's own row shows only the badge. To remove the owner, ownership has to be handed to someone else first.
  • "Remove from shop" only appears when there is more than one member, and the last member cannot be removed at all.
  • The shared invite message says "group", not "shop", on every path, because a shop is a group underneath. The friend who receives it still lands in the right place.
  • Only the owner sees the pencil that edits the shop itself — "Edit Shop" / "แก้ไขร้าน" in the nav bar.
Hidden feature
Tap the invite code row to copy it
Do thisManage → the Members card → tap the "Invite Code" / "รหัสเชิญ" row
The whole row is a button, not a label. Tapping it copies the code, fires a success haptic, flips the icon to a checkmark for two seconds and announces "Copied" / "คัดลอกแล้ว" to VoiceOver — enough to paste it into a chat without opening the QR sheet at all. In the QR sheet itself the code is also long-press-selectable if you want to read it out.
Heads upRemoving a member has a consequence the screen does not spell out. The dialog is right that their past entries stay in the ledger — but everything you see is scoped to the current roster, so those entries drop out of every list, every chart and every total for the members who remain. A removed co-owner takes their history out of your numbers with them.
  • Manage → "Activity" / "ความเคลื่อนไหว" is a read-only audit log written by the server: who added, edited or deleted an entry — with the before and after when an amount changed — who joined, who removed whom, and who was made owner. Amounts there are whole baht.
  • While a shop's screen is open the app watches its entries, audit rows, categories, people and members, and refreshes about half a second after any change lands.
  • The other members get a push when you log a sale or a cost, when ownership changes, and when someone deletes an entry that was not their own. The person who did it is never notified, and while you are inside a shop its own pushes do not banner over you. Tapping one opens that shop.
  • At the bottom of Manage the owner sees "Close Shared Shop" / "ปิดร้านที่แชร์", which asks to "Close Permanently" / "ปิดถาวร" and then deletes the shop's entire ledger, its categories, its people, its receipts and its activity for everyone. Everyone else sees "Leave Shared Shop" / "ออกจากร้านที่แชร์", which only removes them.
  • Either way, any entries that were moved online out of an older on-device shop from this phone are un-flagged and come back on this phone.
  • No Siri phrase, App Intent or Shortcut logs a sale or a cost. The voice and Shortcuts surfaces are personal-only, and Ask Pocketbird does not read shop data.
  • No widget, Lock Screen accessory or Spotlight result shows shop money — the widget snapshot is personal-only by design.
  • The share sheet and the slip-import link route into your personal capture, never into a shop, and ⌘N on a hardware keyboard opens the personal quick-add even while you are standing inside a shop.