Everything the product does, in the order you will meet it — from creating your organization to closing an election. Every screenshot on this page is taken from the running app, not a mockup.
Getting started
Three steps stand between a new account and a working directory: create a login, create the organization, and get your committee in. Everything else in this guide happens inside an organization.
Create your account
Sign up with an email address and password, or use Continue with Google. Confirm the email we send you, and you are in. The same account can belong to several organizations, so a treasurer who serves two associations never needs a second login.
Why it works this way
The account is a person, not a role. Roles are granted per organization, which is what lets one person be an admin in one association and an ordinary member in another without juggling logins.
The sign-up screen. Google sign-in and email/password both land in the same place.
Create your organization
Give your association a name and a URL handle, then pick a default language, currency and time zone. These become the defaults for new dues plans and events. You can change all of them later in Settings → Profile.
Why it works this way
Currency and time zone are set once, up front, because they are the two things that are painful to correct retroactively — historical payments and events keep the values they were recorded with.
Creating an organization. The URL handle becomes part of your public event links.
Switching between organizations
If your account belongs to more than one association, the organization picker lists them all. Click the organization name in the top-left of the app at any time to come back here.
Why it works this way
Federations often have a national body and local chapters as separate organizations with separate money. Keeping them separate — rather than as one big org — means each keeps its own Stripe account, its own receipts sequence, and its own member list.
The organization picker, shown when your account belongs to more than one association.
Finding your way around
Every organization has the same shell: navigation down the left on desktop, across the top on a phone. What appears in it depends on your role.
The sidebar
Admins and treasurers see Dashboard, Members, Dues, Events, Elections, Reports, Activity, Settings and My account. The current page is highlighted. On phones the same list becomes a scrollable row of tabs under the organization name.
Why it works this way
The check-in scanner and member lookups genuinely get used standing at a hall door, so the whole shell is built to work on a phone rather than assuming a desk.
The signed-in shell: navigation on the left, your name and role pinned to the bottom.
Roles: admin, treasurer, member
Admins can do everything, including Settings and billing. Treasurers can do everything with members, dues, events and elections, but not Settings. Members see only their own account, upcoming events, and any open ballot.
Why it works this way
Treasurers handle money but should not be able to delete the organization or change the subscription, so those live behind admin only. Members land straight on their own page because that is the only surface most of them ever need.
A member's sidebar: my account, events and elections — nothing else.
Changing language
The language switcher sits at the bottom of the sidebar and in the header on public pages. Pick English, ትግርኛ or العربية and the entire interface changes immediately — including switching to a right-to-left layout for Arabic.
Why it works this way
Committee members and the members they serve often do not share a first language. Making the switch instant and per-person, rather than an organization-wide setting, means nobody has to read the app in a language they struggle with.
The language switcher at the foot of the sidebar.
Dashboard
Admin & treasurer
The first screen after signing in: what you collected this year, how many members you have, and what is coming up.
The numbers at a glance
Four cards across the top: collected this year, active members, lapsed members, and how many of your plan's member seats are in use. Below them sit your most recent payments and your next events.
Why it works this way
These are the four questions a committee actually asks at the start of a meeting. Having them on the landing screen means nobody has to run a report to answer them.
The dashboard. Totals are shown in your organization's default currency.
Member seats and plan limits
The seats card shows how many members you have against your plan's limit. If you go over — after a CSV import, say — a banner appears explaining that existing members are safe but no new ones can be added until you are back under the limit or on a bigger plan.
Why it works this way
Going over the limit never locks anyone out or deletes anything. Your members keep working; only the act of adding another one is blocked. Punishing an association for a bulk import would be the wrong trade.
Recent payments and upcoming events
The two lists underneath are shortcuts, not summaries — each row links through to the full record, and 'View all' takes you to Dues or Events.
Why it works this way
Most dashboard visits end in one of two places: checking whether a specific payment landed, or opening the event happening this weekend. Both are one click from here.
Members
Admin & treasurer
The directory is the heart of onenakfa. Everything else — dues, tickets, ballots — hangs off a membership row.
The directory
Every member with their number, name, contact details, chapter, role and status. The list pages at 25 rows at a time and shows how many of the total you are looking at.
Why it works this way
Member numbers are issued per organization and never reused. They are what receipts, exports and anonymised records point at once a name is gone.
The member directory with search, chapter and status filters.
Search and filters
Search by name, email or member number. Narrow by chapter and by status — active, lapsed, inactive or archived. 'Clear filters' resets everything in one click.
Why it works this way
Filters combine rather than replace each other, so 'lapsed members in the Zürich chapter' is two clicks — which is exactly the list a treasurer needs before a reminder round.
Adding and editing a member
'Add member' opens a form for name, contact details, chapter, role, status and join date. The same form edits an existing member. Member numbers are assigned automatically.
Why it works this way
Role is changed here, in the form, rather than inline in the list. It used to be a dropdown in the table that saved on change, and a stray scroll could promote someone to admin — a deliberate two-step is worth it for a permission change.
The add/edit member form.
Granting admin or treasurer
Change someone's role in the member form. onenakfa refuses to demote the last remaining admin, so an organization can never be left with nobody who can reach Settings.
Why it works this way
There is no such guard on treasurers, and that is deliberate: every treasurer permission is also held by admins, so losing your last treasurer locks nobody out. Losing your last admin would.
Chapters
Chapters are the local groups inside your association — usually by city. Assign members to one, then filter the directory by it. Members without a chapter show as 'No chapter'.
Why it works this way
Diaspora associations are usually one legal body with several city groups that collect their own dues and run their own events. Chapters model that without splitting the organization in two.
Inviting members to sign in
The Access column shows whether a member has a login. Send an invitation — individually or in bulk — and they get a link that binds their new account to their existing directory row, including their dues history.
Why it works this way
The invitation token, not the email address, is what proves who they are. That means a member can sign in with any address, including a Google account that differs from the one you have on file, and still land on the right row.
Households
A household is the list of names a member's dues cover — a spouse, children, anyone else at that address. Add them to the member's record with an optional relation. They have no login, no dues of their own, no vote, and never appear in the directory.
Why it works this way
One member pays, one member votes. Anyone who wants their own vote or login joins as an ordinary member paying their own way — which keeps every downstream feature from having to ask whether a dependent may vote, hold a seat, or count against your plan limit.
Importing from a CSV
'Import CSV' takes an existing list — first name, last name, email, phone, member number. Rows are validated before anything is written, and the import is refused outright if it would push you past your plan's member limit.
Why it works this way
Refusing the whole import rather than partially applying it means you never have to work out which half of a spreadsheet made it in.
CSV import maps your existing spreadsheet onto member records.
Exporting the directory
'Export CSV' downloads the members currently shown, filters included. Filter to a chapter first and you get just that chapter.
Why it works this way
The export follows the filters on purpose, so the file you hand to a chapter lead contains their members and nobody else's.
Archiving and restoring
Archiving takes someone out of the directory without deleting their history. Their payments, receipts and tickets stay exactly where they are, and their login stops working. Restore puts them back.
Why it works this way
Archiving genuinely revokes access — an archived member can see no more than a member of the public. And when they are lapsed, you are asked once what happens to their unpaid dues, then reminded of that answer if they are ever restored.
Merging duplicates
Two rows for the same person? Merge them. Payments, tickets, votes, candidacies and household members move to the row you keep; blank fields are filled from the duplicate, but the surviving row's own values always win.
Why it works this way
The merge refuses outright if both rows voted in the same election or stood for the same position. Folding two ballots into one person would quietly change a recorded result, and no convenience is worth that.
Erasing personal data
For an erasure request, anonymise an archived member: name, email, phone, photo and custom fields are wiped, and the login is unlinked. The member number, amounts, receipts and receipt numbers stay. Old payments then read as 'Former member M-2001'.
Why it works this way
Accounting needs the amounts and the gap-free receipt numbering to survive; the person does not need to. Note that this is irreversible, and that the underlying login account is left alone because it may hold memberships in other associations.
Dues and payments
Admin & treasurer
Cash and card in one ledger. Money paid by card goes straight to your own Stripe account — onenakfa never holds your members' money.
Dues plans
A plan is a name, an amount, a currency and an interval — 'Annual membership, CHF 120, yearly'. Create as many as you need and deactivate the ones you have stopped using instead of deleting them.
Why it works this way
Deactivating rather than deleting keeps historical payments pointing at a plan that still explains what the member paid for.
Dues plans define what members owe and how often.
Recording a single payment
'Record payment' logs money you received directly — cash at a meeting, a bank transfer. Pick the member, the plan, the amount and the date. A receipt is issued immediately.
Why it works this way
Cash is a first-class citizen here, not an afterthought. Most associations still collect the majority of their dues in cash, and a system that only understands card payments is useless to them.
Recording a payment received outside the app.
Recording a cash session
After an event where you collected from many people at once, use 'Record cash session'. Add a row per member — start typing a name and the picker finds them — with an amount and an optional note. A running total sits at the bottom.
Why it works this way
This is the difference between fifteen minutes and an hour after a meeting. If some rows fail — a member who was archived meanwhile — the rest are still saved and you are told exactly which ones need another look.
Bulk cash entry with a running total, for post-event collection.
Card payments
Once Stripe is connected, members can pay their dues by card from their own account page. The money lands in your organization's Stripe account and the payment appears in the same ledger as cash, with a receipt.
Why it works this way
onenakfa takes no cut of dues and never touches the funds — they go directly to your association's own Stripe account.
The payments ledger
Every payment, cash or card, in one list with the member, amount, method, status and date. Search by member, filter by status, and export the filtered set to CSV.
Why it works this way
One ledger rather than one per method is what makes 'how much did we collect this year' a single number instead of an addition problem.
The unified ledger — cash and card payments side by side.
Clearing a stuck payment
A card payment that was started and abandoned sits as 'pending' forever. Admins and treasurers can mark it as failed to clear it out.
Why it works this way
Failed is the only resolution offered. Marking a stuck row as succeeded would either skip or duplicate a receipt number, and those are a gap-free sequence. If the money really did arrive, fail the stuck row and record the real payment normally.
Receipts
Every successful payment gets a numbered receipt as a PDF, downloadable by the member from their account page and by you from the ledger. Numbers run in a single sequence per organization with no gaps.
Why it works this way
Receipt numbers run in a single sequence per organization with no gaps, which keeps the books straightforward to reconcile and audit. The sequence is enforced in the database rather than in the app, so two treasurers recording payments at the same moment cannot produce a collision.
Events and tickets
Admin & treasurer
Create an event, sell tickets, share the link, scan people in at the door. Guests can buy without an account.
Creating an event
Title, description, location, start and end, time zone, capacity, and a URL handle. The handle becomes the public address of the event page.
Why it works this way
Events keep their own time zone rather than inheriting the organization's, because a federation's annual meeting is not always in the same country as its office.
The event form. The URL handle sets the public address.
Ticket types
Add as many as you need — 'Adult, CHF 25', 'Child, free', 'Supporter, CHF 100'. Each has an optional quantity and an optional per-person limit. Leave quantity blank for unlimited.
Why it works this way
The per-person limit is what stops one person buying out a hall, and the quantity is what stops you overselling it.
Ticket types with prices, quantities and per-person limits.
Publishing and closing
An event stays a draft, invisible to everyone, until you publish it. Publishing makes the public page live. Closing it stops sales while leaving the page and the attendee list intact.
Why it works this way
The draft state means you can build the whole event — ticket types and all — before anyone can see it, and closing rather than deleting keeps the record for your reports.
The public event page
Everything a guest needs: what the event is, when, where, and which tickets are available. They enter a name and email and pay by card. No account, no sign-up.
Why it works this way
Requiring an account to buy a ticket is where community events lose their casual attendees. Guests get a ticket by email and never see the inside of the app.
Sharing an event
Copy the link, or use the WhatsApp button to open a share straight into the group your members already use. Both sit on the event page and on the admin view.
Why it works this way
The announcement was always going to end up in a WhatsApp group. Meeting that reality with one button beats building a broadcast system nobody would have opened.
Checking guests in
Open the check-in page on a phone at the door and scan the QR code on each ticket. A valid ticket is marked checked in; a scanned-twice ticket says so.
Why it works this way
It runs in the phone browser with no app to install, because the person on the door is a volunteer who found out they were doing it ten minutes ago.
The QR check-in scanner, built for a phone at the door.
The attendee list
Everyone with a ticket, whether they are a member or a guest, with their ticket type and whether they have arrived. Search and filter by status or ticket type, then export the filtered list.
Why it works this way
Filter to 'not checked in' partway through the evening and you have your no-show list without counting chairs.
Attendees with status and ticket-type filters, and CSV export.
Past events
Past events move to their own tab with filters by year and a search box, plus a summary across the whole filtered set: revenue, attendance and no-shows.
Why it works this way
That roll-up is the paragraph an annual report needs, computed rather than compiled by hand the night before.
Past events with a roll-up of revenue, attendance and no-shows.
Committee elections
Elect your board inside onenakfa. One vote per member, private, tallied automatically.
Creating an election
Give it a title, optional context — what is being decided, the board term — and the window in which voting opens and closes. It stays a draft until you open it.
Why it works this way
The window is enforced in the interface and again when a vote is submitted, so an election that is open but out of hours shows as closed rather than accepting a ballot it will reject.
Creating an election and setting its voting window.
Positions and candidates
Add each position up for election — President, Treasurer — and how many seats it has. Usually one; use three for 'elect three committee members'. Then add candidates to each position from your member list.
Why it works this way
Seats per position is what makes a single ballot able to run a whole committee election at once, rather than one vote per role.
Positions with seat counts, and candidates drawn from your members.
Opening the ballot
Opening the election makes the ballot visible to every member. onenakfa refuses to open one with no candidates.
Why it works this way
An empty ballot is not a meaningful election, and finding that out after members start voting is worse than being stopped now.
How members vote
Members see the open ballot on their account page and on the Elections tab. Each position is submitted on its own: pick a candidate, submit that position, and afterwards they can see what they chose.
Why it works this way
Showing members their own ballot back is deliberate; showing anyone else's is not possible. Tallies are computed without attribution, so nobody — including admins — can see how a given member voted.
The member ballot, one selection per position.
Results
Counts update live as votes land, and the result is final when the window closes.
Why it works this way
A visible running count keeps a committee from having to trust a black box on the night, while attribution stays sealed.
Reports
Admin & treasurer
The numbers a board meeting needs, and a single ZIP with everything behind them.
The year in four numbers
Collected this year, new members this year, events this year, and active members — all for the year you are looking at.
Why it works this way
These four are the ones that get read out loud at an annual meeting, so they are the ones on top.
Reports open on the year's headline numbers.
Charts
Three charts over the last twelve months: dues collected by month, total members at the end of each month, and tickets sold against tickets scanned for recent events.
Why it works this way
Trend beats total for a committee decision — 'collection is flat since March' is a more useful sentence than any single number.
Dues by month, member growth, and attendance against tickets sold.
The AGM pack
'Download AGM pack' produces one ZIP with members, payments, events and per-event attendee lists as CSVs — the same file admins can pull from Settings → Data at any time.
Why it works this way
One download, handed to whoever is preparing the annual report, instead of five separate exports and a follow-up email.
Activity log
Admin & treasurer
Who did what, in plain sentences. Available to admins and treasurers.
What gets recorded
Organization created, members imported, roles changed, members archived, restored, deleted, merged or anonymised, invitations sent, revoked and accepted, payments recorded, and payments marked failed. Each is a sentence with names filled in, not a raw code.
Why it works this way
A committee that changes hands every two years needs to be able to answer 'who removed this member and when' without reading a database. Sentences do that; event codes do not.
The activity log, with member references resolved to names.
Filtering and linking
Filter by action type and page through the history. The filter and the page are both part of the address, so a link you paste into a committee chat opens on exactly what you were looking at.
Why it works this way
Putting the state in the URL makes the log quotable, which is most of what an audit trail is for.
The member's own page
What an ordinary member sees. Members land here when they sign in; admins and treasurers can open it from the bottom of the sidebar.
My account
Their profile, their dues status, their tickets, upcoming events, and their payment history — everything about their membership on one page.
Why it works this way
Most members will only ever open this page. Making it the whole of their experience keeps the committee from having to answer 'have I paid?' by hand.
The member portal — dues, tickets and history in one place.
Paying dues
If dues are outstanding and Stripe is connected, a pay button appears. If their membership is not active, they are told to ask their treasurer instead of hitting a dead end.
Why it works this way
A member who cannot pay needs to know who to ask. An error message that names the next step is worth more than one that just says no.
Tickets and events
Upcoming events they hold a ticket for, each with a QR code to show at the door, plus the events they could still buy into.
Why it works this way
The QR code lives on the page they already have open, rather than in an email they will be searching for while standing at the door.
Payment history and receipts
Every payment they have made, with a downloadable PDF receipt for each.
Why it works this way
Members ask for receipts at tax time, usually all at once. Self-service turns a week of forwarding PDFs into nothing at all.
Settings
Admin only
Five tabs, admin only: your organization's profile, payment setup, onenakfa subscription, a full data export, and deletion.
Profile
Name, URL handle, and defaults for currency, time zone and language. Members always see the current name. Changing currency or time zone affects only new plans and events — existing records keep the values they were created with.
Why it works this way
Renaming the URL handle never breaks a link you have already shared: the old address is remembered and redirects to the new one permanently.
Organization profile and defaults.
Payments
Connect your organization's Stripe account here. Once connected, members can pay dues and buy tickets by card, and the money goes to that account.
Why it works this way
It is your Stripe account, not a sub-account of ours. onenakfa takes no percentage of dues or ticket sales and never holds the funds — the platform is paid for by subscription alone.
Connecting your own Stripe account for card payments.
Subscription
Switch between Starter, Growth and Pro from here. Each plan shows whether it fits your current member count. Payment method and invoices open in the Stripe portal.
Why it works this way
Downgrades are checked against your directory before anything happens: a plan that cannot hold your members is refused with the number you would need to remove, rather than accepted and enforced later by deleting people.
Plan switching, with a fit indicator against your member count.
Data export
Download everything onenakfa holds for your organization as one ZIP: members, payments, events, per-event attendees, and a profile snapshot.
Why it works this way
It is available at any time, with no request and no waiting. Data you cannot get back out is data you do not really own.
A full export of everything, on demand.
Deleting the organization
Permanent removal, behind a reveal and a typed confirmation of the organization's name. Any active subscription is cancelled first, then every member, payment, event, ticket and receipt is deleted.
Why it works this way
The tab reminds you to export first and links you to the Data tab, because this is the one action in onenakfa with nothing behind it.
Deletion asks you to type the organization's name.
Three languages, properly
English, ትግርኛ and العربية are all first-class. Not a translation layer bolted on later.
Per-person, not per-organization
Each person picks their own language, and it follows their account. A treasurer working in English and a member reading in Arabic use the same organization at the same time.
Why it works this way
Language is a property of the reader, not of the association. Forcing one setting on everybody would leave part of every committee reading a second language.
The switcher, with each language in its own script.
Right-to-left for Arabic
Choosing العربية mirrors the entire layout — navigation, tables, forms and buttons all flip. It is a genuine right-to-left interface, not left-to-right with Arabic text poured into it.
Why it works this way
A half-mirrored interface is harder to read than an untranslated one. The whole app is built with direction-aware spacing so nothing has to be corrected page by page.
The same screen in Arabic, fully mirrored.
Plans and limits
onenakfa charges a flat monthly subscription by member count. Dues and ticket sales are yours.
Starter, Growth and Pro
Starter covers 150 members, Growth 500, and Pro is unlimited. Every feature in this guide is in every plan — the only difference is how many members you can hold.
Why it works this way
Charging for members rather than features means a small association gets elections, reports and card payments on the cheapest plan, instead of a stripped-down version of the product.
The three plans. Features are identical; only the member limit changes.
What happens at the limit
At your plan's limit you cannot add members until you upgrade or remove some. Existing members, payments and events keep working normally.
Why it works this way
The limit is checked in the app, in the database, and again when you try to downgrade — the last one is what stops a plan change from quietly stranding members you already have.
Still stuck?
If something here does not match what you see, or your association needs a workflow onenakfa does not cover yet, write to us. A real person answers.