📦 Cash on delivery: the complete guide to selling without losing money (Morocco, Maghreb, Gulf, Africa)

🌐 Français · English · العربية

Cash on delivery sells, but every refused parcel costs real money. True unit economics, order confirmation, choosing a courier, refusals, cash and KPIs: the complete method for selling COD without losing money.

In short

1. COD in numbers: what we actually know

Cash on delivery (COD) is still the default payment method for online shopping in North Africa. But be careful about what is being measured:

Country / regionFigureWhat is measuredSource
Morocco84.1%Online shoppers who used COD (cards: 43.3%)ANRT ICT survey, via Le360 (2025)
Moroccoover 80%Jumia Morocco customers who prefer cashJumia Morocco's head of operations, via Madar21 (2026)
Algeria95%Online transactionsEl Moudjahid, via TSA Algérie (2025)
Tunisiaover 85%Transactions (unsourced by the outlet)Tunisie Numérique (2025)
Gulf (Saudi Arabia, UAE, Kuwait)about 10%Stated preference for COD in 2023Checkout.com (2024)
Senegalabout 55%Orders paid by COD (mobile money: about 35%)Kolonell (2026), a payment-solutions vendor

The takeaway: in the Maghreb, COD dominates; in the Gulf, cards have taken over. If you sell in Saudi Arabia or the UAE, COD is one option among others, not a must.

Refusal rates: a range, not an official statistic

No Moroccan institution publishes refusal or return rates. The figures in circulation come from companies selling solutions:

What I see in the field

With the sellers I work with, refusal and return rates are high, and there is almost never a single cause. The seller, the courier, the buyer and the delivery company's system are not in sync: the customer isn't told, the driver can't find the address, the parcel status shows up days late. Research backs this up in substance, even without an official figure: Jumia Morocco names "the inability to reach customers" as its main risk (Madar21, 2026).

2. The COD funnel: from order to cash in the bank

Think of your business as a five-stage funnel. Each stage has a rate, and each rate can be measured.

  1. Orders received (gross): everything that lands in the dashboard, including fake orders and duplicates.
  2. Confirmed orders: the customer was reached and confirmed the product, price, address and date.
  3. Parcels shipped: confirmed and handed to the courier.
  4. Parcels delivered: the customer paid.
  5. Cash remitted: the money is actually in your account.

"An order appearing on the dashboard is not a sale," says Fouad Ouaggad, formerly of YouCan (2026). Call-centre vendors claim that around 30 to 35% of COD orders are fake or abandoned (MyLeadDone, 2026, anecdotal): hence the importance of stage 2.

3. The real economics: a worked example

Illustrative example, calculated with the assumptions of oufrid.com's research brief (October 2026). These are not market averages.

Assumptions

ParameterValueWhere it comes from
Selling priceMAD 249Order of magnitude of the Cashod (2026) example
Landed product costMAD 80Cashod and Clarodigi (2026) examples
Delivery (per delivered parcel)MAD 35"Major cities" rate of Cathedis and Sendit (2026)
Return fee (per refused parcel)MAD 15 / 10 / 0 depending on the scenarioSendit 0; Swiftlog (2026) 10–20
PackagingMAD 5 per shipped parcelSwiftlog: MAD 3–8
Confirmation (call centre)MAD 10 per confirmed orderCashod
Ad cost per gross orderMAD 25Assumption: no reliable Moroccan figure was found
Damaged goods among returns10% of their valueAssumption

Results for 100 orders received

ScenarioConfirmation / deliveryDeliveredRefusedRevenueProfitProfit per delivered parcel
Pessimistic55% / 65%35.819.2MAD 8,902MAD 1,023MAD 28.6
Typical65% / 75%48.816.2MAD 12,139MAD 2,765MAD 56.7
Optimised80% / 88%70.49.6MAD 17,530MAD 5,657MAD 80.4

These profits are before fixed costs (tools, salaries, platform subscription), products tested that don't sell, and taxes. Your real result will be lower.

What the example shows

  1. Same product, same price: moving from the typical to the optimised scenario doubles profit. Confirmation and delivery matter more than the purchase price.
  2. The pessimistic scenario turns into a loss once ads cost about MAD 35 per order received. At MAD 40, you lose MAD 477 per 100 orders.
  3. The maximum ad cost you can afford (before losing money) is about MAD 35 (pessimistic), MAD 53 (typical) and MAD 82 (optimised).
  4. Every refused parcel wastes the ad spend already paid. According to Swiftlog (2026), a refused parcel costs MAD 43 to 103 in total (outbound, return, packaging, ads). According to CEOS Technology's CEO, re-delivery and returns account for 60 to 70% of total delivery costs (Madar21, 2026).

👉 Run the numbers with your own data in the free COD profit calculator: real profit, maximum ad cost, and "what if I improved my confirmation rate?" simulations.

4. Why customers refuse

There is no statistical ranking of refusal reasons in Morocco. Here are the recurring causes, from the best documented to the least:

CauseWhat the sources sayWhat you can do
Product differs from the adTop e-commerce complaint according to the Ministry of Trade (Le360, 2024)Real photos, real video, honest product page
Distrust: COD as insuranceCOD helps buyers "protect themselves from fraud" (Febrayer, 2025)Clear identity, verifiable reviews, a return policy
Impulse purchase, then forgottenTop cause cited by Swiftlog (2026)Confirm fast, deliver fast, remind the day before
No cash on delivery daySwiftlog; Tunisie Numérique (2025)State the exact amount, let the customer pick the day
Delivery too slowEvery extra day raises the chance of a return (eGrow, 2026, a vendor)Local stock, a realistic delivery promise
Customer unreachable, vague addressMain risk according to Jumia Morocco (2026); 3–5% of addresses not found according to SwiftlogLandmark, WhatsApp location pin, second phone number
Fake orders20–40% from Facebook/Instagram according to vendors (anecdotal)Systematic confirmation, duplicate filters

5. Confirmation: the step that changes everything

Practitioners agree: confirm every order before shipping, ideally within 10 minutes and no later than 2 hours, calling back at different times of day and over several days (Swiftlog, MyLeadDone, eGrow, Storeino, 2026). Vendors claim 60–70% confirmation with manual follow-up and up to 92–94% with WhatsApp automation: that is a sales pitch, not an independent measurement.

What the law requires during the call (Morocco)

Call script (adapt to your tone and the customer's language)

"Hello, this is Salma from [Store name]. I'm calling about the order you placed yesterday on our website. Do you have two minutes?

You ordered [product, size, colour, quantity] for a total of [amount] dirhams, delivery included. Is that right?

Delivery is planned for [day] between [time] and [time] at [address]. Could you give me a nearby landmark, or send me your location on WhatsApp? Do you have a second number in case the driver can't reach you?

Please have [amount] dirhams ready for the driver. I'm sending you a written summary on WhatsApp. You have 7 days after receiving the item to change your mind: the terms are in the message."

If the customer hesitates, don't push. An order cancelled on the phone costs MAD 10 in confirmation; a refused parcel costs far more.

WhatsApp confirmation message (template)

Hello [First name],
[Store name] confirms your order no. [number]:
- Product: [product, size, colour] x [quantity]
- Total to pay on delivery: MAD [amount] (delivery included)
- Expected delivery: [day], between [time] and [time]
- Address: [address + landmark]

Reply YES to confirm, or tell us what to change.
Seller: [company name], [city], tel. [number], ICE [number]
Returns: 7 days after receipt, terms: [link]

The 5 touchpoints

eGrow (a vendor, 2026) recommends five messages: confirmed, shipped, out for delivery, failed attempt if any, and post-delivery follow-up. Add a reminder the day before or the morning of delivery with the amount to prepare (Swiftlog, 2026).

Hello [First name], your [Store name] parcel arrives today
between [time] and [time]. Amount to prepare: MAD [amount].
Tracking: [link]. Can't make it? Reply to this message to change the day.

6. Choosing and managing your courier

What couriers offer (public examples, 2026)

CourierDeliveryReturnsCash remittanceSource
Cathedis SilverMAD 20–45 by zoneFree up to 10% of shipments; parcel held 7 daysOnce a weekCathedis rates, checked October 2026
Cathedis GoldMAD 25–45 (50 for the South in a second rate card)Free up to 20%; exchange included; held 5 daysTwice a weekSame
SenditMAD 19–39Cancellation MAD 0; "unlimited" returns"Within 24 hours, 7 days a week" (sales promise)Swiftlog comparison, April 2026 data

Rate cards change: check them before signing. No independent data measures actual remittance times.

Questions to ask before signing

The contract: what must be in writing

Rates by zone, return quota and fees, holding period, remittance frequency and method, liability for losses, statement format, claim deadline, termination terms. Remember: towards the customer, you remain "fully liable" for delivery, even when a courier handles it (Article 26 of Law 31-08). A bad driver is your reputation.

Why you need at least two couriers

Practitioners advise having at least two, chosen on remittance time, coverage, tracking, free-returns quota and holding period (kslab, 2026). Compare their delivery rates zone by zone and give more volume to the one that delivers best.

The legal context is changing

According to Le Matin (2026), several delivery companies have disappeared in recent years with large sums of money. Bill 36-25 would make a licence mandatory for parcel companies, with fines of MAD 500,000 to 5 million (Consonews, 2026). As of this guide (October 2026), its adoption is not confirmed: keep an eye on it.

7. Cutting refusals: the levers

LeverHowLevel of evidence
Honest adsShow the real product and the total price, delivery included, in the adCommon sense + Swiftlog recommendation (2026)
Real photos, real videoReal photos from 5 angles, a 30–60 second videokslab and Swiftlog recommendation (2026)
Sizes and specsSize chart in cm, material, dimensions, weight, originCommon sense; fashion and large sizes are returned more (Eurastech, 2026)
A delivery promise you keepNext day in the city, 1–3 days elsewhere where possibleSwiftlog and eGrow recommendation
SMS or WhatsApp trackingTracking link + reminder the day beforeVendor claim: informed customers refuse "5 times less" (MyLeadDone, anecdotal)
Partial depositMAD 20–50 above MAD 300 (Swiftlog) or 10–20% (eGrow)Effects claimed by vendors only
Card payment discount3–5% (Eurastech, kslab)Recommendation
Filter your trafficLookalike audiences built on customers who accepted their parcel; exclude high-refusal areasSwiftlog recommendation
Segment CODCOD below MAD 300; prepayment for appliances, made-to-measure and B2Bkslab recommendation

Opening the parcel: be precise

Law 31-08 does not give customers a right to open the parcel before paying. It is a commercial practice, widespread but a source of friction with drivers. The customer's actual right is a 7-day withdrawal period after receipt (Article 36), with a refund within 15 days (Article 37).

If you want to offer inspection before payment:

  1. Make sure your courier accepts it and that it is written into the contract.
  2. Announce it on the product page and in the confirmation message.
  3. Tell the customer it is for checking the item matches, not for a long try-on.

Done well, it is a strong trust signal: it shows you have nothing to hide.

8. Handling returns and repeat refusers

The return workflow

  1. Same day: the "refused" or "failed" status comes in. Call the customer to find out why. According to MyLeadDone (a vendor), it takes 3 to 5 days on average to notice a failed delivery: shorten that.
  2. Offer a second attempt if the cause was absence or cash (another day, another address).
  3. When the parcel comes back: check the product's condition, put it back in stock or write it off.
  4. Log the reason in a sheet: product, city, traffic source, agent, courier. It is your best data.

Customers who refuse again and again

Some practitioners advise switching customers who have refused several parcels to mandatory prepayment: after 2 refusals according to Swiftlog, 3 returns in 6 months according to eGrow (2026).

Careful: a list of "risky" customers is processing of personal data under Law 09-08. In Morocco:

In 2014, the CNDP found that "barely 7%" of the websites it checked had notified their data processing (CNDP press release). Rules specific to WhatsApp are not covered by our sources: check with the CNDP.

Fraud against sellers

It happens too. In Tikkiouine (Agadir), a gang posed as ordinary customers and made off with goods at delivery (Le360, 2026). For expensive items: a deposit, identity checks at confirmation, prepayment above a threshold.

9. Managing cash

10. KPIs to track every week

KPIFormulaBenchmark
Confirmation rateConfirmed ÷ orders received60–70% manual according to vendors
Delivery rateDelivered ÷ shippedCompare against yourself week after week
Refusal rateRefused ÷ shippedSwiftlog: under 10% excellent, 10–20% acceptable, 20–35% worrying, over 35% critical (anecdotal)
Ad cost per delivered parcelAd spend ÷ delivered parcelsMAD 51.3 in the example's typical scenario
Profit per delivered parcelProfit ÷ delivered parcelsMust cover your fixed costs
Time to confirmOrder to successful callTarget: under 2 hours
Delivery timePickup to deliveryBy zone and courier
Remittance timeDelivery to cash receivedBy courier
Cash held by couriersCollected but not remittedShould stay stable
Refusal rate by segmentBy product, city, traffic source, agent, courierThis is where decisions are made

11. A 30-day action plan

Week 1: measure

Week 2: confirm better

Week 3: make the offer honest

Week 4: steer

Further reading

Need help?

I work with online stores in Morocco and beyond, in French, English and Arabic: store builds and redesigns, confirmation workflows, courier selection, dashboards and conversion optimisation. If you'd like an outside look at your numbers, see my e-commerce services or get in touch.

← All guides

← All guides