Expertise technical

SMS OTP qui n'arrive pas au Maroc : 7 causes réelles et comment les corriger

Sms otp pas reçu maroc : causes réelles, méthode de diagnostic et solutions concrètes pour le marché marocain.

SMS OTP qui n'arrive pas au Maroc : 7 causes réelles et comment les corriger

Lundi matin, 9h30. Un ticket de support tombe côté client : *"Je n'arrive pas à me connecter, je ne reçois pas le code SMS sur mon numéro Inwi."* Vous testez sur votre propre numéro IAM, le code arrive instantanément. Vous regardez les logs de votre API : le statut est en "Pending".

C'est un scénario classique quand on intègre de l'authentification OTP au Maroc. Un SMS qui n'arrive pas (ou qui arrive 15 minutes plus tard) n'est pas forcément lié à une panne globale. Souvent, la friction vient d'un détail de configuration de votre côté, ou d'une règle stricte côté opérateur.

Voici les 7 causes les plus fréquentes qui bloquent la réception d'un OTP au Maroc, et comment réagir sans perdre de temps.

Les 7 causes les plus fréquentes

1. Le Sender ID n'est pas whiteliste chez l'opérateur concerné

Un Sender ID peut être validé chez Maroc Telecom, mais pas encore actif chez Orange ou inwi. C'est le motif n°1 des disparités de réception. Si l'API renvoie un HTTP 400 ou 403 avec un message mentionnant une restriction de Sender ID, c'est là qu'il faut creuser. L'activation multi-opérateur n'est jamais instantanée.

2. Le numéro de destination est invalide ou mal formaté

Au Maroc, le format local (06XXXXXXXX ou 07XXXXXXXX) doit être converti au format international (2126XXXXXXXX) avant l'envoi. Si votre backend ou votre formulaire front-end ne force pas cette conversion, l'opérateur rejettera la requête avec une erreur HTTP 400 Bad Request (Invalid Destination Address).

3. La saturation réseau aux heures de pointe

Les soirs de Ramadan (juste avant ou après le Ftour) ou les veilles d'Aïd, le trafic SMS explose. Les opérateurs mettent en place des files d'attente (throttling). Un SMS OTP qui prend normalement moins de 3 secondes peut mettre 15 à 20 minutes à arriver. Dans ce cas, votre statut restera bloqué sur Pending.

4. Le contenu est détecté comme SPAM

Si votre OTP inclut des liens raccourcis (bit.ly), des caractères non standards, ou des mots-clés blacklistés ("gratuit", "gagnez"), le filtre anti-spam réseau peut le bloquer silencieusement. L'API peut renvoyer un statut Delivered alors que le message est bloqué côté opérateur. Restez sur un format ultra-basique : "Votre code de validation est le : 123456."

5. Une erreur d'encodage (Unicode vs GSM-7)

Si vous envoyez un message OTP en arabe sans configurer l'encodage UCS-2 (ou Unicode) dans les headers de votre requête API, le message peut arriver sous forme de points d'interrogation (????) ou être scindé et rejeté.

6. Le mobile du destinataire est hors réseau

Cela paraît évident, mais un téléphone en mode avion, éteint, ou sans couverture réseau ne recevra pas le message. L'opérateur gardera le SMS en file d'attente pendant une durée limitée (le Validity Period, souvent 24h à 48h) avant de l'abandonner définitivement (statut Failed).

7. Le compte API est à sec ou suspendu

Une erreur 401 Unauthorized ou 402 Payment Required dans vos logs indique généralement que votre solde de crédits est épuisé, ou que votre compte a été suspendu pour activité suspecte (volume anormalement élevé).

Comment lire le code de statut DLR

Ne devinez pas ce qui se passe : écoutez les Webhooks de statut (Delivery Reports ou DLR) que notre API vous renvoie.

  • Delivered : Le téléphone a confirmé au réseau qu'il a bien reçu le SMS. Si le client dit qu'il ne l'a pas, demandez-lui de vérifier ses SMS bloqués (filtre anti-spam iOS/Android).
  • Pending : Le SMS est dans les serveurs de l'opérateur (IAM, Orange ou inwi). Le téléphone cible est probablement hors ligne ou le réseau est surchargé. Patientez.
  • Failed : L'envoi a échoué. Le numéro n'existe pas, n'est plus attribué, ou le SMS a expiré dans la file d'attente.
  • Unknown / Rejected : L'opérateur a refusé le message, souvent à cause d'un filtre anti-spam ou d'un Sender ID non autorisé.

Pour savoir si un taux de Delivered bas sur un opérateur est anormal, comparez-le aux taux de remise par opérateur (IAM, Orange, Inwi) que nous publions, calculés sur ces mêmes accusés finaux : baromètre SMS Maroc.

Checklist de diagnostic en 5 minutes

Lorsqu'un utilisateur se plaint, effectuez ces 3 vérifications dans vos logs :

  1. Vérifiez la réponse de l'API lors de l'envoi initial (POST). Avez-vous reçu un code HTTP 200/202 (Succès) ou une erreur 400/401 ?
  2. Consultez le statut DLR final (le webhook). Est-il en Pending, Failed ou Delivered ?
  3. Comparez par opérateur. Le problème survient-il uniquement sur les numéros 0661 (IAM) ou 0614 (Orange) ? Cela indique souvent un souci de whitelisting de Sender ID spécifique à un opérateur.

Quand contacter le support vs corriger soi-même

  • Corrigez vous-même : Erreurs HTTP 400 (numéro mal formaté, erreur de syntaxe JSON), erreurs 401 (clé API invalide), ou statut Failed isolé sur un seul numéro (souvent lié au mobile du client).
  • Contactez le support : Statut Unknown ou Rejected systématique sur vos envois, délais de Pending dépassant les 2 heures sur plusieurs numéros différents, ou un Sender ID qui passe chez Orange mais pas chez inwi. Dans ce cas, ouvrez un ticket avec les message_id concernés pour que nous puissions analyser les journaux de routage bruts avec nos partenaires de routage.

💡 Pourquoi choisir EnvoiSMS pour votre entreprise ?

⚡

Délivrabilité Opérateurs

Routes locales vers IAM, Orange et Inwi, avec bascule automatique entre routes et statut de livraison transmis par webhook.

💰

Optimisation Budgétaire

WhatsApp Business API dès 0,65 MAD par message. Le meilleur retour sur investissement.

🛡️

Données Souveraines (CNDP)

Hébergement conforme aux réglementations de protection des données personnelles locales.

Q.Quelle est la latence d'acheminement sur les réseaux IAM, Inwi et Orange ?
Sur nos routes locales vers Maroc Telecom (IAM), Orange et inwi, la latence moyenne de remise est comprise entre 2 et 4 secondes pour les flux transactionnels.
Q.Comment la plateforme gère-t-elle le format des numéros marocains ?
EnvoiSMS normalise automatiquement les numéros saisis (06..., 07..., 00212...) vers le standard E.164 (+212) pour éviter tout échec de distribution.

Articles suggérés

Formatage SMS au Maroc : Sauts de ligne, Encodage GSM-7 vs UCS-2 et Optimisation des Coûts
technical

Formatage SMS au Maroc : Sauts de ligne, Encodage GSM-7 vs UCS-2 et Optimisation des Coûts

Formatage WhatsApp Business au Maroc : Texte Enrichi, Emojis et Boutons Interactifs
technical

Formatage WhatsApp Business au Maroc : Texte Enrichi, Emojis et Boutons Interactifs

Chatbot WhatsApp en Darija Marocain : Comment l'IA Traite l'Arabizi et le Mix Français-Arabe
technical

Chatbot WhatsApp en Darija Marocain : Comment l'IA Traite l'Arabizi et le Mix Français-Arabe