Record an event, allocate a fee, done.
Events in TeamLedger are how money becomes obligations. Add a tournament fee, equipment order, or coach honorarium; allocate to all players, selected players, a coach, or the TM; split equally or to-the-cent custom, and TeamLedger updates every ledger in one transaction.
Four steps from receipt to ledger.
The same form handles a $40 ref payment and a $4,000 tournament registration. No mode switching, no different UI per category.
Pick a category
League fee, tournament, equipment, travel, ref fee, coach fee, uniforms, or other. Eight categories cover the youth-sports expense map.
Enter the total and date
Type the dollar amount, pick a date, add notes if helpful. The form is one screen, no wizards, no menus.
Choose who pays
All active players, a hand-picked subset, a single coach, or yourself when fronting an expense. Equal split is one click.
Save, every ledger updates instantly
Charges lock at save. New-charge emails queue automatically to both parents on each affected player.
Eight categories
The expense map of a youth-sports season.
League fee, Tournament, Equipment, Travel, Ref fee, Coach fee, Uniforms, and Other (free-text label). Eight categories cover roughly 95% of every line item we have seen on a real team budget. Each category drives sensible defaults, a Coach fee defaults to a coach payee, an Equipment line defaults to an all-players allocation, a Ref fee defaults to a per-game amount. Nothing is forced; everything is suggested.
- League fee · Tournament · Equipment · Travel, the big four
- Ref fee · Coach fee, paying officials and staff
- Uniforms, the line item every season has, with sizing notes in the description
- Other (free-text), for the genuinely unique line that does not fit anywhere
- Category drives smart defaults but never forces a payee
- Filter the master event list by category for end-of-season analysis
Four allocation kinds
Allocate to all, some, a coach, or yourself.
An event has to land somewhere. TeamLedger gives you four allocation kinds: All Players, Selected Players, a single Coach, or the TM (you, when fronting an expense). Within All Players or Selected Players, choose Equal Split (one click) or Custom (per-player amounts). The form refuses to save until custom amounts sum exactly to the event total, no off-by-a-penny allocations slip through.
- All Players, entire active roster, equal or custom
- Selected Players, hand-picked subset for partial-roster expenses
- Coach, pay one coach for one event (game, practice, clinic)
- TM, record an out-of-pocket expense you fronted, for later reimbursement
- Equal split rounds cent-perfect; custom split must sum to the event total
- "Distributed: $X / $Y" validator turns green only when the math is airtight
Cent-perfect rounding
$1,000 ÷ 7 never leaks a penny.
Equal splits use the splitEqually utility, every player's share rounds down to the nearest cent, then the remainder is distributed one cent at a time in last-name-ascending order until the sum equals the event amount exactly. The same algorithm runs across events, fundraisers, and redistributions, so a parent will never find a missing-cent dispute on an October statement.
- Round-down-then-distribute-remainder algorithm
- Last-name-ascending order picks who gets the extra penny, deterministic
- Never leaks a cent, sum of shares always equals event total
- Same utility used in fundraising, departure-redistribution, and refund-to-credit
- Visible to the TM in the allocation table, no hidden math
Late-joiner recompute
A 17th player rebalances the books, cleanly.
When you add a late joiner to an equal-split event, every player's share gets recomputed against the new headcount. The original $200 charge stays on each player's ledger forever; on top, TeamLedger writes a compensating $25 credit per existing player and a fresh $175 charge for the new joiner. The append-only ledger keeps both states, so the audit trail is the chain of moves, never a single overwritten number. Custom-split events get an editable grid: you redistribute amounts row-by-row as long as they sum to the event total to the cent.
- Late-joiner prompt triggers a clean recompute on equal-split events
- Custom-split events keep your hand-tuned amounts; per-row editor for redistribution
- Original charges stay forever; corrections post as compensating ledger entries
- Database role itself blocks UPDATE / DELETE on ledger rows, audit trail is defensible
- Cent-perfect rounding on every recompute, no $0.01 mystery deltas
Devon Kim joined the team after Spring Tournament was created. New per-head share is $58.82 (= $1,000 / 17). Add Devon and recompute?
Each existing player gets a $3.68 credit posted as a new compensating ledger entry. Original charges stay in the audit log.
Edit & duplicate
Recurring without a scheduler.
Most "recurring" team expenses are actually annual, same tournament next spring, same uniform vendor next season, same field-rental fee every Tuesday. TeamLedger has Duplicate instead of a recurring scheduler: one click copies an event's category, amount, allocation, and notes onto a new event with today's date. You adjust whatever differs and save. Edits to existing events post compensating ledger entries, original history intact.
- One-click Duplicate copies an event template forward
- Adjust differences (date, opponent, fee bump) and save
- Edit per-player amount post-creation, compensating ledger entry, not a silent rewrite
- No event is ever deleted, cancellations are first-class, with refund-to-credit on payments
- Master Event List shows the duplicate's lineage for end-of-season audits
A common workflow
Spring tournament for $1,000.
Four steps, two minutes, ten ledgers updated, twenty parents notified, all from one form save.
Create the event
$1,000 spring tournament. Pick category, type amount, choose date.
Custom split among 10 players
Goalkeeper takes a discount; the other 9 share the remainder cent-perfectly.
Save, charges lock
Every ledger updates atomically. Charges are immutable from this point forward.
Confirmation emails queue
New-charge emails go to both parents on each affected player. Both channels respected.
What you get instead.
Every line below is a conscious choice that earns its keep on a Sunday night.
Duplicate handles the recurring case cleanly.
Click Duplicate on last week's practice fee and you're a few keystrokes from this week's. None of the pause/skip/edit-future complexity a 15-player team would never use.
A clean ledger is the receipt.
TeamLedger captures dollar amounts and methods; the audit trail is the receipt. Photos live in your phone or your drive; the books carry the proof that pays at tax time.
TM reimbursement is the canonical pattern.
When you front a cost, log a TM reimbursement. No vendor table to maintain, no extra entity to keep clean. One pattern covers every who-paid-for-what.
You keep the cash flow you already have.
Parents pay you directly via cash, check, Venmo, or Zelle; TeamLedger records what came in. No processing fees, no PCI scope, no settlement waits to plan around.
Event & expense questions.
What event categories are supported?
Eight: League fee, Tournament, Equipment, Travel, Ref fee, Coach fee, Uniforms, and Other (with a free-text label). The eight cover roughly 95% of youth-sports expense types we see in real season ledgers.
When the roster changes mid-event, what happens to the existing per-player shares?
Adding a late-joiner via the explicit prompt recomputes every player's share against the new headcount, on equal-split events. Editing the event total does the same. The original ledger entries stay forever (the database role itself blocks UPDATE / DELETE on the ledger table); the recompute is realised as new compensating entries on top. For custom-split events, the per-player editable grid lets you redistribute amounts as long as they sum to the event total to the cent.
Can I edit an event after saving it?
You can edit the per-player amounts post-creation when needed, adjustments post as compensating ledger entries so the original record stays in the audit trail forever. The event amount field itself is editable too; deletions are not. Immutable history, mutable corrections, that is the principle.
How does cent-perfect rounding work?
Each player's share rounds down to the nearest cent, then the remainder is distributed one cent at a time in last-name-ascending order until the total matches the event amount exactly. $1,000 ÷ 7 produces $142.86, $142.86, $142.86, $142.86, $142.86, $142.85, $142.85, sums to $1,000.00 exactly. The same algorithm is used everywhere money is split.
Is there a recurring event scheduler?
No. Use Duplicate, every event has a one-click duplicate that copies the category, amount, allocation, and notes onto a new event with today's date. Recurring schedulers add complexity (pause, skip, edit-future-only) we deliberately left out of the MVP.
More TeamLedger features.
Seven more modules in the same ledger, every workflow a TM actually runs.
Record your first event tonight.
Free for one team, forever. Add a tournament fee and watch every ledger update in real time.