Meta Graph API Reference (credit lines, tokens, pricing) — 2026

A precise reference for the Meta Graph API calls that power WaDesk's reseller billing: creating access tokens, reading and sharing credit lines, revoking them, and understanding how Meta prices messages in 2026. All endpoints are relative to the Graph API base described below.

Prerequisite. These calls require Solution Partner status and a system-user token — see Meta Setup — Solution Partner, Token & Credit Line first.

1. Graph API basics

  • Base URL: https://graph.facebook.com/v25.0/
  • Auth: Bearer authentication using your system-user token — send it as Authorization: Bearer <token> (or as an access_token query parameter).
  • Version: v25.0 is the latest stable release (as of February 2026). Bump the version only after verifying payload compatibility against Meta's changelog — newer versions can change field names and behavior.
curl -H "Authorization: Bearer {SYSTEM_USER_TOKEN}" \
  https://graph.facebook.com/v25.0/{BUSINESS_ID}/extendedcredits

2. Access token creation

Create a permanent token from a System User (role Admin) under business.facebook.com → Business settings → Users → System users. The token is displayed only once — copy it immediately. Required scopes:

  • business_management
  • whatsapp_business_management
  • whatsapp_business_messaging

Full walkthrough: Meta Setup, Step 3. Official docs: WhatsApp access tokens.

3. Credit line — GET the ID

GET /{BUSINESS_ID}/extendedcredits
  • Permission: business_management
  • Role: Admin or Financial Editor
  • Returns: the credit line id

4. Credit line — SHARE + ATTACH (current method)

The current one-call method shares your credit line with a customer's WABA and attaches it in a single request:

POST /{EXTENDED_CREDIT_LINE_ID}/whatsapp_credit_sharing_and_attach
  params:
    waba_id        (the customer's WhatsApp Business Account ID)
    waba_currency  (AUD | EUR | GBP | IDR | INR | USD)

  returns:
    allocation_config_id
    waba_id
Currency is locked after attach. waba_currency cannot be changed once the credit line is attached to that WABA. Allowed values: AUD, EUR, GBP, IDR, INR, USD.

5. Credit line — SHARE + ATTACH (alternate 3-step)

The older three-step sequence is useful for testing or when you need the intermediate values:

a) GET /{WABA_ID}?fields=owner_business_info
   -> the customer's business portfolio id (BUSINESS_PORTFOLIO_ID)

b) POST /{EXTENDED_CREDIT_LINE_ID}/whatsapp_credit_sharing
     ?receiving_business_id={BUSINESS_PORTFOLIO_ID}
   -> allocation_config_id

c) POST /{EXTENDED_CREDIT_LINE_ID}/whatsapp_credit_attach

6. Credit line — REVOKE

To stop billing a customer's WABA to your credit line:

a) GET /{EXTENDED_CREDIT_LINE_ID}/owning_credit_allocation_configs
     ?receiving_business_id={CLIENT_BUSINESS_ID}
   -> allocation_config_id

b) DELETE /{allocation_config_id}

c) GET /{allocation_config_id}?fields=request_status
   -> should read "DELETED"
Note. A credit line cannot be changed once attached — to correct a mistake (for example, the wrong currency) you must revoke and re-attach.

7. 2026 pricing model (per-message)

Since 1 July 2025, Meta bills per delivered template messagenot per 24-hour conversation as it did previously. The rate charged depends on two things:

  • the recipient's country, and
  • the template category.

There are four categories:

CategoryWhat it coversCost
MarketingPromotions, offers, announcementsHighest rate
UtilityOrder updates, receipts, account noticesMuch cheaper; volume tiers
AuthenticationOne-time passwords, verification codesMuch cheaper; volume tiers
ServiceFree-form replies within the 24-hour customer service windowFree, no monthly cap

Utility & Authentication messages are far cheaper than Marketing — roughly 80–90% lower — and both have volume tiers that reduce the unit rate at scale. Service messages (replies inside the 24-hour window) are free with no monthly cap.

Illustrative US rates (~2026 — these change):

CategoryApprox. US rate
Marketing~$0.025 per message
Utility~$0.004 per message
Authentication~$0.004 per message
ServiceFree

Across markets, marketing rates range roughly $0.01–$0.14 depending on the country. Meta updates rates on its own schedule (typically quarterly).

Your customer's total = Meta rate + your markup. WaDesk adds your configured margin on top of the wholesale Meta rate and charges the customer's wallet on delivery.

8. Where WaDesk fetches costs

The "Sync Meta costs" button on /admin/settings/wallet-rules pulls the wholesale cost per country — from the configured rates endpoint, or the bundled official rate card, or an uploaded CSV — and converts each rate into the platform currency. From there your markup and wallet charging apply automatically.

Sources

Note. Rates and endpoints reflect Meta as of 2026. Always confirm against Meta's official docs, since Meta changes rates on a schedule.
WaDesk Documentation