QR code payment in Morocco: a counter poster that takes card payments
QR code payment in Morocco: generate the QR code or PDF poster of a reusable payment link, put it at your counter and take cards with 3-D Secure.
QR code payment in Morocco, with ChariPay, is a printed payment link: you generate the QR code or the printable PDF poster of a reusable link, put it at your counter, and your customers scan it with their phone to pay by card with 3-D Secure, on a page hosted by ChariPay that shows your name. No terminal to install. This guide explains where the QR code comes from, which link to put behind it, where to place it, what the customer sees, how to track what a poster collects, and the mistakes that turn a poster into a source of misunderstandings.
QR code payment in Morocco, the way ChariPay does it
At ChariPay, a payment QR code is the image of a payment link. 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. The QR code simply encodes the address of the link's payment page: a customer who scans it lands on that page, exactly as if they had tapped the link in a message.
ChariPay is a Moroccan payment platform, a PSP operated by Chari Money, a payment institution licensed by Bank Al-Maghrib. On the page, the customer pays by card. By default: Visa, Mastercard and Maroc Pay. Other methods can be enabled on request to the team, depending on your business. Card payments go through 3-D Secure authentication: the cardholder confirms with their bank, which protects the merchant against most unpaid charges and disputes.
The QR code is therefore one sharing channel among others, designed for the physical world: a counter, a stand, a shop window, a printed document. If you are looking for the big picture — taking cards remotely, at the counter and on a website without any terminal — read our guide to accepting cards without a terminal; the full offer is on the payment links page. Here, we zoom in on the QR code and the poster.
Where the QR code comes from: portal, PNG image, printable PDF poster
Every payment QR code starts from an existing link. First create the link — amount, description, expiry, and single-use or, through the API, reusable — following our guide to creating a payment link if needed. Two formats are then available:
- The QR code alone, as a PNG image: to drop into a document, a menu, a delivery note, any material you design yourself.
- The printable PDF poster, for the counter: it carries the QR code and the amount.
In the portal, each link's QR code is one click away in the list of payment links, and the poster is available from the link's page. Through the API, two calls return the QR code and the poster, based on the link's reference (pl_…):
# PNG QR code that encodes the link's payUrl
curl -X GET 'https://api-psp.charipay.ma/v1/payment-links/pl_3ND8xk/qr' \
-H 'X-CHARI-PAY-API-KEY: chari_sk_test_...' \
-o pl_3ND8xk-qr.png
# Printable poster (PDF) with the QR code and the amount
curl -X GET 'https://api-psp.charipay.ma/v1/payment-links/pl_3ND8xk/poster' \
-H 'X-CHARI-PAY-API-KEY: chari_sk_test_...' \
-o pl_3ND8xk-poster.pdfGET /v1/payment-links/{reference}/qr returns the PNG, GET /v1/payment-links/{reference}/poster the poster PDF. A network of stores can thus produce its posters in batches from its own tools. Parameters and error responses are described in the Payment links module of the API docs.
Test a poster by scanning it yourself before putting it up. 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 link, display its QR code from the list of links, scan it with your phone and pay with the test card 4918 9141 0719 5005, CVV 123, any future expiry date, 3-D Secure code 555: only this card is accepted, and no real money moves. Your business verification (KYB) runs in parallel and only gates the move to production.
Reusable or single-use QR code: which link sits behind the image
The QR code changes nothing about the rules of the link it encodes. Everything is decided when you create that link.
| Reusable link | Single-use link | |
|---|---|---|
| Typical use | Counter poster, stand, shop window | A document for one customer: delivery note, printed quote |
| Amount | Fixed, the same for every customer | The amount of that order |
| Number of payments | Several, until expiry or cancellation | One: the first payer consumes the link |
| Accepted methods | Card only | On the link's page: card, or cash at an agency |
| Avoid | A price that changes often | A poster on public display |
The rule to remember: a poster or a permanent counter QR code is a reusable link, and a reusable link takes card payments. This reusable link is created through the API, with singleUse: false; once created, it shows up in the portal like the others. Without a developer, at the counter: create a single-use link for the amount of the sale and show its QR code from the list of links. A poster printed from a single-use link only works for the first payer; the next customer would land on a link that has already been paid.
Where to place your payment QR code
A payment QR code belongs where the customer has already decided to buy, and where they can take out their phone without holding up the line.
- At the counter or the till: the most natural spot, facing the customer, at eye level. At a restaurant or snack bar counter, the full flow — remote orders, counter, staff — is described in our guide to online payments for restaurants.
- On a stand at a trade show, a market or an event: one poster per product or per price. For event registrations and tickets, see our guide to online ticketing.
- In the shop window, for a product or service at a fixed price that people can pay for in passing.
- On a delivery note or a document meant for one customer: it is then the QR code of a single-use link, the one for that order, inserted as a PNG image. A customer who scans it lands on that link's page, which offers card or cash at an agency.
Two rules apply everywhere. Write the amount and the item in plain text next to the code — "Discovery box — MAD 199" — so the customer knows what they are paying for before scanning. And plan one poster per amount or per product: one QR code for two different prices is impossible, since the amount is the link's.
What your customer sees when they scan
The customer's journey takes five steps, with no app to install:
- 1They scan the QR code with their phone.
- 2The payment page opens: it shows your name and logo, set in your account settings, with the link's amount and description.
- 3They enter their card. By default: Visa, Mastercard and Maroc Pay.
- 4They confirm with their bank: this is 3-D Secure authentication, which protects the merchant against most unpaid charges and disputes.
- 5The payment goes through; on your side, you are notified in the portal.
At the counter, look at the notification rather than the phone screen the customer holds out to you: that is the proof that counts. Portal roles fit this setup: the cashier collects without seeing the balance or transfers, the accountant reads everything without triggering anything.
Tracking the payments a poster receives
A reusable poster collects all day long; you need to be able to say, at any time, what it has brought in.
- In the portal, you are notified of every payment, and the link keeps its status and origin in the list.
- Through the API,
GET /v1/payment-links/{reference}returns, among other fields,useCount, the number of times the link has been paid, andtotalCollected, the total collected through that link. - In the link's funnel, the portal shows how many opened the page, how many entered their card, how many completed.
The funnel is valuable for a poster: page opens with no card entry can point to an amount or an item that was misunderstood when reading the poster; card entries with no completed payment point rather to the customer's card or to authentication. Every payment is available in your payment account as soon as it succeeds, and it appears in your exports with its reference.
Renewing or canceling a poster
A poster lives as long as the link it carries. Choose the expiry accordingly: never for a permanent counter poster, an exact date for a seasonal offer, a trade show or a monthly menu. Once it passes, the page tells the customer the offer is no longer available, and no payment can go through.
To change the price, do not reprint the same poster with a sticker on it: cancel the link — a canceled link can no longer be paid —, create a new link for the new amount, and print its poster. Then physically take down the old posters, everywhere they were put up: a canceled QR code left on the wall loses you a sale and forces your staff to explain.
Keep a simple list of the posters in circulation — location, amount, link reference: on the day of a price change, you know exactly which posters to take down.
Mistakes to avoid with a payment QR code
- A poster with an outdated price: the customer pays the old amount, and you have to claim or refund the difference.
- A poster for a canceled or expired link left on the wall: the customer scans and cannot pay.
- A QR code with no amount or item written next to it: customers hesitate to scan a code when they do not know what it triggers.
- A single-use link printed on a poster: only the first customer can pay.
- A "cash accepted" note on the poster: it is wrong, the poster takes card payments. For a customer who wants to pay cash, send them a single-use link; how it works is detailed in our guide to collecting cash at an agency.
- Trusting the customer's screen rather than the notification: only the payment notified in your portal counts.
Frequently asked questions
How do I create a payment QR code?
First create a payment link — through the API, with singleUse: false, for a permanent counter poster — then display its QR code from the list of links in the portal. Through the API, GET /v1/payment-links/{reference}/qr returns the PNG and GET /v1/payment-links/{reference}/poster returns the printable PDF poster, with the QR code and the amount. The QR code encodes the address of the link's payment page.
Can a customer pay cash by scanning the poster?
No. A poster or a permanent counter QR code corresponds to a reusable link, and a reusable link takes card payments only. Cash at an agency always goes through a single-use link, with one reference per deposit. For a customer who wants to pay cash, create a single-use link for their amount and send it to them by message.
Can the same QR code be used for several customers?
Yes, if the link behind the QR code is reusable: each customer scans and pays the same amount, until the link expires or is canceled. That is the case for a counter or stand poster. A single-use link, by contrast, is consumed after one successful payment: printed on a poster, it would only work for the first customer.
Which cards work with a payment QR code?
By default: Visa, Mastercard and Maroc Pay. Other methods can be enabled on request to the team, depending on your business. The QR code opens the same payment page as a link sent by message: the customer enters their card, then confirms the payment with their bank through 3-D Secure authentication.
How do I change the price on a payment poster that is already printed?
The amount is the link's, so you need a new link. Cancel the old one, which can then no longer be paid, create a link for the new amount, print its poster, then take down every old poster. Keeping a list of your posters in circulation, with their location and the link reference, makes this replacement quick and leaves nothing behind.
How do I know how much a poster has collected?
In the portal, you are notified of every payment. Through the API, GET /v1/payment-links/{reference} returns useCount, the number of payments, and totalCollected, the total collected through that link. The link's funnel also shows how many people opened the page, entered their card and paid, which helps you spot a poster that is misread.
Does a payment QR code expire?
It expires when the link it encodes expires. When you create the link, you choose: 24 hours, 7 days, 30 days, never, or an exact date. For a permanent poster, choose "never"; for a seasonal offer or a trade show, an exact date. A canceled link, for its part, can no longer be paid, whatever its expiry.
Next step
Before putting up your first poster, print one in test mode and go through the customer journey yourself, from the scan to the notification: Start in test mode. To set up every field of the link behind the poster, follow our guide to creating a payment link, and keep the payment links page for the full offer.
Written by ChariPay team.