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 anaccess_tokenquery parameter). - Version:
v25.0is 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_managementwhatsapp_business_managementwhatsapp_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 message — not 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:
| Category | What it covers | Cost |
|---|---|---|
| Marketing | Promotions, offers, announcements | Highest rate |
| Utility | Order updates, receipts, account notices | Much cheaper; volume tiers |
| Authentication | One-time passwords, verification codes | Much cheaper; volume tiers |
| Service | Free-form replies within the 24-hour customer service window | Free, 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):
| Category | Approx. US rate |
|---|---|
| Marketing | ~$0.025 per message |
| Utility | ~$0.004 per message |
| Authentication | ~$0.004 per message |
| Service | Free |
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
- Share and revoke credit lines (Meta developer docs)
- WhatsApp access tokens (Meta developer docs)
- Solution Providers — Overview (Meta developer docs)
- Apply for a WhatsApp credit line (Meta Business Help)
- WhatsApp Platform pricing
Note. Rates and endpoints reflect Meta as of 2026. Always confirm against Meta's official docs, since Meta changes rates on a schedule.