• whatsapp
  • agents

7 mistakes that take a WhatsApp AI agent down in production (and how to catch each one first)

In short

Chat still replies while reminders stop. The causes are billing, currency or verification, a service window counted from the wrong side, templates, a handoff with no transcript, a bad phone number, and a workflow that reports success when nothing was delivered. Delivery status shows each failure before a customer does.

Seven failures take a WhatsApp agent down while the thread still looks fine: billing, currency or verification, a 24-hour window counted from the agent's reply, a bad or unreviewed template, a handoff with no transcript, a malformed phone number, and a run marked success when nothing was delivered. An expired token belongs in that last group. Delivery status (delivered, read, or failed) surfaces each one before a customer does.

See WhatsApp AI agents.

What changed on October 1, 2026

The pricing page, updated on September 30, 2026, applies from October 1, 2026, in the messaging account's timezone. Meta charges a delivered message. A zero invoice does not prove the reminder went out. The free entry point window stays free of charge Source [1]. If two pages disagree, the WhatsApp Manager invoice decides Source [1]Source [11].

  • Since October 1, 2026, a reply inside the 24-hour window is charged at that country's utility rate. Inside the allowance below, the type is free_customer_service (free service). Above it, the type is regular (billed) Source [1].
  • Each phone number gets 1,000 free service messages a month, with no rollover. The count resets at midnight in the account timezone Source [1].
  • With no payment method, only those free messages go out. Utility inside an open window is charged too, as of October 1, 2026, and it sits outside the allowance. That send was free from July 1, 2025. Only service messages draw on the 1,000 Source [1].

1. No payment method on the account

What happens. Reminders and notices go out as templates and fail with error 131042, no payment method. Published causes: payment account not on the WhatsApp Business account, credit line over the limit or inactive, account deleted or suspended, timezone or currency missing, or an On Behalf Of request (to operate for another business) pending or declined Source [2]. The template can fail while a free-form reply still goes out inside the 1,000 Source [1]. A solution provider or a directly integrated business with no payment method on September 30, 2026 loses service delivery when charging starts on October 1 Source [1].

How it shows up. The thread still answers, and tomorrow's reminder never leaves. We saw this in production.

How to catch it. Read health_status: the phone (PHONE_NUMBER), the WhatsApp Business account (WABA), the business (BUSINESS), and the app (APP). BLOCKED blocks the set. Otherwise LIMITED limits it Source [3]. On the status webhook, failed (the send failed) with 131042 confirms the cause Source [4].

How to avoid it. Add the card in Billing Hub, on the messaging account Source [1]. We saw the card on the ads account in production, with the messaging account unpaid. The payment account has to sit on the WhatsApp Business account Source [2].

2. No currency, or the business is not verified

What happens. With no currency, the API returns error 131042 Source [2]. Unverified, a new portfolio is capped at 2 numbers until verification or a messaging limit of 2,000, then the cap is 20 Source [8]. Template caps are 250 unverified, 6,000 with verification plus an approved display name Source [6]. Set currency at creation. Since July 1, 2026 there are 16 currencies, and a later change is a migration Source [1].

How it shows up. The number limits or blocks, the reminder goes quiet, and a live test can still pass. We saw health_status return 141006 and 141010 in production. Missing currency is still error 131042. Missing verification is the cap on numbers and templates Source [2]Source [6]Source [8].

How to catch it. A LIMITED node includes additional_info (extra detail). A BLOCKED node includes error_code (the code), error_description (what went wrong), and possible_solution (what to do) Source [3]. Registration has to read CONNECTED. A disconnected number does not send Source [8].

How to avoid it. Verify the portfolio before you depend on automatic reminders, and before a third number. Currency is fixed at creation Source [1]Source [8].

3. The 24-hour window, counted from the wrong side

What happens. The window lasts 24 hours and opens or resets only when the person messages or calls. An agent reply does not open it Source [5]. Outside it, free-form text returns error 131047, meaning more than 24 hours have passed since the recipient last replied. Send a template Source [2]. Meta documents a rare case in which the message arrives and you still cannot reply inside the window Source [5]. Tomorrow's reminder needs an approved utility template. A promotion, or copy mixed with a promotion, is marketing Source [7].

How it shows up. The demo works because someone texted. The morning reminder does not go out.

How to catch it. Free-form text to an internal number quiet for more than 24 hours has to return 131047. The approved utility template has to reach delivered, meaning it reached the phone Source [2]Source [4].

How to avoid it. Store the time of the person's last message, and approve the reminder before go-live. If order matters, wait for delivered. Several messages have no guaranteed order Source [6]. read (opened) already means delivered, and the delivered webhook may never arrive Source [4].

4. Wrong template category, or the template is still in review

What happens. Only APPROVED sends. Review can take 24 hours. Rejected, paused, and disabled templates do not send. An active template still sends at quality pending, high, medium, or low Source [6]. Error 132001 means a missing language or a template that is not approved Source [2]. Since April 9, 2025, utility that WhatsApp reads as marketing is approved as marketing Source [7]. A normal change gets one day's notice, switches the category, and stays APPROVED. An abuse warning from April 16, 2025 drops that notice. template_category_update reports the switch. The API shows category (in use) and correct_category (what Meta considers correct). You pay whichever category was billed Source [7]. Error 131064, an abuse penalty, blocks templates and direct messages until it ends Source [2]. Appeal within 60 days in Business Support Home Source [7].

How it shows up. A send fails on a template that looked published, or the marketing bill grows in a category you did not choose.

How to catch it. Read the status, subscribe to message_template_status_update (a status change), and do not schedule a template still in review Source [6]. Category switches arrive on template_category_update Source [7].

How to avoid it. Keep offers, coupons, and invitations out of utility copy. One promotional line makes the template marketing Source [7]. Resubmitting the same text feeds error 131064 Source [2].

5. Handing the chat to a person with no transcript

What happens. The alert reaches someone who cannot see the conversation. They ask the customer to repeat it, and the customer decides the company forgot. We saw this in production. This failure does not come from the Cloud API. The transcript lives in your system.

How it shows up. The customer says they already explained, and your side says nothing arrived. The alert went out without the transcript.

How to catch it. The test payload needs the person's recent messages, the agent's last reply, and the reason for the handoff. If one field is missing, the test fails.

How to avoid it. Write the transcript in the same step as the alert. If that write fails, the handoff fails with it. Do not send only the phone number.

6. The phone number is in the wrong shape

What happens. The Cloud API accepts a plus, hyphens, parentheses, and spaces, and recommends a plus with the country code Source [5]Source [8]. Drop the plus and it prefixes the business number's country. (631) 555-1234 becomes +916315551234 for a business number in India Source [5]. For Brazil and Mexico, the API may change that prefix. Meta calls this standard behavior, not a bug Source [5]Source [8]. The value you sent may not match wa_id, the contact's WhatsApp id Source [5]. We saw a Brazilian mobile missing the ninth digit in production, and a sheet that duplicated that 9. A 10-digit US number with no country code fails the same way Source [5].

How it shows up. Some spreadsheet rows never arrive, or wa_id opens a different thread.

How to catch it. Test plus, no plus, a duplicated Brazilian 9, a 10-digit US number, and Mexico. Store the value you sent and the wa_id. Do not require the two strings to match for Brazil or Mexico Source [5]Source [8].

How to avoid it. Normalize to E.164 before any send: a plus sign, the country code, and the number, digits only. Do not pass the raw spreadsheet cell.

7. "Success" when nothing was sent

What happens. A query with no rows lets the next step run on an empty field. We saw this in production. Success JSON means Meta accepted the send, not that it delivered Source [5]. Webhook statuses are sent (sent out), delivered (on the phone), read (opened), failed (with the code), and played (media played) Source [4].

The other case is an expired token. Embedded Signup builds Facebook Login for Business from "WhatsApp Embedded Signup Configuration With 60 Expiration Token", a 60-day token Source [9]. We saw HTTP 401 (unauthorized) in production after it expired. Read code and details. Code 190 means the token expired. Code 0 means the app user was not authenticated: expired, invalidated, or a setting they changed Source [2].

A system user token is separate. Refresh it every 60 days with grant_type=fb_exchange_token and set_token_expires_in_60_days=true (app id, secret, current token). Skip that and you lose it. The new token replaces the old one, valid until the original date. Revoke it after that Source [12]. Non-expiring tokens exist, and the page recommends expiring ones. If a business allows only expiring tokens, omitting the flag or sending false makes the call fail Source [12]. Versions 2 and 3, public previews included, stop on October 15, 2026. Move to version 4 before that date Source [9]Source [10].

How it shows up. The console is green and the customer gets nothing. With the token, yesterday worked and today authentication fails. The run counter hides both.

How to catch it. Over seven days, compare API accepts with delivered or read. Treat 190 and 0 as failures Source [2]. On the 60-day token, record the issue date and alarm before day 60 Source [9].

How to avoid it. Count success only on delivered or read. An empty query stops the run. The short wait on the morning check is a bar samambai sets, not a Meta deadline.

What not to do

Do not send without opt-in, consent for that contact Source [5]. Do not pull a live card to force 131042. Do not treat a zero invoice as a send Source [1]. Do not time the window from the agent's message Source [5]. Do not schedule a template unless it is APPROVED, and do not hide marketing in utility copy Source [6]Source [7]. Do not pass a spreadsheet number Source [5]. Do not hand off without the transcript. Do not use the ads account as the messaging account.

What to monitor every week

On the live number:

  • health_status for PHONE_NUMBER, WABA, BUSINESS, and APP anything other than AVAILABLE Source [3].
  • failed over seven days: 131042, 131047, 132001, and 190 Source [2]Source [4].
  • API accepts against delivered or read Source [4]Source [5].
  • Any template that is not APPROVED, and any template_category_update Source [6]Source [7].
  • Service volume near 1,000 per number for the month. Past that, the type is regular. With no card, that message is not delivered Source [1]Source [4].
  • An alarm before day 60 if the token is the 60-day one Source [9].
  • Each morning, one approved utility template to an internal number. Each week, free-form text outside the window has to return 131047, and the utility template has to reach delivered Source [2]Source [4].
  • Test numbers: plus, no plus, a duplicated Brazilian 9, a 10-digit US number, and Mexico Source [5]Source [8].

When not to hire samambai

Skip samambai if one person on the WhatsApp Business app can carry the volume, with no system behind the number.

Skip it if a product for your industry already runs the inbox, with no outside CRM, ERP, or calendar, no reminder it fails to send, and no plan to outgrow it. See off the shelf or custom.

Skip it if you will not add a payment method, verify the business, or approve a template before go-live. Skip it if nobody reads the handoff. Skip it for a guaranteed category, a per-message rate, or a promise that Meta will not restrict the account. Category, price, and delivery belong to Meta Source [1]Source [7].

Do not buy this for customers who are not on WhatsApp. In the US that is often iMessage and SMS. A US team selling into Latin America, Spain, or Israel is different: those customers are on WhatsApp. Prices are in US dollars.

The studio is in São Paulo and has shipped, in Portuguese and English, for teams in São Paulo, New York, Madrid, and Tel Aviv. A two-week sprint (US$1,200, cancel anytime) fits a live agent with account, templates, and access ready. A project from US$3,000 fits an agent not yet in the system: fixed scope, time, and price, one delivery each sprint, then support. A partnership from US$900 a month fits when the weekly check stays with the studio (roadmap, priority, monthly check-in). All three are on pricing. The first call is 30 minutes, with no commitment. Automation takes 2 to 4 weeks. A project takes 4 to 8, in sprints of 2. That does not cover a Meta outage.

Questions

Why does the chat reply when the reminder never goes out?

A free-form reply inside the window is a service message and, as of October 1, 2026, the first 1,000 delivered service messages per number each month are not charged. A reminder is a template: with no payment method it fails with 131042, and utility does not use that free tier. We saw this pattern in production [1][2].

Does the 24-hour window reset when the agent replies?

No. The window opens and resets when the person sends a message or places a call. Outside it, free-form text returns 131047, and the way back in is an already approved template [2][5].

Are in-window replies billed as of October 1?

Yes, after a free tier: each business phone number gets 1,000 delivered service messages a month, with no rollover, and anything past that is charged. A utility template inside an open window is also charged as of October 1, 2026, and it does not get those 1,000 [1].

Do we still need a card inside the 1,000 free messages?

Yes, if the agent sends templates. The free tier covers service messages only, and utility is charged as of October 1, 2026 even while the window is open. With no card, Meta delivers service messages inside the tier and does not deliver them after the tier is used up [1].

What does it cost to fix an agent that is already live?

If the account, the templates, and the access already exist, a two-week sprint is US$1,200 and you can cancel whenever you want. If the agent still has to be built and wired to your system, a project starts at US$3,000, and if weekly monitoring stays with the studio a partnership starts at US$900 a month. The first conversation is 30 minutes and creates no commitment.

Sources

  1. Pricing on the WhatsApp Business Platform. Meta for Developers. . back to text
  2. Cloud API error codes. Meta for Developers. . back to text
  3. Messaging and calling health status. Meta for Developers. . back to text
  4. Status messages webhook reference. Meta for Developers. . back to text
  5. Service messages. Meta for Developers. . back to text
  6. Message templates. Meta for Developers. . back to text
  7. Template categorization. Meta for Developers. . back to text
  8. Business phone numbers. Meta for Developers. . back to text
  9. Embedded Signup implementation. Meta for Developers. . back to text
  10. Embedded Signup versions. Meta for Developers. . back to text
  11. Pricing for non-template messages. Meta for Developers. . back to text
  12. Install apps, generate, refresh, and revoke tokens. Meta for Developers. . back to text

Want an AI agent on WhatsApp?

A 30-minute call, no strings attached.

or write to contato@samambai.com