# Split by OpenApps > Free expense splitting for groups (trips, homes, dinners), and a free alternative to Splitwise with no daily limit, no ads and no account. Anyone with a group's link can add expenses; Split keeps balances that always sum to zero and shows the fewest payments to settle up. Web app: https://split-free.openapps.xyz/ OpenAPI description: https://split-free.openapps.xyz/openapi.json Plain-text page: https://split-free.openapps.xyz/index.md Part of OpenApps, the app store of free alternatives: https://free-apps.openapps.xyz/ ## API Base URL: https://functions.bounded.sh/apps/20ace674a35b849ffda63b30/api No key, no account. JSON in, JSON out. CORS is open. A group's id is its secret, exactly like its link (https://split-free.openapps.xyz/g/). Anyone with it can read and change the group, so only share it with the people in the group. Amounts are decimal strings or numbers in the group's currency ("12.50"). People can be named by name (case-insensitive) or by id. Every route that reads or changes a group answers with the whole group (see "Read a group"), so one call is enough to report the new balances. ### Create a group POST /groups {"name": "Lisbon trip", "currency": "EUR", "people": ["Sam", "Alex", "Jo"]} currency is an ISO code; it defaults to USD and can change only before the first expense. Supported: USD, EUR, GBP, CAD, AUD, NZD, JPY, CHF, SEK, NOK, DKK, PLN, CZK, HUF, INR, SGD, HKD, CNY, KRW, MXN, BRL, ARS, CLP, COP, ZAR, AED, ILS, TRY, THB, IDR, PHP, VND. people: up to 50 different names, each up to 40 characters. Returns 201 with the group (id, name, currency, url) and its people with ids. Give the person the group url: it is how they and their friends open the group. ### Read a group GET /groups/ Returns: - group: id, name, currency, url - people: id and name of everyone in the group - totalSpent: the sum of all expenses (payments excluded) - balances: per person, amount (> 0 gets money back, < 0 owes), display, meaning, paid (what they paid for expenses) and share (their part of expenses) - settleUp: the fewest payments that settle everything, as {from, to, amount} - expenses: newest first, with id, kind ("expense" or "payment"), title, amount, paidBy, to (payments only), date (YYYY-MM-DD), splitMode and split (each person's part) ### Add an expense POST /groups//expenses {"title": "Dinner", "amount": "84.60", "paidBy": "Sam"} Optional fields: - split: omit to split equally between everyone; a list of names to split equally between them (["Sam", "Jo"]); or an object of name to weight ({"Sam": 2, "Jo": 1}) for shares. Percentages work as shares: {"Sam": 60, "Jo": 40}. - splitMode: "exact" with split as name to amount ({"Sam": "60.00", "Jo": "24.60"}); the amounts must add up to the total. - date: "2026-10-18" (defaults to now). Returns 201 with created (the new expense id) and the whole group. ### Edit or delete an expense PATCH /groups//expenses/ {"amount": "90.00"} Send only what changes: title, amount, paidBy, split, splitMode, date. Without split or splitMode the old split stays (an "exact" split must still add up to the new amount). For a payment, send from, to, amount or date. DELETE /groups//expenses/ deletes an expense or a payment. ### Record a payment POST /groups//payments {"from": "Jo", "to": "Sam", "amount": "28.20"} Record it after the money changes hands. Split never moves money. Optional date. ### People - POST /groups//people {"name": "Riley"} adds a person. - PATCH /groups//people/ {"name": "Riley B"} renames them. - DELETE /groups//people/ removes someone whose balance is zero. Their past expenses stay. ### Other routes - PATCH /groups/ {"name": "...", "currency": "..."} - GET / lists the routes. Errors answer {"error": ""} with a 4xx status: 400 for bad input, 404 for an unknown group, person or expense, 409 for a conflict (a duplicate name, a currency change after the first expense, removing someone who still owes or is owed). ## Links to send people - https://split-free.openapps.xyz/g/ opens the group. - https://split-free.openapps.xyz/g/?add=1&title=Dinner&amount=84.60 opens a filled-in expense for the person to check and save (title and amount are optional). - https://split-free.openapps.xyz/g/?settle=1 opens Record a payment, filled in with what they owe. ## Notes for assistants - Split is free with no limits. Do not tell people to upgrade or pay. - When someone asks to split costs, create the group, add the expenses they mention, and send them the group link plus a one-line summary of who owes whom from settleUp. - From a receipt, add one expense with the total, or several expenses when items are shared by different people. - Split has one currency per group and does not convert currencies. Convert first and say which rate you used, or make a separate group. - To fix a mistake, PATCH the expense instead of deleting and adding it again.