écrits/blog/2026/08
Blog12 août 2026·6 min

Maroof + Wathq : Vérifier l'immatriculation commerciale saoudienne via API

Comment intégrer l'API Wathq pour vérifier le registre commercial saoudien et le statut Maroof dans votre plateforme. Guide TypeScript complet avec gestion des erreurs.

Lorsque vous construisez une marketplace, une passerelle de paiement ou une plateforme B2B en Arabie Saoudite, vous vous heurtez à une obligation réglementaire que la plupart des documentations ignorent : vous devez vérifier que chaque marchand possède un enregistrement commercial (سجل تجاري) valide et — pour les activités e-commerce — qu'il est authentifié sur منصة الأعمال (anciennement Maroof / معروف). Le badge Maroof indique aux consommateurs saoudiens qu'une boutique est licenciée, et les processeurs de paiement l'exigent désormais avant d'embarquer des vendeurs.

Le problème : la vérification officielle en Arabie Saoudite est répartie entre deux systèmes :

  1. Le Registre Commercial (السجل التجاري) — géré par le ministère du Commerce
  2. منصة معروف → منصة الأعمال — la couche d'authentification e-commerce (migrée en mars 2023)

Aucun de ces deux systèmes n'expose directement une API REST publique. La voie programmatique passe par واثق (Wathq) — la passerelle officielle de données commerciales saoudiennes sur developer.wathq.sa.

Ce guide vous montre comment intégrer Wathq pour construire un flux de vérification en temps réel en TypeScript.


Qu'est-ce que Maroof, et qu'a changé en 2023 ?

Maroof (معروف) a été lancée comme plateforme du ministère du Commerce pour certifier les boutiques en ligne saoudiennes. Tout magasin affichant le badge Maroof disposait d'un enregistrement commercial valide et était autorisé à exercer une activité de commerce électronique.

En mars 2023, le Ministère a migré l'authentification des e-boutiques vers منصة الأعمال (business.sa), la plateforme unifiée du Saudi Business Center. Le badge Maroof reste affiché sur les boutiques préalablement certifiées, mais les nouvelles immatriculations et renouvellements transitent désormais par business.sa. Côté utilisateur, rien n'a changé. Côté développeur qui construit une vérification dans une plateforme, le chemin est maintenant :

Numéro CR → API Wathq → statut actif + activité e-commerce confirmée


Wathq : La passerelle officielle des données commerciales

Wathq opère dans l'écosystème gouvernemental saoudien et fournit un point d'accès unique et authentifié à plusieurs sources de données gouvernementales. L'API Registre Commercial — version 6.7.0 au moment de la rédaction — est le service pertinent pour la vérification des marchands.

Accès à la plateforme :

  1. Créez un compte sur developer.wathq.sa
  2. Abonnez-vous à l'API Registre Commercial (environnement sandbox disponible)
  3. Obtenez vos identifiants Bearer token
  4. Passez en production après les tests en sandbox

Endpoints principaux :

EndpointFonction
GET /info/{id}Données de base : nom, statut, type d'activité, dates
GET /fullinfo/{id}Données complètes : propriétaires, capital, succursales
GET /owners/{id}Détail des actionnaires et parts sociales
GET /related/{id}/{idType}Tous les enregistrements liés à un identifiant national

Le paramètre id accepte :

  • Un numéro CR à 10 chiffres (format : 10xxxxxxxx)
  • Un numéro national unifié à 10 chiffres (format : 700xxxxxxx) — obligatoire pour les enregistrements actifs et en attente

Intégration TypeScript

Vérification de base du registre commercial

const WATHQ_BASE = process.env.WATHQ_BASE_URL!;
const WATHQ_TOKEN = process.env.WATHQ_API_TOKEN!;
 
interface CRInfo {
  crNumber: string;
  crName: string;
  status: string; // 'Active' | 'Expired' | 'Cancelled'
  activities: string[];
  issuanceDate: string;
  expiryDate: string;
}
 
async function verifyCR(id: string, lang: 'ar' | 'en' = 'ar'): Promise<CRInfo> {
  const res = await fetch(`${WATHQ_BASE}/info/${id}?language=${lang}`, {
    headers: {
      Authorization: `Bearer ${WATHQ_TOKEN}`,
      'Content-Type': 'application/json',
    },
  });
 
  if (res.status === 404) throw new Error('CR_NOT_FOUND');
  if (res.status === 401) throw new Error('WATHQ_AUTH_FAILED');
  if (res.status === 429) throw new Error('WATHQ_QUOTA_EXCEEDED');
  if (!res.ok) throw new Error(`WATHQ_ERROR_${res.status}`);
 
  return res.json();
}

Flux complet d'embarquement marchand

interface OnboardingResult {
  valid: boolean;
  crStatus: string;
  errorCode?: string;
}
 
async function onboardSaudiMerchant(
  crNumber: string,
  nationalId: string
): Promise<OnboardingResult> {
  // Étape 1 : Vérifier que le CR est actif
  const info = await verifyCR(crNumber);
  if (info.status !== 'Active') {
    return { valid: false, crStatus: info.status, errorCode: 'CR_NOT_ACTIVE' };
  }
 
  // Étape 2 : Confirmer la présence d'une activité e-commerce
  const hasEcommerceActivity = info.activities.some(
    (a) =>
      a.includes('تجارة إلكترونية') ||
      a.toLowerCase().includes('electronic commerce')
  );
  if (!hasEcommerceActivity) {
    return { valid: false, crStatus: info.status, errorCode: 'NO_ECOMMERCE_ACTIVITY' };
  }
 
  // Étape 3 : Vérifier que le propriétaire déclaré correspond au CR
  const ownersRes = await fetch(
    `${WATHQ_BASE}/owners/${crNumber}?language=ar`,
    { headers: { Authorization: `Bearer ${WATHQ_TOKEN}` } }
  );
  const ownersData = await ownersRes.json();
  const ownerMatch = ownersData.owners?.some(
    (o: { nationalId: string }) => o.nationalId === nationalId
  );
 
  if (!ownerMatch) {
    return { valid: false, crStatus: info.status, errorCode: 'OWNER_MISMATCH' };
  }
 
  return { valid: true, crStatus: info.status };
}

Quatre erreurs fréquentes et comment les éviter

1. La règle du numéro 700

Les enregistrements actifs et en attente ne peuvent être interrogés qu'avec le numéro national unifié à 10 chiffres commençant par 700. Passer un ancien numéro CR pour ces enregistrements retourne l'erreur 400.1.5. Collectez toujours les deux identifiants lors de l'inscription du marchand.

2. CR expirés avec badge Maroof encore visible

Le badge Maroof persiste sur les vitrines en ligne même après l'expiration du registre commercial. Ne faites jamais confiance au badge visuel seul. Interrogez Wathq à chaque embarquement et planifiez une re-vérification automatique tous les 30 jours.

3. Épuisement du quota (429)

Wathq impose des quotas d'appels selon le plan souscrit. Pour un embarquement de marchands à fort volume, mettez en cache les réponses Wathq dans Redis avec une clé basée sur le numéro CR et un TTL de 24 heures. La plupart des changements de statut CR interviennent sur un cycle mensuel.

4. Code d'activité inadapté

Un CR peut être actif mais enregistré pour une activité physique — services de réparation, par exemple — sans aucune classification e-commerce. Utilisez GET /fullinfo/{id} lors de l'embarquement pour lire la liste complète des activités et rejeter les CR qui n'ont pas de code d'activité commerce électronique ou commerce de détail.


Afficher le statut Maroof sur votre interface

L'authentification منصة الأعمال (successeur de Maroof) est une étape que le marchand réalise lui-même sur business.sa — il n'existe pas d'API pour la vérifier ou la déclencher programmatiquement en temps réel. Le schéma adopté par les intégrateurs de paiement saoudiens (HyperPay, Moyasar, STCPay) est :

  1. Collecter le numéro CR et le numéro national unifié du marchand
  2. Vérifier via Wathq que le CR est actif et comporte une activité e-commerce
  3. Demander au marchand de téléverser son certificat منصة الأعمال (PDF émis par business.sa)
  4. Afficher votre propre badge "Vendeur Vérifié" une fois les deux contrôles validés

Cette vérification CR fonctionne rarement seule

Dans les plateformes saoudiennes en production, la vérification du registre commercial est un nœud dans une chaîne de conformité plus large. Le même marchand aura également besoin de :

Ensemble, ces systèmes forment l'épine dorsale de la conformité dans toute marketplace B2B ou plateforme RH saoudienne.


Vous construisez un flux de vérification de marchands saoudiens et vous vous heurtez à des cas que la documentation ne couvre pas ? L'équipe Noqta a intégré Wathq, Qiwa, Mudad et ZATCA pour des plateformes marketplace dans le Golfe. Contactez-nous — nous cadrons votre couche de vérification en un seul appel.