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 progamatically perform certain operations:
Get a list of payment configurations linked to the WhatsApp Business Account.
GET /<WHATSAPP_BUSINESS_ACCOUNT_ID>/payment_configurations
curl 'https://graph.facebook.com/v16.0/102290129340398/payment_configurations' \ -H 'Authorization: Bearer EAAJB...'
{ "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 }, .... ] } ] }
Field | Description |
---|---|
string | Required. The name of the payment configuration to be used in the Order Details message. |
object | Required. Merchant Category Code:
|
object | Required. Purpose Code:
|
string | Required. Status of the payment configuration. Must be one of ["Active", "Needs_Connecting", "Needs_Testing"]. |
string | Optional. Payment Gateway Merchant Identification Number (MID). |
string | Optional. Payment Gateway Name. Must be one of ["razorpay", "payu", "zaakpay"]. |
string | Optional. Merchant UPI handle. |
integer | Optional. Time when payment configuration was created. |
integer | Optional. Time when payment configuration was last updated. |
Get a specific payment configuration linked to the WhatsApp Business Account.
GET /<WHATSAPP_BUSINESS_ACCOUNT_ID>/payment_configuration/{configuration-name}
curl 'https://graph.facebook.com/v16.0/102290129340398/payment_configuration/test-payment-configuration' \ -H 'Authorization: Bearer EAAJB...'
{ "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 } ] }
Field | Description |
---|---|
string | Required. The name of the payment configuration to be used in the Order Details message. |
object | Required. Merchant Category Code:
|
object | Required. Purpose Code:
|
string | Required. Status of the payment configuration. Must be one of ["Active", "Needs_Connecting", "Needs_Testing"]. |
string | Optional. Payment Gateway Merchant Identification Number (MID). |
string | Optional. Payment Gateway Name. Must be one of ["razorpay", "payu", "zaakpay"]. |
string | Optional. Merchant UPI handle. |
integer | Optional. Time when payment configuration was created. |
integer | Optional. Time when payment configuration was last updated. |
Create a payment configuration.
POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/payment_configuration
curl -X POST \ 'https://graph.facebook.com/v15.0/WHATSAPP_BUSINESS_ACCOUNT_ID/payment_configuration' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -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" }'
curl -X POST \ 'https://graph.facebook.com/v15.0/WHATSAPP_BUSINESS_ACCOUNT_ID/payment_configuration' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -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" }'
Field | Description |
---|---|
string | Required. The name of the payment configuration to be used in the Order Details message. |
string | Optional. Merchant Category Code. |
object | Optional. Purpose Code. |
string | Required. Provider name of the payment configuration. Must be one of ["upi_vpa", "razorpay", "payu", "zaakpay"]. |
string | Optional. Merchant UPI handle. |
URI | Optional. The url which merchant will be redirected to after successfully linking a payment configuration. |
{ "oauth_url": "https://www.facebook.com/payment/onboarding/init/", "expiration": 1721687287, "success": true }
{ "success": true }
Field | Description |
---|---|
string | Optional. Oauth url to be used to link payment configuration to the payment gateway |
integer | Optional. Expiration time of the oauth url. |
boolean | Required. Boolean flag to denote if payment configuration creation was successful or not. |
Regenerate oauth link of payment gateway type payment configuration.
POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/generate_payment_configuration_oauth_link
curl -X POST \ 'https://graph.facebook.com/v15.0/WHATSAPP_BUSINESS_ACCOUNT_ID/generate_payment_configuration_oauth_link' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "configuration_name": "test-payment-configuration", "redirect_url": "https://test-redirect-url.com" }'
Field | Description |
---|---|
string | Required. The name of the payment configuration to be used in the Order Details message. |
URI | Optional. The url which merchant will be redirected to after successfully linking a payment configuration. |
{ "oauth_url": "https://www.facebook.com/payment/onboarding/init/", "expiration": 1721687287 }
Field | Description |
---|---|
string | Optional. Oauth url to be used to link payment configuration to the payment gateway |
integer | Optional. Expiration time of the oauth url. |
Remove a payment configuration.
DELETE /<WHATSAPP_BUSINESS_ACCOUNT_ID>/payment_configuration
Field | Description |
---|---|
string | Required. The name of the payment configuration to be used in the Order Details message. |
curl -X DELETE \ 'https://graph.facebook.com/v15.0/WHATSAPP_BUSINESS_ACCOUNT_ID/payment_configuration' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "configuration_name": "test-payment-configuration" }'
{ "success": true }
Field | Description |
---|---|
boolean | Required. Boolean flag to denote if payment configuration removal was successful or not. |
Businesses receive updates via WhatsApp webhooks when the status of the payment configuration changes.
To receive webhook, Businesses must subscribe to "payment_configuration_update" event for their respective application.
Webhook contains the following fields:
Field | Description |
---|---|
string | Required. The name of the payment configuration to be used in the Order Details message. |
string | Required. Provider name of the payment configuration. Must be one of ["razorpay", "payu", "zaakpay"]. |
string | Required. Payment gateway account merchant ID. |
string | Required. Status of the payment configuration. Must be one of ["Active", "Needs_Connecting", "Needs_Testing"]. |
integer | Required. Time when payment configuration was created. |
integer | Required. Time when payment configuration was last updated. |
{ "entry": [ { "id": "0", "time": 1725499886, "changes": [ { "field": "payment_configuration_update", "value": { "configuration_name": "test-payment-configuration", "provider_name": "razorpay", "provider_mid": "test-provider-mid", "status": "Needs Testing", "created_timestamp": 123457678, "updated_timestamp": 123457678 } } ] } ], "object": "whatsapp_business_account" }