SharedPay
TIP
Need a quick overview on how to settle a dinner bill or a group trip? Check out the Splitting Costs Guide.
SharedPay lets you track shared expenses with a group and always know who owes whom. Record costs as they happen, check the balance view at any time, and mark debts as settled when money changes hands. It works like Splitwise, but it's built right into Mottainai alongside your inventory, boards, and calendar.
How it works
- Create a group from the dashboard (give it a name like "Summer Trip" or "Flat 3B"). Each group has its own expense list and balance view.
- Add members — invite Mottainai users, or add guests without an account (see below).
- Record expenses as they happen — who paid, how much, and how to split the cost.
- Check the balance view — see at a glance who owes what to whom, automatically calculated.
- Record settlements — when someone pays a debt back, log it and the balance updates.
Adding an expense
Each expense has a title, a total amount, who paid, and how to split the cost among the group.
Split methods
Choose the method that fits the situation:
Equally — the total is divided evenly among everyone.
Example: dinner costs €80 shared by 4 people — everyone owes €20.
Unequally — you set a specific amount for each person.
Example: Alice stayed in the double room (€60) and Bob in the single room (€40) — enter those amounts directly.
Percentage — each person covers a percentage of the total.
Example: a €100 grocery run where Alice pays 50%, Bob 30%, and Carol 20%.
Shares — assign a share count to each person; the total is divided proportionally.
Example: three nights in a cabin — Alice and Bob each get 2 shares (they stayed longer), Carol gets 1 share. Out of a €100 bill: Alice €40, Bob €40, Carol €20.
Adjustment — start with an equal split, then add or subtract a custom amount per person.
Example: €100 split three ways (≈€33 each), but Alice ordered an extra dish — add €10 to her share, subtract it equally from the others.
Guest participants
You can include people who don't have a Mottainai account — a friend visiting for the weekend, a colleague who paid cash, anyone who doesn't need their own login. Just enter their name and they appear in expenses and balances like any other participant. The group owner manages their entries on their behalf.
Balances
The balance view shows exactly who owes what to whom, calculated automatically from all expenses and settlements. Mottainai simplifies the debts: if Alice owes Bob €10 and Bob owes Carol €10, the view shows "Alice → Carol €10" directly — fewer payments needed to settle up.
Amounts are stored precisely — no rounding errors, even across many splits.
Settlements
When someone pays a debt back, record it as a settlement: who paid, who received, and how much. The balance updates immediately. Settlements are always between exactly two people — they are not split further.
Calendar integration
Expense dates appear in the Calendar aggregate view as all-day events. You can toggle this on or off in calendar preferences under Other Sources → SharedPay expenses. Clicking an event takes you straight to the SharedPay detail.
For developers
The following sections are for programmatic access via CLI, AI assistants (MCP), or direct API. See MCP setup and CLI docs for how to connect.
CLI
# Group management
mo sharedpay list
mo sharedpay create --name "Summer Trip" --currency EUR
mo sharedpay get SHAREDPAY_ID
mo sharedpay update SHAREDPAY_ID --name "Eurotrip 2026"
mo sharedpay delete SHAREDPAY_ID --yes
# Expenses (amounts in cents: 3500 = €35.00)
mo sharedpay expense list SHAREDPAY_ID [--kind expense] [--currency EUR]
mo sharedpay expense create SHAREDPAY_ID --title "Groceries" --amount 3500 [--payer USER_ID]
mo sharedpay expense delete EXPENSE_ID --yes
# Balances
mo sharedpay balance SHAREDPAY_ID
# Phantom participants (non-users)
mo sharedpay phantom list SHAREDPAY_ID
mo sharedpay phantom create SHAREDPAY_ID --name "Alice"
mo sharedpay phantom rename SHAREDPAY_ID PHANTOM_ID --name "Alice B."
# Members and groups
mo sharedpay member list SHAREDPAY_ID
mo sharedpay member add SHAREDPAY_ID --email user@example.com
mo sharedpay member update-role SHAREDPAY_ID USER_ID --role admin
mo sharedpay member remove SHAREDPAY_ID USER_ID --yes
mo sharedpay group list SHAREDPAY_ID
mo sharedpay group link SHAREDPAY_ID --group-id GROUP_IDMCP tools
Available when using AI assistants via the Mottainai MCP integration:
list_sharedpays— list all SharedPay groupscreate_sharedpay— create a new groupget_sharedpay— get group details and settingsupdate_sharedpay— update group name, currency, or descriptiondelete_sharedpay— delete a group (owner only)list_sharedpay_members— list real-user memberslist_sharedpay_phantoms— list phantom participantscreate_sharedpay_phantom— add a phantom participantupdate_sharedpay_phantom— rename a phantom participantlist_sharedpay_expenses— paginated list of expenses and settlementscreate_sharedpay_expense— record an expense with flexible splitupdate_sharedpay_expense— edit an existing expensedelete_sharedpay_expense— delete an expensecreate_sharedpay_settlement— record a debt payment between two participantsget_sharedpay_balances— net balances and minimal suggested transfers
API endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/containers?type=sharedpay | List SharedPay groups |
POST | /api/containers | Create group (type=sharedpay in body) |
GET | /api/containers/{id} | Get group |
PUT | /api/containers/{id} | Update group |
DELETE | /api/containers/{id} | Delete group |
GET | /api/containers/{id}/members | List real members |
POST | /api/containers/{id}/members | Add a member |
DELETE | /api/containers/{id}/members/{userId} | Remove a member |
GET | /api/containers/{id}/items | List expenses and settlements |
POST | /api/containers/{id}/items | Create expense or settlement |
PUT | /api/items/{itemId} | Update expense |
DELETE | /api/items/{itemId} | Delete expense |
GET | /api/containers/{id}/balances | Get balances and suggested transfers |
GET | /api/containers/{id}/phantoms | List phantom participants |
POST | /api/containers/{id}/phantoms | Add phantom participant |
PUT | /api/containers/{id}/phantoms/{phantomId} | Rename phantom |
DELETE | /api/containers/{id}/phantoms/{phantomId} | Remove phantom |
Amounts are stored as integer cents (€50.00 = 5000) to avoid floating-point rounding errors across multi-split calculations. The balance endpoint applies a greedy debt-simplification algorithm to return the minimal set of { from, to, amount } transfers. See the full API reference at /api/docs.