b2b-commerce について
b2b-commerceは、B2B販売を導入する開発者やEC運営者向けの設定ガイドです。企業アカウント、卸売価格、見積もりフロー、支払い条件を扱い、プラットフォーム別の選択肢を示します。
主な機能
- 01プラットフォームごとのB2B機能を比較
- 02企業アカウントと卸売価格を設定
- 03見積もりから注文へのフローを構成
- 04支払い条件と請求書を設定
- 05独自のB2Bデータモデルを設計
活用シーン
- 01卸売顧客向けにアカウント別価格とカタログを設定
- 02同じ企業の複数担当者による注文に対応
- 03大口注文や特注注文の見積もりを受け付ける
- 04法人顧客に支払い条件とPO番号付き請求書を提供
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill b2b-commerceインストール後、Claude Code で/b2b-commerceを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
tile.jsonevals/b2b-database-schema-design/criteria.jsontask.mdevals/catalog-filtering-approval-controls-invo/criteria.jsontask.mdevals/quote-workflow-and-order-conversion/criteria.jsontask.md詳細
B2B コマース
概要
B2B コマースを導入すると、ストアに卸売機能を追加できます。複数の従業員が共通の与信限度額の範囲内で注文できる企業アカウント、アカウントごとのカスタム価格、大口注文や特注注文向けの見積もりから注文へのワークフロー、請求書の発行を伴う掛け払い条件(Net 30/60/90)が利用可能になります。ほとんどのプラットフォームには、これらの要件をカスタム開発なしで処理できる標準 B2B 機能や専用アプリがあります。
このスキルを使用する場面
- アカウント単位の価格設定、カタログ、与信条件を必要とする卸売顧客をオンボーディングする場合
- 同じ会社の複数の従業員が共通の与信限度額の範囲内で注文できる販売代理店向けポータルを構築する場合
- 特注注文や大口注文向けに、見積もり構成・価格・見積もり(CPQ)のフローを実装する場合
- 電話やメールによる卸売注文のプロセスをセルフサービスポータルに置き換える場合
- B2B 顧客が買掛金処理のために、アカウントの請求書に発注書番号を記載する必要がある場合
基本的な手順
ステップ 1:プラットフォームを特定し、適切な B2B ツールを選ぶ
| プラットフォーム | 推奨ツール | 理由 |
|---|---|---|
| Shopify Plus | Shopify B2B(組み込み) | Shopify Plus には企業アカウント、カスタムカタログ、支払い条件、専用の B2B チェックアウトが含まれており、追加アプリは不要です |
| Shopify(Plus 以外) | Wholesale Club または Wholesale Gorilla | どちらのアプリも、Plus を必要とせずに、顧客タグに基づく卸売価格、最低注文数量、非公開の卸売セクションを追加できます |
| WooCommerce | WooCommerce B2B(WooCommerce.com 拡張機能)または B2BWoo | WooCommerce B2B は企業登録、ロールベースの価格設定、掛け払い条件に対応します。B2BWoo は有料の代替製品です |
| BigCommerce | BigCommerce B2B Edition または組み込みの Customer Groups | BigCommerce B2B Edition は企業アカウントと見積もり機能を追加します。Customer Groups は(すべてのプランで)段階的な卸売価格に対応します |
| カスタム/ヘッドレス | 企業アカウント、カスタムカタログ、見積もりワークフローを一から構築する | 与信限度額、承認ワークフロー、請求書発行を完全に制御できます |
ステップ 2:企業アカウントと卸売価格を設定する
Shopify Plus — B2B(組み込み)
- Shopify 管理画面で、Customers → B2B → Companies → Create company に移動します
- 会社名、請求先住所、支払い条件(例:Net 30)、与信限度額を入力します
- 企業の所在地(配送先住所)を追加し、購入担当者を企業に割り当てます
- 企業向けの Price List を作成します。Customers → B2B → Price Lists → Create price list に移動し、商品ごとのカスタム価格、または全商品に適用する割引率を設定します
- 価格表を企業に割り当てます。企業の購入担当者はログインすると、設定された価格を確認できます
- 企業の購入担当者には、掛け払いの支払い方法と発注書番号の入力欄を備えた、B2B 専用のチェックアウトが表示されます
Shopify Plus での見積もりワークフロー:
- Shopify の組み込み B2B 機能には Draft Orders 機能があり、営業担当者が購入担当者向けに下書き注文を作成し、購入担当者が確認して承認すると、下書きが注文に変換されます
- Orders → Create order に移動して下書きを作成し、購入担当者にリンクを共有して承認を依頼します
Shopify(Plus 以外)— Wholesale Club
- Shopify App Store から Wholesale Club をインストールします
- Shopify で「Wholesale」顧客タグを作成します
- Wholesale Club で「Wholesale」タグ向けの割引段階を作成します。例:タグが付いた顧客はすべて 30%割引
- 顧客を卸売顧客として承認したら、その顧客アカウントに卸売タグを付けます
- タグが付いた顧客にはログイン時に割引価格が表示され、タグが付いていない顧客には小売価格が表示されます
- 最低注文数量を設定する場合、Wholesale Club の有料プランでは商品ごと、または注文ごとの最低注文数量に対応しています
WooCommerce
WooCommerce B2B(公式拡張機能):
- WooCommerce.com からインストールします
- WooCommerce → B2B → Registration に移動し、事業者情報(会社名、納税者番号など)を含む卸売アカウント登録フォームを作成します
- WooCommerce → B2B → Customers で卸売登録を手動で承認します
- 価格ルールを設定します。「Wholesale Customer」ユーザーロールに対して、すべての商品またはカテゴリーごとに割引率を適用します
- 掛け払いの場合:WooCommerce B2B は「Pay by Invoice」決済ゲートウェイを追加します。掛け払いで受けた注文では請求書 PDF が生成され、後払いが可能になります
代替案 — WooCommerce Role-Based Pricing:
- (User Role Editor プラグインを使って)「Wholesale」ユーザーロールを作成します
- WooCommerce Role-Based Pricing プラグインを使って、ロールごとに商品またはカテゴリー単位の価格を設定します
BigCommerce
顧客グループ(すべてのプランで利用可能):
- Customers → Customer Groups → Add に移動します
- すべての商品に対する割引率、またはカテゴリーごとの割引を設定した「Wholesale」グループを作成します
- 卸売顧客を手動で、または登録フォームのルールを使ってこのグループに割り当てます
- Wholesale グループの顧客には、チェックアウト時にグループ固有の価格が表示されます
BigCommerce B2B Edition(卸売事業の拡大向けアドオン):
- BigCommerce の営業担当に連絡し、プランに B2B Edition を追加します
- B2B Edition では、複数の購入者がいる会社アカウント、見積もり依頼、法人向け決済方法、購入者ポータルが追加されます
- 購入者ポータルでは、会社の管理者がユーザーを管理し、注文履歴を確認し、セルフサービスのインターフェースから見積もりを依頼できます
ステップ 3:見積もりワークフローを設定する
大量注文やカスタム注文では、見積もりワークフローを使うと、購入者は注文を確定する前に価格を確認できます。
Shopify Plus
- Draft Orders を使います。営業担当者がカスタム価格で下書き注文を作成します
- 下書き注文のリンクをメールで購入者に共有します
- 購入者は Shopify のチェックアウトで注文内容を確認し、承認して注文します
- より正式な見積もりシステムを使う場合は、Shopify App Store から QuoteIQ または CPQ Configurator アプリをインストールします
WooCommerce
- WooCommerce Request a Quote(YITH などが提供する無料プラグイン)をインストールします
- 商品ページに「Request a Quote」ボタンを追加します。購入者は商品を見積もりカートに追加します
- 購入者が見積もりを依頼すると、商品と数量が記載されたメールが届きます
- 見積もりを編集(価格を調整)し、承認リンクを添えて購入者に送信します
- 購入者が承認すると、見積もりは自動的に WooCommerce の注文に変換されます
BigCommerce B2B Edition
- B2B Edition にはネイティブの見積もりモジュールが含まれており、購入者は商品ページで「Request a Quote」をクリックできます
- BigCommerce 管理画面で見積もり依頼を受け取り、価格を設定して購入者に送信します
- 購入者は見積もりを承認し、ワンステップで注文できます
ステップ 4:掛け払い条件と請求書の発行を設定する
掛け払いでは、B2B 購入者は商品を受け取った後に支払えます(Net 30 は請求書発行日から 30 日以内の支払いを意味します)。
Shopify Plus
- 会社のレコードで Payment Terms を Net 15、Net 30、Net 60、または Net 90 に設定します
- B2B 購入者が注文すると、Shopify は自動的に「支払期限日」を設定します
- Customers → B2B → Orders → Invoices で未払いの請求書を追跡します
- 支払いリマインダーを送信します。Shopify は請求書の支払期限になると購入者に自動でメールを送信します(Settings → Notifications で設定します)
掛け払いの会計連携:
- Shopify のコネクターを使って、Shopify を QuickBooks Online または Xero に接続します
- 掛け払いの注文は、未払いの請求書として QuickBooks/Xero に同期されます
- 経理チームは QuickBooks/Xero から支払い回収のフォローアップを管理します
WooCommerce
- WooCommerce B2B 拡張機能の「Pay by Invoice」ゲートウェイは、掛け払い条件に基づく支払期日を記載した PDF 請求書を作成します
- QuickBooks Online WooCommerce 拡張機能を使って QuickBooks に接続し、売掛金を追跡します
- 支払いリマインダーを自動送信するには、AutomateWoo を使い、請求書の支払期限の 7 日前と支払期限当日にリマインダーメールを送信します
BigCommerce
- B2B Edition の企業向け支払い方法には、「Net terms」オプションが含まれます
- BigCommerce コネクターを使って QuickBooks または NetSuite に接続し、請求書を追跡します
ステップ 5:カスタム/ヘッドレス — 中核となる B2B データモデル
// Company account with credit management
interface Company {
id: string;
name: string;
taxId?: string; // EIN, VAT number
billingAddress: Address;
paymentTerms: 'prepay' | 'net15' | 'net30' | 'net60' | 'net90';
creditLimitCents: number | null; // null = no limit
creditUsedCents: number;
status: 'pending' | 'approved' | 'suspended';
}
// Check credit before placing an order
async function checkCreditAvailability(
companyId: string,
orderTotalCents: number
): Promise<{ approved: boolean; reason?: string }> {
const company = await db.companies.findById(companyId);
if (company.status !== 'approved') {
return { approved: false, reason: 'Company account not approved' };
}
if (company.creditLimitCents !== null) {
const availableCredit = company.creditLimitCents - company.creditUsedCents;
if (orderTotalCents > availableCredit) {
return {
approved: false,
reason: `Order exceeds available credit. Available: $${(availableCredit / 100).toFixed(2)}`,
};
}
}
return { approved: true };
}
// Record credit usage when order is placed (in same DB transaction as order creation)
async function consumeCredit(companyId: string, amountCents: number): Promise<void> {
// Atomic update prevents race condition when multiple buyers order simultaneously
await db.raw(
'UPDATE companies SET credit_used_cents = credit_used_cents + ? WHERE id = ? AND credit_used_cents + ? <= COALESCE(credit_limit_cents, 2147483647)',
[amountCents, companyId, amountCents]
);
}
ベストプラクティス
- Net terms を有効にする前に企業の承認を必須にします — Net terms を設定する前に、基本的な信用調査または手動審査を行います。最低限、企業の事業登録を確認してください
- 与信限度額をアトミックに適用します — 注文を作成するデータベーストランザクション内で、与信の確認と更新を行います。競合状態が発生すると、2 人の購入者が同時に限度額を超える可能性があります
- 請求書には必ず PO 番号を記載します — B2B の購入者は、買掛金のワークフロー上、すべての請求書に社内 PO 番号が記載されていることを求めます。記載がないと、支払いが 30~60 日遅れる可能性があります
- 注文の支払い完了時またはキャンセル時に与信枠を解放します — 支払いを受け取ったら
credit_usedを減らします。これにより、購入者は手動での調整を待たずに新しい注文を行えます - 見積もりに有効期限を設定します — カスタム価格が適用された承認済みの見積もりは、原価の変動後に古い価格で購入されないよう、30 日後に期限切れにします
- 見積もり価格の変更をすべて監査します — 誰が、いつ、どの明細の価格を変更したかを記録します。これは利益率の追跡や紛争への対応に重要です
よくある落とし穴
| 問題 | 解決策 |
|---|---|
| 個人の購入者に他社の価格が表示される | カタログと価格のすべてのクエリを企業 ID で厳密に絞り込みます。異なる企業の購入者としてログインし、テストしてください |
| 同時注文が原因で与信限度額を超える | 与信枠の残りを確認する WHERE 句を使ったアトミックな SQL 更新を行います。Shopify Plus の組み込み B2B 機能では、これが自動的に処理されます |
| B2B のチェックアウトで承認フローが回避される | UI だけでなく、注文作成ロジックでサーバーサイドの承認チェックを必須にします |
| 卸売価格が卸売以外の顧客に表示される | Shopify の顧客タグと WooCommerce のユーザーロールをサーバーサイドで検証します。価格の決定にクライアントサイドの状態を決して信頼しないでください |
関連スキル
- @vendor-management
- @order-management-system
- @returns-refund-policy
- @multi-channel-selling
- @accounts-payable-management
コメント
Markdown 対応