# Partner-initiated WABA and Sender Creation Meta has deprecated the "On-Behalf-Of (OBO)" account ownership model and replaced it with [partner-initiated WABA creation](https://developers.facebook.com/docs/whatsapp/solution-providers/partner-initiated-waba-creation). Partner-initiated creation: - Gives business customers the opportunity to review their account information and data access settings before their account is created. - Gives business customers direct ownership of their account, allowing them to use WhatsApp Manager for common actions like creating templates and viewing analytics. - Removes the requirement for ASP customers to provide clients with access to the Sinch Build Dashboard, or for clients to share their credentials with the ASP. ## Partner-initiated WABA Creation Steps The sub-sections below describe the steps required to create a WABA using the partner-initiated method: ### 1. Initiation Step Partner-initiated WhatsApp Business Account (WABA) creation is initiated at Meta by Sinch. This feature is currently available for *business customers* who are clients of our ASP customers (resellers). Sinch requires the following data for the WABA creation request at Meta: - **Client Business Manager ID** (also called Business Portfolio ID): Business Portfolios can be created at [https://business.facebook.com/](https://business.facebook.com/) by the business customer. They can find their business ID using [this Meta guide](https://www.facebook.com/business/help/1181250022022158) or they can copy the value for `business_id` search parameter from the URL. - WABA **name** - **Sender data**: - **Display name** for a sender to be created in the WABA. - **Business category** for the sender (see [API reference](https://developers.sinch.com/docs/provisioning-api/api-reference/provisioning-api/whatsapp-accounts/accountscontroller_createaccount_v1#whatsapp-accounts/accountscontroller_createaccount_v1/t=request&path=&oneof=0/senderdetails/businesscategory) for available categories). - **Optional values**: - **Business Manager** to be used on Sinch side. - Custom **region** and **Meta local storage region** values. Note the following: - Sender creation during WABA creation is optional, but Meta requires sender data. The business customer decides in the **Notify Customer and get Customer approval** step if they want to use this data for creating a sender. - If the optional values are not provided, default region for the billing account country will be used. The above data can be provided via Sinch Build Dashboard or the Provisioning API endpoint for creating account: ```javascript async function createAccount() { const resp = await fetch( `https://provisioning.api.sinch.com/v1/projects/${PROJECT_ID}/whatsapp`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: 'Basic ' + Buffer.from(ACCESS_KEY + ':' + ACCESS_SECRET).toString('base64'), }, body: JSON.stringify({ wabaName: 'End-user business name', clientBusinessManagerId: '73584377235956321', senderDetails: { displayName: 'Desired sender name', businessCategory: 'FOOD_AND_GROCERY', }, }), } ); const data = await resp.json(); return data; } ``` Note: Requesting WABA creation is currently a manual process on Meta’s side and may take some time to complete. This means that while the response to the above request includes details about the newly created partner-initiated account, the WABA itself has not yet been initiated by Sinch on Meta’s end at that stage. ### 2. Get the Request ID After the creation request is made by Sinch, the account enters into the `PENDING_FACEBOOK_VERIFICATION` state. In this state, the business customer needs to approve the WABA creation request on their end. To detect the account entering into this state, register a webhook with [WhatsApp Account triggers](https://developers.sinch.com/docs/provisioning-api/api-reference/provisioning-api/webhooks/webhookcontroller_createwebhook_v1) or use the GET account endpoint. When the partner-initiated account enters into the `PENDING_FACEBOOK_VERIFICATION` state, the field named `partnerInitiatedRequestId` is set by Sinch. This value can be used for the next step. It can be retrieved with the GET account endpoint: ```javascript async function getAccountData() { const resp = await fetch( `https://provisioning.api.sinch.com/v1/projects/${PROJECT_ID}/whatsapp`, { method: 'GET', headers: { Authorization: 'Basic ' + Buffer.from(ACCESS_KEY + ':' + ACCESS_SECRET).toString('base64'), }, } ); const data = await resp.json(); return [data.state, data.partnerInitiatedRequestId]; } ``` ### 3. Notify Customer and get Customer approval Notify the business customer that an action is needed on their end. The customer then needs to approve the WABA creation request at Meta. The URL where the business customer can approve their WABA can be built as follows: `https://business.facebook.com/latest/settings/requests?business_id=&selected_request_id=` Alternatively, the business client can follow [Meta's official steps](https://developers.facebook.com/docs/whatsapp/solution-providers/partner-initiated-waba-creation): 1. Access Meta Business Suite at [https://business.facebook.com](https://business.facebook.com). 2. If you have multiple business portfolios, select the appropriate portfolio using the drop-down menu in the upper left section of the page. 3. Navigate to the **Settings** > **Requests** > **Other Requests** panel and click the **Received** tab. 4. Locate the invitation and review its contents (or decline the invitation). 5. Add and verify a business phone number (optional). 6. Confirm the invitation. 7. Navigate to the **Accounts** > **WhatsApp account** panel and confirm that your WhatsApp Business Account has been created and shared with your Solution Partner. Note: The optional sender created by the business customer during the approval process can also be of type "Use a display name only". A phone number is not needed for that case; Meta will generate a virtual number for the business sender. ### 4. Meta approval After Meta approves the WABA and the optional sender, Sinch shares the credit line with the business customer. The business can then start sending messages. ### 5. Sender Creation via Provisioning API If no sender was created during WABA approval or additional senders are needed, they can be created using Provisioning API: ```javascript async function createSender() { const resp = await fetch( `https://provisioning.api.sinch.com/v1/projects/${PROJECT_ID}/whatsapp/senders`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: 'Basic ' + Buffer.from(ACCESS_KEY + ':' + ACCESS_SECRET).toString('base64'), }, body: JSON.stringify({ region: 'EU', metaLocalStorage: 'DE', phoneNumberProvider: 'CUSTOMER', details: { countryCode: '48', phoneNumber: '777777777', displayName: 'Test name', description: 'Test description', vertical: 'EDUCATION', email: 'test@test.com', address: 'Test address', websiteOne: 'https://example-1.com', about: 'Test about', photoUrl: 'https://example.com/photos/1.png', }, }), } ); const data = await resp.json(); return data; } ``` If `region` and `metaLocalStorage` are not provided, default values will be used. A one-time password (OTP) for verifying client-provided phone numbers can be requested via `/senders/:senderId/register`, and the sender can be verified via `/senders/:senderId/verify`. Alternatively, the OTP verification can be done in Meta Business Suite by the business customer.