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.
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.
- 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.
- Signed out, you get "Sign In to Open a Shop" / "เข้าสู่ระบบเพื่อเปิดร้าน" with a button, "Open Account Settings" / "เปิดการตั้งค่าบัญชี".
- Signed in but without cloud-sync consent, you get "Cloud Consent Required" / "ต้องยินยอมใช้คลาวด์ก่อน" with "Open Privacy Settings" / "เปิดการตั้งค่าความเป็นส่วนตัว".
- 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.
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.
- Tap + → "Create Shop" / "สร้างร้าน".
- Optionally tap "Choose Photo" / "เลือกรูป" to give the shop a cover.
- Type the shop name.
- Add a description if you want one.
- Tap "Save" / "บันทึก".
- Tap + → "Join a Shop" / "เข้าร่วมร้าน".
- Type the 8-character code into "Invite Code" / "รหัสเชิญ", or tap "Scan QR Code" / "สแกน QR" and point the camera at the owner's code.
- 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.
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.
- Tap "Sale" or "Cost" — the sheet "Log Sale or Cost" / "บันทึกยอดขายหรือต้นทุน" opens with that type already chosen.
- Type the amount. That is the only field the app insists on.
- Fill in as much or as little of the rest as you have time for.
- Tap "Save" / "บันทึก".
- 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.
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.
- On the Log tab, tap the scan button in the nav bar — "Scan Receipt" / "สแกนใบเสร็จ".
- Choose "Take Photo" / "ถ่ายรูป", "Choose from Library" / "เลือกจากคลังรูป", or "Scan Multiple Slips" / "สแกนหลายสลิป".
- A "Reading receipt…" / "กำลังอ่านใบเสร็จ…" overlay runs the scan.
- 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.
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.
- Tap a row to open it — the sheet is titled "Edit Entry" / "แก้ไขรายการ".
- Change what you need. "Save" / "บันทึก" only becomes tappable once something is actually different.
- 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.
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.
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.
- Go to Manage → "Sale & Cost Categories" / "หมวดหมู่การขายและต้นทุน". The sheet it opens is titled "Categories" / "หมวดหมู่".
- It has a "Sales" / "ยอดขาย" section and a "Costs" / "ต้นทุน" section. Add with "Add Sale Category" / "เพิ่มหมวดหมู่การขาย" or "Add Cost Category" / "เพิ่มหมวดหมู่ต้นทุน".
- Tap a row to edit it, or swipe it left to delete it.
- 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.
- 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.
- 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.
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.
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.
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.
- Manage → the "Members" / "สมาชิก" card lists everyone, with an "Owner" / "เจ้าของ" badge and "You" / "คุณ" where they apply.
- 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" / "คัดลอกรหัส".
- 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.
- 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.