# Erreur WhatsApp 141010 : entreprise non vérifiée, solution

URL: https://wa.genuka.com/docs/errors/141010
Language: French

> Erreur WhatsApp 141010 « The Business has not passed business verification » : pourquoi vos templates OTP sont refusés, et comment les débloquer.

L'erreur WhatsApp 141010 signifie que l'entreprise propriétaire du compte WhatsApp n'a pas passé la
vérification d'entreprise de Meta. Elle s'affiche dans l'état de santé du compte, pas dans la
réponse d'un envoi. Conséquence concrète : les templates d'authentification (codes OTP) sont
refusés, alors que les templates marketing et utilitaires continuent de fonctionner.

## Que signifie l'erreur 141010 ?

Vous ne la trouverez pas dans la liste publique des codes d'erreur de la Cloud API. Elle vient du
champ `health_status`, que Meta expose sur le compte WhatsApp, le numéro et les templates. Pour
chaque entité concernée (numéro, compte, portefeuille d'entreprise, application), Meta peut y
joindre une liste `errors` dont chaque élément porte un `error_code`, une `error_description` et
une `possible_solution`
([Meta, Health status](https://developers.facebook.com/documentation/business-messaging/whatsapp/support/health-status)).

Sur les comptes connectés à Genuka WA dont l'entreprise n'est pas vérifiée, nous y lisons :

```json title="Extrait de health_status"
{
  "error_code": 141010,
  "error_description": "The Business has not passed business verification"
}
```

La vérification d'entreprise se fait sur le portefeuille Meta Business qui possède le compte
WhatsApp. Elle n'a rien à voir avec le statut de fournisseur de Genuka : Genuka est Meta Tech
Provider, c'est votre entreprise qui doit être vérifiée.

## Quand l'erreur 141010 apparaît-elle ?

Dès qu'un numéro est connecté sous un portefeuille non vérifié. L'Embedded Signup de Meta permet de
connecter un numéro sans vérification, et beaucoup d'entreprises démarrent ainsi. Le code reste
silencieux jusqu'au jour où vous créez un template d'authentification :

| Ce que vous faites                                                       | Entreprise non vérifiée                                                                         | Entreprise vérifiée                                                        |
| ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| Créer un template `MARKETING` ou `UTILITY`                               | Accepté                                                                                         | Accepté                                                                    |
| Créer un template `AUTHENTICATION` (OTP)                                 | Refusé : erreur [10](https://wa.genuka.com/docs/errors/10), « Application does not have permission for this action » | Accepté une fois le plafond passé à 2 000                                  |
| Joindre des destinataires uniques hors fenêtre de service, par 24 heures | 250 au départ                                                                                   | 2 000 si Meta valide la qualité de vos envois, puis relèvement automatique |

Les plafonds viennent de Meta : un portefeuille récent démarre à 250, et la vérification est l'une
des voies pour passer à 2 000
([Meta, Messaging limits](https://developers.facebook.com/documentation/business-messaging/whatsapp/messaging-limits)).

Pourquoi les codes OTP ? Meta réserve la catégorie `AUTHENTICATION` aux entreprises qui ont franchi
une de ses voies de montée en charge, comme la vérification d'entreprise, avec une limite d'au moins
2 000 conversations initiées par jour ; les deux conditions sont exigées ensemble
([360dialog, Authentication messages](https://docs.360dialog.com/docs/resources/authentication-messages)).
La vérification seule ne suffit donc pas : après une voie de montée en charge, Meta analyse la
qualité de vos envois et peut refuser le relèvement, auquel cas le plafond reste à son niveau
([Meta, Messaging limits](https://developers.facebook.com/documentation/business-messaging/whatsapp/messaging-limits)).
Sur 60 comptes clients de Genuka WA audités en septembre 2026, aucun des 45 comptes non vérifiés
ne détient de template d'authentification ; le seul du lot appartient à un compte vérifié.

### Où la voir dans Genuka WA ?

| Canal                                                        | Ce que vous voyez                                                                                                      |
| ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| `POST /api/v1/templates` avec `"category": "AUTHENTICATION"` | `403 meta_rejected`, `meta.code: 10`, message « Application does not have permission for this action »                 |
| Meta Business Suite                                          | L'état de vérification du portefeuille, section **Centre de sécurité**                                                 |
| Serveur MCP de Genuka, outil `create_template`               | L'erreur arrive accompagnée d'une explication de ce cas pour votre agent IA — voir [Agents IA](https://wa.genuka.com/docs/guides/ai-agents) |

L'API Genuka WA ne relaie pas `health_status` lui-même : vous n'avez pas de jeton Meta pour
l'interroger, et l'état de vérification se lit plus simplement dans Meta Business Suite.

## Comment corriger l'erreur 141010 ?

1. **Vérifiez l'état actuel.** Dans Meta Business Suite, ouvrez **Centre de sécurité > Vérification
   de l'entreprise** sur le portefeuille qui possède le compte WhatsApp
   ([Meta, erreurs de l'Embedded Signup](https://developers.facebook.com/documentation/business-messaging/whatsapp/embedded-signup/errors)).
   Si vous appelez Graph vous-même, `GET /{WABA_ID}?fields=business_verification_status,health_status`
   renvoie les deux informations ; Meta documente notamment les valeurs `VERIFIED`, `PENDING` et
   `NOT_VERIFIED` pour la première
   ([Meta, WhatsApp Business Account API](https://developers.facebook.com/documentation/business-messaging/whatsapp/reference/whatsapp-business-account/whatsapp-business-account-api)).
   Comparez sans tenir compte de la casse : l'API nous a renvoyé `not_verified`, en minuscules.
2. **Lancez la vérification.** Elle se demande depuis Meta Business Suite, sur ce même portefeuille
   ([Meta, Faire vérifier votre entreprise](https://www.facebook.com/business/help/2058515294227817)).
   Genuka n'intervient pas dans cette démarche : elle concerne votre entreprise et Meta.
3. **Recréez le template d'authentification.** Une fois l'entreprise vérifiée et le plafond passé à
   2 000 (visible dans WhatsApp Manager, **Account tools > Messaging limits**, ou par le champ
   `whatsapp_business_manager_messaging_limit` du numéro), soumettez à nouveau le même template. Meta
   rédige lui-même le texte des templates d'authentification : vous ne fournissez que la structure.

**Node.js**

```ts
const response = await fetch("https://wa.genuka.com/api/v1/templates", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.GENUKA_WA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    connectionId: "con_1",
    name: "verification_code",
    language: "fr",
    category: "AUTHENTICATION",
    messageSendTtlSeconds: 600,
    components: [
      { type: "BODY", add_security_recommendation: true },
      { type: "FOOTER", code_expiration_minutes: 10 },
      { type: "BUTTONS", buttons: [{ type: "OTP", otp_type: "COPY_CODE", text: "Copier le code" }] },
    ],
  }),
});
const json = await response.json();

if (response.status === 403 && json.meta?.code === 10) {
  // Entreprise non vérifiée (141010) : rien à corriger dans le code ni dans la clé.
  throw new Error("Vérification d'entreprise Meta requise pour les templates OTP");
}
if (!response.ok) throw new Error(`${response.status} ${json.error}: ${json.message ?? ""}`);
console.log(json.data.id, json.data.status);
```

**Python**

```python
import os
import requests

response = requests.post(
    "https://wa.genuka.com/api/v1/templates",
    headers={"Authorization": f"Bearer {os.environ['GENUKA_WA_API_KEY']}"},
    json={
        "connectionId": "con_1",
        "name": "verification_code",
        "language": "fr",
        "category": "AUTHENTICATION",
        "messageSendTtlSeconds": 600,
        "components": [
            {"type": "BODY", "add_security_recommendation": True},
            {"type": "FOOTER", "code_expiration_minutes": 10},
            {"type": "BUTTONS", "buttons": [{"type": "OTP", "otp_type": "COPY_CODE", "text": "Copier le code"}]},
        ],
    },
    timeout=30,
)
body = response.json()

if response.status_code == 403 and (body.get("meta") or {}).get("code") == 10:
    # Entreprise non vérifiée (141010) : rien à corriger dans le code ni dans la clé.
    raise RuntimeError("Vérification d'entreprise Meta requise pour les templates OTP")
response.raise_for_status()
print(body["data"]["id"], body["data"]["status"])
```

**PHP**

```php
<?php
$ch = curl_init("https://wa.genuka.com/api/v1/templates");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_USERAGENT => "acme-crm/1.0 (+https://example.com)",
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer " . getenv("GENUKA_WA_API_KEY"),
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "connectionId" => "con_1",
        "name" => "verification_code",
        "language" => "fr",
        "category" => "AUTHENTICATION",
        "messageSendTtlSeconds" => 600,
        "components" => [
            ["type" => "BODY", "add_security_recommendation" => true],
            ["type" => "FOOTER", "code_expiration_minutes" => 10],
            ["type" => "BUTTONS", "buttons" => [["type" => "OTP", "otp_type" => "COPY_CODE", "text" => "Copier le code"]]],
        ],
    ]),
]);
$body = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);

if ($status === 403 && ($body["meta"]["code"] ?? null) === 10) {
    // Entreprise non vérifiée (141010) : rien à corriger dans le code ni dans la clé.
    throw new RuntimeException("Vérification d'entreprise Meta requise pour les templates OTP");
}
echo $body["data"]["id"] ?? $body["error"];
```

**curl**

```bash
curl -X POST https://wa.genuka.com/api/v1/templates \
  -H "Authorization: Bearer $GENUKA_WA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "connectionId": "con_1",
    "name": "verification_code",
    "language": "fr",
    "category": "AUTHENTICATION",
    "messageSendTtlSeconds": 600,
    "components": [
      { "type": "BODY", "add_security_recommendation": true },
      { "type": "FOOTER", "code_expiration_minutes": 10 },
      { "type": "BUTTONS", "buttons": [ { "type": "OTP", "otp_type": "COPY_CODE", "text": "Copier le code" } ] }
    ]
  }'
# Entreprise non vérifiée : 403 { "error": "meta_rejected", "meta": { "code": 10, … } }
```

### Et si l'entreprise ne peut pas être vérifiée tout de suite ?

Meta décrit deux autres voies pour monter à 2 000 destinataires par jour : la vérification menée
par le partenaire qui vous a onboardé, et 2 000 messages délivrés hors fenêtre de service à des
destinataires uniques sur 30 jours glissants, avec des templates bien notés
([Meta, Messaging limits](https://developers.facebook.com/documentation/business-messaging/whatsapp/messaging-limits)).
Elles relèvent votre plafond d'envoi. D'après 360dialog, la condition des codes OTP porte sur une
voie de montée en charge franchie, pas sur la seule vérification ; mais aucun des comptes non
vérifiés que nous avons audités ne détient de template d'authentification. En attendant, envoyez
vos codes par SMS ou par e-mail, et gardez WhatsApp pour vos notifications : voir
[API WhatsApp sans vérification Meta](https://wa.genuka.com/docs/guides/without-meta-verification).

## Comment éviter l'erreur 141010 ?

* **Lancez la vérification dès que vous prévoyez des codes OTP**, avant d'écrire le code du parcours
  de connexion : c'est la seule étape que vous ne contrôlez pas.
* **Faites vérifier le bon portefeuille.** Celui qui possède le compte WhatsApp connecté, pas un
  autre portefeuille de la même société.
* **Testez la création du template `AUTHENTICATION` sur le compte de production** : un compte de
  test non vérifié échouera toujours, quel que soit votre code.

## Quels codes sont liés ?

* [10](https://wa.genuka.com/docs/errors/10) : la réponse que renvoie Meta à la création du template OTP.
* [200](https://wa.genuka.com/docs/errors/200) : un vrai problème de permission ou d'accès au compte, à ne pas
  confondre.
* `2388098` : pendant l'Embedded Signup, Meta limite le nombre de comptes WhatsApp qu'une entreprise
  non vérifiée peut créer
  ([Meta, erreurs de l'Embedded Signup](https://developers.facebook.com/documentation/business-messaging/whatsapp/embedded-signup/errors)).

## FAQ

### Peut-on envoyer des messages WhatsApp sans vérification d'entreprise ?

Oui. Les templates marketing et utilitaires, et les réponses dans la fenêtre de service de 24
heures, fonctionnent sans vérification, dans la limite de 250 destinataires uniques par jour au
départ. Seuls les codes OTP l'exigent.

### Pourquoi l'erreur parle-t-elle d'une permission de l'application ?

Parce que Meta répond à la création du template par une erreur de permission générique, code 10.
La vraie cause est l'entreprise : le même compte crée sans problème des templates marketing.

### Pourquoi 141010 n'est-il pas dans la liste des codes d'erreur de Meta ?

C'est un code de diagnostic de `health_status`, qui décrit pourquoi une entité est limitée, et non
un code renvoyé par un appel d'API. La liste publique de Meta ne couvre que les seconds.

### Faut-il recréer le template après la vérification ?

Oui. Un template refusé à la création n'existe pas chez Meta : soumettez-le à nouveau une fois
l'entreprise vérifiée et le plafond du compte passé à 2 000.

## Sources

* [Meta — Health status](https://developers.facebook.com/documentation/business-messaging/whatsapp/support/health-status)
* [Meta — Messaging limits](https://developers.facebook.com/documentation/business-messaging/whatsapp/messaging-limits)
* [Meta — WhatsApp Business Account API](https://developers.facebook.com/documentation/business-messaging/whatsapp/reference/whatsapp-business-account/whatsapp-business-account-api)
* [Meta — Embedded Signup flow errors](https://developers.facebook.com/documentation/business-messaging/whatsapp/embedded-signup/errors)
* [Meta — Error codes](https://developers.facebook.com/documentation/business-messaging/whatsapp/support/error-codes)
* [Meta — Faire vérifier votre entreprise dans Meta Business Suite](https://www.facebook.com/business/help/2058515294227817)
* [360dialog — Authentication messages](https://docs.360dialog.com/docs/resources/authentication-messages)
