If you build or maintain Shopify POS UI extensions, the latest POS 11.15 release brings a critical change that can affect how discounts are displayed and calculated across your apps. This post breaks down the update, explains who needs to act, and provides clear steps to keep your extensions running smoothly.
What Changed
Prior to POS 11.15, a 25% discount on a $200 line item returned a Discount.amount of 50 – the monetary value of the discount. Starting with POS 11.15, Discount.amount now returns the literal percentage (25), matching the Cart API contract. The change applies to all percentage‑type discounts at the cart level and per line item, including manual, app‑applied, and automatic discounts that use type "Percentage". FixedAmount and Code discounts remain unchanged.
Who Is Affected
The update impacts every POS UI extension, regardless of the API version you target. Keeping an older api_version does not preserve the previous behavior, so extensions running on POS 11.14 or earlier will still see the old monetary amount, while those on 11.15+ will receive the percentage. Both developers and merchants who rely on extensions for loyalty points, savings calculations, or custom pricing logic will notice the difference.
Why It Matters
Treating the amount as a percentage eliminates a long‑standing mismatch between the POS UI and the Cart API. Without the fix, extensions that displayed the discount as money could double‑count savings or miscalculate loyalty rewards. Aligning the data model also prevents errors when extensions push cart state back via bulkCartUpdate, where a monetary value could be mistakenly interpreted as a percentage.
Action Steps for Developers
js
// Sample POS UI extension discount handling
function formatDiscount(discount) {
if (discount.type === 'Percentage') {
// amount is now a percent, not a money value
return ${discount.amount}% off;
}
// For FixedAmount or Code discounts, amount is a Money object
return $${(discount.amount / 100).toFixed(2)} off;
}
Testing Your Extension
Conclusion & Next Steps
Shopify’s POS 11.15 fix brings the Discount.amount field in line with the Cart API, but it also means extensions that previously treated percentage discounts as money must be updated. By adding a simple type check and adjusting your UI and calculations, you can avoid display errors and keep loyalty programs accurate. Stay on top of future POS releases, and consider adding automated tests that validate discount handling across POS versions.
Ready to update your extension? Dive into the Shopify developer docs, run the tests above, and publish the new version today. If you have questions, drop a comment or reach out to the Shopify developer community for support.
