· 31. Juli 2026

Membership fees, SEPA and the club's books

This is the month dues became a system: fee groups with formulas, fee runs, SEPA direct debit, dunning and a chart of accounts — and around them meetings, votes, inventory, rooms and a log of everything that changes.

Added

  • Membership fees, from group to run. Fee groups sit on the organisation with members assigned to them, and an amount can be a formula with placeholders, taken from a catalog and previewed before it counts. The current service period is prorated, members move to another group automatically by age, past periods can be billed retroactively for one member or as a mass action with a dry run, and credit on the member's account offsets the fee. The fee run has a preview and a test run, works as a background job with progress and a cancel button, refuses to run twice on the same period and writes a log.
  • SEPA direct debit. Mandates carry sequence type, status and history, with the creditor id and a list of the ones that need attention. The run generates pain.008.001.02 files and comes with a preview, checks and an archive of what was submitted.
  • Invoices, receipts and documents as PDF. Documents come from templates that are edited with a live preview and downloaded as PDF; invoices go out by mail, donation confirmations are issued, and any document can be linked to a member. Number ranges cover invoices, fee invoices, documents and offers. An invoice is cancelled rather than deleted.
  • Offers, open items and dunning. Offers convert into invoices and have their own register next to the member's invoices. Open items show payment status and accept partial payments; dunning, returned debits and matching payments to items all work from the dashboard, and dunning can be stopped for many items at once.
  • Accounting up to DATEV. A chart of accounts with editable bookings and a lock date, cost centres, bank statement import, finance reports, invoices built from positions, and a DATEV export.
  • Meetings, minutes and votes. Meetings are scheduled with minutes and decisions, ballots have an invitation and an evaluation, and rights for all of it can come from an office. Chairing a meeting, keeping the minutes, establishing attendance and adding guests work from the app.
  • Offices and terms. A catalog of offices with terms of office, an overview of who holds what on a chosen date, and offices as a column and a filter in the lists.
  • Inventory, rooms and reservations. Articles and items with stock logic, groups and an import, plus lending and return with a history. Places and rooms with an occupancy plan, a map and reservations.
  • Calendars for the whole club. Several calendars side by side with different views, registration for an appointment, an iCal subscription and a public calendar page.
  • Lists that export, filter and show what you want. An export menu and a filter builder on every list, a column configurator with catalogs for members, receipts, badges, news, courses, competitions and groups, derived fields and filters in the group list, vCards, mass actions, an import assistant that guesses the column mapping from the header row, and a search across records.
  • A log of what happened. Additions, changes and deletions across ten types of records with free-text search, separate logs for logins, mail and notifications, and a trash that puts back what was deleted.
  • Retention, data access and an integrity check. Retention periods per area with a preview across all of them, a data report per member for a GDPR request, and a check that finds inconsistencies and offers the correction.
  • Password policy and two-factor authentication for the people who administer the club.
  • Notifications with a catalog behind them. Every event that can notify sits in one catalog with one central check: badge completion, training plan release, group change, dunning run, appointments, posted payments and course bookings. Members choose what reaches them, with quiet hours and a test message, and push tokens are kept and cleaned up per device. Admins and trainers pick recipients with a preview and a warning when the same message would go out twice, and every send is logged per recipient.
  • An inbox per club. Messages are written in the dashboard and read in the app, with read status, a count and a target per message.
  • Serial mail and anniversaries. SMTP sender profiles with server-side HTML cleaning and a rich text editor, serial letters, anniversary lists and audiences for news.
  • An address book for people who are not members, with address groups.
  • Club statistics. Members by gender and age group.
  • Reactions, polls and pinned chats. Messages carry reactions, a poll is composed inside the chat, and chats can be pinned or handled with a swipe.
  • Attendance as a Live Activity on iOS. Attendance runs on the lock screen and is started by push before the session; trainers and members get their own activity, the number of them is capped, and attendance also arrives as a push notification.
  • A library for training plans and profiles. Plans and profiles carry an owner and a visibility and can be shared into a library; cover images come from the CDN, with limits on what may be uploaded.
  • Competitions to save and to find nearby. Members save competitions and get their own list, nearby competitions are found from coordinates, the export carries a timeline, and a guest mode gets someone into a competition without an account.
  • Personal invites. An invite is opened by its link and then accepted or declined, and a declined invite ends on a page that says so.
  • A club's own app icon. A club that has its own logo gets it as the icon of the app.
  • An attendance list on the website, explained and offered as an Excel template.

Improved

  • The dashboard behaves like one product. Every page has the same header with one primary action on the right, sections are tabs, tables show a count and open the record on a row click, and deleting asks first instead of just doing it. Loading states keep the header and show the real shape of the page, form errors stand at the field instead of arriving as a passing message, side panels share one footer and three widths instead of seven, every list has the same empty state, and a colour means the same thing wherever it appears.
  • Filters where you go looking for them. One filter entry per list, a filter panel with chips on news, invoices and the logs, period presets in the logs, a search field that says "search" and keeps its syntax in the help, and lists that remember how you sorted them.
  • Words, links and keyboard. German terms instead of jargon in courses, finance and dunning, one word per thing — also in the catalogs the server sends — singular and plural where they belong, real links instead of typed-out paths, the reason a button is locked in its tooltip, a name on every icon button and every column, and keyboard shortcuts for creating and saving with an overview of them.
  • The app's profile screen became a "More" tab, with each setting on its own page, a back button that behaves the same everywhere, and a long press that opens a context menu. Member names in the attendance list have a font size you set on the device.
  • License pricing on the website is now stated as 12 cents per package of ten users.

Fixed

  • The attendance button stayed hidden because the wrong meeting date was read.
  • Signing in could crash the dashboard for accounts without a name or mail address.
  • An unresolved fee formula read as 0,00 € instead of saying it could not be resolved.
  • A number range that was reset handed out the wrong next number, and a reset stripped the prefix of a range that had not been saved yet.
  • A new SEPA mandate starts as FRST again.
  • Dunning printed the level's name where the member's name belongs.
  • Offers turned up in the receipt list and counted as membership fees, the member's register added up amounts that are not owed, and a cancelled row still showed an open amount.
  • PDF downloads lost their filename.
  • The calendar crashed on the new "meeting" entry type, and the subscription panel crashed on an incomplete answer.
  • Awarding a badge and ticking off its tasks now checks whether you actually train the group.
  • The group list searched members instead of groups, and the trash showed a tab that can never contain anything.
  • The watch app carried a different version than the app itself, which the App Store rejected.