onenakfa
Sign in

Documentation

How onenakfa works, screen by screen.

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.

Create your account
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.

Create your organization
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.

Switching between organizations
The organization picker, shown when your account belongs to more than one association.

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 numbers at a glance
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 directory
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.

Adding and editing a member
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.

Importing from a CSV
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
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 single payment
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.

Recording a cash session
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 payments ledger
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.

Creating an event
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
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.

Checking guests in
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.

The attendee list
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
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
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 and candidates
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.

How members vote
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.

The year in four numbers
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.

Charts
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.

What gets recorded
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.

My account
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.

Profile
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.

Payments
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.

Subscription
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.

Data export
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.

Deleting the organization
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.

Per-person, not per-organization
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.

Right-to-left for Arabic
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.

Starter, Growth and Pro
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.

Email hello@onenakfa.com