Order Details Carousel
Send a carousel where each card carries a complete WhatsApp Pay order details payload — itemised order, shipping address, totals, payment-option expiry. The customer can pay each order directly inside WhatsApp without leaving the chat.
Use this when you want to show multiple distinct orders (e.g. “Cake A” and “Cake B”) in one message, each independently payable.
Endpoint
POST https://apis.splashifypro.com/api/v1/public/messageHeaders
| Header | Value |
|---|---|
Authorization | Basic YOUR_API_KEY |
Content-Type | application/json |
Request body
{
"phoneNumber": "9999999999",
"callbackData": "wapay_carousel_001",
"type": "Template",
"template": {
"name": "carousel_var",
"languageCode": "en",
"bodyValues": ["mj"],
"carouselCards": [
{
"headerValues": ["https://your-cdn.example.com/cake-strawberry.mp4"],
"bodyValues": ["mj"],
"buttonValues": {}
},
{
"headerValues": ["https://your-cdn.example.com/cake-chocolate.mp4"],
"bodyValues": ["mj1"],
"buttonValues": {}
}
],
"order_details": [
{
"reference_id": "22july25mjwapaytemp111",
"order_items": [
{
"name": "Strawberry Cake",
"quantity": 1,
"amount": 1,
"country_of_origin": "India"
}
],
"shipping_addresses": [
{
"name": "Akhil Kumar",
"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",
"country": "IN"
}
],
"subtotal": 1,
"discount": 0,
"tax": 0,
"shipping": 0,
"total_amount": 1,
"currency": "INR",
"payment_option_expires_in": {
"value": 15,
"unit": "minutes",
"expiration_message": ""
}
},
{
"reference_id": "22july25mjwapaytemp2333",
"order_items": [
{ "name": "Chocolate Cake", "quantity": 1, "amount": 1, "country_of_origin": "India" }
],
"shipping_addresses": [
{
"name": "Akhil Kumar",
"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",
"country": "IN"
}
],
"subtotal": 1, "discount": 0, "tax": 0, "shipping": 0,
"total_amount": 1,
"currency": "INR",
"payment_option_expires_in": { "value": 15, "unit": "minutes", "expiration_message": "" }
}
]
}
}| Field | Required | Notes |
|---|---|---|
template.carouselCards[] | yes | Same shape as a regular carousel — header + body + (no) buttons |
template.order_details[] | yes | One entry per card — index aligned with carouselCards |
order_details[].reference_id | yes | Unique id per order. Use this on your side to reconcile WhatsApp Pay webhooks |
order_details[].order_items[] | yes | Itemized list — name, quantity, amount, country_of_origin |
order_details[].shipping_addresses[] | conditional | Mandatory for physical goods, optional for digital goods |
order_details[].subtotal/discount/tax/shipping/total_amount | yes | Numbers, in the smallest currency unit (paise for INR) |
order_details[].currency | yes | ISO 4217 — INR, USD, etc. |
order_details[].payment_option_expires_in | optional | { value, unit (minutes/hours), expiration_message } — when the payment link expires |
Example
The full request body shown above is a copy-pasteable example.
Successful response — 201 Created
{
"result": true,
"message": "Message created successfully",
"id": "8d620ba1-640f-42ee-a8dd-15363422144b"
}Tips
reference_idis your reconciliation key. It comes back on every WhatsApp Pay webhook. Generate it server-side and persist it before the API call.- Country codes in addresses use ISO 3166-1 alpha-2 (
IN,US,BD). - Use Order Status to follow up after an order is paid / cancelled / shipped.
- For a single-image variant of the same flow, see Order Details — Single Image.