Gym membership payments in Morocco: monthly plans, drop-in sessions and unpaid members
Gym membership payments in Morocco: a payment link emailed on every due date, front-desk sign-up, pauses, unpaid dues and drop-in sessions.
For gym membership payments in Morocco, the monthly or yearly plan runs on a subscription: on every due date, the member receives a single-use payment link by email and pays their fee on a hosted payment page, by card with 3-D Secure; until it is paid, a reminder goes out every day with the same link. Drop-in sessions and paid trial classes are collected through a payment link and its QR code, and members without a card pay in cash at an agency, with one link per month. This guide puts all of it in order for a gym, a club, a studio or a coach: plans, sign-up, pauses, unpaid dues and the front-desk team.
Gym membership payments: which payment for which plan
ChariPay is a Moroccan payment platform, a PSP operated by Chari Money, a payment institution licensed by Bank Al-Maghrib. For a gym, it replaces the start-of-month chase for payments with three tools, each suited to a plan:
| Plan | Tool | Payment method |
|---|---|---|
| Monthly membership | Monthly subscription: a payment link emailed on every due date | Card, with 3-D Secure |
| Yearly membership | Yearly subscription: the same link, once a year | Card, with 3-D Secure |
| Drop-in session, paid trial class, without a developer | One single-use link per sale, shown as a QR code from the list of links | On the link's page: card, or cash at an agency |
| Drop-in session, permanent poster at the counter | Reusable payment link, created through the API, and its poster | Card only |
| Session pack, one-off workshop | Single-use payment link, for the pack amount | Card or cash at an agency |
| Member without a card | One single-use link every month, with "Agency payment" on and no expiry | Cash at an agency |
A subscription carries a fixed amount and frequency. To move a member from monthly to yearly, cancel their subscription — the cancellation takes effect with no extra due date — and create a new one for the same customer. The offer is detailed on the subscriptions and recurring payments page. If you run a non-profit sports association rather than a commercial gym, membership dues have their own guide: association membership fees online.
Signing up a member at the front desk
You or a manager sign members up in the portal — the cashier profile has no access to subscriptions — in four moves:
- 1Create the member as a client: name, email address and, if you like, phone. The email is essential: that is where each due date's payment link and the reminders are sent.
- 2Create their subscription: the amount of their plan, a description — shown on every link, for example "Monthly membership — Premium plan" —, the frequency — monthly or yearly — and the first due date. For a seasonal membership, the end date is set at creation, through the API.
- 3The member receives their first link by email, in a message whose subject announces the new due date and repeats that description; if the first due date is today, it goes out right away. They pay on the hosted payment page, by card with 3-D Secure — from their phone, at the counter if they like.
- 4The subscription becomes active once that first payment is collected: check on the subscription's record that the installment is paid, then open access; on every following due date, a new link goes out by email on its own.
Two points prevent false starts. First, there is no built-in free trial: a delayed start does the job. If you offer a discovery week, set the first due date at the end of that week; no link is sent before then. Second, the counter poster is not a way to subscribe: it matches a reusable link, created through the API and designed for one-off card payments such as a drop-in session. A subscription is always created for a specific member.
Before you train your team, rehearse the sign-up with no real money. Test mode opens as soon as your account is activated, with no approval to wait for: 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 after re-authenticating; the full key is shown only once. Create a client with your own email address and a subscription whose first due date is today: the first link lands in your inbox right away. Pay it with the test card 4918 9141 0719 5005, CVV 123, any future expiry date, 3-D Secure code 555: the subscription turns active; only this card is accepted, and no real money moves. With a daily frequency, the second due date arrives the next day. Your business verification (KYB) runs in parallel and only gates the move to production.
The link for every due date and the reminders
A member who does not know what to pay, or when, is a member who calls the front desk. Here, every due date arrives on its own: on the scheduled date, ChariPay generates a single-use payment link and emails it to the member, in a message whose subject announces the new due date and repeats the subscription's description. Until the installment is paid, a reminder goes out by email every day, with the same link. Due dates are computed on the Africa/Casablanca time zone.
Two settings to decide for your gym:
- The due date. You can send every member's link at the start of the month, or align each subscription with the member's sign-up date: the start date sets the rhythm.
- The description. It appears on every link and in every email's subject: name the gym and the plan — "Atlas Gym — monthly membership" — so the member recognizes the request at a glance.
The full mechanics — statuses, due dates, webhooks — are explained on the subscriptions and recurring payments page and, for developers, in the subscription API step by step.
Pausing for an injury or a vacation
A sprained ankle, a trip, a Ramadan month when some members cut back on sessions: rather than lose the member, offer a pause. Pause, resume and cancel work from the portal or through the API; during the pause, no new link is sent and the subscription is not canceled, and on resuming, the paused months are not billed after the fact. A pause applies to an active subscription, and resuming restarts it.
The house rule is yours, and it is worth writing into your gym rules:
- who is eligible — every member, or only yearly plans;
- on what proof — a medical certificate for an injury, nothing for a vacation;
- for how long, and who decides when it resumes.
Note the expected return date in your own member file and resume the subscription on that day.
Unpaid dues and gym access: your rule, triggered by webhook
When an installment goes unpaid, what follows is automatic: the member receives an email reminder every day, with the same link; while the installment remains unpaid, no new period is opened, and the member does not build up debt. The link stays payable for 14 days after the due date; if it expires unpaid, the subscription is canceled automatically.
ChariPay collects the money; access to the gym remains your business. If your front-desk software or access control is connected, it applies your rule based on webhook events:
| Event | Example rule |
|---|---|
subscription.payment_failed | A card payment failed on the installment's link, which stays payable: the front desk sees a warning, access stays open |
subscription.payment_succeeded | The installment is paid; access is confirmed or restored |
subscription.canceled | The link expired unpaid and the subscription is canceled; access is closed |
Without a connected tool, check in the portal, on the Subscriptions page, who is up to date and who has an unpaid installment — with an owner, manager or accountant login; the cashier profile has no access to subscriptions. If you cancel a subscription yourself, at the member's request, close access at the same time. And write the rule into your gym rules: how long access stays open during the reminders, what happens at cancellation, how to come back — a new subscription for the same customer. The full step-by-step, your decisions and message templates are in unpaid subscription installments and reminders.
Drop-in sessions: the reusable link and the QR code
For a drop-in session, a paid trial class or a guest pass, there is no need for a subscription: a payment link is enough — an amount and a description, "Drop-in session". 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.
At the counter, there are two ways to do it:
- Without a developer, create a single-use link for the amount of the sale and show its QR code from the list of links. The customer scans it with their phone and lands on that link's page, in your name, where they pay by card with 3-D Secure — or choose cash at an agency.
- With a permanent poster, you need a reusable link, created through the API, with no expiry if you like. The printable PDF poster — it carries the QR code and the amount — is available from the link's page in the portal, or through the API with
GET /v1/payment-links/{reference}/poster. Every customer scans it and pays by card, with 3-D Secure.
You are notified in the portal for every payment: that is where you check that a session is paid — never on a screenshot. A receptionist with the cashier profile sees only their own links; payments on a reusable link created through the API are tracked with an owner, manager or accountant login.
Two rules to keep in mind. The poster collects by card only: a reusable link, its poster or its QR code does not take cash. And a poster carries a price: if you change the session rate, cancel the old link and print the new poster. How the QR code and the poster work is detailed in QR code payments.
Members without a card: the monthly link paid in cash
Some of your members have no card, or prefer to pay in cash. For them, no subscription, since its links are paid by card: every month, a single-use payment link for the monthly fee. On the page of a single-use payment link, your customer chooses cash, receives a reference, pays it at an agency of the Chari network, and you are notified as soon as the network confirms the deposit. Cash payment at an agency always relies on a single-use link — one reference per deposit.
In practice:
- 1At the start of the month, create in the portal one single-use link per member concerned, for their monthly fee, with "Agency payment" on and no expiry: turning on "Agency payment" on a link disables its expiry, and the link stays payable with no time limit.
- 2Send it by email from the list of links, or by WhatsApp from your own phone; the member chooses cash on the page and receives their reference.
- 3As 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}.
For these members, the access rule therefore relies on the status of the month's link, not on subscription events. And never a poster or counter QR code for cash: they collect by card only. ChariPay is the only payment gateway in Morocco that also collects cash at agencies; the full mechanics are in collecting cash at an agency.
The front-desk team and roles
A gym often means several people at the front desk, a manager and an outside accountant. 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.
Applied to a gym:
- receptionists get the cashier role: they create the day's payment links and see only their own links and their own transactions — no balance, no subscriptions;
- your accountant gets the accountant role: they export the month's collections without being able to trigger anything;
- you, the owner, or an authorized manager, sign members up, decide on pauses and cancellations and trigger outgoing operations.
Each person has their own login: never share credentials at the front desk. The detailed setup, role by role, is in portal roles and access.
Frequently asked questions
How do I collect a gym membership by card every month?
Create the member as a client in the portal, with their email address, then a monthly subscription in their name. On every due date, they receive a single-use payment link by email and pay on the hosted page, by card with 3-D Secure; the first payment activates the subscription. Until the installment is paid, a reminder goes out every day with the same link, payable for 14 days after the due date.
Can a member pay for the gym in cash?
Yes, with one single-use payment link per month, created with "Agency payment" on and no expiry: on the page, they choose cash, receive a reference and pay it at an agency of the Chari network; the link turns "Paid" as soon as the network confirms the deposit. Cash always goes through a single-use link, never through the counter poster.
Can I pause the membership of an injured member?
Yes. From the portal or through the API, you pause their subscription: no new link is sent and the subscription is not canceled; you resume it when they come back, without billing the paused months. The rule — who is eligible, on what proof, for how long — is yours: write it into your gym rules and note the expected return date in your own member file.
How do I collect a drop-in session or a trial class?
Without a developer, create a single-use link at the session price for each sale and show its QR code from the list of links; to sell the same trial class several times online, publish it as a product on your hosted storefront. A permanent poster at the counter requires a reusable link, created through the API, which collects by card only. For a session pack, use a single-use link for the pack amount.
How do I connect unpaid dues to gym access control?
Through webhooks: your front-desk software receives subscription.payment_succeeded when an installment is paid, subscription.payment_failed when a card payment fails on the link — which stays payable —, and subscription.canceled when the subscription is canceled for lack of payment within 14 days, then applies your access rule. ChariPay collects the money but manages no badge or turnstile. Without a connected tool, the owner or a manager checks in the portal, on the Subscriptions page, who is up to date and who has an unpaid installment.
Does the front-desk QR code accept cash?
The printed counter poster does not: it carries the QR code of a reusable link, which collects by card only. The QR code of a single-use link, shown for a specific sale, opens that link's page, where the customer can choose cash at an agency. For a member who pays in cash every month, create a single-use link with "Agency payment" on and no expiry: a reference always matches a single deposit.
Next step
Create a test plan, simulate a sign-up with the test card, set up how you collect drop-in sessions and write your access rule for unpaid dues: Start in test mode. To see each step from the member's side, read the subscriptions and recurring payments page; to prepare your response to unpaid dues, read unpaid subscription installments and reminders.
Written by ChariPay team.