Troubleshooting: WhatsApp sends blocked by a WABA billing failure (WHATSAPP_BILLING_ISSUE)
Every WhatsApp send against your WABA fails with HTTP 409 and the codeWHATSAPP_BILLING_ISSUE (Meta error 131042 — “Business eligibility
payment issue”). Meta refuses every send — template and free-form alike —
because the payment method attached to the WABA is missing, declined, or
expired, or a Pay-as-you-go balance has run dry. The stop is on Meta’s
billing layer, not on your Orbit connection or your templates.
Billing holds live on Meta’s side, not Orbit’s — Orbit relays the
refusal and returns a deterministic 409. Devotel never sees your card;
the fix happens entirely in Meta Business Manager. Nothing here changes
your Devotel wallet or credits.
Symptom map
Three look-alike codes demand different fixes — check which one your logs
actually carry:
WHATSAPP_ACCOUNT_LOCKED(Meta 131031) — a policy lock. Every send fails, but re-authentication and billing updates both do nothing; only a Meta Business Support appeal lifts it. See the account-lock section of Troubleshoot the WhatsApp connection.WHATSAPP_CONNECTION_INVALID— a dead or revoked access token. Fix is re-running Embedded Sign-up, not a billing update.WHATSAPP_BILLING_ISSUE— the WABA itself is healthy and the token is fine; Meta refuses sends only until billing is resolved. That is this page.
Read the failure
The send API refuses deterministically — the call fails before Meta would queue anything:details.whatsappErrorCode: 131042 confirms the refusal came straight
from Meta’s billing eligibility check. When Orbit can attach its in-app
guidance, details also carries a presentation block (fixSteps plus a
deep-link to the WABA’s payment page) — the dashboard banner renders from
that block directly.
Meta’s own Cloud API rejection, which Orbit relays, looks like this:
131042 means the same thing: billing, nothing else.
Fix — update billing in Meta Business Manager
- Open the WABA’s payment page. In Meta Business Manager go to Billing & payments → Payment settings (or, from the Orbit dashboard banner, click Fix billing on Meta — it deep-links to the offending WABA when Orbit knows which WABA failed).
- Repair the payment method. If the card was declined or expired, update it or add a new one. If the WABA bills Pay-as-you-go instead of a card, top the balance back up above zero.
- Wait for Meta to confirm. Meta re-checks eligibility within a few minutes of the update; during that window sends still return 409. There is no re-connect step at Orbit — the stored token and WABA row are untouched by a billing fix.
- Re-send. Once the hold clears, sends pass immediately — queued campaign sends are not auto-replayed, so re-send the failed batch.
Verify before re-sending
Check the consolidated health surface — it rolls up the WhatsApp verification posture with every other trust channel:meta.request_id from a successful re-send is the confirmation the hold
lifted. One check, one re-send — no polling loop.
What not to do
- Do not retry-loop the send. The refusal is deterministic — the same request returns the same 409 until the billing state changes at Meta. A retry loop burns your API rate budget and marks every attempt as a failed send. Fix billing first, then re-send once.
- Do not re-run Embedded Sign-up. Re-authentication replaces tokens; it cannot touch Meta’s billing eligibility. The connect layer is healthy here and re-running it changes nothing.
- Do not look for a payment method in Orbit. Devotel never holds the WABA’s card — paid WhatsApp conversation charges settle between you and Meta directly. The Orbit wallet and spend caps are a separate ledger and stay unaffected.
- Do not disconnect and re-connect the WABA. Re-binding a billing- held WABA preserves the hold; sends fail identically until Meta accepts the payment update.
Escalation payload
If you updated billing at Meta and sends still return 409 after a few minutes, email whatsapp-support@devotel.io with:- Your WABA id (Meta Business Manager → WhatsApp Manager, or the
waba_idon a template record). - The most recent failing
meta.request_idfrom a re-send attempt after the billing update. - Which billing model the WABA uses (card on file or Pay-as-you-go).
Related codes
- Troubleshoot the WhatsApp connection —
WHATSAPP_ACCOUNT_LOCKED(Meta 131031) policy locks,WHATSAPP_CONNECTION_INVALIDtoken faults, andWHATSAPP_TOKEN_EXPIRED. - Troubleshoot a WhatsApp template — pending, rejected, paused, and reclassified templates once billing is healthy again.
- Error codes — the full
WHATSAPP_*catalog with HTTP statuses, including every Meta 13xxxx code Orbit maps.