Checkout button templates | Developer Documentation
Note that this is simply a button definition. The actual details about the product that maps to this button are included when you send the template in a template message. For example:
{"type":
If you are sending a media card carousel template (which can have two or more products), each checkout button must be defined in the template, and the item details that map to each button must be included when sending the template.
Creating
checkout button templates
Request syntax
POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templatesPost body
{"name":"<TEMPLATE_NAME>","language":"<TEMPLATE_LANGUAGE>","category":"marketing","components":[{"type":"header","format":"<MESSAGE_HEADER_FORMAT>","example":{"header_handle":["<MESSAGE_HEADER_ASSET_HANDLE>"]}},{"type":"body","text":"<MESSAGE_BODY_TEXT>","example":{"body_text":[["<MESSAGE_BODY_TEXT_VARIABLE_EXAMPLE>","<MESSAGE_BODY_TEXT_VARIABLE_EXAMPLE>"]]}},/* Footer component is optional */{"type":"footer","text":"<MESSAGE_FOOTER_TEXT>"},{"type":"buttons","buttons":[{"type":"order_details","text":"Buy now"},/* Quick-reply buttons are optional; up to 9 permitted */{"type":"quick_reply","text":"<QUICK_REPLY_BUTTON_LABEL_TEXT>"}]}]}Post body parameters
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
Example request
curl 'https://graph.facebook.com/v25.0/102290129340398/message_templates' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
"name": "item_back_in_stock_v1",
"language": "en_US",
"category": "marketing",
"components": [
{
"type": "header",
"format": "image",
"example": {
"header_handle": [
"3:NDU..."
]
}
},
{
"type": "body",
"text": "Hi {{1}}! The {{2}} is back in stock! Order now before it\'s gone!",
"example": {
"body_text": [
[
"Pablo",
"Blue Elf Aloe"
]
]
}
},
{
"type": "footer",
"text": "Tap \'Stop\' below to stop back-in-stock reminders."
},
{
"type": "buttons",
"buttons": [
{
"type": "order_details",
"text": "Buy now"
},
{
"type": "quick_reply",
"text": "Stop"
}
]
}
]
}'Send a checkout button template
Once your checkout button template or carousel template has been approved, you can send it in a template message.
Request
syntax
POST /<WHATSAPP_BUSINESS_PHONE_NUMBER_ID>/messagesPost body
This post body syntax is for a checkout button template. See Sending Media Card Carousel Templates for media card carousel template post body payload syntax.
{"messaging_product":"whatsapp","recipient_type":"individual","to":"<WHATSAPP_USER_PHONE_NUMBER>","type":"template","template":{"name":"<TEMPLATE_NAME>","language":{"policy":"deterministic","code":"<TEMPLATE_LANGUAGE>"},"components":[{"type":"header","parameters":[{"type":"<MESSAGE_HEADER_FORMAT>","<MESSAGE_HEADER_FORMAT>":{"id":"<MESSAGE_HEADER_ASSET_ID>"}}]},{"type":"body","parameters":[{<MESSAGE_BODY_TEXT_VARIABLE>},{<MESSAGE_BODY_TEXT_VARIABLE>}]},{"type":"button","sub_type":"order_details","index":0,"parameters":[{"type":"action","action":{"order_details":{"reference_id":"<REFERENCE_ID>","currency":"INR","type":"<PRODUCT_TYPE>","payment_settings":[{"type":"payment_gateway","payment_gateway":{"type":"<PAYMENT_GATEWAY_NAME>","configuration_name":"<PAYMENT_GATEWAY_CONFIGURATION_NAME>"}}],/*Post body parameters
<DISCOUNT_AMOUNT>Integer
Required if using a discount.
Discount amount, multiplied by discount.offset value.
For example, to represent a discount of ₹?2, the value would be
200.Discount amount applies to the order subtotal.
15000<DISCOUNT_DESCRIPTION>String
Optional.
Discount description.
Maximum 60 characters.
Additional 10% off<EXPIRATION_TIMESTAMP>String
Required if using an order expiration.
UTC timestamp indicating when we should disable the Buy now button. The timestamp will be used to generate a text string that appears at the bottom of the Order details window. For example:
This order expires on September 30, 2024 at 12:00 PM.
WhatsApp users who view the message after this time will be unable to purchase the item using the checkout button.
Values must represent a UTC time at least 300 seconds from when the send message request is sent to us.
1726692927<IMPORTER_ADDRESS_LINE_1>String
Required.
Importer address, line 1 (door, tower, number, street, etc.).
Maximum 100 characters.
One BKC<IMPORTER_ADDRESS_LINE_2>String
Optional.
Importer address, line 2 (landmark, area, etc.).
Maximum 100 characters.
Bandra Kurla Complex<IMPORTER_CITY>String
Required.
Importer city.
Maximum 120 characters.
Mumbai<IMPORTER_NAME>String
Required.
Importer name.
Maximum 200 characters.
Lucky Shrub Imports and Exports<IMPORTER_POSTAL_CODE>String
Required.
Importer 6-digit postal index number.
Maximum 6 digits.
400051<IMPORTER_ZONE_CODE>String
Required.
Importer two-letter zone code.
MH<ITEM_COUNTRY_OF_ORIGIN>String
Required.
Maximum 100 characters.
India<ITEM_NAME>String
Required.
Item name.
Maximum 60 characters.
Blue Elf Aloe<ITEM_PRICE>Integer
Required.
Individual item price (price per item), multiplied by amount.offset value.
For example, to represent an item price of ₹?12.99, the value would be
1299.200000<ITEM_QUANTITY>Integer
Required.
Number of items in order, if order is placed.
Maximum 100 integers.
1<MESSAGE_BODY_TEXT_VARIABLE>Object
Required if template message body text uses variables, otherwise omit.
Object describing a message variable. If the template uses multiple variables, you must define an object for each variable.
There is no maximum character limit on this value, but it does count against the message body text limit of 1024 characters.
{"type":"text","text":"Nidhi"}<MESSAGE_HEADER_ASSET_ID>String
Required.
Header asset’asset's uploaded media asset ID. Use the POST /<BUSINESS_PHONE_NUMBER_ID>/media endpoint to generate an asset ID.
1558081531584829<MESSAGE_HEADER_FORMAT>String
Required.
Indicates header type and a matching property name.
Note that the property’property's value and its matching property name.
<MESSAGE_HEADER_FORMAT> placeholder appears twice in the post body example above, as it serves as a placeholder for the type Value can be
image or video.image<PAYMENT_GATEWAY_CONFIGURATION_NAME>String
Required.
Configuration name of payment gateway you have configured on your WhatsApp Business Account.
prod-razor-pay-config-05<PAYMENT_GATEWAY_NAME>String
Required.
Name of payment gateway you have configured on your WhatsApp Business Account.
Values can be:
razorpaypayuzaakpayrazorpay<PRODUCT_TYPE>String
Required.
Product type. Value can be
digital-goods or physical-goods.digital-goods<QUICK_REPLY_BUTTON_PAYLOAD>String
Optional.
Value to be included in messages webhooks (
messages.button.payload) when the button is tapped.opt-out<REFERENCE_ID>String
Required.
Your unique order or invoice reference ID. Case-sensitive. Cannot be empty. Will be preceded by a hash (#) symbol in the checkout flow.
Value must be unique for each checkout button template message. If sending a carousel template, each checkout button must have a unique reference ID.
If you need to send multiple messages for the same order/invoice, it is recommended to append a sequence number to the value (for example, -1).
Values can only contain English letters, numbers, underscores, dashes, or dots.
Maximum 35 characters.
abc.123_xyz-1<SALE_PRICE>Integer
Required if using a sale amount.
Sale price, multiplied by
sale.offset value.For example, to represent a sale price of ₹?10, the value would be
1000.150000<SHIPPING_AMOUNT>Integer
Required.
Order shipping cost, multiplied by
shipping.offset value.For example, to represent a shipping cost of ₹?.99, the value would be
99.20000<SHIPPING_INFO_ADDRESS>String
Required if you know the recipient’recipient's shipping information.
Product recipient’recipient's address.
Maximum 512 characters.
Bandra Kurla Complex<SHIPPING_INFO_BUILDING_NAME>String
Optional.
Product recipient’recipient's building name.
Maximum 128 characters.
One BKC<SHIPPING_INFO_CITY>String
Required if you know the recipient’recipient's shipping information.
Full name of product recipient’recipient's city.
Maximum 100 characters.
Mumbai<SHIPPING_INFO_FLOOR_NUMBER>String
Optional.
Product recipient’recipient's floor number.
Maximum 10 characters.
2<SHIPPING_INFO_HOUSE_NUMBER>String
Optional.
Product recipient’recipient's house number.
Maximum 8 characters.
12<SHIPPING_INFO_INDIA_PIN>String
Required if you know the recipient’recipient's shipping information.
Product recipient’recipient's postal index number.
Maximum 6 characters.
400051<SHIPPING_INFO_LANDMARK_AREA>String
Optional.
Product recipient’recipient's landmark area.
Maximum 128 characters.
Near BKC Circle<SHIPPING_INFO_NAME>String
Required if you know the recipient’recipient's shipping information.
Product recipient’recipient's full name.
Maximum 256 characters.
Nidhi Tripathi<SHIPPING_INFO_PHONE_NUMBER>String
Required if you know the recipient’recipient's shipping information.
Product recipient’recipient's WhatsApp phone number.
Maximum 12 characters.
919000090000<SHIPPING_INFO_STATE>String
Required if you know the recipient’recipient's shipping information.
Full name of product recipient’recipient's state.
Maximum 100 characters.
Maharastra<SHIPPING_INFO_TOWER_NUMBER>String
Optional.
Product recipient’recipient's tower number.
Maximum 8 characters.
2<SUBTOTAL_AMOUNT>Integer
Required.
Order subtotal. Calculate by multiplying
<ITEM_PRICE> by <ITEM_QUANTITY> by subtotal.offset.For example, if the template is for placing a single order containing 2 items priced at ₹?12.99, the value would be
2598.150000<TAX_AMOUNT>Integer
Required.
Tax amount, multiplied by
tax.offset.For example, to represent a tax amount of ₹?5, the value would be
500.10000<TAX_DESCRIPTION>String
Optional.
Tax description.
Maximum 60 characters.
Sales tax<TEMPLATE_LANGUAGE>String
Required.
Template language and locale code.
en_US<TEMPLATE_NAME>String
Required.
Template name.
Maximum 512 characters.
item_back_in_stock_v1<TOTAL_AMOUNT>Integer
Required.
Total amount of order, multiplied by
total_amount.offset value.For example, to represent a total amount of ₹?18, value be
1800.Must be a sum of:
order.subtotal.valueorder.shipping.valueorder.tax.value
Minus:
order.discount.value165000<WHATSAPP_USER_PHONE_NUMBER>String
Required.
WhatsApp user phone number.
+16505551234Example request
curlThe following sample request and responses are only supported with Enabling coupons, realtime inventory and pricing updates feature and it is currently in beta and only available to India businesses and WhatsApp users with an India country calling code. Please reach out to [email protected] to know more.
Get coupons - endpoint sample request
{"data":{"order_details":{"reference_id":"abc.123_xyz-1","type":"physical-goods","currency":"INR","shipping_info":{"country":"IN","addresses":[{"name":"Nidhi Tripathi","phone_number":"919000090000","address":"Bandra Kurla Complex","city":"Mumbai","state":"Maharastra","in_pin_code":"400051","house_number":"12","tower_number":"5","building_name":"One BKC","landmark_area":"Near BKC Circle"}]},"order":{"items":[{"amount":{"offset":100,"value":200000},"sale_amount":{"offset":100,"value":150000},"name":"Blue Elf Aloe","quantity":1,"country_of_origin":"India","importer_name":"Lucky Shrub Imports and Exports","importer_address":{"address_line1":"One BKC","address_line2":"Bandra Kurla Complex","city":"Mumbai","zone_code":"MH","postal_code":"400051","country_code":"IN"}}],"subtotal":{"offset":100,"value":150000},"shipping":{"offset":100,"value":20000},"tax":{"offset":100,"value":10000},"discount":{"offset":100,"value":15000,"description":"Additional 10% off"},"status":"pending","expiration":{"timestamp":"1726627150","description":"order expires in 5 min"}},"total_amount":{"offset":100,"value":165000}},"input":{"user_id":"919000090000"}},"action":"data_exchange","sub_action":"get_coupons","version":"1.0"}
Get coupons - endpoint sample response
{"version":"1.0","sub_action":"get_coupons","data":{"coupons":[{"description":"Save R20 on the order","code":"TRYNEW20","id":"try_new_20_id"},{"description":"Save R30 on the order","code":"TRYNEW30","id":"try_new_30_id"},{"description":"Save R50 on the order","code":"TRYNEW50","id":"try_new50_id"}]}}
Apply coupon - endpoint sample request
{"data":{"order_details":{"reference_id":"abc.123_xyz-1","type":"physical-goods","currency":"INR","shipping_info":{"country":"IN","addresses":[{"name":"Nidhi Tripathi","phone_number":"919000090000","address":"Bandra Kurla Complex","city":"Mumbai","state":"Maharastra","in_pin_code":"400051","house_number":"12","tower_number":"5","building_name":"One BKC","landmark_area":"Near BKC Circle"}]},"order":{"items":[{"amount":{"offset":100,"value":200000},"sale_amount":{"offset":100,"value":150000},"name":"Blue Elf Aloe","quantity":1,"country_of_origin":"India","importer_name":"Lucky Shrub Imports and Exports","importer_address":{"address_line1":"One BKC","address_line2":"Bandra Kurla Complex","city":"Mumbai","zone_code":"MH","postal_code":"400051","country_code":"IN"}}],"subtotal":{"offset":100,"value":150000},"shipping":{"offset":100,"value":20000},"tax":{"offset":100,"value":10000},"discount":{"offset":100,"value":15000,"description":"Additional 10% off"},"status":"pending","expiration":{"timestamp":"1726627150","description":"order expires in 5 min"}},"total_amount":{"offset":100,"value":165000}},"input":{"user_id":"919000090000","coupon":{"code":"TRYNEW10"}}},"action":"data_exchange","sub_action":"apply_coupon","version":"1.0"}
Apply coupon - endpoint sample response
{"sub_action":"apply_coupon","version":"1.0","data":{"order_details":{"reference_id":"abc.123_xyz-1","type":"physical-goods","currency":"INR","shipping_info":{"country":"IN","addresses":[{"name":"Nidhi Tripathi","phone_number":"919000090000","address":"Bandra Kurla Complex","city":"Mumbai","state":"Maharastra","in_pin_code":"400051","house_number":"12","tower_number":"5","building_name":"One BKC","landmark_area":"Near BKC Circle"}]},"order":{"items":[{"amount":{"offset":100,"value":200000},"sale_amount":{"offset":100,"value":150000},"name":"Blue Elf Aloe","quantity":1,"country_of_origin":"India","importer_name":"Lucky Shrub Imports and Exports","importer_address":{"address_line1":"One BKC","address_line2":"Bandra Kurla Complex","city":"Mumbai","zone_code":"MH","postal_code":"400051","country_code":"IN"}}],"subtotal":{"offset":100,"value":150000},"shipping":{"offset":100,"value":20000},"tax":{"offset":100,"value":10000},"discount":{"offset":100,"value":15000,"description":"Additional 10% off"},"status":"pending","expiration":{"timestamp":"1726627150","description":"order expires in 5 min"}},"coupon":{"code":"TRYNEW10","discount":{"value":16500,"offset":100}},"total_amount":{"offset":100,"value":148500}}}}
Remove coupon - endpoint sample request
{"data":{"order_details":{"reference_id":"abc.123_xyz-1","type":"physical-goods","currency":"INR","shipping_info":{"country":"IN","addresses":[{"name":"Nidhi Tripathi","phone_number":"919000090000","address":"Bandra Kurla Complex","city":"Mumbai","state":"Maharastra","in_pin_code":"400051","house_number":"12","tower_number":"5","building_name":"One BKC","landmark_area":"Near BKC Circle"}]},"order":{"items":[{"amount":{"offset":100,"value":200000},"sale_amount":{"offset":100,"value":150000},"name":"Blue Elf Aloe","quantity":1,"country_of_origin":"India","importer_name":"Lucky Shrub Imports and Exports","importer_address":{"address_line1":"One BKC","address_line2":"Bandra Kurla Complex","city":"Mumbai","zone_code":"MH","postal_code":"400051","country_code":"IN"}}],"subtotal":{"offset":100,"value":150000},"shipping":{"offset":100,"value":20000},"tax":{"offset":100,"value":10000},"discount":{"offset":100,"value":15000,"description":"Additional 10% off"},"status":"pending","expiration":{"timestamp":"1726627150","description":"order expires in 5 min"}},"coupon":{"code":"TRYNEW10","discount":{"value":16500,"offset":100}},"total_amount":{"offset":100,"value":148500}},"input":{"user_id":"919000090000"}},"action":"data_exchange","sub_action":"remove_coupon","version":"1.0"}
Remove coupon - endpoint sample response
{"sub_action":"remove_coupon","version":"1.0","data":{"order_details":{"reference_id":"abc.123_xyz-1","type":"physical-goods","currency":"INR","shipping_info":{"country":"IN","addresses":[{"name":"Nidhi Tripathi","phone_number":"919000090000","address":"Bandra Kurla Complex","city":"Mumbai","state":"Maharastra","in_pin_code":"400051","house_number":"12","tower_number":"5","building_name":"One BKC","landmark_area":"Near BKC Circle"}]},"order":{"items":[{"amount":{"offset":100,"value":200000},"sale_amount":{"offset":100,"value":150000},"name":"Blue Elf Aloe","quantity":1,"country_of_origin":"India","importer_name":"Lucky Shrub Imports and Exports","importer_address":{"address_line1":"One BKC","address_line2":"Bandra Kurla Complex","city":"Mumbai","zone_code":"MH","postal_code":"400051","country_code":"IN"}}],"subtotal":{"offset":100,"value":150000},"shipping":{"offset":100,"value":20000},"tax":{"offset":100,"value":10000},"discount":{"offset":100,"value":15000,"description":"Additional 10% off"},"status":"pending","expiration":{"timestamp":"1726627150","description":"order expires in 5 min"}},"total_amount":{"offset":100,"value":165000}}}}
Apply shipping - endpoint sample request
{"data":{"order_details":{"reference_id":"abc.123_xyz-1","type":"physical-goods","currency":"INR","shipping_info":{"country":"IN","addresses":[{"name":"Nidhi Tripathi","phone_number":"919000090000","address":"Bandra Kurla Complex","city":"Mumbai","state":"Maharastra","in_pin_code":"400051","house_number":"12","tower_number":"5","building_name":"One BKC","landmark_area":"Near BKC Circle"}]},"order":{"items":[{"amount":{"offset":100,"value":200000},"sale_amount":{"offset":100,"value":150000},"name":"Blue Elf Aloe","quantity":1,"country_of_origin":"India","importer_name":"Lucky Shrub Imports and Exports","importer_address":{"address_line1":"One BKC","address_line2":"Bandra Kurla Complex","city":"Mumbai","zone_code":"MH","postal_code":"400051","country_code":"IN"}}],"subtotal":{"offset":100,"value":150000},"shipping":{"offset":100,"value":20000},"tax":{"offset":100,"value":10000},"discount":{"offset":100,"value":15000,"description":"Additional 10% off"},"status":"pending","expiration":{"timestamp":"1726627150","description":"order expires in 5 min"}},"coupon":{"code":"TRYNEW10","discount":{"value":16500,"offset":100}},"total_amount":{"offset":100,"value":148500}},"input":{"user_id":"919000090000","selected_address":{"name":"Nidhi Tripathi","phone_number":"919000090000","address":"Bandra Kurla Complex","city":"Mumbai","state":"Maharastra","in_pin_code":"400051","house_number":"12","tower_number":"5","building_name":"One BKC","landmark_area":"Near BKC Circle"}}},"action":"data_exchange","sub_action":"apply_shipping","version":"1.0"}
Apply shipping - endpoint sample response
{"sub_action":"apply_shipping","version":"1.0","data":{"order_details":{"reference_id":"abc.123_xyz-1","type":"physical-goods","currency":"INR","shipping_info":{"country":"IN","addresses":[{"name":"Nidhi Tripathi","phone_number":"919000090000","address":"Bandra Kurla Complex","city":"Mumbai","state":"Maharastra","in_pin_code":"400051","house_number":"12","tower_number":"5","building_name":"One BKC","landmark_area":"Near BKC Circle"}],"selected_address":{"name":"Nidhi Tripathi","phone_number":"919000090000","address":"Bandra Kurla Complex","city":"Mumbai","state":"Maharastra","in_pin_code":"400051","house_number":"12","tower_number":"5","building_name":"One BKC","landmark_area":"Near BKC Circle"}},"order":{"items":[{"amount":{"offset":100,"value":200000},"sale_amount":{"offset":100,"value":150000},"name":"Blue Elf Aloe","quantity":1,"country_of_origin":"India","importer_name":"Lucky Shrub Imports and Exports","importer_address":{"address_line1":"One BKC","address_line2":"Bandra Kurla Complex","city":"Mumbai","zone_code":"MH","postal_code":"400051","country_code":"IN"}}],"subtotal":{"offset":100,"value":150000},"shipping":{"offset":100,"value":40000},"tax":{"offset":100,"value":10000},"discount":{"offset":100,"value":15000,"description":"Additional 10% off"},"status":"pending","expiration":{"timestamp":"1726627150","description":"order expires in 5 min"}},"coupon":{"code":"TRYNEW10","discount":{"value":16500,"offset":100}},"total_amount":{"offset":100,"value":168500}}}}










