Skip to main content
All articles
Guide13 min read

Association membership fees online in Morocco: annual dues, members without a card and reporting to the general assembly

Association membership fees online in Morocco: one link per member or a shared link, monthly subscriptions, cash at an agency, board roles and exports.

To collect association membership fees online in Morocco, two tools are enough: a payment link — one per member, or a shared link for the amount of the dues, created through the API — for annual dues, and a subscription for monthly dues, which emails the member a payment link on every due date. Members without a card pay in cash at an agency of the Chari network, on a link in their name. The treasurer sees who is up to date in the portal, the board splits the roles, and the CSV export serves as a supporting document for the financial report presented to the general assembly.

Association dues and online payment: what changes for the treasurer

Every treasurer knows dues season: cash and checks to count after each meeting, handwritten receipts, a list of members to chase one by one, and a financial report pieced together from a notebook. Online payment does not change the association's rules; it changes the treasurer's work: each payment arrives dated and referenced — and named, when it goes through a link in the member's name — and the list of paid-up members can be read instead of rebuilt.

ChariPay is a Moroccan payment platform, a PSP operated by Chari Money, a payment institution licensed by Bank Al-Maghrib. For an association, it provides payment links and subscriptions, cash payment at an agency, and a portal where each board member has a role.

This guide covers dues and memberships. Two neighboring topics have their own: a gala, a tournament or a paid outing belongs to online ticketing, and membership in a commercial club — a gym, a studio — belongs to gym membership payments. Donations and public fundraising are outside the scope of this guide: on those questions, only your advisor can give an opinion.

Two setups, depending on what matters to the board.

One single-use link per memberOne shared reusable link
Number of linksOne per member, in their name, from the portal or through the APIA single one, shared with everyone, created through the API (singleUse: false)
ExpiryDues deadline for a link paid by card; none for an "Agency payment" linkEnd of the campaign
Payment methodsCard with 3-D Secure, or cash at an agencyCard only
What you seeEach member's status: active, paid, canceled, expiredThe number and total of payments
List of paid-up membersDirectly in the portalTo be rebuilt by your own means

As soon as the list of paid-up members matters — for the general assembly or access to activities, depending on your bylaws — choose one link per member. The shared link remains useful for a simple collection with no named tracking — a supporter contribution displayed as a QR code during the association's office hours, for example — but it does not come from the portal: from the portal, every payment link you create is single-use. The reusable link — one amount paid by several customers — is created through the API, with singleUse: false; once created, it shows up in the portal like the others. Without a developer, to sell several times at the same price, publish a product on your hosted storefront and share its link.

The per-member link, in practice:

  1. 1Save each member as a customer, with their name, email and phone number.
  2. 2Create their link for the amount of the dues, with a description that stands on its own: "Dues 2026-2027 — member no. 118".
  3. 3Set the expiry to the dues deadline, using the "on a specific date" option, for a member paying by card. For a member who will pay in cash, turn on "Agency payment" instead: in the portal, this option disables the expiry, and the link stays payable with no time limit.
  4. 4Send it by email or WhatsApp: the "Paid" status marks the member as up to date without manual checking.

If the list is long, create the links through the API from your membership file. One call is enough: POST /v1/payment-links returns the payUrl to share; an externalId combining member number and year prevents creating the same link twice.

Before you propose the change to the board, see what a member will receive: Start in test mode. Three fields — name, work email, company — an activation link received by email to choose your password, then the portal, where you create your own test key. Create a dues link and pay it with the test card: no real money moves. It is free, with no time limit and no approval to wait for; verification (KYB) only gates the move to production.

Some associations prefer a small amount every month — a community music school, an amateur club, an alumni or staff association. The tool is then the subscription: a customer, an amount, a monthly frequency, a start date and, if you wish, an end date, set at creation through the API. Three rules to explain to members:

  • The link. On every due date, the member receives a single-use payment link by email, with the subscription's description, and pays on the hosted page, by card with 3-D Secure; the member's email is therefore essential.
  • Reminders. Until the dues are paid, a reminder goes out by email every day, with the same link; no new period is opened in the meantime.
  • The deadline. The link stays payable for 14 days after the due date; if it expires unpaid, the subscription is canceled automatically.

The same mechanism exists with a yearly frequency, if you prefer to renew dues every year without creating a new link yourself: the year's link goes out on its own. Pause, resume and cancel are done from the portal or through the API — handy for a member who is away for a season: during the pause, no link is sent, and the paused months are not billed on resuming. The full offer is described on the subscriptions and recurring payments page.

Members without a card: dues paid in cash

A member without a card should not become a member in arrears. For them, the flow goes through a single-use link in their name, created with "Agency payment", without an expiry. On the page of a single-use payment link, the member chooses cash, receives a reference and pays it at an agency of the Chari network. Cash payment at an agency always relies on a single-use link — one reference per deposit. As soon as the network confirms the deposit, the link turns "Paid" and you are notified in the portal; on the server side, read the link's state with GET /v1/payment-links/{reference}.

Two consequences:

  • Never through the shared link or its poster. The shared link, its poster and its QR code collect by card only; a member who wants to pay in cash gets their own link.
  • Never a cash subscription. For monthly dues paid in cash, send a single-use link each month.

ChariPay is the only payment gateway in Morocco that also collects cash at agencies. For the treasurer, it is the end of the association's cash box: no more cash kept at home between meetings, no more deposits to make, and each cash payment arrives with the member's name.

The board in the portal: who sees, who collects, who pays

Portal roles separate viewing from acting: owner, manager, cashier, accountant. The accountant reads everything without triggering anything, the cashier collects without seeing the balance or transfers, the owner or an authorized manager triggers outgoing operations.

These are not association-specific roles, but they map well onto a board. One possible organization, to adapt to your bylaws:

Board memberSuggested roleWhat they can do
PresidentOwnerSee everything, manage the board's team, trigger transfers and payouts to the bank
TreasurerManagerFollow dues, refund, make transfers, pay the association's bills, export
AuditorAccountantRead everything, exports included, without triggering anything
Office-hours volunteerCashierCollect dues through links, without seeing the balance or transfers; sees only their own links

For transfers, code validation is required. Every transfer sent from the portal is validated by a six-digit one-time code, emailed to each validation address designated in Settings → Security — up to five addresses, each belonging to a team member authorized to make transfers; you set the number of approvers required. Until an address is configured, no transfer can be sent. For a board, designate for example the president's and the treasurer's addresses. The full matrix is in portal roles and access.

Reporting to the general assembly

The financial report presented to the assembly must show what came in, from where, and what is left. For dues, the supporting document is the export. Every account movement carries the reference of the sale, refund or payout that explains it; the portal separates amount paid, fees and net, and the CSV export keeps those references — from the portal or with GET /v1/transactions/export.csv (up to 10,000 rows; beyond that, split by period with from/to). Timestamps are in UTC; Morocco is UTC+1: your reconciliation tool must convert.

A simple method for the treasurer:

  1. 1Export the whole fiscal year, split by period if needed.
  2. 2Match each payment to the membership list, by its reference.
  3. 3Total separately the amount paid, the fees and the net, as the portal separates them.
  4. 4Match each payout to the bank with the line on your bank statement, by its reference.
  5. 5Attach the export to the report, along with the list of paid-up members.

The accounting rules that apply to your association are outside the scope of this guide: only your accountant or your advisor can give an opinion. The general method is in reconciling your collections.

Paying out to the association's bank account

ChariPay is not a bank: your payment account is held by Chari Money. It complements your bank; it does not replace it. The association keeps its bank account; the payment account receives dues and serves payment operations.

The payout to your bank is a separate operation: automatic every night once a settlement account is configured in the portal, or by transfer on demand, for the amount and at the time you choose. Each payout carries a reference that appears on your bank statement.

As soon as a payment succeeds — a card authenticated with 3-D Secure or a reference paid in cash at an agency — the amount is available in your ChariPay payment account and usable right away: transfers, bills, top-ups. For the difference between this account and a bank, read what an online bank does and does not do for merchants.

Opening the association's account: verification and production

Test mode opens with no approval to wait for: the treasurer creates links and a subscription, pays with the test card and reads the export, without committing the association. Going live goes through the verification of your organization (KYB) — identity documents and trade register. We do not say here whether an association is eligible: before you build your collection, ask the ChariPay team — contact the team.

Once KYB is validated, your application is reviewed and you receive a priced proposal; the MAD 6,000 incl. VAT activation fee is paid once, then your account is activated. The commission is a percentage per successful payment, set, like the security deposit, once your application has been reviewed; the pricing page sums up what is included.

Frequently asked questions

Can an association accept membership fees by card?

The tools lend themselves to it: a payment link per member collects dues by card, with 3-D Secure, and a subscription emails the member a payment link every month. Test mode opens with no approval to wait for. Going live goes through the verification of your organization (KYB) — identity documents and trade register. We do not say here whether an association is eligible: before you build your collection, ask the ChariPay team.

How do I collect members' dues online?

Save each member as a customer, then send them a single-use payment link for the amount of the dues: its "Paid" status marks them as up to date. Set an expiry on the deadline if they pay by card; turn on "Agency payment", with no expiry, if they pay in cash. For a collection with no named tracking, a shared reusable link, created through the API, collects by card only. For monthly dues, create a subscription: the member receives a link by email on every due date.

Can a member pay their dues in cash?

Yes, with a single-use link in their name: on the link's page, they choose cash, receive a reference and pay it at an agency of the Chari network. As soon as the network confirms the deposit, the link turns "Paid" and you are notified in the portal. The shared link and its poster only collect cards, and a subscription's links are paid by card.

Can dues be collected every month?

Yes, with a monthly subscription: on every due date, the member receives a single-use payment link by email and pays on the hosted page, by card with 3-D Secure. While the installment is unpaid, they receive a reminder every day, with the same link, which stays payable for 14 days after the due date; beyond that, the subscription is canceled automatically. A pause applies to an active subscription; pause, resume and cancellation are done from the portal or through the API.

Who on the board can make a transfer from the account?

The account owner or an authorized manager: they are the ones who trigger outgoing operations. The accountant — the auditor, for example — reads everything without triggering anything, and the cashier collects without seeing the balance or transfers. Every transfer sent from the portal is validated by a six-digit one-time code, emailed to the validation addresses designated in Settings → Security; you set the number of approvers required.

How do I present the dues collected to the general assembly?

With the CSV export for the fiscal year: each payment appears with its reference, and each payout to the bank with the reference shown on your statement; the portal separates amount paid, fees and net. Convert the UTC timestamps to Moroccan time, match the payments to the membership list, and attach the export to the financial report.

Does the payment account replace the association's bank account?

No. ChariPay is not a bank: your payment account is held by Chari Money. It complements your bank; it does not replace it. The payment account receives dues and serves payment operations; the payout to the association's bank account happens every night, once a settlement account is configured, or on demand.

Next step

Prepare the dues campaign in test mode and present it to the board: Start in test mode, create per-member links for a few volunteers, pay with the test card, then show the export. The payment links page sums up the offer, and online ticketing takes over for your events.

Written by ChariPay team.

Read next

Ready to try it yourself?

Create your account and take test-mode payments today: it is free, with no approval to wait for. A question? Our team supports merchants and developers alike.

  • Free, no commitment
  • Test mode from sign-up
  • No approval to wait for