# Erreur WhatsApp 131042 : problème de moyen de paiement

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

> Erreur WhatsApp 131042 : Meta refuse l'envoi faute de moyen de paiement valide sur le compte WhatsApp Business. Où ajouter la carte et comment vérifier.

L'erreur WhatsApp 131042 signifie que Meta refuse l'envoi à cause du moyen de paiement du compte
WhatsApp Business : aucune carte, une ligne de crédit dépassée, ou un compte mal configuré. Meta
facture les messages directement au client, pas via Genuka. Ajoutez ou corrigez le moyen de
paiement chez Meta, puis renvoyez.

## Que signifie l'erreur 131042 ?

> « There was an error related to your payment method. »
> — [Meta, codes d'erreur de la Cloud API](https://developers.facebook.com/documentation/business-messaging/whatsapp/support/error-codes#other-errors)

Meta demande de vérifier la configuration de la facturation et liste les causes courantes :

* aucun compte de paiement n'est rattaché au compte WhatsApp Business ;
* la ligne de crédit a dépassé sa limite ;
* la ligne de crédit (compte de paiement) n'est pas définie ou pas active ;
* le compte WhatsApp Business est supprimé ;
* le compte WhatsApp Business est suspendu ;
* le fuseau horaire n'est pas défini ;
* la devise n'est pas définie ;
* la demande « MessagingFor » (*On Behalf Of*) est en attente ou refusée.

Le titre associé au code dans le champ `message` est « Business eligibility payment issue »
([liste de 360dialog](https://docs.360dialog.com/docs/support/api-error-message-list)).

### Pourquoi mon abonnement Genuka WA ne suffit-il pas ?

Parce que Genuka est **Meta Tech Provider**, pas fournisseur de solutions (BSP). Chaque client
connecte son propre compte WhatsApp Business, et **Meta facture les messages directement sur ce
compte**, sans marge de Genuka. L'abonnement Genuka WA paie la plateforme, pas les messages : il
ne remplace pas la carte que Meta attend sur le portefeuille d'entreprise du client.

Ce que nous observons en pratique : un compte sans moyen de paiement peut créer des templates et
les faire approuver, mais chaque envoi revient en 131042. Et nous ne pouvons pas le vérifier à
l'avance, car Meta ne communique les informations de financement d'un compte qu'aux BSP.

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

* **Au premier envoi de template** d'un compte tout juste connecté, quand personne n'a encore
  ajouté de carte chez Meta.
* **Quand une carte expire ou est refusée** sur un compte qui envoyait jusque-là.
* **En pleine campagne** : tous les destinataires échouent pour la même raison.

### Où la voir dans Genuka WA ?

| Canal                                                           | Ce que vous recevez                                                                                                                    |
| --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| Réponse de `POST /api/v1/messages`                              | Un refus dont `meta.code` vaut `131042`, avec le texte de Meta dans `message`                                                          |
| Webhook `message_status`, si Meta signale l'échec après coup    | `data.status: "failed"`, `data.errors[0].code: 131042`                                                                                 |
| Campagne                                                        | Tous les destinataires passent `failed`. Quand Meta refuse dès l'appel, l'incident est en plus signalé une seule fois pour la campagne |
| Tableau de bord, fiche du client, quand Meta refuse dès l'appel | L'encadré « Meta refuse les envois sur ce numéro », avec le message de Meta et un bouton « Ajouter une carte chez Meta »               |
| WhatsApp, quand Meta refuse dès l'appel                         | Une alerte au partenaire, au plus une fois par semaine et par numéro                                                                   |

Meta indique que ses erreurs arrivent dans la réponse, par webhook, ou les deux
([Meta, codes d'erreur](https://developers.facebook.com/documentation/business-messaging/whatsapp/support/error-codes)).
Genuka WA ne déclenche l'encadré et l'alerte WhatsApp que sur un refus reçu **dès l'appel** : un
131042 qui n'arrive que par le webhook `message_status` passe le message en `failed`, sans encadré
ni alerte. Surveillez donc aussi le webhook.

## Comment corriger l'erreur 131042 ?

1. **Ouvrez les paramètres de paiement du compte chez Meta.** Depuis la fiche du client dans le
   tableau de bord, le bouton « Ajouter une carte chez Meta » ouvre directement la page du compte
   WhatsApp dans les paramètres de l'entreprise Meta, ou le centre de facturation quand
   l'identifiant du portefeuille est inconnu. C'est le propriétaire du compte, le client, qui doit
   agir : la carte est la sienne.
2. **Ajoutez ou remplacez le moyen de paiement**, puis vérifiez les autres causes de la liste de
   Meta : fuseau horaire et devise définis, compte ni suspendu ni supprimé.
3. **Confirmez-le dans Genuka WA** avec « Une carte est déjà enregistrée ». Nous ne pouvons pas le
   contrôler nous-mêmes : l'encadré revient de lui-même si Meta refuse dès l'appel un nouvel envoi
   pour la même raison.
4. **Testez avec un seul message** avant de relancer une campagne : un envoi accepté puis livré
   confirme que le blocage est levé.

**Node.js**

```ts
const response = await fetch("https://wa.genuka.com/api/v1/messages", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.GENUKA_WA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    connectionId: "con_1",
    to: "+237690000001",
    template: { name: "suivi_commande", language: "fr", body: ["Awa", "CMD-1042"] },
  }),
});
const json = await response.json();

if (!response.ok && json.meta?.code === 131042) {
  // Rien à réessayer : le client doit ajouter une carte sur son compte Meta.
  await notifyAccountOwner(json.meta.details ?? json.message); // votre fonction
}

// Dans votre route webhook, une fois la signature vérifiée : le même refus peut arriver après coup.
export async function onMessageStatus(event: {
  type: string;
  data: { status: string; errors?: { code: number; message?: string }[] };
}) {
  if (event.type !== "message_status" || event.data.status !== "failed") return;
  const error = event.data.errors?.find((e) => e.code === 131042);
  if (error) await notifyAccountOwner(error.message ?? "131042");
}
```

**Python**

```python
import os
import requests

response = requests.post(
    "https://wa.genuka.com/api/v1/messages",
    headers={
        "Authorization": f"Bearer {os.environ['GENUKA_WA_API_KEY']}",
        "User-Agent": "acme-crm/1.0 (+https://example.com)",
    },
    json={
        "connectionId": "con_1",
        "to": "+237690000001",
        "template": {"name": "suivi_commande", "language": "fr", "body": ["Awa", "CMD-1042"]},
    },
    timeout=30,
)
body = response.json()
if not response.ok and body.get("meta", {}).get("code") == 131042:
    # Rien à réessayer : le client doit ajouter une carte sur son compte Meta.
    notify_account_owner(body["meta"].get("details") or body.get("message"))  # votre fonction


# Dans votre route webhook, une fois la signature vérifiée : le même refus peut arriver après coup.
def on_message_status(event: dict) -> None:
    data = event.get("data", {})
    if event.get("type") != "message_status" or data.get("status") != "failed":
        return
    for error in data.get("errors", []):
        if error.get("code") == 131042:
            notify_account_owner(error.get("message") or "131042")
            return
```

## Comment éviter l'erreur 131042 ?

* **Faites ajouter la carte pendant la mise en route**, avant le premier template. Le tableau de
  bord affiche l'encadré « Ajoutez un moyen de paiement chez Meta » sur chaque numéro tant que ce
  n'est pas confirmé.
* **Expliquez la double facturation à vos clients dès le départ** : l'abonnement Genuka WA d'un
  côté, les messages facturés par Meta de l'autre.
* **Ne lancez pas une grosse campagne sur un compte qui n'a jamais envoyé** : un seul message de
  test révèle le problème pour le prix d'un message.

## Quels codes sont liés ?

* [131048](https://wa.genuka.com/docs/errors/131048) : une autre raison pour laquelle Meta refuse les envois d'un
  numéro, liée à la qualité et non au paiement.
* [132001](https://wa.genuka.com/docs/errors/132001) : un refus lié au template lui-même, que l'on confond parfois avec
  un blocage du compte.

Pour la facturation de l'abonnement Genuka WA, voir [Forfaits et facturation](https://wa.genuka.com/docs/billing).

## FAQ

### Mon abonnement Genuka WA couvre-t-il les messages WhatsApp ?

Non. Genuka facture un abonnement par numéro WhatsApp ; les messages sont facturés par Meta,
directement sur le compte WhatsApp Business du client, sans marge de Genuka. Voir les
[formules](https://wa.genuka.com/#pricing).

### Pourquoi Genuka WA ne détecte-t-il pas l'absence de carte avant l'envoi ?

Parce que Meta ne communique les informations de financement d'un compte WhatsApp Business qu'aux
BSP. Genuka étant Tech Provider, le premier signal fiable est le refus 131042 lui-même.

### Qui doit ajouter la carte ?

L'entreprise propriétaire du compte WhatsApp Business, dans son propre portefeuille Meta Business.
Un partenaire qui gère plusieurs clients ne peut pas payer à leur place via Genuka WA.

## Sources

* [Meta — Error codes](https://developers.facebook.com/documentation/business-messaging/whatsapp/support/error-codes)
* [360dialog — API error message list](https://docs.360dialog.com/docs/support/api-error-message-list)
