How to split vacation expenses in a group
Group trips generate the messiest expense situations of any human activity: multiple currencies, ad-hoc sub-groups, shared rooms but not shared dinners. Here's a workflow that survives a 10-day trip across three countries without anyone doing math on a napkin at the airport.
- Set up a shared group before you leave.
- Agree which categories are split equally vs. only among participants.
- Log every expense in its native currency, the same day.
- Mark exceptions (the scuba divers, the non-drinkers) at the moment.
- Settle on the last day with a minimum-transfer algorithm.
Before the trip: set up the group
Create the trip group the day everyone confirms their tickets, not the morning of the flight. Add every traveller, including the one who "doesn't do apps" — especially them. Pick a display currency: the currency most of you will be settling in. For a German-Norwegian group flying to Thailand, that's EUR. For a UK-US group doing Italy, that's GBP or USD.
You don't have to enter anything yet. But the group exists, the invitations are accepted, and everyone has the app on their phone before the first airport coffee gets charged to someone's card.
Decide the default split rules
Most groups run on three buckets:
- Shared by default — accommodation, shared taxis, group dinners, rental car, grocery runs for the Airbnb.
- Per-person — flights (already paid individually), personal souvenirs, spa treatments, anything someone does alone.
- Sub-group — the scuba trip that only three people did, the bar tab that only two kept going to, the rental moped the couple shared.
Agree this in principle over the pre-trip beer. In practice you'll still decide case-by-case, but having the buckets named upfront stops arguments at midnight on day four.
During the trip: multi-currency done right
This is where most group-trip apps fall apart. You pay THB 3,600 for a beach-side dinner on day 3 of a 10-day trip. Ten days later when you settle, the THB/EUR rate has moved 2%. What was €92 at the time is now €90 — or €94 — depending on the app.
The correct approach: store each expense in its native currency, and convert using the rate on the day it was spent. That way the balance you settle on is stable — it's not re-computing as rates drift. Monkey Split uses ECB daily reference rates and caches the conversion on the server the first time the expense is viewed, so everyone sees the same number.
The wrong approaches:
- One rate for the whole trip. Tricount does this — they ask you to set a group-level rate once. It's easy, but it's wrong if you cross a border or the rate moves significantly.
- Today's rate, computed fresh every time. Your balance shifts every time you open the app, which is psychologically awful.
- Manual conversion by the payer. "I paid THB 3,600 at 28 to the euro so that's €128." This works until the group doesn't trust the conversion rate, at which point you've turned a dinner into an argument about exchange rates.
Worked example: a real 4-person trip
Alice, Bob, Carol, and Dan go to Thailand for a week. The trip accumulates:
| Day | Expense | Paid by | Native | ≈ EUR |
|---|---|---|---|---|
| 1 | Airbnb (7 nights) | Alice | THB 28,000 | €720 |
| 2 | Group dinner | Bob | THB 4,200 | €108 |
| 3 | Scuba (Carol + Dan only) | Carol | THB 6,000 | €154 |
| 4 | Rental car (4 days) | Dan | THB 8,400 | €216 |
| 5 | Grocery run | Alice | THB 2,100 | €54 |
| 6 | Group dinner | Bob | THB 5,600 | €144 |
| 7 | Airport taxi | Carol | THB 1,200 | €31 |
Scuba is split between two people (Carol + Dan), everything else four ways. The app runs the math:
| Person | Paid | Owed | Net |
|---|---|---|---|
| Alice | €774 | €318 | + €456 |
| Bob | €252 | €318 | − €66 |
| Carol | €185 | €395 | − €210 |
| Dan | €216 | €395 | − €179 |
The minimum-transfer algorithm collapses this to three transfers: Bob → Alice €66, Carol → Alice €210, Dan → Alice €179. Not six criss-crossing payments — just three.
Handling exceptions without friction
The biggest source of settle-up drama is the expense where someone wasn't involved but got charged anyway. Catch these in the moment:
- "I don't drink." Uncheck them from the bar tab as you log it.
- "I already ate." Same — uncheck them from the dinner.
- "That was a gift for my sister." Don't log it in the trip group at all.
- "I Venmo'd you my share." Log it as a transfer / payment rather than deleting the original expense, so the history stays intact.
A 30-second fix at the moment beats a 30-minute debate on the last day.
Settling up
On the last day (or the flight home), open the group and tap "Settle up". A good app shows the minimum set of transfers — typically N − 1 or fewer for a group of N — with PayPal.me deep-links so everyone can pay in one tap.
If some travellers use different settle-up currencies (the German half wants EUR, the Norwegian half wants NOK), the app should show each payer-payee pair in both currencies so nobody has to open a converter.
Common pitfalls
- "I'll log it later." You won't. Log at the table.
- Cash withdrawal ≠ expense. ATM fees are personal cost-of-doing-business, not a group expense. Log the individual things the cash paid for.
- Airbnb booked before the trip. Log it on the date it was paid, not the date of the trip — the FX rate matters.
- Tip included or not. Write the post-tip amount so the split is the amount actually charged.
- The "I paid for everyone" person. Monkey Split is designed to handle this — just ensure they log each expense, not a single lump sum at the end.
How Monkey Split handles this
- 30+ currencies with ECB daily rates — the FX happens server-side the first time an expense is viewed and is then stable.
- Per-expense participant selection — two-tap exclusion for the expenses that aren't everyone's.
- Offline-first PWA — log from a boat in the Andaman Sea with no signal; it syncs when you're back on wifi.
- Minimum-transfer settle-up with PayPal.me deep-links.
- Free — no ads, no paywall. The whole thing is free.
FAQ
What if we're using multiple currencies on one trip (e.g. EU + UK)?
Log each expense in the currency it was paid in. The app converts each expense using the rate on the date it was spent — so an expense in GBP on day 2 uses day 2's rate, and an expense in EUR on day 6 uses day 6's rate. The final balance is stable.
Should we settle daily or at the end?
End of trip, almost always. Daily settlement defeats the point of a group expense app — you're just doing the settle-up six times instead of once. The exception: trips longer than two weeks, where settling weekly keeps balances small enough to feel low-stakes.
What about pre-paid things like flights and the Airbnb deposit?
Log them as expenses on the day they were paid. Flights are usually individual (each person books their own) so they don't go in the group at all. Shared bookings (Airbnb, rental car reserved on one card) go in on their actual booking date.
One person paid for basically everything. How do we avoid bankrupting them on day one?
Rotate who pays. If one person books the accommodation, someone else covers the rental car, a third handles the first round of dinners. This keeps any one person's outstanding balance manageable so the final settle-up isn't one giant transfer.
Does Monkey Split work offline (e.g. on a flight or in the Thai islands)?
Yes. It's a PWA with an offline sync queue — you can create, edit, and delete expenses with no signal, and it reconciles when you reconnect. Data lives locally on the device until it syncs.