Skip to content
← Back to Pocketbird
With other people

Groups — splitting bills with friends

Split shared bills without doing the maths: satang-exact splits, carve-outs for the drinkers, the fewest transfers that clear everyone, a shareable recap card, and polite reminders.

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

What a group is for

One person taps their card, everyone says they'll transfer later, and by the end of the trip nobody can reconstruct who owes what. A group is the fix: one shared record for a trip, a house, or a run of shared meals, where every bill states who paid, who was in on it, and what each person's slice is.

From there the app keeps a running who-owes-whom, works out the fewest transfers that clear everybody at once, and renders the whole group as one recap card you can post into the chat. What it never does is move money — it produces the numbers and the wording, and the transfer happens in your bank app.

Groups is the one part of Pocketbird that lives on the server instead of on your phone. Whether B has paid A back has to be true for everyone at the same moment, so there is no offline mode: with no connection you get "No Connection" / "ไม่มีการเชื่อมต่อ" and an ask to connect, rather than yesterday's numbers dressed up as today's.

A signed-in Pocketbird account
Without one, the hub shows "Sign In Required" / "ต้องเข้าสู่ระบบก่อน" with a button "Open Account Settings" / "เปิดการตั้งค่าบัญชี" that jumps straight to Settings → "My Profile" / "โปรไฟล์ของฉัน".
Cloud-sync consent
Signed in but not consented shows "Cloud Consent Required" / "ต้องยินยอมใช้คลาวด์ก่อน" with "Open Privacy Settings" / "เปิดการตั้งค่าความเป็นส่วนตัว". The switch is "Sync data to the cloud (Supabase)" / "ซิงก์ข้อมูลขึ้นคลาวด์ (Supabase)" under Settings → "Privacy (PDPA)" / "ความเป็นส่วนตัว (PDPA)". Withdraw it later and Groups goes dark immediately.
  • While a group is open in front of you, a live channel keeps it current — a co-member's new bill or settled tick lands on your screen without a refresh. Incoming events are batched for about half a second before the screen updates.
  • Those channels are only up while you are signed in, consented, on that screen, and the app is in the foreground. Every reconnection does a full re-read, so a moment spent in the background can't leave you looking at stale numbers.
  • Pull down on the Groups list, or inside a group, for a live re-read on demand. On the hub the pull is gated on being signed in and cloud-consented, so withdrawing consent really does stop the app reading from the cloud.
  • Pocketbird holds no payment identifiers anywhere in Groups: no PromptPay QR, no bank-account field, and it never sends a message on your behalf. Everything it produces goes out through the iOS share sheet, where you choose the app and the recipient.
Hidden feature
Groups can be promoted onto the bottom tab bar
Do thisMore → the slider button "Edit Tabs" / "แก้ไขแท็บ" at the top right → under "In More", tap the green "+" beside Groups
This is an in-app preference screen, not iOS's native long-press tab customisation — the iPhone bar deliberately does not use it, so long-pressing the bar does nothing. The bar has a cap: when it is full the "+" is greyed out with "The bottom bar is full. Remove a tab above to add one of these." Transactions is pinned and can never be demoted. On iPad, Groups is already a row in the sidebar, and the sidebar does use Apple's native drag-and-hide customisation.
02

Starting a group, or joining one

A group needs a name and nothing else. Whoever creates it becomes its owner and is joined to the roster automatically, and the server mints a fresh 8-character invite code for it on the spot.

  1. Go to More → Groups and tap "Create Group" / "สร้างกลุ่ม" — the pill at the bottom of the list, or the same button inside the empty state.
  2. Optionally tap "Choose Photo" / "เลือกรูป" and pick a cover.
  3. Type a name under "Group Name" / "ชื่อกลุ่ม" — the placeholder is "e.g. Chiang Mai Trip" / "เช่น ทริปเชียงใหม่".
  4. Optionally add a "Description" / "รายละเอียด".
  5. Tap "Save" / "บันทึก".
Group Name — "ชื่อกลุ่ม"
Required. Save stays disabled while it is blank. Surrounding spaces are trimmed and the name is clamped to 100 characters.
Description — "รายละเอียด"
Optional, up to four visible lines, clamped to 500 characters. Placeholder: "What's this group for? (optional)" / "กลุ่มนี้เอาไว้ทำอะไร (ไม่ใส่ก็ได้)".
Cover Photo — "รูปหน้าปก"
Optional. The picture is downscaled to a 1024 px long edge; if it still exceeds 1 MB the app steps down through 768, 512 and 384 px, and drops the cover rather than ship something too big. While it processes you see "Adding photo…" / "กำลังเพิ่มรูป…" and Save is disabled. A chosen photo carries an ✕ badge to clear it again.
TipOnly the owner can change a group afterwards: the pencil ("Edit Group" / "แก้ไขกลุ่ม") at the top right is drawn for them alone, and the server refuses the write from anyone else. The cover and description show as a header at the very top of the group — the whole header is left out when the group has neither, and the group's name is always the screen title.

Getting people in is deliberately unfussy, and every member can do it — not just the owner. Open the group, scroll to "Members" / "สมาชิก" and tap "Invite Friends" / "ชวนเพื่อน" for a sheet with a large QR code and the code printed beneath it.

  • Hold the phone up and let your friend scan the QR with the stock iPhone Camera — the QR is an ordinary invite link, so iOS offers to open Pocketbird for them.
  • "Share Invite Link" / "แชร์ลิงก์คำเชิญ" opens the iOS share sheet with the link plus the message "Join my group “%@” on Pocketbird — invite code %@". The code is repeated in plain text on purpose, so someone whose chat app doesn't make the link tappable can still type it in.
  • "Copy Code" / "คัดลอกรหัส" puts the eight characters on the clipboard; the button turns into "Copied" / "คัดลอกแล้ว" with a checkmark for exactly two seconds, then changes back.
  • The code is 8 uppercase characters, generated on the server and unique across every group. It does not rotate and cannot be regenerated from the app, so treat it as permanent: anyone holding it can join at any time.
  • If the QR image can't be drawn, the sheet says so and keeps working: "Couldn't create a QR code. Share the link or code below instead." / "สร้างคิวอาร์โค้ดไม่สำเร็จ แชร์ลิงก์หรือใช้รหัสด้านล่างแทน".
Hidden feature
The invite code is selectable text — long-press it to copy
Do thisLong-press the "Invite Code" / "รหัสเชิญ" row on a group's screen, or the big code on the Invite Friends sheet
The standard iOS Copy/Share menu appears, so you can hand the code to someone without opening the invite sheet at all. The row sits in the Members section in a monospaced bold font, which is also why the eight characters are easy to read aloud over the phone.
  1. To join someone else's group, go to More → Groups → "Join with Invite Code" / "เข้าร่วมด้วยรหัสเชิญ".
  2. Type the code into "Invite Code" / "รหัสเชิญ", or tap "Scan QR Code" / "สแกน QR" to open the camera viewfinder.
  3. Tap "Join" / "เข้าร่วม" — it reads "Joining…" / "กำลังเข้าร่วม…" while it works, and swipe-to-dismiss is blocked until it finishes.
  • Codes are forgiving. The field auto-capitalises every character and turns autocorrect off, and leading or trailing spaces are trimmed before it is submitted — a lowercase code pasted with a stray space still works.
  • The in-app scanner reads QR only, one code at a time, and highlights what it sees. Point it at something else and it buzzes, with the hint swapping to "That's not a Pocketbird invite QR code." / "นี่ไม่ใช่ QR คำเชิญของ Pocketbird". A QR containing just the bare eight characters is accepted too.
  • Camera permission is asked only on hardware that can actually scan. Denied, you get "Camera Access Needed" / "ต้องอนุญาตให้ใช้กล้องก่อน" with "Open Settings" / "เปิดการตั้งค่า", and coming back from iOS Settings re-reads the grant by itself. Where scanning isn't supported at all: "Scanning Unavailable" / "สแกนไม่ได้", with the advice to type the code instead.
  • Re-entering the code of a group you are already in is harmless — the server refreshes your existing roster row instead of adding a second one, and takes the chance to update your display name.
  • A shared-shop code is the same kind of code and will let you in, but that shop appears under Shop, not in the Groups hub — the Groups list only shows bill-split groups.
  • Your name on a roster is never typed in a group form. It comes from your display name in Settings → "My Profile" / "โปรไฟล์ของฉัน", falling back to the part of your email before the @, then the word "Member" / "สมาชิก", clamped to 50 characters. Rename yourself there and you are renamed in every group. Members are listed oldest-joined first, so the owner sits at the top, with an "Owner" / "เจ้าของ" badge and "You" / "คุณ" on your own row.
  • Someone who left or deleted their account still appears on the old bills they were part of, as "Former member" / "อดีตสมาชิก" — the record of who owed what is not rewritten when a person goes.
Hidden feature
An invite tapped on a brand-new install waits for you
Do thisInstall Pocketbird, then tap a friend's invite link before you have signed in or finished onboarding
The code is held across the login, consent and onboarding screens, and the Join sheet presents itself the moment the main app exists — with the code already filled in. The sheet also self-gates rather than dead-ending: signed out, it offers an inline "Sign In" / "เข้าสู่ระบบ" button and returns you to the form with your typed code intact. One catch: the pending invite is held in memory only. Quit the app before you get through and it is gone — tap the link again.
03

Splitting a bill

This is the screen the whole feature exists for. One shared bill records what it was for, how much it came to, who actually paid, and every participant's slice — and the arithmetic is done in whole satang, so the slices always add up to the total exactly.

  1. Open the group, scroll to "Bills" / "บิล" and tap "Split a Bill" / "หารบิล" at the bottom of the section.
  2. Type what it was for — "What was it for? (e.g. dinner, taxi)" / "ค่าอะไร? (เช่น มื้อเย็น แท็กซี่)".
  3. Enter the "Total Amount (THB)" / "ยอดรวม (บาท)".
  4. Flip "Add 10% service charge" / "บวกค่าบริการ 10%" and "Add 7% VAT" / "บวก VAT 7%" if the receipt had them.
  5. Pick the payer under "Who Paid?" / "ใครจ่าย?" — it starts on you.
  6. Under "Split Between" / "หารระหว่าง", switch people out of the split, or overtype any individual amount.
  7. Add carve-outs if only some people shared part of it.
  8. Leave "Log what I paid as an expense" / "บันทึกยอดที่จ่ายไปเป็นรายจ่าย" on to mirror it into your own ledger.
  9. Tap "Save" / "บันทึก".
What was it for — "ค่าอะไร?"
Required. Trimmed and clamped to 200 characters. It doubles as the note on the transaction the bill can write into your own ledger.
Total Amount (THB) — "ยอดรวม (บาท)"
Required, must be more than 0. The figure you type is rounded to whole satang before the split, so a stray third decimal can never make the shares and the total quietly disagree.
Add 10% service charge — "บวกค่าบริการ 10%"
Off by default. Adds 10% of the subtotal.
Add 7% VAT — "บวก VAT 7%"
Off by default. Adds 7% of the subtotal plus the service charge — the order printed on Thai receipts. With either toggle on, the footer spells the arithmetic out line by line and ends with "Total charged %@ — the split works from this figure." / "ยอดจ่ายจริง %@ — การหารคิดจากยอดนี้".
Who Paid? — "ใครจ่าย?"
A picker over the whole roster, starting on you. Unselected it reads "Choose…" / "เลือก…", and Save is blocked until somebody is chosen.
Split Between — "หารระหว่าง"
One row per member, everyone included to start with. An included person also gets an editable money field whose placeholder is the computed default — leave it blank and that default is what gets saved.

The default is an equal split computed in integer satang: the total is divided by the number of participants and the leftover satang are handed out one at a time from the front of the roster, which is ordered oldest-joined first. ฿100 between three people is 33.34 / 33.33 / 33.33 — never three times 33.33 with a satang missing, and never a different arrangement on someone else's phone.

Heads upSave stays disabled until the shares add up to the total exactly. When they don't, a red footer names both figures: "Shares add up to %@ — they must equal the total %@." / "ยอดหารรวมเป็น %1$@ — ต้องเท่ากับยอดรวม %2$@". This is the one rule the form will not bend on, because a bill whose parts don't sum to the whole makes every balance downstream wrong.
Hidden feature
You can type arithmetic into any money field
Do thisTap into a money field — the bill total, one person's share, a carve-out amount — then tap the small ± glyph that appears at its right edge
The number pad is replaced by a calculator in a popover: digits, + − × ÷, brackets, %, backspace, "=" and a running total. Type 1200+350+80, or (100+50)×2. The % behaves like a pocket calculator: 200+10% is 220, 200−10% is 180, 200×10% is 20. Pressing "=" or tapping outside writes the result back into the field as a plain amount. The button is invisible until the field has focus, which is why nobody finds it. Its accessibility label is "Calculator" / "เครื่องคิดเลข".

A carve-out is the one uneven move Thai groups actually make: pull the drinks out for the drinkers, the cake out for whoever ate it, and let the rest split equally. The "Carve-Outs" / "รายการแยกหาร" section shows up in the form once you have at least one participant and a non-zero amount.

  1. Tap "Add a Carve-Out" / "เพิ่มรายการแยกหาร".
  2. Name it under "What is it?" / "รายการอะไร?" — placeholder "e.g. drinks, cake" / "เช่น ค่าเหล้า เค้ก". The label is optional; leave it blank and it shows as "Shared item" / "รายการหารร่วม".
  3. Enter the "Amount (THB)" / "จำนวนเงิน (บาท)" — required, more than 0.
  4. Under "Who shares it?" / "ใครหารบ้าง?" tap everyone who had it. Nobody is selected to begin with, on purpose — a carve-out that defaulted to everyone would just be the bill again.
  5. Tap "Add" / "เพิ่ม".
  • Each carve-out splits equally among its own people, and whatever is left over splits equally among everyone in the bill. Both legs use the same satang-exact remainder handling, so the bill still reconciles to the total.
  • Swipe a carve-out row to delete it — the even split recomputes on the spot. Switching someone out of the split also removes them from every carve-out automatically.
  • If the carve-outs come to more than the bill, or one of them ends up with nobody in it, Save is blocked and the footer turns red: "Carve-outs exceed the total or have no members — adjust them to save." / "รายการแยกหารเกินยอดรวม หรือไม่มีคนหาร — ปรับก่อนจึงจะบันทึกได้".
  • Carve-outs are a form-time helper. What gets saved is the resulting per-person amounts, not the list of carve-outs — reopen the bill later and you see those amounts instead.
  • There is no date field. A bill is stamped with the moment you save it, and editing never changes that stamp — you cannot back-date a bill, so log it while you are still at the table.
  • The payer's own share is created already settled. You cannot owe yourself, so their line carries a badge instead of a tick-circle.
  • The saved bill jumps to the top of the Bills list (newest first) and reaches the other members live. A row shows the title, the amount on the right, and "Paid by %@ · %@" / "จ่ายโดย %1$@ · %2$@" underneath — payer and date.
Heads upChoosing somebody else as the payer on a brand-new bill is expected to be refused by the server, with "Couldn't save the bill. Check your connection and try again." / "บันทึกบิลไม่สำเร็จ ตรวจสอบการเชื่อมต่อแล้วลองอีกครั้ง". If that happens, save the bill with yourself as payer and change the payer afterwards in "Edit Bill" / "แก้ไขบิล" — an edit is allowed to move the payer. Or simply ask the person who paid to log it.
04

What a shared bill does to your own money

A group bill is a shared record; your own budget still needs the money that actually left your account. That is what "Log what I paid as an expense" / "บันทึกยอดที่จ่ายไปเป็นรายจ่าย" does. It is on by default, it appears only when there is something worth recording, and only while you are creating a bill — never while editing one.

  • You paid the bill → a single expense for the whole amount goes into your transactions, because that is what left your account, with your own slice carried alongside as "my share". The footer says exactly that: "The full amount you paid goes to this device's transactions, since that's what left your account. Only your own share counts toward a trip's total."
  • Someone else paid → the toggle reads "Log my share as an expense" / "บันทึกส่วนของฉันเป็นรายจ่าย" and records just your share, which is what you will hand over. Footer: "Adds your share to this device's transactions so budgets and safe-to-spend stay accurate."
  • You paid but weren't in the split — you covered it entirely for other people → the full amount is still logged, with a ฿0 share of your own.
  • You paid only for yourself → the whole thing is yours anyway, so no separate share is recorded.
  • The mirrored row is written with the bill's title as its note and digital as its payment source.
TipYour balance, your budgets and safe-to-spend always use the full amount you paid — that is real money out of a real account. Only trip figures use the "my share" lens, which is why a bill you fronted appears on a trip's list with your share as the headline and "of %@ paid" / "จากที่จ่ายจริง %@" underneath it.
Trip — "ทริป"
Optional picker. It appears only when the log toggle is on and you have at least one trip, and defaults to "None" / "ไม่ระบุ". Its footnote: "Optional. Tag this to a trip and it counts toward that trip's spending."
Hidden feature
A bill split during a trip offers to tag itself
Do thisSplit a bill on a day covered by a trip's dates, with the log toggle on and Trip still set to "None"
A sparkle chip appears in the form reading "In trip %@ — tag it?" / "อยู่ในช่วงทริป %@ — แท็กเลยมั้ย". One tap tags the mirrored transaction to that trip. It is offered and never applied by itself — Pocketbird will not file your spending into a trip behind your back. It shows only while creating a bill, not while editing one.
Heads upThe mirror is one-way and it happens once. Editing the bill later never touches the transaction it created — which is exactly why an edit can't double-log — and deleting the bill from the group does not delete that transaction from your phone. If a bill was wrong enough to remove, tidy up the matching row under Transactions yourself.
05

Fixing or removing a bill

Bills get typed wrong: the wrong total, the wrong payer, one person who wasn't even there. Deleting and re-entering would wipe everyone's settled ticks, so the app opens the same sheet again as "Edit Bill" / "แก้ไขบิล" and keeps as much of the agreement as it honestly can.

Hidden feature
Swipe a bill row for Edit and Delete
Do thisIn a group's Bills section, swipe a bill row from right to left
Two actions appear: "Edit" / "แก้ไข", which opens the bill form, and a red "Delete" / "ลบ", which asks for confirmation first because it removes the bill for every member. The same form is also reachable from the "Edit Bill" / "แก้ไขบิล" button at the bottom of the bill's expanded shares.
  • The form is seeded once with the exact stored amounts as per-person overrides, so what the group agreed to survives verbatim instead of being re-derived from an even split.
  • Save is only offered when something has actually changed.
  • Changing the payer on an edit is allowed. The bill's date and its original author are deliberately left alone.
  • Members dropped from the split have their share row deleted, new members get one, and unchanged amounts are updated in place.
Heads upThe form states the settlement rule in its own footer while you edit: "Changing someone's amount clears their settled tick; unchanged amounts keep it." / "ถ้าแก้ยอดของใคร เครื่องหมายจ่ายแล้วของคนนั้นจะถูกล้าง ยอดที่ไม่เปลี่ยนจะคงเดิม". The reason is simple — they now owe a different number, so an old tick would be a claim nobody made. The payer's own share stays settled throughout.
  1. To remove a bill: swipe its row and tap "Delete" / "ลบ".
  2. Read the dialog "Delete Bill?" / "ลบบิล?" — "Deletes “%@” and its split for everyone in the group." / "ลบ “%@” และการหารของทุกคนในกลุ่ม".
  3. Tap "Delete" / "ลบ".
Heads upDeleting is permanent and it is for everyone. Group data lives on the server and is hard-deleted — there is no undo, no trash, and the per-person shares go with it. Any member can delete any bill, not only the person who logged it. The transaction the bill mirrored into your own ledger is not deleted with it.
06

Who owes whom, and settling up

Two different questions get two different answers here. "Who Owes Whom" / "ใครติดเงินใคร" is strictly pairwise — between you and each other person, nothing netted through anybody else. "Settle Up" / "เคลียร์ยอด" nets the whole group and tells you the fewest transfers that clear everybody at once.

Hidden feature
Tap a bill row to open its per-person shares
Do thisTap a bill row in a group's Bills section — nothing about it looks tappable
The row expands into one line per member with their exact share, a "Payer" / "คนจ่าย" badge on whoever fronted the money, a green circle beside everyone else, and an "Edit Bill" / "แก้ไขบิล" button at the bottom. Those circles are the only place in the app a single share can be ticked settled — tap once to fill it, tap again to un-tick.
  • Balance rows read "%@ owes you" / "%@ ติดเงินคุณ" or "You owe %@" / "คุณติดเงิน %@", each with an arrow, so the direction never depends on colour alone. They are sorted biggest creditor first.
  • Only unsettled shares count. Tick a share and it drops out of the balance at once; a person whose net comes to exactly zero disappears from the list, and the whole section is hidden when every balance is zero.
  • Either side can flip a tick: the person who paid can mark it received, the person who owes can mark it paid. The app records who flipped it, and leaves that person out of the notification it sends about it.
  • The checkmark fills instantly and survives a dropped refresh, because the app splices the server's own returned row straight back into the screen.

The Settle Up section appears as soon as at least one transfer is needed. Each row reads "%@ pays %@" / "%@ โอนให้ %@" with an exact amount, satang and all, because that is the figure somebody types into a bank app. The footer states the promise plainly: "The fewest transfers that clear every balance in the group." / "จำนวนครั้งโอนที่น้อยที่สุดที่เคลียร์ยอดทั้งกลุ่มได้พอดี".

TipThe plan is advisory — showing it writes nothing. It matches the largest creditor against the largest debtor, which never needs more than one transfer fewer than there are members, and ties break the same way every time, so everyone's phone renders the identical plan. After A pays C to shortcut a chain, you still tick the underlying shares off in the bills themselves.
Hidden feature
The ⋯ on a balance row hides the two most useful actions
Do thisIn "Who Owes Whom", tap the small ellipsis-in-a-circle at the right of a row
A menu opens with "Mark All Between You Settled" / "ติ๊กจ่ายแล้วทุกยอดระหว่างกัน" and — only on rows where they owe you — "Send a Payment Reminder" / "ส่งข้อความเตือนยอดค้าง". Neither action exists anywhere else in the app, and the button only appears once you have a non-zero balance with that person.
  • "Mark All Between You Settled" is the "we're square now" button after a single transfer. It confirms first, with the exact count: "Marks every unsettled share between you and %@ — %lld in all — as settled. You can still un-tick any single share afterwards." and a button reading "Mark %lld settled" / "ติ๊กจ่ายแล้ว %lld รายการ".
  • Its scope is narrow on purpose: only bills where one of you two was the payer. A bill a third person paid is left untouched, even when it shows up in the netted plan. The count in the dialog is worked out before anything is written, so it is exact.
  • Shares are ticked one at a time, so if it fails part-way the ones already ticked stay ticked and the error is reported. Everything it does can be un-ticked share by share afterwards.
  • "Send a Payment Reminder" writes the awkward message for you: "Friendly reminder from “<group>” 🙏 <name>'s outstanding share is ฿X,XXX.XX — transfer whenever it suits. Thanks!" — the amount with full satang, and no deadline, no guilt.
  • It hands the text to the iOS share sheet and stops there. The app never sends it, never messages anyone on a schedule, and never nudges on its own — you pick the app and the person.
  • The item only appears on rows where the other person owes you — never on a row where you owe them. And there is no payment QR to attach, here or anywhere else in Groups.
07

The shareable recap card

At the end of a trip somebody usually types a สรุปยอด into the group chat by hand, and gets a line of it wrong. The recap is that post, generated: total spent, what is still outstanding, what the trip cost each person, and who should transfer what to whom — rendered as an image you can share.

  1. Open the group and tap "See group recap" / "ดูสรุปยอดกลุ่ม" — the row only appears once the group has at least one bill.
  2. Read the card.
  3. Tap "Share" / "แชร์" at the top right to send the rendered image.
  4. Tap "Done" / "เสร็จ" to close.
The header
The group name, the date range of its bills (a single date if they all fall on one day), and "%lld bills · %lld people" / "%lld บิล · %lld คน" — where "people" counts the members actually involved, not the size of the roster.
"Total" / "รวมทั้งหมด"
Every bill in the group added up, in whole baht, tinted as an expense.
"Still unsettled" / "ยังค้างอยู่"
Every share that isn't the payer's own and hasn't been ticked, added up, in whole baht and left untinted.
One row per involved member
Their name, what the group cost them across every bill on the right in whole baht, and "Fronted %@" / "ออกให้ก่อน %@" underneath when they put money up. Sorted biggest first, with the name as tiebreak.
"Settle Up" / "เคลียร์ยอด"
The same netted transfer plan as on the group screen, each line "%@ pays %@" / "%@ โอนให้ %@" with the exact amount.
TipThe rounding is inconsistent on purpose. Headline totals and per-person figures are whole baht, because satang is noise when you are glancing at a summary. The transfer amounts keep full satang, because those are the numbers somebody retypes into a bank app.
  • Member lines count every share, settled or not: the per-person figure answers "what did this cost me", not "what do I still owe".
  • Members with no involvement at all are left off. A roster is not a summary — only people who paid something or owed something get a line.
  • A group whose bills come to ฿0 shows "Nothing to summarise yet" / "ยังไม่มีอะไรให้สรุป" with "Split a bill and the recap fills itself in." / "หารบิลสักใบ แล้วสรุปจะเติมให้เอง".
  • No payment QR appears on the recap, by design — the card carries numbers and names, nothing that could be used to receive money.
Hidden feature
The exported image carries a wordmark the on-screen card doesn't
Do thisOpen the recap, wait a beat for the "Share" / "แชร์" button to appear, then tap it
The shared PNG has "Pocketbird" printed at the bottom so it explains itself to someone in the chat who doesn't have the app; in-app that line would be noise, so it isn't drawn. The image is rendered once at 640 pt wide at twice that resolution or better, and the Share button is simply absent until the render finishes — if you don't see it yet, that is why.
08

Shared goal pockets

A group can also hold a savings target everyone chips into — a trip fund, a shared gift, the deposit on a house. It is not the same thing as your personal Pockets: this is a record of who has put in what, not money carved out of your own balance.

  1. Open the group, scroll to "Shared Pockets" / "กระเป๋าออมร่วม" and tap "New Shared Pocket" / "กระเป๋าออมร่วมใหม่" at the bottom of the section.
  2. Type a name under "Pocket Name" / "ชื่อกระเป๋า" — placeholder "e.g. Trip Fund" / "เช่น กองทุนทริป".
  3. Optionally set a "Target (Optional)" / "เป้าหมาย (ไม่บังคับ)", then tap "Save" / "บันทึก".
  4. To put money in, tap "Contribute" / "สมทบ" on the pocket's row, enter the "Contribution Amount" / "จำนวนเงินสมทบ" and Save.
Pocket Name — "ชื่อกระเป๋า"
Required. Save stays disabled while it is blank.
Target (Optional) — "เป้าหมาย (ไม่บังคับ)"
Optional; left blank it is 0. With a target above 0 the row shows a progress bar capped at 100% and reads the saved amount "of" / "จาก" the target. Without one it simply shows the running total.
Contribution Amount — "จำนวนเงินสมทบ"
Required, must be more than 0. The sheet opens at half height and drops the keyboard when you scroll it, since the number pad has no return key.
  • A pocket's total is simply the sum of every member's contributions. There is no withdrawal — money only goes in.
  • Contributing writes nothing to your personal transactions. It is purely a group record, so it never moves your own balance or your safe-to-spend.
  • Any member can create a pocket, and any member can contribute to one. New pockets and new contributions reach everyone else live.
Hidden feature
Swipe a shared pocket to delete it
Do thisSwipe a row in the Shared Pockets section of a group
A red "Delete" appears and confirms with "Delete Pocket?" / "ลบกระเป๋าออมร่วม?" — "Deletes “%@” and its contributions for everyone in the group." / "ลบ “%@” และยอดสมทบของทุกคนในกลุ่ม". It is a permanent delete and every contribution goes with it. Any member can do this, not just the owner or whoever created the pocket.
Heads upA contribution cannot be edited or deleted — the app only has an add path — so check the figure before you save it. These two sheets also show no error message: if a save is refused, the sheet simply stays open with nothing to explain why.
09

Notifications, and getting out

A group is the one place in Pocketbird where other people can change your numbers, so it is the one place that pushes. Four things raise a notification, and every one of them leaves out whoever caused it.

"New group member" / "สมาชิกใหม่ในกลุ่ม"
"%@ joined %@" — someone used your invite code.
"New shared bill" / "บิลใหม่ในกลุ่ม"
"%@ added a bill: %@"
"Bill settled" / "ชำระบิลแล้ว"
"%@ settled their share of %@"
"New contribution" / "มีเงินสมทบใหม่"
"%@ added %@ to %@"
Hidden feature
The Group Activity switch is what raises the iOS permission prompt
Do thisSettings → "Profile & Budget Cycle" / "โปรไฟล์ & รอบงบ" → the "Group Activity" / "กิจกรรมในกลุ่ม" toggle
iOS's notification permission is asked here and nowhere else — never at launch, never on first run. The switch is on by default but it is per device and does not sync, so a second phone needs its own. It also needs a signed-in account and cloud-sync consent, because registering a device for push is itself cloud processing, and signing out removes that device's registration.
  • You are never pushed for your own action — the person who did the thing is excluded from every event, including a settle tick you flipped yourself.
  • A push for the group you are currently looking at is dropped silently. No banner — the live channel already updated the row in front of you.
  • Tapping a group push opens that group as a sheet with a "Done" / "เสร็จ" button. Tapped while signed out, the destination is held until you are back in. A group you have left, or one that has been deleted, lands on a "not found" screen rather than an error.
  • Every word of a notification is composed on your device from the app's own translations. The server sends the event, never the language.

At the bottom of a group screen there is exactly one red button, and which one you get depends on your role. Everyone except the owner sees Leave; the owner sees Delete.

  • Not the owner: "Leave Group" / "ออกจากกลุ่ม" → confirm "Leave Group?" / "ออกจากกลุ่ม?" → "Leave" / "ออก". You lose access on the next refresh and the group drops off your list.
  • The owner: "Delete Group" / "ลบกลุ่ม" → "Delete Group?" / "ลบกลุ่ม?" → "Delete Permanently" / "ลบถาวร". The dialog is honest about the blast radius: "Deletes the group with all its bills and shared pockets for every member. This can't be undone."
  • Leaving does not remove your shares from other people's bills, and it does not touch anything already mirrored into your own transactions. The record of who owed what stays intact for the people still in the group.
  • Deleting your whole Pocketbird account does not take the group down with it: your name is replaced by a deleted-user placeholder, the shared facts stay for your co-members, and a group you own is handed to the earliest-joined member left — unless you were the only one, in which case it goes.
Heads upThe owner has no way to leave a group in the app — they see Delete and nothing else, and there is no hand-over control either. So think for a second about who creates the group: if the owner walks away from the trip, their only exit is destroying the group for everybody. There is also no way to remove another member from a bill-split group from the app.
Hidden feature
Your group data comes out in the JSON export
Do thisSettings → "Export Data (JSON)" / "ส่งออกข้อมูล (JSON)" in the account section — not the Privacy screen, which has no export button
The bundle includes your groups (flagged with whether you own them), the bills you paid or created, your own bill shares with their settled timestamps, and your pocket contributions. Co-members' rows, other people's names and receipt images stay out of it. The group section is attached only when you are signed in and online; offline you still get the local export, just without that part.