Shopifyエージェンシー向け
Shopifyで見積が誤った価格で変換される理由:差の大きさから診断する
著者 Jahangir Alam · 2026年10月9日 · 13分で読めます
- 最終確認日
- Shopify API
- 2026-10
- 対象読者
- 変換した見積の下書き注文、請求書、注文が異なる価格を示している問題に対応するShopifyエージェンシーと開発者
- 範囲
- API 2026-10時点で承諾済みの見積から作成した下書き注文、請求書のチェックアウト、注文:価格の上書きとカタログ価格、送信時の価格ロック、為替レートと表示通貨の金額、税込み設定と免税、自動割引と割引コード、割引の配分と端数、分割した下書き、配送、前受金、注文後の変更
見積がShopifyの下書き注文に変換されたときに価格が違っていたら、原因を探す前に差を測ってください。どこに現れるか、どの段階で現れるか、どれだけの大きさか。明細がちょうどカタログ価格になっている、すべての金額が為替レートの分だけずれている、合計がちょうど税の行の分だけ高い、誰も見積に入れていない割引ひとつ分だけ合計が低い、明細ごとに1セントずれている。こうした差の形には、それぞれShopifyで文書化された原因があり、設定をひとつも開かないうちに、差の大きさが原因を指し示します。
このページはその診断です。観察された差から始まる表、各原因を裏づけるShopifyのフィールド、修正方法、そしてShopifyが想定どおりと文書化している結果、つまり送信時の価格ロック、外貨の下書きを編集したあとの再価格づけ、税込価格で全額を請求される免税バイヤーを、本当の不具合と区別して扱います。見積の時点と変換の時点の間で壊れるものは同じ問題の設計の側です。差が生じないように何を作るべきかを扱っています。
以下のShopifyに関する記述はすべて、2026年10月9日にShopify自身のページでAPIバージョン2026-10を対象に確認しました。出典は末尾にあります。
まず差を測る
3つの数字を、この順に確認します。
- どこに現れるか。 明細の価格、注文の割引、小計、税、配送、今すぐ支払う金額、明細の欠落や余分な明細。あるいはストア通貨のレポートだけ。
- 最初に現れる段階。 計算した下書き(保存しておいた入力に対する
draftOrderCalculate)、保存された下書き、請求書のチェックアウト、注文のどれか。計算した下書きの時点ですでに違っていれば入力が間違っています。チェックアウトか注文だけが違うなら、作成後に何かが変わっています。 - 差の形。 推測する前に引き算と割り算をします。Y − X が割引ひとつ分か税の行と等しい、Y ÷ X が為替レートか(1 + 税率)と等しい、明細ごとに1セントの差、明細1行分の差。
そのうえで、当てはまる行を読んでください。
差の形ごとの診断
| # | バイヤーが承諾したのはX、見えているのはY | 段階 | 差の形 | 原因(除外していく順) | 確認するもの | 修正 |
|---|---|---|---|---|---|---|
| 1 | 明細がストアまたは会社のカタログの価格になっている | 計算した下書き、または保存された下書き | カタログ価格 − 合意価格。バリアント明細のみ | 明細に priceOverride がない。合意価格をバリアント明細のカスタム明細用フィールドで送った。管理画面で明細を追加し直した |
明細の priceOverride がnull。originalUnitPriceSet = カタログ価格。allVariantPricesOverridden がfalse |
交渉済みのバリアント明細すべてに、下書きの通貨で priceOverride を送る(パターン1) |
| 2 | 下書きでは正しいが、請求書のチェックアウトで違う | 請求書のチェックアウト | 商品またはカタログの新しい価格 | 請求書を送った時点で価格がロックされていないカタログ価格の明細。送信後に下書きを編集した | priceOverride がない。送信時のロック。updatedAt が請求書より後 |
価格を上書きするか、送信時にロックする。送信後は決して編集しない(パターン2) |
| 3 | すべての金額、または注文の割引が、為替レートに近い倍率でずれている | 下書き | × レート | 別の通貨で送った価格(自動で換算される)。あとから下書きを編集した(現在のレートで再価格づけされる)。表示通貨を設定していない。固定額の割引がストア通貨として読まれた | presentmentCurrencyCode。各 priceOverride.currencyCode。appliedDiscount.amountSet のストア通貨と表示通貨の金額 |
見積の時点で通貨を確定し、その通貨で下書きを作成する。保存済みの外貨の下書きは編集しない(パターン3) |
| 4a | 合計が税の行の全額分だけ高い | 下書きまたはチェックアウト | = totalTaxSet |
免税が適用されなかった。税込価格での免税バイヤー | taxExempt、taxesIncluded、所在地の税設定 |
下書きに会社所在地を設定する。税込価格のストアでは免税バイヤーの価格を明示的に設定する(パターン4) |
| 4b | 税率の差の分だけ税が違う | 下書き、チェックアウト、または注文 | 課税対象額 × (税率₁ − 税率₂) | 配送先住所が違う。配送先住所がないため請求先住所が使われた。チェックアウトの住所がマーケットの外。2026-10以降は、注文での住所変更 | taxLines[].rate、各住所 |
下書きに配送先を設定する。変換時に比較する |
| 4c | 明細の価格が(1 + 本拠地の税率)で割られている、または掛けられている | 下書き | カタログ価格の明細で ÷ または ×(1 + 税率) | 税込みまたは動的な税込みのマーケット価格。見積と下書きで taxesIncluded が一致しない |
見積と下書きの taxesIncluded |
バイヤーのマーケットと同じ税の基準で見積を作る |
| 5 | 誰も見積に入れていない金額ひとつ分だけ合計が低い | 下書きまたはチェックアウト | = プラットフォームの割引ひとつ | 自動割引を受け入れた。バイヤーがチェックアウトでコードを入力した。同じ割引を明細の割引と注文の割引の両方で送った。Plusストアのカート変換 | platformDiscounts(タイトル、コード、自動かどうか)。注文の discountApplications |
acceptAutomaticDiscounts と allowDiscountCodesInCheckout を明示的に設定する。割引はひとつを、一か所で(パターン5) |
| 6 | 見積に入れた割引がない、または小さい | 下書き | = 欠けた割引、またはより小さい基準額に対するパーセンテージ | 対象外のコード(スキップされる)。配送やX個買うとY個のコード。ネットワークアクセスを持つ割引関数。明細の割引のあとに適用されたパーセント割引 | warnings 内の DraftOrderDiscountNotAppliedWarning。appliedDiscount.amountSet |
交渉済みの割引は価格として、またはひとつの注文割引として引き継ぐ。計算のたびにwarningsを読む |
| 7 | 注文の明細は割引されていないように見えるが、合計は正しい | 注文 | 各明細が注文割引の配分額だけ割引前の金額に見える。誤差は1セント前後 | 注文単位とコードの割引を含まない discountedUnitPriceSet を読んでいる。明細ごとの配分の端数 |
discountAllocations。priceAfterAllDiscountsBeforeTaxesSet |
合計と配分で照合する。明細を足し直さない(パターン7) |
| 8 | 分割した下書きの合計が、承諾済みの合計と下書きごとに1セント、または配送料ひとつ分だけずれる | 複数の下書き | 下書きごとに1セント以下、または配送料1件分 | 固定額の割引の各下書きの取り分が個別に端数処理された。各下書きが個別に課税・配送される | 各下書きの小計と、承諾済みの部分集合 | 下書きごとに1セント以内なら想定どおり。配送料が下書きごとにかかるのは設計どおり |
| 9 | 配送料が違う | 下書きまたはチェックアウト | = 料金の差 | 料金が事前に選択されておらず、バイヤーがチェックアウトで選んだ。請求書の送信後に商品を追加した。配送の割引コード(下書きでは非対応) | shippingLine、totalShippingPriceSet |
合意した料金を通貨つきで事前に選択して送る(パターン9) |
| 10 | 今すぐ支払う金額が、請求額に前受金のパーセンテージを掛けた額にならない | 下書きまたはチェックアウト | 小計だけに対する前受金のパーセンテージ | Shopifyのヘルプは前受金を税と配送を除いた小計に掛けるとし、APIリファレンスは注文合計と記している | amountDueNowSet、amountDueLaterSet |
基準をバイヤーに明示する |
| 11a | 明細がない | 下書きまたは注文 | 明細1行分 | その明細は見積上で未決定のまま(却下されたのではない)で、承諾されたときに変換される。2026-10以降は、注文後にバイヤーが依頼した削除 | 見積の承諾済み明細。Order.requestedOrderEdits |
次に承諾された明細を変換する。依頼された編集に対応する |
| 11b | 0.00の明細が余分にある | 下書きまたは請求書 | 明細1行、0 | 価格非表示の明細(バイヤーには「込み」と表示)が0で変換された | 見積の明細の表示設定 | 想定どおり。価格非表示の明細は0でなければならない(理由) |
| 12 | 注文の合計が下書きの合計と一致しなくなった | 注文 | 返金、編集、または税の再計算 | current* フィールド(返金と編集の後)を下書きと比較している。2026-10以降は、未発送の注文の住所が変わると税が再計算される |
originalTotalPriceSet と currentTotalPriceSet |
同じもの同士を比較する(注文の後) |
| 13 | ストア通貨の入金、レポート、ERPの金額が違う | 決済の後 | 取引時点の為替レート | 多通貨の下書きでは、ストア通貨の金額は見積もりにすぎない | presentmentMoney と shopMoney |
表示通貨で照合する |
明細がカタログ価格になっている
パターン1。 バリアント明細では、Shopifyは priceOverride を「この下書き注文において、商品バリアントのカタログ価格の代わりに」使います。カスタム明細用の価格フィールドである originalUnitPriceWithCurrency は「variantId が指定されている場合は無視されます」。そのため、バリアント明細でそこに送った交渉済みの価格は、黙ってカタログ価格になります。下書きに会社所在地があれば、カタログ価格は会社のものになり(「価格は……その会社の設定が自動的に反映されます」)、間違いがもっともらしく見えます。この種の誤りはひとつのBooleanでまとめて捕まえられます。すべてのバリアント明細が交渉済みなら、計算した下書きの allVariantPricesOverridden はtrueでなければなりません。
パターン2。 下書きの価格は、既定ではロックされていません。請求書を送るかチェックアウトのリンクを共有すると、「手動でロック解除に設定しない限り」既定で価格がロックされ、ロックを解除すると下書きは商品またはカタログの現在の価格で更新されます。ロックは値上がりも値下がりも同じように止めます。priceOverride を持つ明細は独自の価格を持っているので、そもそもカタログの変更の影響を受けません。ロックが意味を持つのはカタログ価格の明細です。そして、請求書を送ったあとの下書きは決して編集しないでください。チェックアウトが始まったあとの draftOrderUpdate は、そのチェックアウトとの紐付けを外します。承諾後の変更は新しい提案と新しい下書きであって、編集ではありません。
差が為替レートになっている
下書きの presentmentCurrencyCode はひとつです。別の通貨の価格の上書きは「下書き注文の表示通貨に合わせて換算されます」。現地通貨の下書きのレートは下書きの作成時に計算され、請求書でもそのまま使われます。ただしShopifyのヘルプによれば、保存済みの下書きを編集すると注文全体が現在のレートで再価格づけされます。多通貨の下書きでは、表示通貨の金額が「顧客に請求される金額の信頼できる情報源であり、shop_money は見積もりです」。
注文の割引は個別に確認する価値があります。FIXED_AMOUNT の適用割引について、Shopifyの2026-10のリファレンスは value を「ストア通貨での固定額」としており、別の amountWithCurrency フィールドが「指定した通貨で」金額を受け取ります。そのため、バイヤーの通貨のつもりの固定額割引を value で送ると、ストア通貨から換算されて届くことがあります。appliedDiscount.amountSet をストア通貨と表示通貨の両方の金額で読み、意図した金額と照らし合わせてください。固定額の割引に頼る前に、ストア通貨以外の通貨の下書きでテストしてください。パーセント割引には間違えうる通貨がありません。
差が税になっている
税の差は比率で分類します。それぞれの比率には、文書化された仕組みがひとつずつあります。
- 税の行の全額(4a)。 免税が下書きに届いていません。会社所在地の免税は、所在地が下書きにあるときに適用されます。顧客を設定すると、下書きの
taxExemptは顧客自身の免税フィールドで上書きされます。そして税込価格では、「顧客を免税に設定しても……顧客には引き続き商品の表示価格の全額が請求されます」。Shopifyのルールどおりの、想定された結果です。免税の設定がどこにあるかはShopify B2Bの免税で扱っています。 - 税率の差(4b)。 下書きの税は配送先住所に従い、配送先住所がなければ請求先住所が使われます。下書きのマーケットの外にあるチェックアウトの住所には、配送先の税率が適用されます。API 2026-10からは、未発送の注文の配送先住所を
orderUpdateで変更すると税が再計算され、未払い残高や返金可能な額が生じることがあります。 - (1 + 本拠地の税率)で割られた価格(4c)。 税込み設定はマーケットごとで、税込みのストアが別の地域に販売するとき、Shopifyはカタログ価格から本拠地の税率を差し引きます。見積と下書きで
taxesIncludedが一致しなければ、カタログ価格の明細はすべてその倍率で動きます。
見積の税がなぜ見積もりなのか、そして変換時にどう比較するかは、失敗パターンの記事で説明しています。
差が割引になっている
余分な割引(パターン5)。 説明のつかない金額を、計算した下書きの platformDiscounts または注文の discountApplications と突き合わせます。Shopifyは、カスタム以外のすべての割引をタイトル、コード、自動かどうかとともにそこに記録しています。確認すべき原因は次のとおりです。
acceptAutomaticDiscounts: trueは、対象となる自動割引を「割引コードと下書き注文のカスタム割引に加えて」適用します。管理画面では、オプションにチェックを入れない限り自動割引は下書きに適用されませんが、APIの入力には既定値が記載されていないため、フィールドを明示的に設定してください。- 請求書のチェックアウトでの割引コードは、下書きごとに既定でオフです。オンにすると、下書きは「想定以上に割り引かれるおそれがある」とShopifyは警告しています。
- B2Bでは、自動割引と割引コードはカタログ価格に「上乗せして追加の割引として適用されます」。
- カスタムの注文割引は明細の割引の上に適用されます。「割引を重複させないよう注意してください」。
- Plusストアでは、カート変換の関数が下書き注文でも実行され、明細の価格を変えることがあります。
欠けた割引、または小さい割引(パターン6)。 下書きが対象外のコードは「計算時にスキップされます」。計算の結果にもそれが示され、DraftOrderDiscountNotAppliedWarning が discountTitle と discountCode でそのコードを名指しします(priceRule フィールドは2026-10で削除されました)。配送の割引コードとX個買うとY個のコードは下書きでは非対応で、ネットワークアクセスを持つ割引関数は下書きでは実行されません。注文単位のパーセント割引は注文の小計に対するパーセンテージで、明細の割引のあとに適用されます。そのため、割引前の明細にパーセンテージを掛けた見積より小さくなります。
差が1セントになっている
注文では、明細ごとのフィールドがそれぞれ別の問いに答えています。discountedUnitPriceSet は「注文単位やコードによる割引を含みません」。そのため、注文割引のある注文では、合計が正しいのにすべての明細が割引されていないように見えます。各明細に対する注文割引の取り分は discountAllocations(「各明細に適用された、最終的に計算された割引額」)にあり、priceAfterAllDiscountsBeforeTaxesSet はすべての割引を適用したあとの明細の金額です。配分によって明細ごとにセント単位の額が生じるため、見積独自の按分とShopifyの按分は、合計が一致していても明細ごとに1セントずれることがあります。合計で照合し、明細を足し直して「本来あるべき額」を作らないでください。
ひとつの見積を複数の下書き注文に変換する場合、固定額の割引の各下書きの取り分は個別に端数処理されるため、下書きの合計は承諾済みの合計と下書きごとに1セント前後ずれることがあります。各下書きは個別に課税・配送もされます。
配送、前受金、明細単位の差
- 配送(パターン9)。 事前に選択した配送明細は、バイヤーがチェックアウトで変更できません。事前に選択していなければ、バイヤーは利用可能な料金から選びます。請求書の送信後に追加した商品は、計算済みの料金を更新しません。
ShippingLineInput.priceは2026-10で非推奨になり、priceWithCurrencyが優先され、通貨も一緒に運びます。 - 前受金(パターン10)。 前受金はShopify Plusの機能です。Shopifyのヘルプは前受金を「注文の小計だけに対するパーセンテージで、税や配送料は含みません」としていますが、APIの
DepositInputは注文合計としています。この矛盾はリファレンスに記録しています。amountDueNowSetが、バイヤーが今支払う金額です。 - 明細がない(11a)。 バイヤーが見積の一部を承諾した場合、変換されるのは承諾された明細だけです。バイヤーがまだ決めていない明細は見積上で未決定のまま残っており、却下されたわけではありません。承諾されたときに変換されます。2026-10からは、注文後に注文編集を通じて未発送の明細の削除をバイヤーが依頼することもできます。
- 0の明細(11b)。 見積で価格を非表示にした明細(バイヤーには「込み」と表示されていたもの)は、0.00で変換されます。これは0でなければなりません。バイヤーの合計は保存された見積の金額から取られ、表示された明細を合計して求めることは決してありません。そのため、0より大きい価格をつけた非表示の明細は、引き算によって価格がわかってしまいます。
注文が作成されたあと
注文の totalPriceSet と subtotalPriceSet は返品前の金額で、current* フィールドは返金、返品、編集のあとの金額、originalTotalPriceSet は作成時の合計です。下書きは作成時の合計と比較し、現在の合計との差は、返金、編集、バイヤーが依頼した編集、そして2026-10以降は住所変更後に再計算された税から説明してください。ストア通貨の入金やERPの金額は、取引時点の為替レートの分だけバイヤーが支払った金額と異なります。表示通貨で照合してください。注文が存在したあとにずれていくものは、見積とShopifyの注文が一致しないときにまとめています。
QuotWayの位置づけ
QuotWayは、交渉済みのバリアント価格をすべて見積の通貨で priceOverride として送り、その通貨で下書きを作成し、見積全体の割引をひとつの注文単位の割引として送ります。会社を認識する見積は、会社所在地を購入主体として、所在地の免税とともに引き継ぎます。変換画面には、Shopifyが計算した小計、税、配送、合計が表示され、マーチャントが確認できます。Shopifyが計算した税が見積からしきい値を超えてずれた場合は、変換を保留します。見積を下書き注文に変換するを参照してください。2026年9月30日からは、見積全体の割引も最低価格と割引の承認の対象になったため、注文の割引によって明細が気づかれないまま最低価格を下回ることはありません(最低価格と割引)。
ずれの確認が比較するのは税、配送、在庫で、明細の価格や割引は対象外です。そのため、変換した見積の合計に驚いたときは、上の表を確認する価値が今もあります。修正後に繰り返すべき下書き注文のテストは公開前の50項目テストプランにあります。プランは料金ページに、変換については見積を注文に変換するに記載しています。
よくある質問
Shopifyの下書き注文に交渉済みの価格ではなくカタログ価格が表示されるのはなぜですか?
バリアント明細に priceOverride がありません。Shopifyは variantId が指定されているとカスタム明細用の価格フィールド(originalUnitPriceWithCurrency)を無視するため、そこに送った交渉済みの価格はカタログ価格になります。下書きに会社所在地があれば、会社のカタログ価格です。priceOverride を送り、計算した下書きで allVariantPricesOverridden を確認してください。
バイヤーが下書き注文の請求書を開いたら価格が変わったのはなぜですか?
明細がカタログから価格づけされており、請求書を送った時点で下書きの価格がロックされていなかったため、商品またはカタログの現在の価格を拾いました。請求書を送ると既定で価格はロックされ、priceOverride のある明細は影響を受けません。送信後に下書きを編集すると、チェックアウトとの紐付けも外れます。
別の通貨の下書き注文で固定額の割引が違うのはなぜですか?
Shopifyは固定額の appliedDiscount.value をストア通貨として読み、別の通貨の金額には amountWithCurrency を用意しています。バイヤーの通貨のつもりの割引を value で送ると、換算されて届くことがあります。appliedDiscount.amountSet を両方の通貨で意図した金額と比較し、ストア通貨以外の下書きでテストしてください。
免税のB2B顧客に全額が請求されたのはなぜですか?
税込価格では、Shopifyは免税の顧客に表示価格の全額を請求します。これは文書化されたルールです。税抜価格で合計が税の行の全額分だけ高いなら、会社所在地の免税が下書きに届いていません。
注文が見積より多く割り引かれているのはなぜですか?
交渉済みの価格の上に、自動割引か割引コードが適用されました。余分な金額を、下書きの platformDiscounts または注文の discountApplications と突き合わせ、見積から作る下書きでは acceptAutomaticDiscounts と allowDiscountCodesInCheckout を明示的に設定してください。
下書き注文に割引コードが適用されなかったのはなぜですか?
下書きがそのコードの対象外だったため、Shopifyはコードをスキップし、そのコードを名指しした DraftOrderDiscountNotAppliedWarning でそれを伝えています。配送の割引コードとX個買うとY個のコードは下書き注文では非対応で、ネットワークアクセスを持つ割引関数は下書き注文では実行されません。
注文の明細の価格に見積の割引が表示されないのはなぜですか?
注文の明細の discountedUnitPriceSet は、注文単位とコードによる割引を含みません。各明細に対する注文割引の取り分は discountAllocations にあります。それを読み、合計で照合してください。
明細がない、または0.00の明細があるのはなぜですか?
ない明細は、まずバイヤーがまだ決めていない明細かどうかを確認してください。見積上で未決定のまま残っており、承諾されたときに変換されます。0.00の明細は、見積で価格を非表示にした明細です。バイヤーの合計は表示された明細からではなく保存された見積の金額から取られるため、これは0でなければなりません。
出典
Shopifyのページ。いずれも2026年10月9日にAPIバージョン2026-10で確認:
- DraftOrderLineItemInput ―
priceOverride、バリアント明細で無視されるカスタム明細用の価格、上書き価格の通貨換算 - DraftOrderInput ―
presentmentCurrencyCode、acceptAutomaticDiscounts、taxExempt、割引コード - DraftOrderAppliedDiscountInput ―ストア通貨での固定額、
amountWithCurrency - DraftOrder、CalculatedDraftOrder ―信頼できる情報源としての表示通貨の金額、
allVariantPricesOverridden、platformDiscounts、warnings、今すぐ支払う金額とあとで支払う金額 - DraftOrderDiscountNotAppliedWarning ―タイトルとコードで名指しされるスキップされたコード
- LineItem、DiscountAllocation、Order ―明細ごとの価格フィールド、配分、作成時と現在の合計、依頼された注文編集
- ShippingLineInput ―非推奨の
price、priceWithCurrency - Cart Transform API、Discount Function API ―下書き注文での関数
- 2026-10リリースノート ―割引の警告から削除された
priceRule、orderUpdateによる税の再計算 - 下書き注文の作成、下書き注文の請求書の送信、下書き注文の割引 ―送信時の価格ロック、作成時に確定し編集で再価格づけされる為替レート、住所による税、自動割引とコード、カスタム割引
- 下書き注文でB2B注文を作成する ―会社の価格、事前に選択した配送、小計に対する前受金
- B2Bの割引 ―カタログ価格に重なる割引
- 価格に税を含める、または含めない ―マーケットごとの税込み設定、差し引かれる本拠地の税率、税込価格での免税顧客
- 為替レート ―取引時点での換算
QuotWayの挙動は、公開ドキュメントとアプリのソースコードに基づき、2026年10月9日時点の内容で記述しています。
関連記事
QuotWayがこれをあなたのストアでどう扱うかをご覧ください。