本文へスキップ

Shopifyエージェンシー向け

Shopify B2Bでバイヤーに価格が表示されない理由:症状別の診断

著者 Jahangir Alam · 2026年10月7日 · 14分で読めます

最終確認日
Shopify API
2026-10
対象読者
卸売のバイヤーに誤った価格が表示される問題に対応するShopifyエージェンシー、開発者、マーチャント
範囲
API 2026-10時点のShopifyネイティブB2Bにおけるオンラインストアとヘッドレスのストアフロント:サインインと会社連絡先、所在地の選択、B2Bマーケット経由または直接割り当てのカタログ、公開、価格表、テーマでの数量ルールと数量別価格、割引と税の表示、下書き注文、POS、価格非表示アプリ

Shopify B2Bのバイヤーに自社向けの価格が表示されるのは、6つの条件がそろったときだけです。会社連絡先としてサインインしていること、正しい会社所在地が選択されていること、有効なカタログがその所在地に届いていること、カタログの公開にそのバリアントが含まれていること、カタログの価格表がそのバリアントに価格をつけていること、そしてストアフロントがそのバイヤーのコンテキストでShopifyに価格を問い合わせていることです。どれか1つが欠けると、バイヤーには別のものが見えます。小売価格、価格なし、商品なし、あるいは商品ページとチェックアウトで変わる価格です。欠けた条件ごとに症状が異なるため、最も早い診断はカタログの画面からではなく、バイヤーが報告する症状から始まります。

このページはその診断です。5つの症状、それぞれの背後にある原因を確認すべき順に、各原因を管理画面、Liquid、APIで確かめる方法、そして修正方法を扱います。また、Shopifyが想定どおりと文書化している結果、つまりカタログの割引を無効にする数量別価格、価格ロック、会社の価格が使えないPOSを、本当の不具合と区別します。どれも不具合に見えますが、不具合ではありません。

以下のShopifyに関する記述はすべて、2026年10月7日にShopify自身のページでAPIバージョン2026-10を対象に確認しました。出典は末尾にあります。複数のページに出てくるShopifyの事実はShopify B2Bリファレンスに一度だけまとめ、ここからリンクしています。

B2B価格を支える条件の連鎖

バイヤーとB2B価格をつなぐ6つの条件 横一列に並ぶ6つの箱。それぞれがB2B価格を表示する前にShopifyが必要とする条件です。1 会社連絡先としてサインインしている、2 正しい会社所在地が選択されている、3 有効なカタログが直接またはB2Bマーケット経由で所在地に届いている、4 カタログの公開に商品とバリアントが含まれている、5 価格表が固定価格またはパーセント調整でバリアントに価格をつけている、6 テーマまたはヘッドレスのストアフロントがコンテキスト価格を問い合わせている。各箱の下には、その条件が崩れたときの症状があります。条件1から3と5では小売価格、条件4では商品なしまたは価格なし、条件6ではページによって異なる価格です。 1 · サインイン 会社連絡先として、 現行の顧客アカウント でサインイン 2 · 所在地 正しい会社所在地が 選択されている 3 · カタログ 有効なカタログが届く: B2Bマーケット経由か 直接割り当て(Plus) 4 · 公開 商品とバリアントが カタログに 含まれている 5 · 価格表 固定価格または パーセント調整で 価格がつく 6 · ストアフロント バイヤーの コンテキストで 価格を問い合わせる 小売価格 別の所在地の価格、 または価格なし 小売価格 商品が出ない、 または調整なし 基本価格 ページ間で食い違う その条件が崩れたときにバイヤーに見えるもの
B2B価格の背後にある6つの条件と、それぞれが崩れたときに起きる症状。

これらの条件は、Shopifyのページからそのまま来ています。「会社所在地に紐づいていない、またはサインインしていない」顧客は「D2C顧客とみなされます」。複数の所在地に属する連絡先は、「カートに商品を追加する前に、どの所在地のために注文するかを選択する」必要があり、提示される価格は「その会社所在地についてカタログで指定した価格」です。カタログは公開と価格表の組み合わせです。公開がなければ「B2Bアカウントにログインした顧客には、その所在地の商品は何も表示されません」。価格表がなければ、顧客は「バリアントの初期価格をマーケット通貨に換算したもの」を受け取ります。そして価格はバイヤーごとに解決されます。Liquidでは variant.price が現在の顧客のコンテキストにおける価格であり、Storefront APIでは「コンテキストを指定しない場合、ストアの基本価格と商品の公開設定が使われます」。

まずバイヤーとして見る

設定を変える前に、バイヤーと同じようにストアを見てください。手早いものから精密なものまで、方法は3つあります。

  1. 会社所在地として表示する。 管理画面で会社を開き、所在地の横にある表示アイコンをクリックします。Shopify自身の併用ストアのチェックリストも、これで「B2B顧客としてオンラインストアを表示」させています。または、その所在地のテスト用連絡先としてサインインします。
  2. Liquidでの確認。 テスト用のテーマで {{ customer.b2b? }}、{{ customer.current_location.name }}、{{ product.selected_or_first_available_variant.price | money }}、{{ product.selected_or_first_available_variant.quantity_rule.min }} を出力します。誰もサインインしていなければ customer は nil です。customer.b2b? がtrueになるのは会社連絡先のときだけで、current_location は価格が従う所在地です。
  3. APIでの確認。 バリアントの contextualPricing(context: { companyLocationId: "gid://shopify/CompanyLocation/…" }) に price、quantityRule、quantityPriceBreaks を問い合わせます。API 2026-10からは同じオブジェクトに auditTrail(「価格がどのように決まったかの記録」)があり、数字の背後にある調整を一覧できますが、それがどのカタログから来たかは示しません。APIが正しい価格を返すのにストアフロントがそうでないなら、問題はカタログではなく、テーマ、アプリ、またはストアフロントのコード(条件6以降)にあります。

症状A:バイヤーに小売価格が表示される

原因の候補が最も多い報告です。次の順に確認してください。どれも切り分けの手間は小さく、後の確認は前の確認を通過していることを前提にしています。

原因 確認方法 修正
サインインしていない、または会社連絡先ではない顧客としてサインインしている Liquidでの確認:customer が nil、または customer.b2b? がfalse。管理画面:その顧客に会社がない 顧客を連絡先として会社所在地に割り当てる。Shopifyは、顧客を「注文できるようになる前に会社所在地に」割り当てることを求めています
連絡先に所在地へのアクセス権がない 管理画面:その所在地での連絡先の権限が「アクセス権なし」になっている 所在地での役割(注文のみ、または所在地の管理者)を連絡先に与える
ストアがまだ従来の顧客アカウントを使っている 設定 > 顧客アカウント。「B2Bの顧客と注文には従来の顧客アカウントを使えません」。従来の顧客アカウントは2026年2月26日から非推奨です 現行の顧客アカウントに切り替える。B2Bバイヤーポータルのための顧客アカウントを参照
誤った所在地が選択されている、またはテーマに所在地の選択機能がない Liquidでの確認:customer.current_location.name。Shopifyは、テーマが選択機能で「会社所在地を選べるようにするべき」としています customer.company_available_locations と location.url_to_set_as_current で選択機能を追加する。カタログは所在地に紐づくため、同じ会社の2つの所在地では同じSKUに2つの価格が表示されることがあります
有効なカタログが所在地に届いていない マーケット > そのB2Bマーケット > 含まれる所在地、カタログのステータス、Plusでは所在地に直接割り当てたカタログ。「会社所在地のないB2Bマーケットは、B2B価格を提供しません」 所在地をB2Bマーケットに加える(すべての所在地、配送先住所で照合する地域、または特定の所在地)か、Plusではカタログを直接割り当てる。カタログを有効にする。Plus以外では、カタログはB2Bマーケット経由でしか所在地に届かず、上限はすべてのB2Bマーケット合計で有効なカタログ3件です
所在地が地域で照合するマーケットから外れた 所在地の配送先住所。地域の照合は配送先住所で行われるため、住所が変わると所在地はマーケットに入ったり外れたりします 住所を正す、または所在地をマーケットに明示的に含める
カタログに価格表がない カタログに商品はあるが、価格調整も固定価格もない。バイヤーには「バリアントの初期価格をマーケット通貨に換算したもの」が表示されます 価格表を追加する。全体のパーセント調整、固定価格、またはその両方
バリアントがカタログに公開されていない マーケット > カタログ > 商品のバリアント。カタログに公開されていないバリアントには「カスタム価格の調整が適用されません」 バリアントを公開する。「親の商品とバリアントの両方が、そのチャネルまたはカタログに公開されている必要があります」
調整が0パーセントで固定価格もない 価格表の全体調整が0で、バリアントに固定価格がない。Shopifyは価格を「パーセントによる調整を使って」計算するため、基本価格と同じになります そのバリアントに調整または固定価格を設定する
テーマやアプリが、Shopifyのコンテキスト価格ではない価格を表示している APIでの確認ではB2B価格が返るのに、ストアフロントには別の数字が出ている。テーマの中で、メタフィールドから読んだ価格、customer.tags contains による分岐、アプリのブロックが描画する価格を探します variant.price(またはStorefront APIのコンテキスト価格)を表示する。カタログ以前からあるタグによる卸売ロジックを取り除く。それが2つ目の価格の仕組みになる理由は技術的負債の記事で説明しています
ストアフロントがヘッドレスで、バイヤーを渡していない 症状Eを参照 すべての商品クエリに @inContext(buyer: …) でコンテキストを指定する
注文をShopify POSで受けている 「顧客が会社所在地のB2B価格を利用できる場合でも、Shopify POSではその価格を利用できません」 想定どおり。会社の価格はオンラインストア向けで、POSでの修正方法はありません

上の条件はShopifyが文書化しているものです。ただし、所在地にB2B価格がまったく届かない場合にサインインした連絡先が具体的にどの価格を見るかは、Shopifyは文書化していません。そのようなマーケットは「B2B価格を提供しません」とあるだけです。クライアントにバイヤーに何が表示されるかを伝える前に、開発ストアでこのケースをテストしてください。

症状B:価格が出ない、または商品が出ない

原因 確認方法 修正
価格非表示アプリや「サインインして価格を表示」のアプリ、またはテーマの制限が隠している 価格はページのソースやAPIでの確認には出ているが、画面には出ない。またはサインインしたバイヤーに制限のメッセージが表示される アプリの対象の指定を確認する。下の見積アプリと価格非表示アプリを参照
カタログに価格表はあるが公開がない 「B2Bカタログに公開が紐づいていない場合、B2Bアカウントにログインした顧客には、その所在地の商品は何も表示されません」 カタログの公開に商品を追加する
B2B専用にするためにオンラインストアから非公開にした商品が、どのカタログにも入っていない Shopify:「これらの商品がカタログに含まれたままになっていることを確認し、B2B顧客がログインした後に表示されるようにしてください」。Marketsでは、商品はバイヤーのマーケットに割り当てたカタログに入っている必要があり、そうでなければストアは404ページを表示します 商品をB2Bカタログに含める。Marketsでは、オンラインストアからではなく地域マーケットのカタログから非公開にする
バリアントがカタログに公開されていない カタログでのバリアント単位の公開 商品だけでなくバリアントも公開する
ストアがB2Bに限定されていて、バイヤーが連絡先ではない 限定されたストアでは、B2B以外の顧客は「オンラインストアを閲覧できません」 想定どおり。バイヤーを連絡先にするか、限定を解除する

症状C:商品ページ、カート、チェックアウトで価格が変わる

原因 確認方法 修正
数量が数量別価格の価格帯に達した 商品に価格帯があり、カートの数量がそれを超えている 想定どおり。価格帯はバリアントごとで(「顧客はバリアントごとに必要な数量を満たす必要があります」)、数量はバリアントをまたいで合算されません。価格帯を商品ページに表示する(症状D)
自動割引や割引コードがカタログ価格に重なる 「自動割引と割引コードは、カタログで設定した価格調整に追加の割引として適用されます」。併用ストアでは、既存の割引は既定でB2BとD2Cの両方の顧客に適用されます 想定どおり。望まない場合は、割引の対象を意図したマーケットに限定する
あるマーケットの価格は税込みで、別のマーケットは税抜き 設定 > マーケット > そのマーケットの税込み設定。「税込みかどうかは、販売するマーケットごとに設定します」 想定どおり。違いがバイヤーを混乱させるなら、バイヤーが一致しうるマーケットの間で税込み設定をそろえる
免税の所在地が税込価格のマーケットで購入している 「顧客を免税に設定していても、税込価格を使っている場合、顧客には表示された商品価格の全額が請求されます」 Shopifyのルールどおり。免税のバイヤーに税抜きの価格で支払わせたいなら、B2Bマーケットで税抜き価格を使う。B2Bの免税はどこで設定するかを参照
バイヤーがセッションの途中で所在地を切り替えた customer.current_location が変わっていて、カートは別の所在地のカタログのもとで作られている 所在地の切り替え後にカートを確認し直す。Shopifyは、ヘッドレスのカートではバイヤーの身元が変わると「現在のB2B顧客に公開されていない」商品が外されると文書化していますが、オンラインストアのカートがどうなるかは文書化していません。テストしてください
テーマのJavaScriptが、コンテキストのないデータから価格を描画し直している サーバーが描画した価格(ソースを表示、JavaScriptをオフ)と、ページのスクリプトが動いた後の価格が異なる バリアントの選択と数量の選択がコンテキスト価格を読むようにする
ヘッドレス:カートにバイヤーの身元がない 症状Eを参照。カートの金額は「見積もりであり……変更されることがあり、変更はチェックアウトで反映されます」 カートに customerAccessToken と companyLocationId で buyerIdentity を設定する

症状D:数量ルールや数量別価格が表示されない

原因 確認方法 修正
テーマが古く、表示に対応していない オンラインストア > テーマ > テーマのバージョン。「B2Bカタログの数量ルールは、Shopifyの無料テーマのバージョン8.0.0以降でサポートされます。数量別価格はバージョン11.0.0以降でサポートされます」。Horizonも対応しており、TradeはShopifyがB2B向けに作ったテーマです テーマを更新する、またはLiquidを手作業で追加する(variant.quantity_rule、quantity_price_breaks)。Shopifyはこれを「高度なチュートリアル」と呼んでいます
ルールが、価格の比較で負けたカタログにある 所在地に届くすべてのカタログを書き出す。Shopifyは「数量ルールや数量別価格の価格帯を含めずに」最安の価格を表示し、ルールと価格帯は勝ったカタログのものが使われます 勝つカタログにルールを置く、または競合するカタログを外す
2つのカタログの最安価格が同じ 「2つのカタログで商品の最安価格が同じ場合、最初に作成されたカタログの数量ルールと数量別価格が表示されます」 想定どおり。価格に差をつけるか、ルールを最初に作成したカタログに移す
数量別価格によってカタログのパーセント割引が無効になった 「商品に数量別価格を適用すると、価格は固定されます。カタログに設定した全体調整の割引は適用されません」。そのため、その商品が周りの商品より高い基本価格を表示することがあります 想定どおり。その商品のカタログの項目に固定価格を設定する
Liquidが既定のルールを表示している バイヤーのコンテキストで適用されるルールがないとき、variant.quantity_rule は最小1、最大なし、増分1を返します 同じ所在地でAPIでの確認を行う。APIにはルールがあるのにLiquidにない場合は、Shopifyサポートに問い合わせる

症状E:ヘッドレスのストアフロントだけがおかしい

原因 確認方法 修正
クエリにコンテキストが指定されていない Storefront APIのクエリに @inContext(buyer: { customerAccessToken, companyLocationId }) がない。「コンテキストを指定しない場合、ストアの基本価格と商品の公開設定が使われます」 すべての商品クエリでバイヤーを渡す。companyLocationId はCustomer Account APIのクエリから得る
商品ページだけにコンテキストが指定されている 商品ページは正しいが、コレクション、検索、カートが誤っている。Shopify自身のHydrogenのB2Bレシピがまさにこの作りで、「本番環境では、すべての商品クエリにバイヤー情報でコンテキストを指定する必要があります」と書いています 価格や商品の一覧を返すすべてのクエリにコンテキストを指定する
カートにバイヤーの身元がない cart.buyerIdentity に companyLocationId / customerAccessToken がない cartBuyerIdentityUpdate で設定する。身元が変わると、バイヤーに公開されていない商品はカートから外されます
レスポンスがバイヤー間でキャッシュされている コンテキストを指定したクエリの前に共有キャッシュがある。Shopifyは警告しています:「これらのレスポンスをキャッシュすると、ほかのユーザーが別の顧客のB2B価格を見る可能性があります」 バイヤーのコンテキストを指定したレスポンスを共有キャッシュに入れない。バイヤーごとのキーにするか、キャッシュを通さない

ヘッドレスでのサインインそのものは、B2Bバイヤーポータルのための顧客アカウントで扱っています。

B2B価格ではあるが、期待した価格ではない

バイヤーがB2B価格を受け取ってはいるものの、それがマーチャントの編集したカタログとは別のカタログから来ていることがあります。Shopifyの解決は決定的です。最も具体的なカタログが勝ち(Plusで所在地に割り当てたカタログは、マーケットのカタログに勝ちます)、そうでなければ数量ルールや価格帯を除いて比較した最安の価格が勝ち、同額の場合はルールと価格帯は最初に作成されたカタログから来ます。Shopifyが文書化していない唯一のケースは、互いに関係のない2つのB2Bマーケットに一致する所在地です。マーケットの条件は重ならないようにしてください。

診断は、所在地に届きうるすべてのカタログ(直接割り当てたものと、一致するすべてのマーケットのもの)を書き出し、これらのルールを手で当てはめることです。その一覧を CompanyLocation.catalogs だけに頼って作らないでください。その説明は「会社所在地に関連付けられたカタログ」であり、マーケットのカタログが含まれるかどうかは書かれていません。衝突の全パターンの表は開始価格の記事に、出典つきのルールはリファレンスにあります。

管理画面で作成した下書き注文

マーチャントが作成した下書き注文がB2Bの注文として価格づけされるのは、バイヤーの会社がわかっているときだけです。「下書き注文にB2B顧客と会社所在地が割り当てられている場合、価格、支払い条件、チェックアウトのオプションには、その会社の設定が自動的に反映されます」。APIでは、会社、所在地、連絡先を指定した purchasingEntity.purchasingCompany がこれにあたります。購入主体は顧客か会社のどちらかで、両方にはなりません。したがって、会社所在地なしで顧客に対して作成した下書きは、一般消費者向けの注文として価格づけされると考えるべきです。

ロックされた下書きが「新しいカタログ価格を拾わなかった」のは、設計どおりの動作です。価格ロックは「あとで商品の価格を更新しても」価格を保持します。下書き注文自身の状態については、Shopifyの下書き注文は見積ではないで説明しています。

見積アプリや価格非表示アプリを使っている場合

価格を隠すアプリ、「サインインして価格を表示」を出すアプリ、独自の価格を表示するアプリは、どれもB2Bバイヤーに症状AやBを引き起こす可能性があります。カタログではなく、サインイン、タグ、または独自のルールで判断するからです。Shopify自身も「一部のサードパーティアプリ」はB2Bで動作しないと注意し、アプリの開発者に確認するよう勧めています。カタログに手をつける前に、そうしたアプリの対象の指定をすべて確認してください。

QuotWayで関係する設定は3つで、いずれも文書化されています。

  • **価格の非表示の「選んだページのすべての商品」は、対象の指定にかかわらず、そのページのすべての価格を隠します。そのため、サインインしたB2B連絡先にも価格が見えなくなります。既定の「見積の対象の商品のみ」**は、商品とバイヤーがターゲティングルールに合致する場合にだけ価格を隠し、Professional以上ではそのルールでB2Bの会社や会社所在地を指定できます。価格を隠すとターゲティングルールを参照してください。価格の非表示はStarter以上で使えます。プランと料金をご覧ください。
  • 検索エンジンにも安全な非表示(Professional以上)で使うPrice Gateは、サインインした顧客なら誰にでも価格を表示します。必要な顧客タグを設定した場合、そのタグを持たないサインイン済みのB2B連絡先には、価格の代わりに制限のメッセージが表示されます。検索エンジンから価格を隠すを参照してください。
  • 見積は、Shopifyが解決した価格から始まります。 QuotWayはカタログ価格を読み取りますが、カタログ、価格表、公開に書き込むことはありません。したがって、小売価格から始まる見積は、上のいずれかの原因を指しています。QuotWayが何を読み取るかは開始価格の記事で正確に示しており、会社を認識する見積はQuotWayでのShopify B2Bで扱っています。

修正の後:再テスト

公開前の50項目テストプランのB2Bのセクションを実行し直してください。サインインと所在地の選択、カタログの価格と公開、会社所在地向けの下書き注文、そしてストアフロントがヘッドレスならヘッドレスの行です。管理者としてではなく、重要な所在地それぞれの連絡先としてテストしてください。

よくある質問

ログインしたB2B顧客にShopifyで小売価格が表示されるのはなぜですか?

5つの条件のどれかが満たされていません。顧客が会社所在地の連絡先ではない(または「アクセス権なし」)、誤った所在地が選択されている、有効なカタログが所在地に届いていない(Plus以外では、カタログはその所在地を含むB2Bマーケット経由でしか届きません)、バリアントがカタログに公開されていない、またはカタログの価格表がそのバリアントに価格をつけていない、のいずれかです。管理画面で会社所在地の横にある「表示」を使い、この順に確認してください。

サインインしたB2B顧客に商品が1つも表示されないのはなぜですか?

所在地に届くカタログに公開がないか、B2B専用にするために商品をオンラインストアから非公開にしたものの、カタログに追加していないかのどちらかです。Shopifyによれば、公開がなければB2B顧客には「その所在地の商品は何も表示されません」。

B2B価格は従来の顧客アカウントでも使えますか?

使えません。「B2Bの顧客と注文には従来の顧客アカウントを使えません」。従来の顧客アカウントは2026年2月26日から非推奨で、B2Bはワンタイムコードでサインインする現行の顧客アカウントで動きます。

B2Bの数量ルールと数量別価格を表示できるShopifyのテーマはどれですか?

Shopifyの無料テーマは、バージョン8.0.0から数量ルールを、バージョン11.0.0から数量別価格を表示します。ShopifyはHorizonもB2B機能に対応したテーマとして挙げており、TradeはB2B向けに作られたテーマです。古いテーマやサードパーティのテーマは、更新するかLiquidを独自に追加する必要があります。

商品ページとチェックアウトでB2B価格が変わるのはなぜですか?

文書化されている主な理由は、カートで数量別価格の価格帯に達した、自動割引や割引コードがカタログ価格に重なった、バイヤーのマーケットで税込み設定が異なる、セッションの途中で所在地が切り替わった、のいずれかです。ヘッドレスのストアでは、まずバイヤーの会社所在地を持たないカートを疑ってください。

キャッシュによって、あるバイヤーのB2B価格が別のバイヤーに表示されることはありますか?

ヘッドレスのストアフロントではあります。Shopifyは、バイヤーのコンテキストを指定したStorefront APIのレスポンスをキャッシュすると「ほかのユーザーが別の顧客のB2B価格を見る可能性があります」と警告しています。そうしたレスポンスは共有キャッシュに入れないでください。

B2B顧客はShopify POSで会社の価格を使えますか?

使えません。Shopifyによれば、B2B価格を持つバイヤーは「Shopify POSではその価格を利用できず、代わりにオンラインストアで購入する必要があります」。

管理画面で作った下書き注文に会社の価格が使われないのはなぜですか?

下書きにはB2B顧客と会社所在地が必要です。APIでは、会社、所在地、連絡先を指定した purchasingEntity です。顧客だけに対して作成した下書きは一般消費者向けの注文として価格づけされ、価格ロックのかかった下書きは、カタログが変わっても価格を保持します。

出典

Shopifyのページ。いずれも2026年10月7日にAPIバージョン2026-10で確認:

QuotWayの挙動は、公開ドキュメントとアプリのソースコードに基づき、2026年10月7日時点の内容で記述しています。

関連記事

QuotWayがこれをあなたのストアでどう扱うかをご覧ください。

サイトの利用状況を把握するため、分析用Cookieを設定したいと考えています。必須ではありません。拒否してもサイトの動作は変わらず、選択はいつでも変更できます。変更はこちらから: プライバシーページ.