Onboarding APIs | Developer Documentation
Onboarding APIs
Updated: Nov 14, 2025
To receive payments on WhatsApp, you must have a payment configuration linked to the corresponding WhatsApp Business Account. Each payment configuration is associated with a unique name. As part of the order_details message, you can specify the payment configuration to use for a specific checkout.
Onboarding APIs allows you to programatically perform certain operations:
Get All Payment ConfigurationsConfiguration Webhook
To receive webhook, Businesses must subscribe to “payment_configuration_update” event for their respective application.
Webhook contains the WhatsAppfollowing Businessfields:
Request
Syntax
GET
Sample
Request
curl'https://graph.facebook.com/v16.0/102290129340398/payment_configurations' \ -H 'Authorization: Bearer EAAJB...'
Sample Response
{ "data": [ { "payment_configurations": [ { "configuration_name": "test-payment-configuration", "merchant_category_code": { "code": "0000", "description": "Test MCC Code" }, "purpose_code": { "code": "00", "description": "Test Purpose Code" }, "status": "Active", "provider_mid": "test-payment-gateway-mid", "provider_name": "RazorPay", "created_timestamp": 1720203204, "updated_timestamp": 1721088316 }, .... ] } ] }
configuration_namestring
Required.
The name of the payment configuration to be used in the Order Details message.
merchant_category_codeprovider_nameRequired.
codedescriptionpurpose_codecodedescriptionstatusprovider_midprovider_namemerchant_vpacreated_timestampupdated_timestampGet a specific Payment Configuration
Request Syntax
GET /<WHATSAPP_BUSINESS_ACCOUNT_ID>/payment_configuration/<CONFIGURATION_NAME>
Sample Request
curl 'https://graph.facebook.com/v16.0/102290129340398/payment_configuration/test-payment-configuration' \ -H 'Authorization: Bearer EAAJB...'
Sample Response
{ "data": [ { "configuration_name": "test-payment-configuration", "merchant_category_code": { "code": "0000", "description": "Test MCC Code" }, "purpose_code": { "code": "00", "description": "Test Purpose Code" }, "status": "Active", "provider_mid": "test-payment-gateway-mid", "provider_name": "RazorPay", "created_timestamp": 1720203204, "updated_timestamp": 1721088316 } ] }
| |
| |
| |
| |
| |
| |
| |
| |
|
Create a Payment Configuration
Request Syntax
POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/payment_configuration
Sample Request
Payment Gateway type configuration
curl -X POST \ 'https://graph.facebook.com/v15.0/102290129340398/payment_configuration' \ -H 'Authorization: Bearer EAAJB...' \ -H 'Content-Type: application/json' \ -d '{ "configuration_name": "test-payment-configuration", "purpose_code": "00", "merchant_category_code": "0000", "provider_name": "razorpay", "redirect_url": "https://test-redirect-url.com" }'
UPI Vpa type configuration
curl -X POST \ 'https://graph.facebook.com/v15.0/102290129340398/payment_configuration' \ -H 'Authorization: Bearer EAAJB...' \ -H 'Content-Type: application/json' \ -d '{ "configuration_name": "test-payment-configuration", "purpose_code": "00", "merchant_category_code": "0000", "provider_name": "upi_vpa", "merchant_vpa": "test-upi-merchant-vpa@test" }'
| |
| |
| |
| |
| |
|
Sample Response
Payment Gateway type configuration
{ "oauth_url": "https://www.facebook.com/payment/onboarding/init/", "expiration": 1721687287, "success": true }
UPI Vpa type configuration
{ "success": true }
| |
| |
|
Link or Update Data Endpoint
Request Syntax
POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/payment_configuration/<CONFIGURATION_NAME>
Sample Request
Payment Gateway type configuration
curl -X POST \ 'https://graph.facebook.com/v15.0/102290129340398/payment_configuration/test-payment-configuration' \ -H 'Authorization: Bearer EAAJB...' \ -H 'Content-Type: application/json' \ -d '{ "data_endpoint_url": "https://test-data-endpoint-url.com" }'
|
Regenerate Payment Configuration OAuth link
Request Syntax
POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/generate_payment_configuration_oauth_link
Sample Request
curl -X POST \ 'https://graph.facebook.com/v15.0/102290129340398/generate_payment_configuration_oauth_link' \ -H 'Authorization: Bearer EAAJB...' \ -H 'Content-Type: application/json' \ -d '{ "configuration_name": "test-payment-configuration", "redirect_url": "https://test-redirect-url.com" }'
| |
|
Sample Response
{ "oauth_url": "https://www.facebook.com/payment/onboarding/init/", "expiration": 1721687287 }
| |
|
Remove a Payment Configuration
Request Syntax
DELETE /<WHATSAPP_BUSINESS_ACCOUNT_ID>/payment_configuration
|
Sample Request
curl -X DELETE \ 'https://graph.facebook.com/v15.0/102290129340398/payment_configuration' \ -H 'Authorization: Bearer EAAJB...' \ -H 'Content-Type: application/json' \ -d '{ "configuration_name": "test-payment-configuration" }'
Sample Response
{ "success": true }
|
Payment Configuration Webhook
| |
| Provider name of the payment configuration. Must be one of [“razorpay”, “payu”, “zaakpay”]. |
provider_midstring
Required.
Payment gateway account merchant ID.
statusstring
Required.
Status of the payment configuration. Must be one of [“Active”, “Needs_Connecting”, “Needs_Testing”].
created_timestampinteger
Required.
Time when payment configuration was created.
updated_timestampinteger
Required.
Time when payment configuration was last updated.
Sample Payment Configuration Webhook
{
Errors
WhatsApp Payments Terms of Service Acceptance Pending
If you see the following error, accept the WhatsApp Payments terms of service using the link provided in the error message before trying again.
{
For all other errors that can be returned and guidance on how to handle them, see WhatsApp Cloud API, Error Codes.