Available in🇮🇳 India
SKU and Brand Offers let you attach offers to individual products (SKUs) in an order instead of the whole cart. For example, a customer buying a laptop and a mouse can get ₹3,000 off the laptop and ₹2,000 off the mouse in a single checkout session. Both merchant-funded offers and brand-funded offers, such as a brand’s bank discount on a specific phone model, are supported.
You send the cart’s SKUs in the order. Razorpay Standard Checkout finds the offers that match those SKUs, shows them to the customer and applies the best offers automatically.
To show these offers on your own website or app before checkout, for example on product pages, use the Fetch and Match Offers APIs.
Feature RequestThis is an on-demand feature. Contact your Razorpay account manager to enable SKU and Brand Offers on your account. Razorpay configures the offers and the SKUs they apply to for you. SKU and Brand Offers on Standard Checkout work in both test mode and live mode, so you can test your integration before you go live.
Availability
Customer Experience
Watch this video to see SKU and Brand Offers on Standard Checkout. The customer sees the offers for each product in the cart, the best offers are applied automatically and the order summary shows the discount on each item.
How It Works
Your backend makes the API calls. Standard Checkout handles everything in between.Integration Steps
Step 1: Create an Order With Line Items
When the customer clicks Pay, create an order using the Orders API and pass every SKU in the cart in theline_items array. Razorpay matches offers using these line items, so include all SKUs with accurate prices and quantities.
POST /v1/orders
Curl
Request Parameters
integer
required
Total order amount in paise. It must equal the total of
price × quantity across all line_items. For example, pass 5500000 for ₹55,000.string
required
Currency of the order. Possible value is
INR.string
Your internal order reference for reconciliation. Maximum length is 40 characters and it must be unique.
array
required
The products in the customer’s cart.
string
required
SKU identifier of the product. It must match the SKU configured in the offer.
string
required
Brand of the product. For example,
apple. Not case-sensitive. Brand offers are evaluated correctly only when you pass it.integer
required
Unit price of the product in paise.
integer
required
Number of units of the product.
string
Name of the product. Shown to the customer on Checkout.
string
Public URL of the product image.
Response
Response Parameters
string
Unique identifier of the order. Pass this to Standard Checkout.
string
Status of the order. It is
created when the order is created successfully.array
Identifiers of the offers that apply to the SKUs in this order.
string
Your internal order reference, returned as sent.
Step 2: Open Standard Checkout
Open Standard Checkout with theorder_id from Step 1. You do not need to pass offer IDs. Checkout reads the line_items on the order and fetches and displays the offers that apply.
Checkout Options
Step 3: Handle the payment.authorized Webhook
Razorpay sends thepayment.authorized webhook to your endpoint after the payment is processed. Set up your webhook endpoint on the Dashboard. Your endpoint must return HTTP 200. Otherwise, Razorpay retries the delivery. Know more about webhook delivery and retries.
Sample Payload
Step 4: Fetch the Order to Confirm Applied Offers
After you receive thepayment.authorized webhook, fetch the order with expand[]=offers. The response shows the final order state, the offers applied and the discount on each SKU. Use it for fulfilment, CRM and reconciliation.
Handy TipsCall this API only after you receive the
payment.authorized webhook. The order status and applied offers are final only once the payment is authorised.GET /v1/orders/:id?expand[]=offers
Curl
Response
Response Parameters
string
Unique identifier of the order.
integer
Original order amount in paise, before discounts.
integer
Amount charged to the customer in paise, after discounts.
integer
Amount still due in paise. It is
0 for a fully paid order.string
Status of the order. Possible values are
created, attempted and paid.object
Key-value pairs of notes for the order.
array
IDs of the offers on the order, including the ones in
offers_applied.object
Applied offers:
entity (always collection), count and items. Returned when you pass expand[]=offers.string
Identifier of the applied offer.
string
redeemed means the offer was applied successfully.array
Benefits applied by this offer.
type: Benefit type. Possible values areinstant_discount,cashback,no_cost_emi,low_cost_emiandalready_discounted.applicable_on:line_itemfor an SKU-level offer orcartfor a cart-level offer.calculated_benefit_value: Total benefit amount from this benefit in paise.benefit_breakup: Benefit on each SKU, withsku,brand,applied_quantityandcalculated_benefit_value. Present only forline_itembenefits.