> ## Documentation Index
> Fetch the complete documentation index at: https://developer.zapsterapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# WhatsApp authentication template creation error (code 10, subcode 2388185)

> Why Meta rejects the authentication/OTP template with "This WhatsApp Business account doesn't have permission to create a message template" (code 10, error_subcode 2388185), how to diagnose it, and how to unlock the AUTHENTICATION category.

When you create a template in the **AUTHENTICATION category** (OTP, the "copy code" button) in WhatsApp Manager or through the Graph API, Meta may reject it with a generic, misleading error: **"This WhatsApp Business account doesn't have permission to create a message template"**. In the API, the same error appears as *"Application does not have permission for this action"* with `code: 10` and `error_subcode: 2388185`.

The message suggests a problem with your account or with the template content, but it is almost never either one. The AUTHENTICATION category has an eligibility requirement of its own that UTILITY and MARKETING do not. This guide shows how to confirm the diagnosis and how to unlock the category.

## What is the exact error?

The same error appears in two forms, depending on where you try to create the template.

**In WhatsApp Manager (UI):**

> Can't create message template
>
> This WhatsApp Business account doesn't have permission to create a message template.

**In the Graph API** (`POST /{WABA_ID}/message_templates` with `category: "AUTHENTICATION"`):

```json theme={null}
{
  "error": {
    "message": "Application does not have permission for this action",
    "type": "OAuthException",
    "code": 10,
    "error_subcode": 2388185,
    "is_transient": false,
    "fbtrace_id": "AbCdEf123..."
  }
}
```

The UI simply re-displays that API error. The `is_transient: false` confirms that repeating the call will not help, and the `fbtrace_id` is the identifier Meta asks for when you open a support ticket.

<Info>
  Search terms: *whatsapp authentication template not allowed*, *code 10 authentication template*, *error\_subcode 2388185*, *can create utility but not authentication template whatsapp*. It is the same problem described here.
</Info>

## Why does this happen?

Because the **AUTHENTICATION category is restricted** and has a separate eligibility gate. On top of what UTILITY and MARKETING already require, an authentication template is only unlocked when the account meets two requirements:

1. **Business verification through one of the official scaling paths** (Meta's "scaling paths"): direct Business Verification, partner-led verification through a Meta partner, or the Quality Messaging program.
2. **A minimum messaging volume/tier.** Accounts in the starting tier cannot send authentication messages. Meta cites, as a reference, something around **2,000 messages delivered to unique users in 30 days** (outside the 24h window, with good-quality templates).

There is no "enable authentication" button and no terms opt-in. The path is to verify the business and scale the tier. Since late 2025, Meta started blocking at template creation, instead of blocking only at send time.

It is worth reinforcing what is **not** the cause:

* **It is not the template content.** The same text, body, and button in another category passes; only AUTHENTICATION is rejected.
* **It is not a bug or a state of your specific account.** The error reproduces across different WABA accounts, always only in the AUTHENTICATION category.
* **It is not a country restriction.** The gate applies to any country; the `authentication_international` you see in some places is a pricing band, not a block.

The signal that closes the diagnosis is simple: **UTILITY and MARKETING templates are created normally on the same account, and only the AUTHENTICATION one fails.**

## How to diagnose it?

The most direct way to isolate the gate is to create the same template in two categories and compare the response. If `category: "UTILITY"` passes and `category: "AUTHENTICATION"` returns `code: 10 / error_subcode: 2388185`, the problem is the category, not the content or the account.

<Note>
  The commands below talk directly to Meta's Graph API and require a **WABA access token**. If you integrate through Zapster, on most accounts that token stays on our side (you use the Zapster API without handling the WABA token), so you probably will not be able to run these `curl` calls yourself. In that case, [contact support](https://wa.me/5587999079455?text=Hi,%20I%20want%20to%20check%20my%20account%20eligibility%20for%20WhatsApp%20authentication%20templates) and we will run the eligibility check for you. The examples that follow are for those who have direct access to the token.
</Note>

<Warning>
  This `POST` **actually creates the template** if the account has permission. Use it only for occasional manual diagnosis and delete the test template afterward. For a side-effect-free check, prefer the read-only signals described further below.
</Warning>

```bash theme={null}
curl -X POST "https://graph.facebook.com/v25.0/{WABA_ID}/message_templates" \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "otp_test",
    "language": "en_US",
    "category": "AUTHENTICATION",
    "message_send_ttl_seconds": 60,
    "components": [
      { "type": "BODY", "add_security_recommendation": true },
      { "type": "FOOTER", "code_expiration_minutes": 5 },
      { "type": "BUTTONS", "buttons": [{ "type": "OTP", "otp_type": "COPY_CODE" }] }
    ]
  }'
```

Switch `category` to `"UTILITY"` (with a simple body, no OTP button) and run it again. If UTILITY creates and AUTHENTICATION returns `2388185`, the gate is confirmed.

### How to check eligibility without creating anything?

No endpoint returns a definitive boolean for "can create authentication", but there are read-only signals that work as a strong proxy:

* **Messaging tier (the cleanest signal).** It is the same ladder Meta's UI shows: **250 → 2,000 → 10,000 → 100,000 → unlimited**. Tier 250 (starting) usually means authentication is blocked; from 2,000 up, the account is very likely eligible. There is no "1,000" tier (that number, common on partner blogs, is outdated).
* **`health_status`.** `GET /{PHONE_NUMBER_ID}?fields=health_status` returns `can_send_message` per entity (`PHONE_NUMBER`, `WABA`, `BUSINESS`, `APP`) as `AVAILABLE`, `LIMITED`, or `BLOCKED`. A `BUSINESS` in `LIMITED` or `BLOCKED` usually indicates pending business verification.
* **Existing authentication templates.** `GET /{WABA_ID}/message_templates?category=AUTHENTICATION&fields=name,status`. If any already exist, the account can create them. An empty list does not prove the opposite, so it only counts as a signal when there is a result.

## How to fix it?

The path is to unlock the AUTHENTICATION category by meeting Meta's official requirements. There is no configuration shortcut.

1. **Complete business verification** through one of the three scaling paths: direct Business Verification, partner-led verification, or the Quality Messaging program. Without business verification, authentication stays blocked.
2. **Raise the messaging tier.** The real gate is volume. While the account is in the starting tier (250), the category tends to stay blocked. Meta's reference is around 2,000 messages delivered to unique users in 30 days, with good quality and outside the 24h window.
3. **Wait for the automatic release.** When the account becomes eligible, the category usually unlocks in about **6 hours**, with no manual action.

<Note>
  Deadlines and limits are set by Meta and may change. This guide describes observed behavior, not a guarantee from Meta.
</Note>

If you have already completed business verification, are above the starting tier, and the error **persists**, then it is worth opening a ticket with Meta support. Include the `error_subcode: 2388185` and the `fbtrace_id` from the API response, which is what speeds up their analysis.

While the AUTHENTICATION category is not unlocked, a common stopgap is to send the OTP through another channel (SMS or email) and migrate to the authentication template once the account becomes eligible.

## What does NOT fix the error?

Two attempts seem obvious and do not work:

* **Editing the template content.** Because the block is by category, not by content, changing the text, body, or button does not change the result. The `2388185` error persists.
* **Delivering the OTP as a UTILITY template with a copy-code button.** It is forbidden and tends to be rejected. The `OTP` button (copy-code / one-tap) is exclusive to AUTHENTICATION. The `COPY_CODE` button that exists in UTILITY and MARKETING is the **coupon** one (copy a discount code), not an OTP, and Meta rejects the combination with `code: 100 / error_subcode: 2388180`. Meta's own categorization documentation is explicit: *"Only authentication templates can be used to send a one-time passcode for identity verification. Marketing and utility templates cannot be used for this purpose."*

Even putting the code inline in the body, without a button, Meta's content classifier recognizes the OTP pattern and marks the template as `REJECTED`. No text tweak gets around this. The only definitive path is to enable the AUTHENTICATION category.

## How does Zapster help?

Zapster translates this opaque Meta error. In the template management screen, `code: 10 / error_subcode: 2388185` becomes a clear message: it explains that authentication templates require completed business verification and a minimum message volume, and that UTILITY and MARKETING do not have that requirement. You understand the real reason without decoding the raw API response.

Unlocking the category depends entirely on Meta (business verification and tier), so neither Zapster nor any other platform can guarantee approval or a timeline. What we do is make the diagnosis clear and support you through the process, including checking your account eligibility when you do not have direct access to the WABA token. If you are stuck on this error, [contact support](https://wa.me/5587999079455?text=Hi,%20I'm%20getting%20the%20WhatsApp%20authentication%20template%20error%20\(subcode%202388185\)).

## Frequently asked questions

<AccordionGroup>
  <Accordion title="I can create a UTILITY template but not an AUTHENTICATION one. Why?">
    Because only the AUTHENTICATION category has its own eligibility gate (business verification and messaging tier). UTILITY and MARKETING do not have that requirement, so they create normally on the same account. It is the classic signal that the block is by category, not by content or account.
  </Accordion>

  <Accordion title="What does error_subcode 2388185 mean?">
    It is the Graph API's specific code for "the account does not have permission to create an authentication template". It comes with `code: 10` and `type: OAuthException`. In the UI, the same error appears as "This WhatsApp Business account doesn't have permission to create a message template".
  </Accordion>

  <Accordion title="Is this a country-specific restriction?">
    No. The AUTHENTICATION category gate applies to any country. The `authentication_international` you see in some panels is a pricing band, not a creation block.
  </Accordion>

  <Accordion title="Does editing the template content fix it?">
    No. The block is by category, not by content. Changing the text, body, or button keeps the same `error_subcode: 2388185`.
  </Accordion>

  <Accordion title="Can I send the OTP through a UTILITY template?">
    No. The OTP button is exclusive to AUTHENTICATION, and Meta's documentation forbids using utility or marketing templates to send a verification code. Even with the code inline in the body, the template ends up rejected. The only path is to enable the AUTHENTICATION category.
  </Accordion>

  <Accordion title="How long does it take to unlock after I become eligible?">
    When the account completes business verification and raises the tier, the category usually unlocks in about 6 hours, automatically. Deadlines are set by Meta and may change.
  </Accordion>

  <Accordion title="I already verified the business and the error persists. Now what?">
    Check the messaging tier (250 → 2,000 → 10,000 → 100,000 → unlimited): in the starting tier, authentication tends to stay blocked. If verification is complete and the tier has already risen, open a ticket with Meta support providing the `error_subcode: 2388185` and the `fbtrace_id` from the response.
  </Accordion>
</AccordionGroup>

## Meta's official sources

* [Messaging limits](https://developers.facebook.com/docs/whatsapp/messaging-limits), the tier ladder that works as the real gate.
* [Template categorization](https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates/template-categorization), with the rule that only authentication templates send OTP.
* [Meta community thread about error 2388185](https://developers.facebook.com/community/threads/1372007877817645/), with several reports of the same `code: 10 / error_subcode: 2388185`.

## Next steps

* [Connecting a WABA instance](/en/v1/guides/connect-waba-instance)
* [Sending WhatsApp messages with WABA](/en/v1/guides/send-waba-messages)

<script
  type="application/ld+json"
  dangerouslySetInnerHTML={{
__html: JSON.stringify({
  "@context": "https://schema.org",
  "@type": "FAQPage",
  mainEntity: [
    {
      "@type": "Question",
      name: "I can create a UTILITY template but not an AUTHENTICATION one on WhatsApp. Why?",
      acceptedAnswer: {
        "@type": "Answer",
        text: "Because only the AUTHENTICATION category has its own eligibility gate (business verification and messaging tier). UTILITY and MARKETING do not have that requirement and create normally on the same account.",
      },
    },
    {
      "@type": "Question",
      name: "What does error_subcode 2388185 mean on WhatsApp?",
      acceptedAnswer: {
        "@type": "Answer",
        text: "It is the Graph API code for the account not having permission to create an authentication template. It comes with code 10 and type OAuthException. In the UI it appears as 'This WhatsApp Business account doesn't have permission to create a message template'.",
      },
    },
    {
      "@type": "Question",
      name: "Is the authentication template error a country-specific restriction?",
      acceptedAnswer: {
        "@type": "Answer",
        text: "No. The AUTHENTICATION category gate applies to any country. The authentication_international value is a pricing band, not a creation block.",
      },
    },
    {
      "@type": "Question",
      name: "Does editing the template content fix error 2388185?",
      acceptedAnswer: {
        "@type": "Answer",
        text: "No. The block is by category, not by content. Changing the text, body, or button keeps the same error_subcode 2388185.",
      },
    },
    {
      "@type": "Question",
      name: "Can I send the OTP through a WhatsApp UTILITY template?",
      acceptedAnswer: {
        "@type": "Answer",
        text: "No. The OTP button is exclusive to AUTHENTICATION and Meta forbids using utility or marketing templates to send a verification code. Even with the code inline, the template ends up rejected.",
      },
    },
    {
      "@type": "Question",
      name: "How long does it take to unlock the authentication template after I become eligible?",
      acceptedAnswer: {
        "@type": "Answer",
        text: "When the account completes business verification and raises the tier, the category usually unlocks in about 6 hours, automatically. Deadlines are set by Meta and may change.",
      },
    },
  ],
}),
}}
/>
