# ShopifyでBTCPay Serverを使ってBitcoin決済を受け付ける
Shopify向けBTCPay Serverのご紹介です。これはオープンソースの決済ゲートウェイで、手数料なしで、Webサイトや実店舗で顧客から直接Bitcoin決済を受け付けられます。
Shopifyとの連携により、セルフホストしたBTCPay ServerをShopifyストア (opens new window)に接続し、迅速かつ安全にBitcoin決済を受け付けられます。
# BTCPayでできること:
- 手数料ゼロ: 手数料無料の決済ゲートウェイを利用できます。そうです、本当にゼロです。
- 直接入金、仲介業者やKYC不要: 仲介や煩雑な書類作業は不要。資金を直接あなたのウォレットで受け取れます。
- 完全自動化システム: 決済、請求書管理、返金をBTCPayが自動で処理します。
- チェックアウトでBitcoin QRコードを表示: かんたんで安全な支払い手段を提供し、顧客体験を向上します。
- セルフホスト基盤: 決済ゲートウェイを完全に自分でコントロールできます。
- Lightning Network統合: 即時・高速・低コストの入出金に対応します。
- CSVエクスポートが簡単
- 柔軟なプラグインシステム: 必要に応じて機能拡張できます。
- POS統合: 実店舗でも決済を受け付けできます。
- 多言語対応: そのままでグローバルな顧客に対応できます。
- コミュニティ主導のサポート: 専用コミュニティから迅速な支援を受けられます(Mattermost (opens new window) または Telegram (opens new window))。
WARNING
これは旧Shopify V2ドキュメント(2024年12月30日〜2025年2月23日公開)の簡略版です。旧版では別VPSにShopifyアプリをデプロイする必要がありましたが、現在はアプリをBTCPay Server上に直接デプロイし、BTCPay Shopifyプラグインも変更されています。今後保守するのはこの新構成のみのため、すべてのユーザーがこの構成へ移行してください。
# 前提条件
セットアップを始める前に、以下を用意してください。
- Shopify (opens new window)アカウントとストア
- 有効なShopifyサブスクリプションプラン(最低でもBasic Shopify)
- Shopifyパートナーアカウント (opens new window)(登録無料)
- BTCPay Server - セルフホスト もしくは サードパーティホスト で稼働している * v2.0.6 以降
- BTCPay Serverストアの作成 と ウォレット設定
- サードパーティホストを利用している場合、ホスト側で Shopify fragment の有効化と Shopify v2 プラグインの有効化が必要です。これが無効だと BTCPay Server 上に表示されません。
# Shopify アプリを作成する
まず、Shopify Partner ポータルで新しいアプリを作成します。Shopifyパートナー (opens new window)に登録済みであることを確認してください(登録無料)。
Shopify Partner のダッシュボード (opens new window)で
App distributionをクリックし、次のページでView Dev Dashboardをクリックします(新しいブラウザタブで開きます)。開いたページでCreate app>Start from Dev Dashboardをクリックし、アプリ名(例: BTCPay Server)を入力してCreateをクリックします。
作成後、
Settingsをクリックすると「Client ID」と「Client secret」が表示されます。後で使用するので控えてください。
パートナーダッシュボードに戻り、ページを再読み込みして新しいアプリが一覧に表示されることを確認します。
All Appsをクリックし、作成したアプリを選択、左メニューのAPI access requestsを開きます。下にスクロールしてAllow network access in checkout and account UI extensionsでネットワークアクセスを許可します。許可後、以下の画面になります。
TIP
ネットワークアクセス付与時に "Could not grant checkout ui extension scope 'read_checkout_external_data'" というエラーが出る場合、パートナーアカウントプロフィールの姓・名が未設定であることが原因です。プロフィールに必要情報を入力してから再度付与してください。
- Shopifyパートナーロゴをクリックしてパートナーダッシュボードに戻ります。
- ページ下部の "Settings" をクリックします。

- 下部の "CLI Token" セクションまでスクロールし、"Manage tokens" をクリックします。

- 右上の "Generate new token" をクリックします。

- モーダルポップアップではデフォルトのまま "Generate token" をクリックします。

- トークンをコピーし、先ほどの
Client IDとClient secretと一緒に控えます。このトークンは一度しか表示されません。
# BTCPay Server に Shopify-BTCPay アプリをデプロイする
TIP
以下の手順を実行するには、自分の BTCPay Server インスタンスの管理者である必要があります。サードパーティホストの場合は、ホスト管理者が Shopify fragment を有効化し、Shopify v2 プラグインを有効化していないと利用できません。
# Shopify フラグメントをデプロイする
- SSHでBTCPay Serverにログインします。
- 次のコマンドを実行します。
# if you are not root user, switch to root
sudo su -
# go to the BTCPay Server docker directory
cd $BTCPAY_BASE_DIRECTORY
cd btcpayserver-docker
# make sure you have latest btcpayserver-docker commits
git pull
# add the shopify fragment to your BTCPay Server
export BTCPAYGEN_ADDITIONAL_FRAGMENTS="$BTCPAYGEN_ADDITIONAL_FRAGMENTS;opt-add-shopify"
# run the setup script
. ./btcpay-setup.sh -i
セットアップスクリプトは BTCPay Shopify app (opens new window) を取得して Docker コンテナへデプロイします。動作確認する場合は次を実行してください。
docker ps | grep shopify
これでBTCPay Server Shopifyプラグインのインストールに進めます。
# BTCPay Server Shopify プラグイン v2 をインストールする
- BTCPay Server でサイドバーの "Manage Plugins" を開き、btcpayserver 製 "BTCPay Server Shopify plugin v2" をインストールします。

- 続いて上部に戻り、"Restart now" リンクをクリックしてBTCPayを再起動します。

BTCPay Server の再起動には数分かかることがあります。
# BTCPay Server Shopify プラグインを設定する
- 上部で対象ストアが選択されていることを確認し、左サイドバーの
Shopify v2をクリックします。 - 3セクションのうち最初のセクションで、上記Shopify アプリの作成手順の
Client IDとClient Secretを入力し、"Save" をクリックします。
- 次の "Deploy the app" セクションで
App nameを入力します(Shopify アプリの作成手順と同じ名前を推奨)。CLI tokenフィールドには先ほど控えた "CLI Token" を入力します。
- "Deploy App" をクリックします。
コンソール出力が表示され、アプリがShopifyへデプロイされます。正常に完了すると、このセクションは閉じて最後のセクションが開きます。

- 最後の "Install the app on your Shopify store" セクションでは操作は不要です。ストアにアプリがインストール済みかを確認するだけで、実際のインストールは次の手順で行います。

# Shopify ストアに BTCPay-Shopify アプリをインストールする
次に、Shopify アプリを Shopify ストアへインストールします(これでストアが BTCPay Server にリンクされます)。
パートナーアカウント (opens new window)のアプリ概要で、作成したアプリを選択し、
Choose DistributionをクリックしてCustom distributionを選びます。確認して確定します。TIP
Custom distributionを選ぶと、そのアプリは1つのShopifyストアでしか使えません。これは元に戻せません。複数ストアがある場合は、ストアごとに複数アプリをデプロイしてください。

次の画面で、アプリを紐づけたいShopifyストアのURLを入力します。通常はストア設定時に表示される内部ストアURL(例:
your-store.myshopify.com)です。
"Allow multi-store install for one Plus organization" のチェックを外してください。

Generate linkをクリックするとリンクが生成されます。リンクをコピーし、ブラウザで開いてインストールを開始します。
アプリが一覧表示されるので
Installをクリックしてインストールします(未ログインの場合は先にログインが必要です)。
TIP
アプリ画面には顧客情報やストアオーナー情報へのアクセス権が表示されますが、実際にはそれらのデータへアクセスしません。アプリが使うのは注文ステータス更新のための checkout ID と order ID のみで、顧客や管理者の個人データが BTCPay Server へ送信されることはありません。
- インストールが完了すると、"Shopify plugin successfully configured" というメッセージが表示されるアプリページが開きます。

- (任意)最下部の "You can navigate to your plugin's settings page by clicking here." リンクをクリックすると、アプリが BTCPay Server に正しく接続されているか再確認できます(最後のセクションも緑チェックになります)。

# "Thank you" ページをカスタマイズする
- Shopifyダッシュボードで左ナビ下部の
Settingsをクリックし、Checkoutを選択後、Customizeをクリックします。

- エディタ内で表示ページを "Thank you" ページに切り替えます。


- 左パネルの
Appsアイコンをクリックします。
- 一覧にある "BTCPay Checkout" アプリの (+) をクリックし、続いて表示される "Thank you" ページを選択します。

- 拡張機能が "Thank you" ページに追加されます。重要: 右上の "Save" を必ずクリックしてください。

- 正常動作の確認として、"BTCPay Checkout" の横にある左向き矢印
<をクリックし、"Order details section" に表示されていることを確認します。

# Shopify でカスタム決済方法を設定する
最後に、顧客に Bitcoin 決済オプションを表示するため、Shopify でカスタム決済方法を設定します。
- ダッシュボードに戻り、左サイドバーの
Settings>>Paymentsをクリックします。"Manual payment methods" までスクロールし、(+) Manual payment methodをクリック、ドロップダウンでCreate custom payment methodを選択します。
Custom payment method nameにPay with Bitcoin (BTCPay Server)のような名称を入力します(下の注記も参照)。他の項目は任意ですが入力は必須ではありません。 なお、Bitcoin 支払いはチェックアウト直後ではなく "Thank you" ページの次画面で行われることを顧客に案内する必要があります。理想的にはAdditional detailsフィールドで案内します。 "Thank you" ページで決済オプションが表示されるまで若干遅延する場合があるため、その旨も顧客に伝えることを推奨します。推奨文言:「Thank you」ページに Bitcoin 支払いボタン「Complete payment」が表示されます。支払い完了のため、このボタンをクリックしてください。TIP
"Custom Payment method name" には次のいずれかの語を必ず1つ以上含めてください(大文字小文字は区別されません):
bitcoin,btcpayserver,btcpay serverまたはbtc。Activateをクリックすると、Shopify と BTCPay Server の決済方法設定は完了です。
おめでとうございます。BTCPay-Shopifyアプリのインストールと、Shopifyストアでの決済方法設定が完了しました。利用準備は完了です。以下にデモのチェックアウトフローを示します。
# 設定完了後のデモチェックアウトフロー
顧客がチェックアウトページで決済方法を選択:

顧客は "Thank you" ページへリダイレクトされ、支払いボタンが表示:

顧客が "Complete payment" をクリックし、BTCPay支払いページへリダイレクト:

顧客が請求書を支払い、マーチャントへ戻るをクリック:

顧客はShopifyの注文ステータスページへリダイレクト:

BTCPay Server のストア側では、支払い済み請求書を確認できます:

クリックすると支払い詳細を確認できます:

# FAQ
Shopify V1とShopify V2を同時に使えますか? いいえ、同時利用は推奨されません。両方を同時に使うと、Shopify側で注文レコードが重複するなど予期しない動作が発生する可能性があります。Shopify V1は無効化し、Shopify V2のみを使ってください。
請求書がInvalidになったらどうなりますか? 有効期限までに確認された支払いの合計がShopifyに反映されます。
BTCPay Serverで請求書をInvalidに手動変更したらどうなりますか? BTCPay側は何もしないため、Shopify注文は保留のままになります。
BTCPay Serverで請求書を手動でsettledにしたらどうなりますか? Shopify注文は「支払い完了」としてマークされます。
顧客が支払わなかった場合は? BTCPay請求書の有効期限切れ時にShopify注文は無効化され、在庫が戻されます。
顧客が支払ったが、確認が妥当な時間で進むには手数料不足だった場合は? BTCPay請求書はInvalidとなり、Shopify注文はPayment Pendingのままです。
顧客が一部だけ支払った場合は? BTCPay請求書は期限切れになります。期限時点で確認済み支払いがある場合はShopify注文はPartially Paid、ない場合はPayment Pendingのままになります。
部分支払いを避けるには? 部分支払いは、取引所から支払った際に手数料が差し引かれることで発生しがちです。対策として、ストア設定で小さなunderpayment toleranceを設定してください。
顧客が支払いを完了しなかった場合、請求書リンクを再共有するには? BTCPay Server は、BTCPay が選択された決済方法であれば請求書リンクを Shopify 注文の metafields に保存します。
Shopify API で metafields を取得します:
https://{SHOPNAME}.myshopify.com/admin/api/{VERSION}/orders/{ORDER-ID}/metafields.json
詳細:
- Shopify GraphQL API - Order Metafields (opens new window)
- Shopify REST API - Order Metafields (opens new window).
# トラブルシューティング
# プラグインのインストールが失敗する場合
BTCPay Server でプラグインをインストールしようとした際に "This app has been migrated to the new Next-Gen Dev platform" エラーが表示される場合、BTCPay インスタンス管理者であれば、前述の Deploy the Shopify fragment の手順どおり BTCPay Server を更新すれば解決できます。管理者でない場合は、管理者に Shopify fragment の更新を依頼してください。更新後はこのガイドに従って BTCPay Server と Shopify を正常に連携できるはずです。

# アプリ更新時にエラーが出る場合
2025年9月15日より前にアプリをインストールしていて、再デプロイで更新しようとした際に "Your app has extensions which need to be assigned 'uid' identifiers" エラーが出る場合、Shopify app update (opens new window)の大きな変更が原因です。アプリをアンインストールして、新しく作り直す必要があります。以下を実施してください。
- Shopify ストアからアプリをアンインストール
- Shopify Partnersでアプリを削除(任意)
- BTCPay Server の Shopify プラグイン画面に戻り、
Resetボタンをクリック btcpayserver-dockerディレクトリで./btcpay-update.shを実行し、最新の Shopify fragment(>= 1.5)を使用していることを確認- インストール手順を最初からやり直す

# BTCPay Shopify app を更新するには?
BTCPay Shopify app (opens new window)が更新されたときは、次の手順で新バージョンをストアへ反映できます。
まず、Shopify Partner ポータル (opens new window) で新しい CLI トークンを取得します(手元にない、または期限切れの場合)。
# 新しい CLI トークンを取得する
- Shopify Partner Portal にログイン
- ページ下部の "Settings" をクリック

- 下部の "CLI Token" セクションで "Manage tokens" をクリック

- 右上の "Generate new token" をクリック

- モーダルではデフォルトのまま "Generate token" をクリック

- CLI トークンをコピー(このトークンは一度しか表示されません)

# BTCPay Server に SSH 接続する
次に BTCPay Server へログインし、更新スクリプトを実行して最新 Docker イメージ(BTCPay Shopify app を含む)を取得します。
# if you are not root user, switch to root
sudo su -
# go to the BTCPay Server docker directory
cd $BTCPAY_BASE_DIRECTORY
cd btcpayserver-docker
# run the update script
./btcpay-update.sh
# BTCPay Shopify app を更新する
- BTCPay Server にログイン
- Shopify と接続済みのストアを選択
- 左サイドバーの
Shopify v2をクリック - 2つ目の "Deploy the app" セクションを展開
- CLI トークンを貼り付けて "Deploy App" をクリック

- コンソール出力が表示され、正常終了するとセクションが閉じます

これで BTCPay Shopify app の更新は完了です。
# Shopify Partner ポータルで新しいアプリを作成できない
右上プロフィールが "null null" と表示されていないか確認してください。これはプロフィールの姓・名が未入力の状態です。以下の手順で入力すると解消します。
- 右上のプロフィールをクリック
- "Your profile" を選択
- "First name" と "Last name" を入力
- Shopify Partners に戻ると作成できるようになります
# サポートとコミュニティ
サポートが必要な場合や質問がある場合は、Mattermost (opens new window) または Telegram (opens new window) のサポートチャネルへ参加してください。