API CHANGE

POS UI Extensions 2026-07
割引計算が単価ベースへ変更

FixedAmount行割引の渡し方が「合計額」から「1単位あたりの額」に。アプリの計算ロジック修正が必要。

2026-04 以前pass: 5.00(合計割引額)数量2 × ? → POS側が自動変換合計 $5.00 discount ✓POS が自動で per-unit 変換2026-07 以降pass: 2.50(per-unit 割引額)数量2 × $2.50 = 合計 $5.00合計 $5.00 discount ✓アプリ側で per-unit 計算が必須BREAKING

POS UI Extensions API 2026-07 より、setLineItemDiscount / bulkSetLineItemDiscounts に渡す FixedAmount 割引の値が「行合計」から「1単位あたり」に変更されます。2026-04 以前のバージョンを使用しているアプリには影響がありませんが、2026-07 に移行するアプリはリリース前に計算ロジックの修正が必須です。パーセンテージ割引は対象外です。

WHAT CHANGED

01何が変わったのか:Before / After 図解

BEFORE (2026-04 以前)AFTER (2026-07 以降)アプリが渡す値5.00(合計割引額)POS が自動変換$5.00 ÷ 2 = $2.50 / unit合計 $5.00 適用 ✓アプリが渡す値(変更後)2.50(per-unit 割引額)POS は値をそのまま適用$2.50 × 2 units = $5.00合計 $5.00 適用 ✓CHANGE

▲ 渡す値の意味が変わるだけで、正しく計算すれば最終的な割引結果は同じ。問題は「計算ロジックを変えないまま移行」した場合に、意図の2倍の割引が適用されてしまう点。

USE CASES

02業務に活かせる具体ユースケース

課題
数量まとめ買い時に合計○○円引きを適用するPOSアプリを運用中。2026-07に移行したら割引が2倍になってしまった。
打ち手
setLineItemDiscount 呼び出し前に、渡す値を「合計割引額 ÷ 数量」に変換するユーティリティ関数を実装する。
効果
API バージョンを上げても意図した割引額が正確に適用され、過剰値引きによる損失を防止できる。
技術メモ
割り切れない場合は端数処理(切り捨て・四捨五入)をアプリのポリシーに合わせて実装し、最終割引額の整合性を確認すること。
課題
複数商品ラインへの一括割引を bulkSetLineItemDiscounts で処理しているが、各行の数量が異なるため per-unit 計算が複雑。
打ち手
各行アイテムの数量を取得してループ処理し、totalDiscount / quantity を per-unit 値として配列に格納してから一括送信する。
効果
一括処理でも行ごとに正確な per-unit 割引が適用され、カート全体の割引総額を意図通りにコントロールできる。
技術メモ
Cart API リファレンスで各行アイテムの数量フィールドを確認し、バンドル商品など特殊ケースでの挙動をテスト環境で検証すること。
課題
パーセンテージ割引と固定額割引を組み合わせて使うアプリで、2026-07 移行時にどちらを修正すべきか判断が難しい。
打ち手
今回の変更は FixedAmount 割引のみ対象。パーセンテージ割引は変更不要のため、コードベースで FixedAmount タイプを使っている箇所だけを特定して修正範囲を絞る。
効果
修正スコープを最小化しながら安全に移行でき、回帰テストのコストも低減できる。
技術メモ
APIバージョンを変更する前に、FixedAmount 割引を呼び出しているすべての箇所をリストアップし、単体テストで per-unit 値の正確性を確認してから本番リリースすること。
FOR DEVELOPERS

03技術者が押さえるべき5つのポイント

POINT 01影響対象FixedAmount のみPercentage は変更なし2026-07 採用アプリのみ対象POINT 02後方互換性2026-04 以前のアプリは変更不要バージョン固定なら影響なしPOINT 03端数処理の注意割り切れない場合はアプリ側でポリシーを決定公式ガイドなしPOINT 04対象関数setLineItemDiscountbulkSetLineItemDiscountsCart API 経由POINT 05計算例(数量2、合計$5割引したい場合)per-unit = 5.00 ÷ 2 = 2.50→ pass 2.50 to setLineItemDiscountMIGRATION GUIDE

04移行チェックリスト

確認項目 対象 ステータス
FixedAmount 割引を使用している箇所を全リストアップ 全開発者 必須
per-unit = 合計割引額 ÷ 数量 の計算ロジックを実装 2026-07 移行組 必須
割り切れない場合の端数処理ポリシーを決定 2026-07 移行組 必須
Percentage 割引のロジック変更 全開発者 不要
2026-04 以前バージョンのアプリ修正 バージョン固定組 不要
Cart API リファレンスで最新仕様を確認 全開発者 推奨
2026-07 へ移行する POS アプリは、FixedAmount 割引の値を「合計額」ではなく「1単位あたりの額(合計 ÷ 数量)」に変換してから渡すよう計算ロジックを修正することで、意図した割引が正確に適用され、過剰割引や機会損失を防ぐことができます。

Source: https://shopify.dev/changelog/pos-ui-extensions-2026-07-uses-per-unit-fixed-amount-line-item-discounts | 公開日: 2026年7月8日