Cross-sell
Last updatedOverview#
Cross-sell is an effective marketing tactic used by many stores to increase sales and revenues. It is a type of sales technique that encourages customers to purchase additional items when making a purchase. This feature allows customers to add products the order in one click, after they have already completed their checkout.
What is required to enable Cross-sell?#
Currently, Cross-sell feature available in CheckoutAPI and ShopAPI when using Klarna Checkout v3. Read how to enable Cross-sell feature for Klarna Checkout v3 plugin.
How does Cross-sell feature work?#
Cross-sell feature allows to add additional products to the order in one click, after checkout is completed and without filling shipping address and payment details again.
- Store customer finished checkout and was redirected to thank you page by payment provider
- Your website calls
PUT /payment-result
response to the call contains objectcrossSell
which provides information whether payment provider supports cross-sell:1 2 3 4 5 6 7 8
{ // ... "crossSell": { "isAllowed": true, // Is post purchase cross-selling allowed "timeLimit": 3 // Cross-sell time limit in minutes } // ... }
- If the order supports cross-sell you can offer the customer to add additional products to the order.
- For adding cross-sell products to the order serve dedicated API endpoints in Shop API and Checkout API:
POST orders/{order}/items/{item}
- When cross-sell time out is over Centra sends Order Confirmation email to customer
Which products can be added to order?#
For cross-sell products work the same rules as for the products that can be added to basket. The only exception - flexible bundles are not available for cross-selling. When a product already exists in the order and is also added as a post-purchase cross-sell product, the newly added cross-sell product will appear as a separate order line.
Getting products information through APIs#
Getting cross-sell products information is the same for both Checkout API and Shop API.
The product information should be identical to a standard products call. It includes all the pricing information like:
price
priceAsNumber
priceWithoutTax
priceWithoutTaxAsNumber
priceBeforeDiscount
priceBeforeDiscountAsNumber
You can get the upsold products information by calling following endpoint:
POST <api-url>/orders/<order-number>/items
ie. POST /checkout-api/orders/69/items
with body specifying which products should the API return:
1
2
3
{
"products": [1, 2, 3, 4, 5]
}
You must specify which product data to return.
Success
If all the products are found then the response will be:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"token": "...",
"products": [
{
"product": "1",
"name": "Test Product",
"uri": "test-product",
"sku": "123456",
...
},
...
]
}
Partial success
If products will be fetched partially, then the response will be:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"token": "...",
"successfullyFetched": [
1,
2,
5
],
"failedToFetch": [
3,
4
],
"products": [
{
"product": "1",
"name": "Test Product",
"uri": "test-product",
"sku": "123456",
...
},
...
]
}
Failure
If no products can be found an error will be returned:
1
2
3
4
5
6
{
"token": "...",
"errors": {
"products": "products not found"
}
}
Full response example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
{
"token": "...",
"products": [
{
"product": "1",
"name": "Test Product",
"uri": "test-product",
"sku": "123456",
"productSku": "123",
"brand": "1",
"brandName": "Brand",
"brandUri": "brand",
"collection": "1",
"collectionName": "Collection",
"collectionUri": "collection",
"variantName": "Red",
"countryOrigin": "",
"excerpt": "",
"excerptHtml": "",
"description": "",
"descriptionHtml": "",
"metaTitle": "",
"metaDescription": "",
"metaKeywords": "",
"stockUnit": "",
"category": "1",
"centraProduct": "1",
"centraVariant": "1445",
"itemQuantityMinimum": 1,
"itemQuantityMultipleOf": 1,
"price": "100.00 SEK",
"priceAsNumber": 100,
"priceWithoutTax": "80.00 SEK",
"priceWithoutTaxAsNumber": 80,
"priceBeforeDiscount": "100.00 SEK",
"priceBeforeDiscountAsNumber": 100,
"discountPercent": 0,
"showAsOnSale": false,
"showAsNew": false,
"itemTable": {
"unit": "",
"original": {
"x": [
""
],
"y": []
},
"x": [
""
],
"y": [],
"dividerSymbol": "x",
"desc": "One Size"
},
"items": [
{
"sizeId": "1",
"item": "1-1",
"ean": "ABCDEFGHIJKL",
"itemTableY": 0,
"itemTableX": 0,
"name": "",
"sku": "123456789"
}
],
"categoryName": [
"Shop"
],
"categoryUri": "shop",
"categories": [
{
"pathIds": [],
"uri": "shop",
"sortOrder": 1000001,
"name": [
"Shop"
],
"category": "1"
}
],
"media": {
"standard": [
"https://example.com/client/dynamic/images/1_9adfeff6f2-red.jpg",
"https://example.com/client/dynamic/images/1_3a541eaec0-no-connect.jpg"
]
},
"mediaObjects": [
{
"media": 1,
"sources": {
"standard": [
{
"url": "https://example.com/client/dynamic/images/1_9adfeff6f2-red.jpg"
}
]
},
"attributes": {
"test_media_attribute_test": "test attribute"
}
},
{
"media": 2,
"sources": {
"standard": [
{
"url": "https://example.com/client/dynamic/images/1_3a541eaec0-no-connect.jpg"
}
]
},
"attributes": []
}
],
"subscriptionPlans": [
{
"intervalType": "month",
"discountPercent": 0,
"subscriptionPlan": 1,
"name": "1 month subscription",
"shippingType": "DYNAMIC",
"id": "1",
"intervalValue": 1,
"status": "ACTIVE"
}
],
"modifiedAt": "2023-02-23 12:38:42",
"createdAt": "2020-02-01 12:00:00",
"campaigns": [
{
"pricelists": [
23
],
"markets": [
1
],
"showAsNew": false,
"flags": 1,
"percent": 23400.5,
"startDate": "2018-12-17T12:00:00+0100",
"stopDate": "2024-02-09T15:54:35+0100",
"showAsOnSale": false
},
{
"pricelists": [
19
],
"markets": [
3
],
"showAsNew": false,
"flags": 0,
"percent": 50,
"startDate": "2019-01-04T13:00:00+0100",
"stopDate": "2023-03-09T15:54:35+0100",
"showAsOnSale": true
}
],
"measurementChart": [],
"some_variation_attribute_text": "red variation value",
"relation": "variant",
"relatedProducts": [
{
"product": "10",
"media": {
"standard": [
"https://example.com/client/dynamic/images/1_3a541eaec0-no-connect.jpg"
]
},
"mediaObjects": [
{
"media": 2,
"sources": {
"standard": [
{
"url": "https://example.com/client/dynamic/images/1_3a541eaec0-no-connect.jpg"
}
]
},
"attributes": []
}
],
"relation": "variant"
}
]
}
]
}
Centra AMS#
Order with cross-sell products
Order lines that were added to Order through cross-sell are displayed in section “Order products“
Order history section contains information about cross-sell transactions. Previous auth transactions are “deprecated“ by adding suffix “-old“. Centra creates new auth transaction.
Order History section contains data about upsold products.
Order with failed cross-sell transaction
In case when Cross-sell transaction failed, Centra:
- reverts Order to the state before adding new Line Item
- logs failed transaction
- logs data to Order history
- Order Receipt email is sent after cross-sell time out limit is over
The previous successful transaction remains active and can be captured as usual.
Cross-sell feature using Klarna Checkout plugin#
After a successful checkout web-shop displays a list of products that the customer can add to the created order.
Increasing the order amount is not allowed for all payment methods, see below for details on when it is allowed. Any update to the order amount will override and replace the original order amount as well as any possible order lines you might have sent with the order.
Important note: Sometimes the increase might be rejected as we are not allowed to grant a customer an extended order amount. In these cases, the customer should be asked to place a new order in your shop for the new items. Be aware that increasing the order amount will trigger a second risk assessment on the customer, sometimes even a credit lookup.
Update the total order amount flow
More information read in documentation Klarna. Update order amount.