Stripe in Morocco in 2026: not available — and how to get paid anyway
Stripe is not available in Morocco in 2026. What Atlas and the workarounds really involve, and how to get paid in dirhams, with a free test account at sign-up.
No. If you are asking "Is Stripe available in Morocco?" because you want to open an account and charge your customers, the answer checked on stripe.com/global on October 2, 2026 is clear: Morocco is not on the list of countries where Stripe is available, and a business established in Morocco therefore cannot open an account there in its own name. This guide explains why, what Stripe Atlas, Connect and Express do — and do not — solve, what the workarounds involve, and how to get paid in dirhams today with an API whose vocabulary you already know, starting with a free test account.
The answer in 50 words
No, Stripe is not available in Morocco in 2026. The official list of supported countries and regions, published at stripe.com/global and checked on October 2, 2026, does not include Morocco; the page says more countries are to come, without naming Morocco. A Moroccan business therefore cannot open an account there to charge its customers.
Everything this article says about Stripe comes from its official pages, read the same day and listed under Sources; no price is copied here.
What you were looking for exists in Morocco, and you can try it right now. A REST API, a hosted payment page, signed webhooks, all in dirhams: that is ChariPay, operated by Chari Money, a Bank Al-Maghrib-licensed payment institution. Start in test mode: three fields (name, work email, company), an activation link sent by email to set your password, then your test key created from the portal and a first payment with the test card. It is free, with no time limit and no approval to wait for: verification of your business (KYB) only gates the move to production.
Why a foreign payment service cannot simply set up shop in Morocco
It is tempting to read this absence as a mere rollout delay. It is rather the consequence of a framework: in Morocco, collecting money on behalf of others is a regulated activity, and none of the constraints below can be fixed with a line of code.
The Bank Al-Maghrib license
Receiving a buyer's money, holding it while the payment is processed, then paying it out to a merchant: that is the business of a payment institution, a status created by Law 103-12 and subject to a license from Bank Al-Maghrib. The license binds an entity incorporated under Moroccan law, with its own capital, governance and compliance obligations, and places merchants' funds under the central bank's supervision.
For a merchant, it comes down to one question to ask any provider: which entity holds the license, and do my funds go through it? For a foreign service, opening Morocco is not a matter of adding a country to a drop-down menu; it means creating a local entity, getting it licensed and running it under supervision. Our PSP in Morocco page explains what that status covers and how to check it.
Settlement in dirhams, VAT and the invoice
A Moroccan business invoices, keeps its books and pays its suppliers in dirhams. The money it collects must therefore arrive in dirhams, in an account held in Morocco, with a RIB — the account identifier used for transfers in Morocco — that lets its accountant match every sale to every movement. A service that settles in a foreign currency, into an account outside Morocco, sits outside that circuit: bringing the funds home falls under foreign-exchange regulation, and every conversion opens a gap between what the customer paid and what the business records.
VAT adds another layer: sales to customers in Morocco are in principle subject to Moroccan VAT, and the chain of sale, payment and payout has to read cleanly, with no foreign intermediary to reconcile. Only your accountant or legal adviser can rule on your specific situation.
What changed in 2025: card acquiring opens up
The Moroccan card market, for its part, is moving. In decision No. 152/D/2024 of October 31, 2024, the Competition Council (Conseil de la concurrence) made binding a set of commitments concerning card acquiring (accepting card transactions on behalf of merchants), a market until then marked, in the Council's own words, by a quasi-monopoly. Its press release of May 19, 2025 states that duly authorized payment institutions and bank subsidiaries dedicated to acquiring may operate in that market as of May 1, 2025; the joint press release with Bank Al-Maghrib dated July 10, 2026 describes the transition from a single-acquirer model to a multi-acquirer architecture.
For you, the question "which entity is authorized in Morocco?" matters even more. These texts do not announce the arrival of any foreign service.
Stripe Atlas, Stripe Connect, Stripe Express: what they solve, and what they don't, for a Moroccan company
These three names refer to very different things, and none of them turns a business established in Morocco into a Stripe merchant. Here is what Stripe's official pages say, as read on October 2, 2026.
Stripe Atlas
Stripe Atlas is a company-formation service. Its page offers to incorporate your startup in Delaware, as a C corp or an LLC, with a company tax ID and founder equity issuance; it says startups in over 175 countries have chosen Atlas, and that once incorporated, the company can bank, fundraise and charge customers. It also states that Atlas is not a law firm and that the information it provides is not legal, tax or accounting advice, and mentions an annual registered agent fee after the first year.
Your Moroccan business, however, stays outside the setup: sales are collected by the US company, outside Morocco and outside your Moroccan books, and the Moroccan questions — foreign exchange, VAT, invoicing — remain wide open if your customers are in Morocco. Atlas makes sense if you genuinely want a US structure, for customers or investors in the United States: that is a structural decision to make with your adviser, not a payments shortcut.
Stripe Connect
Stripe Connect is built for platforms and marketplaces: its page presents it as the way to integrate Stripe for a business that orchestrates money movement across multiple parties, with seller onboarding, embedded components and global payouts. The platform, itself a Stripe customer, creates a connected account for each seller that joins it.
The documentation on account types includes Morocco (MA) in the list of countries for an Express or Custom connected account, noting that some countries are available only when using cross-border payouts. It also states that an account under the "recipient" service agreement cannot process payments, and that cross-border payouts to such accounts go through Global Payouts, offered to platforms in the United States and the United Kingdom, whose list of recipient countries includes Morocco, in dirhams. These pages change: reread them before making any decision.
So these pages describe a foreign platform paying out money to sellers based in Morocco, not a marketplace established in Morocco that collects from Moroccan buyers: the platform itself must be in a supported country. At ChariPay, that need is covered by Distribution: sub-merchants with a dedicated wallet, built-in KYC and payouts under dual approval, set up with the integration team. How it works for a marketplace is covered in marketplace payments.
Stripe Express
"Express" is not a separate product: in Connect's documentation, it is a type of connected account. Stripe handles the seller's onboarding and identity verification, the platform specifies charge types and payout settings, and the seller follows payouts on a lighter dashboard. The documentation files Standard, Express and Custom under legacy connected account types: those pages apply only to platforms that already use them.
To create Express accounts, the platform must be based in one of the countries the documentation lists; Morocco is not among them. An Express account only exists attached to a platform: it makes you that platform's seller or the recipient of its payouts, not the holder of an account to charge your own customers in Morocco.
The workarounds people suggest, and what they involve
On developer forums, two ideas keep coming back. They answer a real need; their consequences deserve to be checked with your adviser before you take a single step.
Setting up a company abroad
The first workaround is to incorporate a company in a supported country — American, British or European — and open the account in its name. That company can open an account; what changes is everything else:
- The funds are collected outside Morocco, by a foreign entity that you now have to keep alive, with its own books, filings and running costs.
- Moroccan obligations do not go away. If your customers are Moroccan and you operate from Morocco, VAT on those sales and foreign-exchange regulation apply in full.
- The provider's terms apply to the business as it is actually run. Read what they say about a business whose activity, directors and customers are in an unsupported country, and have your adviser confirm it.
- Your customers are still in Morocco. For them, the transaction becomes a payment abroad, in another currency: whether it goes through depends on their card and the bank that issued it.
Using someone else's account
The second is to use the account of a friend or partner established in a supported country, who then passes the funds on to you. The service's terms of use say whether an account may collect for anyone other than its holder: read them first. Either way, the setup exposes both sides: the account holder, who carries the disputes of a business that is not theirs; and you, who depend on a pass-through with no contract, no RIB in your name and no recourse if the account is closed.
The decision table
The four routes side by side; the table compares mechanisms, not prices.
| Route | Where the money lands | Who holds the account | Moroccan cards | Cash at an agency | To check with your adviser |
|---|---|---|---|---|---|
| US company via Stripe Atlas | In a US company's account, outside Morocco | A foreign provider, in the US company's name | Cross-border payment, depending on the card and its bank | Not offered | Foreign exchange, Moroccan VAT, US obligations, place of management |
| Company in the European Union | In a European company's account, outside Morocco | A provider, in the European company's name | Cross-border payment, same caveats | Not offered | Foreign exchange, VAT, books in two countries |
| Someone else's account | With the third party, who passes it on | The third party, in their name | Depends on the third party's account | Not offered | Terms of use, disputes, declaring the sums |
| Local collection (ChariPay) | Instantly in your payment account, in dirhams | Chari Money, a Bank Al-Maghrib-licensed payment institution, in your company's name | Visa, Mastercard and Maroc Pay, with 3-D Secure | Yes, through a single-use payment link | Your usual invoicing in dirhams |
Read it from your customers' side. If they are abroad and pay in their own currency, a foreign structure may make sense, with an adviser. If they are in Morocco and pay in dirhams, by Moroccan card or in cash, only the last row answers the question.
What to take away
These setups answer a question of availability with a question of structure. If your company, your customers and your business are in Morocco, the proportionate answer is to collect in Morocco, in dirhams, into an account in your name, through a payment gateway in Morocco operated by a licensed payment institution. To compare local providers, our guide to choosing a payment platform lists the questions to ask each of them.
Is it legal? Office des Changes, VAT, invoicing
"Is Stripe legal in Morocco?" We answer neither yes nor no: it depends on your status, your income, where your company is actually managed and where your customers are. Here are the points an accountant or legal adviser will review with you:
- Foreign-exchange regulation. Collecting abroad, holding a balance there and bringing it home fall under the regulation overseen by the Office des Changes; for a Moroccan resident, it is the first question.
- VAT. Sales to Moroccan customers are in principle subject to Moroccan VAT, wherever the money was collected.
- Invoicing. Invoicing in dirhams and collecting in another currency, through another entity, creates conversion gaps and intercompany flows to document.
- The foreign company's residence. Incorporated abroad but managed from Morocco, it raises tax-residence questions in both countries.
If your business and your customers are in Morocco, the simplest course is not to create these questions: collect in Morocco, in dirhams, through a provider operated by a licensed payment institution.
What about PayPal in Morocco?
PayPal often shows up in the same search, but the situation is different. PayPal has a site for Morocco, with a personal section and a business section; its home page, read on October 2, 2026, states that an account is required to send and receive payments.
What that account allows for your business is to be checked on PayPal's official pages. For collecting from Moroccan customers in dirhams, into an account in your company's name, the question changes: our article on PayPal in Morocco covers it in detail, with no price comparison.
Either way, for customers in Morocco, the proportionate answer remains local collection in dirhams; our guide to online payment in Morocco compares the methods.
Getting paid in Morocco with ChariPay: the vocabulary you already know
ChariPay is the Moroccan payment platform (PSP) of the Chari ecosystem, operated by Chari Money, a Bank Al-Maghrib-licensed payment institution, on a PCI DSS Level 1 certified platform. It is not a copy of Stripe, and we do not compare our prices with Stripe's. But if you have integrated Stripe, you are not starting from scratch: REST API, server-side creation, hosted page, signed webhook. The table pairs neighboring concepts, not services that match feature for feature. The left-hand column uses the names from Stripe's public documentation.
| What you know from Stripe | What you find at ChariPay |
|---|---|
| Checkout Session, redirect to its URL | POST /v1/payment-sessions returns a checkoutUrl to a hosted page: card payment with 3-D Secure |
| PaymentIntent, the object that tracks a payment | The transaction and its operationId: GET /v1/transactions/{operationId} |
| Payment Links, no code | Payment links from the portal or POST /v1/payment-links: QR code, PDF poster, WhatsApp; card or cash at an agency on a single-use link |
Stripe-Signature header | X-CHARI-SIGNATURE (HMAC-SHA256) and X-CHARI-TIMESTAMP in milliseconds |
Idempotency-Key header | The same header, plus an externalId unique per account and per environment |
sk_test_… and sk_live_… keys | chari_sk_test_… and chari_sk_live_…, one base URL: https://api-psp.charipay.ma |
| Refunds and Subscriptions | POST /v1/refunds (free) and POST /v1/subscriptions (payment link emailed at each due date) |
| Connect | Distribution, for sub-merchants: a different scope, to be defined with the integration team |
Our payment API integration guide walks through every building block in curl, Node and Python; here are the three that are enough for a first payment.
The payment session: one call, one URL
You create a session server-side with the amount in dirhams — there is no currency field: everything is in MAD, in major units — plus your order reference, the buyer and the return URLs. The response contains the URL of the hosted checkout, where the buyer pays by card with 3-D Secure; cash at an agency goes through a payment link, described below. The key travels in the X-CHARI-PAY-API-KEY header, never in code that runs on the buyer's side. Every field is described in the checkout sessions module of the API docs.
curl -X POST 'https://api-psp.charipay.ma/v1/payment-sessions' \
-H 'X-CHARI-PAY-API-KEY: chari_sk_test_...' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: order-2026-0421-payment' \
-d '{
"amount": 250.00,
"orderId": "ORD-2026-0421",
"externalId": "order-2026-0421",
"config": {
"customer": { "email": "amine.bennani@example.com", "firstName": "Amine", "lastName": "Bennani" },
"urls": {
"accept": "https://your-shop.ma/payment/success",
"decline": "https://your-shop.ma/payment/failure",
"notification": "https://your-shop.ma/webhooks/charipay"
}
},
"metadata": { "cartId": "c_987" }
}'The 201 response contains five fields (sample values):
{
"sessionId": "ps_5Kd0Rn",
"sessionToken": "st_…",
"verifyKey": "vk_5Kd0Rn",
"expiresAt": "2026-10-05T10:15:00Z",
"checkoutUrl": "https://…/checkout/ps_5Kd0Rn"
}Redirect the buyer to checkoutUrl. Without an expiresAt, the session expires 72 hours after creation. The accept and decline URLs bring the buyer back to your site but are not authoritative: a buyer who closes the tab after paying will never see your success page. The webhook is what counts.
The signed webhook: verification in Node
Every delivery carries X-CHARI-SIGNATURE, a hex HMAC-SHA256 computed over timestamp + "." + raw body, and X-CHARI-TIMESTAMP, in milliseconds. If you are coming from Stripe, this is the difference that bites: at Stripe, the timestamp travels inside the signature header (t=…,v1=…); here, it has its own header.
const crypto = require('crypto');
function verify(rawBody, signature, timestamp, secret) {
// ±5-minute replay window — the timestamp is in milliseconds.
if (Math.abs(Date.now() - Number(timestamp)) > 5 * 60 * 1000) return false;
if (!/^[0-9a-f]{64}$/i.test(signature || '')) return false;
const expected = crypto.createHmac('sha256', secret).update(`${timestamp}.${rawBody}`).digest('hex');
return crypto.timingSafeEqual(Buffer.from(expected, 'hex'), Buffer.from(signature, 'hex'));
}
app.post('/webhooks/charipay', express.raw({ type: '*/*' }), async (req, res) => {
const raw = req.body.toString('utf8'); // the raw body, before any parsing
if (!verify(raw, req.get('X-CHARI-SIGNATURE'), req.get('X-CHARI-TIMESTAMP'), process.env.CHARIPAY_WEBHOOK_SECRET)) {
return res.status(401).end();
}
const eventId = req.get('Chari-Event-Id'); // the deduplication key
if (await db.events.exists(eventId)) return res.status(200).end();
await db.events.insert({ eventId, payload: JSON.parse(raw) });
return res.status(200).end(); // acknowledge now, process from a queue
});Compute the HMAC over the raw bytes, reject timestamps that are too far off, compare in constant time, deduplicate on Chari-Event-Id. Without a 2xx response, delivery is retried — up to 16 attempts over roughly 72 hours — and the portal lets you replay an event in one click. The classic mistakes are covered in Getting your webhook integration right.
Idempotency and the two environments
The Idempotency-Key header protects against a network retry: the same value returns the first result. The externalId field, unique per account and per environment, makes the create replayable: a session created again with the same externalId comes back with a 200 instead of a 201. Derive both from your order reference; the details are in Never charge twice — idempotency explained.
A single base URL serves both the sandbox and production: the key decides. On go-live day, you change the key and the webhook secret, nothing else. Until production is enabled, a live key gets a 403 with the code PRODUCTION_ACCESS_NOT_ENABLED; the list of what must be ready is in Sandbox to production: the go-live list. To collect without code, payment links trigger the same webhook for a card payment.
What collecting locally changes
Two points change how you get paid here.
Cash at an agency
Some of your customers have no card, or don't want to use it online. ChariPay is the only payment gateway in Morocco that also collects cash at agencies, through a single-use payment link: on its page, the buyer chooses card or cash — or you create the link with paymentMethod: "CASH" — receives a reference and deposits the amount at a Damane Cash, Chaabi Cash, Tasshilat, Barid Cash or Chari agency. 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}. A payment session, by contrast, only takes cards: to offer cash at checkout, create one single-use link per order through the API — same statement, and an order that ships already paid rather than paid on delivery. Taking cash without a till covers it end to end.
Money available instantly, in a payment account with a RIB
Every successful payment — card or cash — is available instantly in your payment account with a RIB: a real payment account held by Chari Money, with a RIB in your company's name and a downloadable PDF certificate. It is a payment account you use like a real account: transfers to a Moroccan bank account, with a fee quote before confirmation, a one-time code if you have enabled it and a security delay after a new beneficiary is added; bill payments from the balance; telecom top-ups through the API. For 50 MAD, order a ChariPay card linked to your payment account and pay with the money you collect.
The payout to your bank remains a separate operation: by transfer on demand, or automatically every night once a settlement account is configured. The Wallet and payouts page details what the account allows; the portal adds separate roles (owner, manager, cashier, accountant) and CSV exports for reconciliation. The published pricing fits in four lines: free sandbox, a one-time activation fee of MAD 6,000 including VAT at go-live, a commission per successful transaction set after your application is reviewed, free refunds — see Pricing. For software sold by subscription, the case is covered in SaaS billing in Morocco.
Getting started in eight steps
Up to your first test payment, you do everything on your own, with no meeting; only the move to production adds the verification of your business:
- 1Sign up. Start in test mode: three fields — name, work email, company.
- 2Activate. Open the link sent by email and set your password. Test mode is open, with no approval to wait for.
- 3Log in. Sign in to the portal and select your company; two-factor authentication may be offered.
- 4Test key. Create your
chari_sk_test_…key from the portal, with the permissions you need. It is shown only once. - 5First call.
POST /v1/payment-sessions, or a payment link from the portal to see the page without code. - 6First test payment. Card
4918 9141 0719 5005, any future expiry, CVV123, 3-D Secure code555— with no money moving. - 7Webhook. Register your HTTPS endpoint, send it the test event, verify the signature, replay a delivery.
- 8Production. Submit your KYB file — company documents, trade register — and pay the activation fee; your live key is created and you switch keys.
The sandbox stays free, with no time limit, after go-live: keep it for staging. The API documentation gives every endpoint with examples in curl, JavaScript, Python and PHP.
Frequently asked questions
Is Stripe available in Morocco in 2026?
No. Morocco is not on the list of countries where Stripe is available, published at stripe.com/global and checked on October 2, 2026. A business established in Morocco therefore cannot open an account there to charge its customers. To get paid in dirhams today, you need a provider operated by a payment institution licensed by Bank Al-Maghrib.
Does Stripe work in Morocco with a Moroccan card?
As a merchant, no: since Morocco is not on the list of supported countries, a Moroccan business cannot open a Stripe account in its own name. As a buyer, it depends on your card and the bank that issued it. To accept Moroccan cards in dirhams, you need local collection.
Can I open a Stripe account from Morocco?
Not in the name of a business established in Morocco, since the country is not on the official list. Guides that promise otherwise describe setting up a company in a supported country, such as a US company via Stripe Atlas, which then opens its own account. That account belongs to the foreign company, not to your Moroccan business.
Does Stripe Atlas work for a Moroccan company?
Atlas does not make Stripe available in Morocco: it helps you incorporate a US company in Delaware, which can then open a bank account and accept payments. Your Moroccan business stays outside the setup, and the Atlas page states that it does not provide legal, tax or accounting advice: foreign exchange, VAT and residence remain to be checked with your adviser.
Is Stripe Connect suitable for a Moroccan marketplace?
Connect lets a platform established in a supported country route payments to its sellers. Its documentation includes Morocco among the countries for Express and Custom connected accounts, some being available only when using cross-border payouts, and an account under the "recipient" agreement cannot process payments. A marketplace established in Morocco needs local collection.
Is Stripe legal in Morocco if I use a US LLC?
We answer neither yes nor no: it depends on your status, your income and where the company is actually managed. The points to review with your adviser are foreign-exchange regulation, overseen by the Office des Changes, VAT on sales to Moroccan customers, invoicing in dirhams and the obligations of the country of incorporation.
Is PayPal available in Morocco?
Yes. PayPal has a site for Morocco, with a personal section and a business section; its home page states that an account is required to send and receive payments. What that account allows is to be checked on its official pages. For collecting from Moroccan customers in dirhams, our dedicated article goes through it.
When will Stripe launch in Morocco?
We do not know, and we publish no guesses. The stripe.com/global page says more countries are to come, without naming Morocco: any date you read elsewhere should be checked against it. The opening of Morocco's card-acquiring market to authorized payment institutions, since 2025, is not a Stripe announcement. A project that needs to get paid today needs a solution that is available today.
How do I migrate code written for Stripe?
The architecture stays the same: server-side create, redirect to a hosted page, a signed webhook that is authoritative, idempotency. The names change: POST /v1/payment-sessions instead of a Checkout Session, amount in MAD with no currency field, the X-CHARI-PAY-API-KEY header, a signature with a separate timestamp in milliseconds, deduplication on Chari-Event-Id. Then test with the test card.
What Stripe alternative is there in Morocco, and what does it cost?
Local collection, through a provider operated by a payment institution licensed by Bank Al-Maghrib — not a feature-for-feature equivalent of Stripe. At ChariPay, the sandbox is free with no time limit; going live costs a one-time activation fee of MAD 6,000 including VAT; the commission per successful transaction is set after your application is reviewed; refunding a customer is free.
Sources
- Stripe — Global availability — read on 2026-10-02
- Stripe Atlas — read on 2026-10-02
- Stripe Connect — read on 2026-10-02
- Stripe documentation: connected account types, Express accounts, service agreement types, cross-border payouts, Global Payouts — read on 2026-10-02
- Stripe documentation: Checkout Sessions, PaymentIntents, Payment Links, API keys, idempotent requests, webhooks and signatures — read on 2026-10-02
- PayPal Morocco — home page — read on 2026-10-02
- Competition Council — press release of May 19, 2025 — read on 2026-10-02
- Competition Council and Bank Al-Maghrib — joint press release of July 10, 2026 — read on 2026-10-02
- Bank Al-Maghrib — Structure of the banking system — read on 2026-10-02
- Office des Changes — read on 2026-10-02
Next step
Create your test account: Start in test mode — free, with no time limit and no approval to wait for. Then make your first POST /v1/payment-sessions and pay it with the test card, following the API documentation. To choose between a link, a checkout and the API for your business, our guide to online payment in Morocco walks through the options.
Written by ChariPay team.