Skip to content

Enroll in the max price feature

Updated: Jun 30, 2026

To use the max price feature during the Limited Beta period (May 15 to October 2026), you must sign the beta agreement. Solution Partners must also allowlist the end-businesses they want to enroll.

  • Direct integrators: Sign the beta agreement (Step 1 only).
  • Solution Partners: Sign the beta agreement (Step 1), then allowlist end-businesses (Step 2).

Partner-enabled end-businesses do not need to sign the beta agreement.

Before you begin

  • An active Meta Business Suite with WhatsApp Business API access.
  • Your app must have an access token with the business_management permission.
  • For Solution Partners: The end-businesses you want to allowlist must own or share their WhatsApp Business Accounts (WABAs) with you.

Step 1: Sign the beta agreement

Sign the max price beta agreement once per Meta Business Suite. The caller must be an admin user of the Meta Business Suite. The signer receives an email with an acceptance link.

Request syntax

POST /<BUSINESS_ID>/max_price_agreements

Example request

curl -X POST 'https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/max_price_agreements' \  
  -H 'Authorization: Bearer <ACCESS_TOKEN>' \  
  -H 'Content-Type: application/json' \  
  -d '{  
  "signer_name": "<SIGNER_NAME>",  
  "signer_email": "<SIGNER_EMAIL>"  
}'

Request parameters

PlaceholderDescriptionExample value
<ACCESS_TOKEN> StringRequired. System token or business token.EAAA...
<API_VERSION> StringOptional. Graph API version.v25.0
<BUSINESS_ID> StringRequired. ID of your Meta Business Suite.529216684107530
<SIGNER_NAME> StringRequired. Name of the person signing the agreement.Jane Doe
<SIGNER_EMAIL> StringRequired. Email address where Meta sends the agreement link.jane.doe@example.com

Example response

{  
  "status": "pending",  
  "signer_name": "Jane Doe",  
  "signer_email": "jane.doe@bsp.example",  
  "message": "Agreement email sent to jane.doe@bsp.example"  
}

Re-posting while the agreement is pending resends the email (5-minute cooldown). You can pass an updated signer_email to redirect the link.

When the owner of the Meta Business Suite ID formally accepts the agreement, Meta automatically allowlists all self-owned and internally owned WABA IDs of the Meta Business Suite.

Meta collects the signer_name and signer_email you provide solely to execute the Max Price Beta Agreement. signer_name appears on the agreement as the designated signer, and Meta uses signer_email only to deliver the acceptance link. Meta does not retain either field for marketing, associate it with the signer's other Meta identities, or share it with third parties. Once you accept the agreement, Meta makes no further use of this information.

Check agreement status

Request syntax

curl -X GET 'https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/max_price_agreements' \  
  -H 'Authorization: Bearer <ACCESS_TOKEN>'

Example responses

Agreement accepted:

{"status": "accepted", "signer_name": "Jane Doe", "signer_email": "jane.doe@bsp.example"}

Agreement pending:

{"status": "pending", "signer_name": "Jane Doe", "signer_email": "jane.doe@bsp.example"}

No agreement:

{"status": "none"}

Possible status values: none, pending, accepted.

Step 2: Allowlist end-businesses (Solution Partner only)

Direct integrators skip this step. They are the end-business and do not need to allowlist themselves.

Once your beta agreement is accepted, allowlist the end-business IDs whose WABAs should access the max price feature. Each Solution Partner can hold up to 15 active allowlist entries during the Limited Beta period.

Add end-businesses

Request syntax

curl -X POST 'https://graph.facebook.com/<API_VERSION>/<SOLUTION_PARTNER_BUSINESS_ID>/max_price_end_businesses' \  
  -H 'Authorization: Bearer <ACCESS_TOKEN>' \  
  -H 'Content-Type: application/json' \  
  -d '{"end_business_ids": [<END_BUSINESS_IDS>]}'

Request parameters

PlaceholderDescriptionExample value
<ACCESS_TOKEN> StringRequired. System token or business token.EAAA...
<API_VERSION> StringOptional. Graph API version.v25.0
<SOLUTION_PARTNER_BUSINESS_ID> StringRequired. ID of your Solution Partner Meta Business Suite.529216684107530
<END_BUSINESS_IDS> ArrayRequired. List of end-business IDs to allowlist. Maximum 15 entries.["111111111", "222222222"]

Example response

{  
  "results": [  
    {"end_business_id": "111111111", "status": "enrolled"},  
    {"end_business_id": "222222222", "status": "rejected", "reason": "No shared WABA"}  
  ]  
}

Requests are additive and idempotent. Duplicate enrollments are no-ops.

List allowlisted end-businesses

Request syntax

curl -X GET 'https://graph.facebook.com/<API_VERSION>/<SOLUTION_PARTNER_BUSINESS_ID>/max_price_end_businesses' \  
  -H 'Authorization: Bearer <ACCESS_TOKEN>'

Example response

{  
  "data": [  
    {"end_business_id": "111111111", "end_business_name": "Acme Foods", "enrolled_time": 1714500000}  
  ]  
}

Returns an empty data array if no allowlist exists yet. end_business_name is the display name of the enrolled end-business, or null if the business can't be resolved (for example, if it was deactivated or deleted).

Remove end-businesses

Request syntax

curl -X DELETE 'https://graph.facebook.com/<API_VERSION>/<SOLUTION_PARTNER_BUSINESS_ID>/max_price_end_businesses' \  
  -H 'Authorization: Bearer <ACCESS_TOKEN>' \  
  -H 'Content-Type: application/json' \  
  -d '{"end_business_ids": [<END_BUSINESS_IDS>]}'

Example response

{  
  "results": [  
    {"end_business_id": "111111111", "status": "removed"}  
  ]  
}

Per-ID status is removed (was present, now deleted) or not_found (was not in the allowlist). Both are non-errors.

Error handling

ConditionBehavior
Missing or invalid parametersHTTP 400 with parameter validation error
Solution Partner does not have an accepted agreementHTTP 403 "Agreement required"
POST agreement called within 5 minutes of last email sendHTTP 429 with retry_after
End-business not eligible (no shared WABA, not onboarded to Marketing Messages API)HTTP 200 with per-ID {"status": "rejected", "reason": "..."}
Allowlist already at cap of 15HTTP 200 with per-ID {"status": "rejected", "reason": "The allowlist has reached the maximum of 15 end-businesses."}

Unofficial mirror for reference/search purposes. All content originates from developers.facebook.com — see the source link at the top of each page. Machine-readable indexes: llms.txt · llms-full.txt · About