The line carries its selling plan allocation
A cart line bought on a plan is the same variant with a selling plan id beside it. The cart answers with the line's selling plan allocation.
This store's plan delivers every 30 days and has no pricing policy. A plan like that changes when the buyer is charged, not what they are charged.
mutation {
cartCreate(input: {
lines: [{
merchandiseId: "gid://shopify/ProductVariant/…"
quantity: 1
sellingPlanId: "gid://shopify/SellingPlan/…"
}]
}) {
cart {
lines(first: 10) {
nodes {
sellingPlanAllocation {
sellingPlan { name }
priceAdjustments { price { amount } }
}
cost { amountPerQuantity { amount } totalAmount { amount } }
}
}
}
}
}Into the cart
- 1 × Single Bag at $40.00, on the selling plan “Every 30 days”
- No cart attribute, so the app's functions return no operations
What Shopify returned
| Line | Quantity | Price | Discounts on the line | Line total |
|---|---|---|---|---|
| Single BagSelling plan “Every 30 days”, no price adjustments | 1 | $40.00 | none | $40.00 |
| Discounts on the cart | none | |||
| Cart total | $40.00 | |||
What that shows
- The line came back with its selling plan allocation, naming the plan.
- The plan has no pricing policy: the allocation listed no price adjustments and the line cost the variant's $40.00.
A plan with a pricing policy changes the line's price
A second product on this store is sold on a plan whose pricing policy takes 10% off. The allocation then lists a price adjustment, and the line's price is the plan's.
The saving is part of the price. It is not in any list of discounts.
Into the cart
- 1 × Travel Tin at $50.00, on the selling plan “Every 30 days, 10% off”
- On the store, Shopify's automatic discount “VERIFY tin 20% off”: 20% off the tin, one-time purchases only, combines with product, order and shipping discounts
What Shopify returned
| Line | Quantity | Price | Discounts on the line | Line total |
|---|---|---|---|---|
| Travel TinSelling plan “Every 30 days, 10% off”, 1 price adjustment | 1 | $45.00 | none | $45.00 |
| Discounts on the cart | none | |||
| Cart total | $45.00 | |||
What that shows
- The selling plan allocation listed one price adjustment, and the line's price was $45.00: the variant's $50.00 less the plan's 10%.
- The $5.00 was not reported as a discount: no discount allocation appeared anywhere in the cart.
- The store's 20% automatic discount on this product, set to one-time purchases, did not reach the subscription line, and the cart returned no warning about it.
An automatic app discount prices the subscription line
A subscription price does not have to live in the plan. Here the plan stays at the variant's price and an automatic app discount, set to apply to subscriptions, takes the saving off the line.
The saving then shows as a discount allocation, separate from the plan, so the plan's own figures and the line's price before discounts stay at the variant's price.
Into the cart
- 1 × Single Bag at $40.00, on the selling plan “Every 30 days”
- The cart attribute the app discount's function reads
What Shopify returned
| Line | Quantity | Price | Discounts on the line | Line total |
|---|---|---|---|---|
| Single BagSelling plan “Every 30 days”, no price adjustments | 1 | $40.00 | −$8.00 automatic, “Offer Suite” | $32.00 |
| Discounts on the cart | none | |||
| Cart total | $32.00 | |||
What that shows
- The subscription line cost $32.00: the function's $8.00 came off as an automatic discount allocation on the line.
- The selling plan allocation still listed no price adjustments: the discount is not part of the plan's price.
A code for one-time purchases does not reach a subscription line
A discount code states which purchases it applies to. This one is set to one-time purchases only, and the cart holds nothing but a subscription line.
The cart is created all the same. It says the code was not applied, and why.
Into the cart
- 1 × Single Bag at $40.00, on the selling plan “Every 30 days”
- No cart attribute, so the app's functions return no operations
- Code VERIFY-BAG5: $5.00 off the bag, one-time purchases only, combines with product, order and shipping discounts
What Shopify returned
| Line | Quantity | Price | Discounts on the line | Line total |
|---|---|---|---|---|
| Single BagSelling plan “Every 30 days”, no price adjustments | 1 | $40.00 | none | $40.00 |
| Discounts on the cart | none | |||
| Cart total | $40.00 | |||
VERIFY-BAG5applicable: false- warning
DISCOUNT_NO_ENTITLED_LINE_ITEMS“The VERIFY-BAG5 discount code is not valid for the items in your cart”
What that shows
- The cart was created and listed the code as not applicable.
- The cart's warning was DISCOUNT_NO_ENTITLED_LINE_ITEMS, and the line cost its full $40.00.
How this was verified
Every cart on this page was built through the Storefront API on a Shopify Plus development store we keep for this, on API version 2026-10, and read back as Shopify priced it. The store sells two products in these carts: Single Bag, at $40.00, also sold on a selling plan named “Every 30 days” that has no pricing policy; Travel Tin, at $50.00, also sold on a selling plan named “Every 30 days, 10% off” whose pricing policy takes 10% off. It quotes two delivery rates to a US address.
It has one automatic app discount, titled “Offer Suite”, with a product class and a shipping class, set to combine with product, order and shipping discounts. Its function reads a cart attribute: with it, the function takes 25% off one unit of Single Bag bought once, or $8.00 off the unit on its selling plan, and makes the cheapest delivery rate free. Without it, the function returns no operations.
| Discount | Class | Gives | Combination setting |
|---|---|---|---|
| Automatic, “VERIFY tin 20% off” | Product | 20% off the tin, one-time purchases only | combines with product, order and shipping discounts |
| Code VERIFY-BAG5 | Product | $5.00 off the bag, one-time purchases only | combines with product, order and shipping discounts |
A suite builds these carts again and reads the discount settings from the store before it does. A statement that no longer matches the cart takes this page down until it is corrected, and no cart stands for more than 90 days without being built again. This is what one store returned on one API version: your store’s plan, markets and other apps can change the result, so build the cart.
Seen something different on your store? Write to privacy@offersuite.io with the cart and we’ll run it.