Skip to content
Als Markdown

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

  1. 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.
  2. Add members — invite Mottainai users, or add guests without an account (see below).
  3. Record expenses as they happen — who paid, how much, and how to split the cost.
  4. Check the balance view — see at a glance who owes what to whom, automatically calculated.
  5. 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

bash
# 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_ID

MCP tools

Available when using AI assistants via the Mottainai MCP integration:

  • list_sharedpays — list all SharedPay groups
  • create_sharedpay — create a new group
  • get_sharedpay — get group details and settings
  • update_sharedpay — update group name, currency, or description
  • delete_sharedpay — delete a group (owner only)
  • list_sharedpay_members — list real-user members
  • list_sharedpay_phantoms — list phantom participants
  • create_sharedpay_phantom — add a phantom participant
  • update_sharedpay_phantom — rename a phantom participant
  • list_sharedpay_expenses — paginated list of expenses and settlements
  • create_sharedpay_expense — record an expense with flexible split
  • update_sharedpay_expense — edit an existing expense
  • delete_sharedpay_expense — delete an expense
  • create_sharedpay_settlement — record a debt payment between two participants
  • get_sharedpay_balances — net balances and minimal suggested transfers

API endpoints

MethodPathDescription
GET/api/containers?type=sharedpayList SharedPay groups
POST/api/containersCreate 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}/membersList real members
POST/api/containers/{id}/membersAdd a member
DELETE/api/containers/{id}/members/{userId}Remove a member
GET/api/containers/{id}/itemsList expenses and settlements
POST/api/containers/{id}/itemsCreate expense or settlement
PUT/api/items/{itemId}Update expense
DELETE/api/items/{itemId}Delete expense
GET/api/containers/{id}/balancesGet balances and suggested transfers
GET/api/containers/{id}/phantomsList phantom participants
POST/api/containers/{id}/phantomsAdd 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.