Clinic online payment in Morocco: appointments, treatment quotes and the front desk
Clinic online payment in Morocco: prepaid appointments, deposits on treatment quotes, a front-desk QR code or cash, discreet descriptions and refunds.
Clinic online payment in Morocco covers four moments: the appointment paid when it is booked, the deposit on a treatment quote, the remote consultation paid before the call, and the front desk, where the patient pays with a QR code or receives a reference to pay in cash. In every case, a payment link is enough, with no terminal and no website. The front desk collects without seeing the balance, descriptions say nothing about the patient's health, and a canceled appointment is handled by canceling the link or issuing a refund. This guide is for medical and dental practices, clinics and physical therapists.
Online payment at a medical practice: four moments to collect
ChariPay is a Moroccan payment platform, a PSP operated by Chari Money, a payment institution licensed by Bank Al-Maghrib. For a practice, it does one thing: collect what you charge, by card or in cash, and keep a record of it. It replaces neither your calendar, nor your medical software, nor the patient's file.
| Moment | Tool | Payment methods |
|---|---|---|
| Booking an appointment | A single-use payment link: an expiry before the appointment if paid by card, "Agency payment" with no expiry for cash | Card with 3-D Secure, or cash at an agency |
| Treatment quote | A deposit link, then a balance link | Card, or cash at an agency |
| Remote consultation | A single-use link, paid before the call | Card, or cash at an agency |
| Practice front desk | QR poster for a reusable link created through the API, at a fixed fee; otherwise, the QR code of a single-use link shown from the portal | Poster: card only; single-use link: card or cash |
This guide does not cover health insurance, supplementary insurers or third-party payment: ChariPay collects what the patient pays you directly. And whether your profession regulates your fees or their payment before treatment is not something this guide settles: only your professional body or your advisor can give an opinion. How payment links work in general is described on their product page.
The appointment paid at booking
A missed appointment is a lost slot; paid at booking, it becomes a commitment. A payment link is an amount and a description; the customer pays on a page hosted by ChariPay. It is shared as a link, a QR code, a printable PDF poster, by email or WhatsApp. It is single-use or reusable, with an expiry of your choice — 24 hours, 7 days, 30 days, never, or an exact date — and a clear status: active, paid, canceled, expired.
The flow, when a patient calls:
- 1The receptionist books the slot in your calendar, as you do today.
- 2They create a single-use link for the consultation fee, with a neutral description — "Consultation on October 14" — and the patient's name and email.
- 3They set the expiry before the appointment date for a patient paying by card, using the "on a specific date" option: a link still active the evening before flags a slot to follow up on or to free up. For a patient who will pay in cash, they turn on "Agency payment" instead: in the portal, this option disables the expiry, and the link stays payable with no time limit.
- 4They send the link: by email, ChariPay sends it to the patient from the list of links in the portal, or with
POST /v1/payment-links/{reference}/send; by WhatsApp, it is their own gesture, from the practice's phone. - 5The "Paid" status confirms the appointment: the receptionist marks it in the calendar, and the portal keeps a record of the payment.
The patient pays by card, with 3-D Secure authentication at their bank, or, on an "Agency payment" link, chooses cash and pays the reference at an agency of the Chari network. A single-use link can be paid only once: no double payment for the same appointment.
To decide, first see what a patient 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 "Consultation" link, open it as a patient would, and pay it with the test card: no real money moves. It is free, with no time limit and no approval to wait for; the verification of your practice (KYB) only gates the move to production.
The treatment quote: a deposit, then the balance
In a dental practice or a clinic, a treatment plan spans several sessions and starts with a quote. The pattern that works: a single-use deposit link sent with the quote, then a balance link at the end of treatment — or one link per stage if the plan has several. The payments are tied to the same quote through its reference, carried in each link's description and, if you create the links through the API, in their metadata.
The deposit amount is your decision, within your professional rules: we set none. The full mechanics — the expiry of a deposit link paid by card, the balance link, cancellation, two entries in your books — are covered in collecting a deposit.
If the patient prefers cash, create their deposit link with "Agency payment", without an expiry — in the portal, this option disables the expiry. The patient chooses cash on it, receives a reference and pays it at an agency; the link turns "Paid" as soon as the network confirms the deposit. The practice does not have to hold cash for a treatment that is about to begin.
The remote consultation, paid before the call
If you consult remotely with your own tool — video call or phone — payment upfront saves you from chasing a consultation already given. The flow: a single-use link sent with the appointment confirmation, then the call started once the "Paid" status shows in the portal. The link carries the consultation date in its description; if it is paid by card, have it expire before the scheduled time.
Two clarifications. ChariPay provides no teleconsultation tool and promises none: payment and the call remain two separate tools, connected by your front desk. And on whether and how you may practice remotely, only your professional body or your advisor can give an opinion.
A patient who chooses cash must have paid their reference before the call: create their link with "Agency payment", without an expiry — in the portal, this option disables the expiry — and only start the call once the link is "Paid".
At the front desk: a QR code for cards, a single-use link for cash
Two situations come up at the front desk. For a fixed-fee service — the standard consultation, for example — a permanent QR poster collects from every patient who pays by card: it is a reusable link for the consultation fee, printed as a PDF and placed on the counter. From the portal, every payment link you create is single-use: this reusable link is created through the API, with singleUse: false, then shows up in the portal like the others. The patient scans and pays by card with 3-D Secure; the payment is checked in the portal, by the practitioner or a manager, not on the phone screen held out to you. The poster collects by card; cash goes through a single-use link, one reference per deposit.
Without a developer, or for everything else — a service with a variable amount, a patient without a card — the receptionist creates a single-use link for the amount of the service and shows its QR code from the list of links: the patient scans it and pays on the link's page, and the receptionist tracks its status directly. For a patient without a card, the receptionist turns on "Agency payment": the patient chooses cash, receives a reference and pays 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. ChariPay is the only payment gateway in Morocco that also collects cash at agencies.
When your fee changes, do not fix the poster with a pen: create a new reusable link through the API, print its new poster and cancel the old one, which can then no longer be paid. Generating, placing and renewing the poster are covered in QR code payments.
The front desk as cashier
At the practice, the receptionist collects every day; they do not need to see revenue or be able to send money out. 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.
| Person | Portal role | What they do |
|---|---|---|
| Lead practitioner | Owner | Sees everything, refunds, triggers transfers and payouts to the bank |
| Clinic administrative management | Manager | Handles links, refunds, transfers and exports; manages neither the team nor API keys |
| Receptionist, assistant, front desk | Cashier | Collects — appointments, front desk — without seeing the balance or transfers, and without refunding; sees only their own links |
| Accountant or accounting firm | Accountant | Reads everything — payments, refunds, balance — and exports, without triggering anything |
The audit log is cryptographically chained: history cannot be rewritten. The full matrix, including onboarding and offboarding a staff member, is in portal roles and access.
Descriptions with no health data
A link's description travels far: it is shown to the patient, it appears in the portal in front of every authorized user, then in every message and spreadsheet you copy it into. The metadata, for its part, comes back verbatim in the events your server receives. None of these places needs to know what the patient suffers from. The rule is therefore simple: neutral descriptions, never a procedure, a diagnosis or a treatment.
| Write | Never write |
|---|---|
| "Consultation on October 14" | "Cardiology consultation — blood pressure follow-up" |
| "Session 3 — appointment R-2207" | "Rehab after wrist fracture" |
| "Deposit quote D-0158" | "Deposit for dental implants" |
metadata: { "rdv": "R-2207" } | A reason for visit, diagnosis or treatment in metadata |
Your customers' data — name, email, phone, purchase history — is personal data under law 09-08, for which the CNDP is the supervisory authority. For a practice, those customers are patients, which calls for all the more care. On ChariPay's side, personal data is processed under law 09-08.
On the card side, your customer enters their card on the hosted checkout, within a PCI DSS Level 1 certified scope: you never see a card number, and your self-assessment questionnaire is reduced accordingly — to be confirmed with your advisor or your acquirer. What happens to a customer's data in a payment is explained in personal data and law 09-08; for your own obligations, only your advisor can give an opinion. The protections on ChariPay's side are described on the security and compliance page.
Canceled appointment: cancel the link or refund
Two cases, depending on whether the patient has paid.
The link has not been paid yet: cancel it from the portal or through the API. A canceled link can no longer be paid: a patient who opens it cannot pay for an appointment that no longer exists.
The patient paid by card: refund them. Refund a customer, in full or partially, from the portal or through the API. Refunds are free; the amount is deducted from your available balance, and if the balance is not enough, the operation is blocked rather than creating an overdraft. A refund is not instantaneous on the bank side: let the patient know the amount will come back to their card as their bank processes it.
The refund is triggered by the practitioner or an authorized profile, not by a front desk working as cashier. Choosing between a full and a partial refund is a matter for your cancellation policy and your professional rules: write it down, post it at the practice and repeat it in the message that goes with the link. The step-by-step — portal, API, message to the patient — is in refunding a customer.
Frequently asked questions
How do I get a medical appointment paid in advance?
Create a single-use payment link for the consultation fee, with a neutral description, then send it to the patient by WhatsApp or email. If they pay by card, with 3-D Secure, set an expiry before the appointment date; if they pay in cash at an agency of the Chari network, turn on "Agency payment" instead, with no expiry. The "Paid" status confirms the slot in your calendar.
How do I collect the deposit on a dental quote?
Send a single-use deposit link with the quote, then a balance link at the end of treatment; tie both to the quote through its reference, in the description and, through the API, in the metadata. The deposit amount remains your decision, within your professional rules. The patient can pay each of the two links by card or in cash at an agency.
Can a patient without a card pay online?
Yes, in cash, as long as you send them a single-use link: 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 front-desk QR poster, however, only collects cards.
Can the receptionist collect payments without seeing the practice's balance?
Yes: give them the cashier role. The cashier collects without seeing the balance or transfers — and cannot issue refunds — the accountant reads everything without triggering anything, and the owner or an authorized manager triggers outgoing operations. The receptionist collects day to day; the practitioner keeps control of the practice's money.
What should the description of a medical payment link say?
A neutral label: the general nature and the date — "Consultation on October 14" — or an internal appointment or quote reference. Never a procedure, a diagnosis or a treatment: the description is shown to the patient and appears in the portal, and the metadata comes back verbatim in the events your server receives.
Does the practice see the patient's card number?
No. The patient enters their card on the payment page hosted by ChariPay, within a PCI DSS Level 1 certified scope: the practice never sees a card number. Your self-assessment questionnaire is reduced accordingly — to be confirmed with your advisor or your acquirer. For the same reason, never ask for a card number over the phone or by message.
How do I refund a patient whose appointment is canceled?
If they have not paid yet, cancel the link: it can no longer be paid. If they paid by card, refund them from the portal or through the API, in full or partially according to your cancellation policy. Refunds are free, deducted from your available balance, and not instantaneous on the bank side: let the patient know the amount will come back to their card.
Next step
Run the patient-side test before you bring it to the front desk: Start in test mode, create an appointment link, show its QR code from the list of links as you would at the front desk, pay it with the test card, then set up the receptionist's cashier role in the portal. The payment links page sums up the offer, and portal roles and access explains who does what.
Sources
- CNDP — Commission nationale de contrôle de la protection des données à caractère personnel — read on October 2, 2026
Written by ChariPay team.