<!-- https://unlockos.io/ja/manual/membership-plans -->

# メンバーシッププランと利用制限（クォータ）

## 概要

メンバーシッププランでは、施設への会員アクセス可否・請求方法・承認フロー・月間利用回数や時間の上限（クォータ）を設定できます。クォータを超えた場合は利用をブロックするか、Stripe Invoice Item として追加料金を請求するかを選べます。

会員は会員アプリのホーム画面でクォータバーを確認でき、現在の利用状況をリアルタイムで把握できます。

---

## 詳細機能

## 機能1: 申請フロー

プラン作成時に、入会申込から有効化までの流れを選択します。

| フロー | 内容 |
|--------|------|
| **先払い**（デフォルト） | 申し込み時に決済します。`auto_approve` が OFF の場合、スタッフがメンバーシップタブで手動承認するまでは `pending` 状態です。 |
| **申請先行** | 申込フォームの入力後、決済なしで申請が送信されます。スタッフが **承認待ち** タブで内容を確認し、承認または却下します。承認後、申請者にメールが届き、決済を完了することで有効化されます。 |

### 申請先行プランの設定

**申請先行** を選択すると：
- 決済なしで申請を送信できるようになります（決済は承認後）
- 申請内容は各承認待ちカードに表示され、スタッフが承認前に確認できます

> 申込時に追加の入力項目（氏名・連絡先など）を求めたい場合は、**申請先行に限らずどちらの入会フローでも**設定できます。プラン保存後に表示される「申込フォーム」セクションで設定します（[機能1.5: 申込フォームの設定](#機能15-申込フォームの設定)を参照）。

### 申請の承認・却下（承認待ちタブ）

1. 管理画面の **メンバーシップ** タブを開く
2. **承認待ち** サブタブをクリック
3. 各申請カードには、申請者のメールアドレス・申請プラン・申請日・フォームの回答が表示されます
4. **承認** をタップすると申請者にメールが送信され、決済に進めるようになります
5. **却下** をタップすると却下理由の入力ダイアログが表示されます（任意）

> 承認後、サブスクリプションは会員が決済を完了するまで `pending_payment` 状態のままです。決済が確認されると `active` になります。

## 機能1.5: 申込フォームの設定

会員プランを一度保存すると、編集画面に **「申込フォーム」** セクションが表示されます。ここで「フォーム」ページで作成済みのフォームを1つ選んで入会申込に紐付けられます。チェックイン設定にフォームを紐付けるのと全く同じ仕組み（Form 機能）なので、同一のフォーム定義をチェックインと入会申込の両方で使い回せます。

| 項目 | 内容 |
|------|------|
| 対応フロー | 先払い・申請先行のどちらでも設定可能（申請先行専用ではありません） |
| 使える項目タイプ | テキスト・メールアドレス・電話番号・数値・選択式・日付・複数行テキスト・画像アップロード |
| 回答の保存先 | フォーム回答（フォーム管理の回答一覧）に保存されます。他のフォーム回答と同じ個人情報保護の対象になります |
| 1プランあたり | 1フォームまで（複数フォームの同時添付はできません） |

### 設定手順

1. あらかじめ「フォーム」ページで申込フォームを作成しておきます（対象スコープは「本人情報」または「予約」のフォームが選択候補に表示されます）
2. メンバーシッププランを新規作成し、一度保存します
3. 保存後に表示される編集画面の **「申込フォーム」** セクションで、作成したフォームを選択します
4. 選択すると即座に反映されます

> **新規作成の直後には設定できません。** フォームは保存済みのプランIDに紐付くため、プランを保存 → 編集画面を開き直す、という2ステップになります。

### 既存の申込フォームからの移行について

以前は「申請先行」プランでのみ、独自の項目ビルダー（テキスト・メール・電話番号の3種類限定）で申込項目を設定できました。この項目ビルダーは廃止されました。**既に項目を設定していたプランは、リリース時に自動的にフォーム機能へ変換されており、施設側での再設定は不要です。** 変換後のフォームは「申込フォーム」セクションに表示され、これまでどおり機能します。

必須項目の入力チェック（未入力・メール形式エラー）は従来どおりサーバー側で行われます。

## 機能1.6: 会費の支払い方法（現地払い）

会員プランごとに、会費をどう受け取るかを選べます。プラン編集画面の **「会費の支払い方法」** ドロップダウンで設定します。

| 選択肢 | 動作 |
|---|---|
| **オンライン決済のみ**（デフォルト） | 従来通り、申込・更新ともに Stripe で自動課金されます |
| **現地払いのみ（Stripeを使わない）** | Stripe を一切通しません。申込は「支払い待ち」の状態で止まります |
| **申込者が選ぶ** | 申込者が申込時にオンライン決済 / 現地払いのどちらかを選びます |

「現地払いのみ」または「申込者が選ぶ」を選ぶと、追加で2つの入力欄が表示されます。

| 項目 | 内容 |
|---|---|
| 表示名（40文字まで） | 申込者・受付の両方に見える名称。空欄なら「現地払い」と表示されます。銀行振込・掛け払いなど、施設の実際の集金手段に合わせて上書きできます |
| 説明（80文字まで） | 申込者向けの補足（例:「別途ご案内します。」）。空欄可 |

> **表示名を変えても、仕組みは1つのままです。** 「銀行振込」という表示名にしても、受付側の操作（[機能1.7](#機能17-現地払いの受領を記録する)の「受領を記録する」）は変わりません。

> **⚠️ 申込は「支払い待ち」で止まり、受付で受領を記録するまで有効になりません。会費の更新（毎月・毎年の請求）にも毎回同じ操作が必要です。** Stripe管理の会費と違って期日が来ても自動では引き落とされないため、更新のたびに[機能1.7](#機能17-現地払いの受領を記録する)の受領記録が必要になります。放置すると[機能1.75](#機能175-現地払い会費の失効自動)の自動失効に進みます。

## 機能1.7: 現地払いの受領を記録する

現地払い（または「申込者が選ぶ」で現地払いを選んだ）会員の入金は、次の2箇所から記録できます。共通の受領フォームで、予約の現地払いや回数券の店頭発券とも同じ画面です。

### 会員一覧タブから

1. **メンバーシップ** タブ → **会員一覧** サブタブを開く
2. 対象の会員カードに表示される **「支払いを記録」** ボタンをクリックする
3. 受領モーダルで受領額（既定はプラン料金そのまま。変更可）・受領手段（現金／銀行振込／その他）・受領日時・メモ（任意）を入力し、**「受領を記録する」** をクリックする

「支払いを記録」ボタンは、承認待ち（`approved_pending_payment`）・有効（`active`）・支払い遅延（`past_due`）のいずれかの状態にある会員のカードにのみ表示されます。退会済み・強制退会・却下・失効済みのカードには表示されません。

### 支払い待ちタブから

未受領の会費は **支払い待ち** サブタブに一覧表示されます。会員一覧の状態フィルタと違い、開かなくても未受領件数がタブラベル横のバッジで見えるのが特長です（承認待ちタブと同じ考え方の集金用ワークキューです）。

| 表示 | 意味 |
|---|---|
| 初回・未受領 | 入会申込後、まだ一度も受領が記録されていない |
| あとN日 | 次回更新日まであとN日 |
| N日超過 | 次回更新日をN日過ぎている（失効までの猶予期間中。詳細は[機能1.75](#機能175-現地払い会費の失効自動)を参照） |

各行の **「支払いを記録」** ボタンから、会員一覧タブと同じ受領モーダルを開けます。

> **⚠️ Stripeが請求している会員には、このボタンは表示されません。** 「申込者が選ぶ」プランでオンライン決済を選んだ会員は、プラン自体が現地払い対応でも、会員一覧・支払い待ちのどちらの画面からも受領を記録できません。Stripe側で正常に請求が回っているため、ここで受け取ると二重請求になるからです。ボタンが出ない会員の入金状況は Stripe Dashboard で確認してください。

> 受領は金額を変えて一部だけ記録することはできません（会費は毎回全額一致）。後払いの滞在残高のように一部だけ受け取りたい場合は、[チェックイン履歴](checkin-history.md)の受領を使ってください。

## 機能1.75: 現地払い会費の失効（自動）

Stripeを使わない会費（現地払い・¥0プランなど）は、毎日 **深夜2時（JST）** に自動でチェックされ、期限切れ処理が行われます。

| 状態遷移 | タイミング |
|---|---|
| 有効 → 支払い遅延 | 次回更新日を過ぎた時点。**この間もまだ入場できます** |
| 支払い遅延 → 失効 | 支払い遅延になってから **7日間の猶予期間** を過ぎた時点。**鍵・権限が失効します** |

> **なぜ即座に止めないのか。** 現地払いの会員は来館時にしか支払えません。更新日当日に締め出すと、支払うために来館すること自体ができなくなってしまいます。7日間の猶予はそのためです。この間、施設側からの自動督促（メール等）は送信されません。支払い待ちタブで能動的に確認してください。

> **Stripeが請求している会員は対象外です。** Stripeサブスクリプションを持つ会員のステータスはこの自動処理が一切変更しません。カード決済の失敗・リトライは Stripe 側の仕組みに従います。

## 機能1.8: 入会金（初回のみの一時金）

プラン作成・編集画面の **「入会金（初回のみ）」** で、月額とは別に **初回だけ 1 回請求する一時金** を設定できます。空欄または 0 なら徴収しません。

| 項目 | 内容 |
|---|---|
| 請求のタイミング | **初回の請求に相乗り**します。初月分（日割り）と入会金が 1 回の決済にまとまります |
| 申請先行プランの場合 | 承認後の支払いに、初月分と入会金をまとめて含めます |
| 変更 | 月額と違い、**プラン作成後も変更できます**（Stripe の定期価格ではなく、申込時に組む一時金のため） |
| 既存会員 | 影響しません。入会金は**新しく申し込んだ人の初回請求**にだけ載ります |
| 表示 | 申込画面のプラン説明と、確認画面の内訳（初月分 / 入会金 / 合計）に出ます |

### 月額 0 円のプランには設定できません

月額 0 円のプランは決済を一切通らないため、入会金だけを請求する経路がありません。設定しようとすると保存時にエラーになります。**「月額 0 円 + 初回のみ課金」** という商品が必要な場合は、会員プランではなく予約プラン側の一回課金で表現してください。

### 免除されるのはどんなときか

いまのところ免除は **同じ申込を再開したとき** だけです。解約したあとの再入会は新しい申込になるので、**入会金はもう一度かかります**（「解約して入り直せば無料」にならないようにするためです）。

> 休会（無期限・無料休会）は別途対応予定の機能です。休会の価値は「戻るときに入会金がかからない」ことなので、入会金はその前提として先に用意しています。

## 機能1.9: 販売状態（公開・非公開・売止め）

プラン作成・編集画面の **「販売状態」** で、会員ページへの掲載可否と新規入会の受付可否を選べます。

| 状態 | 会員ページの一覧 | 申込URLからの新規入会 |
|------|----------------|---------------------|
| **公開**（デフォルト） | 表示される | 受け付ける |
| **非公開** | 表示されない | 受け付ける（URLを知っている人だけ入会可能） |
| **売止め** | 表示されない | 受け付けない |

> **どの状態でも、既に入会している会員には一切影響しません。** 契約・鍵・請求はそのまま続き、会員ページも今までどおり使えます。販売状態が制御するのは「これから入会する人」だけです。

各プランカードには申込URL（`member.unlockos.io/{施設スラッグ}?plan={プランID}`）が常に表示されます。非公開・売止めのプランでは、このURLを開いたときの結果についての注記も併せて表示されます。

### 非公開の使いどころ

招待制のプラン、法人契約、スタッフ専用プランなど、「一覧には出したくないが、URLを知っている人だけ入会させたい」場合に使います。

### 売止めの使いどころ

定員に達した、募集を一時的に止めたいなど、「新規募集だけを止めたい」場合に使います。**会員が在籍しているプランを削除・引退させたい場合も、まずは売止めを検討してください**（[機能2.7: プランの引退（無効化）と再有効化](#機能27-プランの引退無効化と再有効化)を参照）。

### 設定手順

1. 管理画面 → **メンバーシップ** タブでプランを新規作成または編集
2. **「販売状態」** ドロップダウンで **公開 / 非公開 / 売止め** のいずれかを選択
3. 保存

---

## 機能2: クォータの設定（管理者）

管理画面の **メンバーシップ** タブから、プランを作成・編集する際にクォータを設定します。

### 設定できる上限項目

| 項目 | 説明 | リセット周期 |
|------|------|------------|
| **月間訪問数** | 1ヶ月に入場できる回数の上限 | 月次 |
| **日次利用時間** | 1日に利用できる時間（時間単位）の上限 | 日次 |
| **月間予約数** | 1ヶ月に行える時間枠予約の上限（回数制限または時間制限） | 月次 |

#### 月間予約数の制限方式

月間予約数は「**無制限 (unlimited)** / **回数 (By count)** / **時間 (By hours)**」の3択から選択します。

| 選択肢 | 動作 |
|--------|------|
| **無制限** | 月間予約回数・時間の上限を設けない。会員アプリのクォータバーに予約枠の進捗は表示されない。 |
| **回数制限** | 1ヶ月に予約できる件数（回）の上限を設定する。 |
| **時間制限** | 1ヶ月に予約できる合計時間（時間）の上限を設定する。 |

月間訪問数と日次利用時間は値を空欄にすると「無制限」として扱われます。

### プラン作成手順

1. 管理画面 → **メンバーシップ** タブを開く
2. **新規プラン作成** ボタンをクリック（プランの詳細入力ページに移動します）
3. プラン名・料金・請求間隔・申請フローなどの基本情報を入力
   - **料金** と **請求間隔** のラベル横には「(作成後は変更不可)」と表示されます。これらの項目は Stripe 連携の都合上、保存後に変更できません
4. **利用制限** セクションで上限値を入力

### 既存プランを複製して作る

似たプランを一から入力し直さず、既存プランをコピーして作れます。

1. 管理画面 → **メンバーシップ** タブのプラン一覧で、複製したいプランの **複製アイコン**（編集アイコンの左）をクリック
2. 新規プラン作成ページが、元プランの内容（料金・請求間隔・利用制限・チェックイン設定・対象予約プランなど）で埋まった状態で開きます
3. 名前は自動的に「**{元のプラン名} のコピー**」になります。必要に応じて変更してください
4. 内容を確認して **新規プラン作成** をクリックすると、新しいプランとして保存されます

複製で引き継がれないもの:

| 項目 | 挙動 |
|------|------|
| **販売状態** | 元が公開中でも必ず **売止め** で開きます。作成した瞬間に申込ページへ並ばないようにするためです。公開する場合はフォームで選び直してください |
| **申込フォームの紐付け** | 引き継がれません。保存済みプランIDに紐付く仕組みのため、作成後に編集画面で選び直してください |
| **加入者** | 引き継がれません。新しいプランは加入者 0 名で始まります |

> 複製アイコンを押した時点では何も保存されません。**新規プラン作成** を押すまで、元のプランにも新しいプランにも変更は加わりません。

## 機能2.5: プランカードの加入者数表示

プラン管理タブの各プランカードに、現在の加入者数が「**{加入者数} / {上限}** 名」の形式で表示されます。上限が未設定の場合は「**{加入者数} 名**」（∞ 表示）となります。

集計対象のステータスは `active`・`past_due`・`pending_approval`・`pending_payment` の4種です。退会済み（`canceled`）は含まれません。

## 機能2.6: プランの並べ替え（表示順）

プラン管理タブでは、プランカードを **ドラッグ＆ドロップ**、または各カードの **↑↓ ボタン** で自由に並べ替えられます。

| 項目 | 内容 |
|------|------|
| 並べ替え方法 | カードのハンドルをドラッグ、またはカードの ↑ / ↓ ボタンをタップ |
| 反映範囲 | 管理画面のプラン一覧と、**会員アプリのプラン一覧の表示順にそのまま反映されます** |
| 保存 | 並べ替えると自動的に保存されます（別途の保存ボタンはありません） |
| 対象 | 引退したプラン（[機能2.7](#機能27-プランの引退無効化と再有効化)）は並べ替えの対象外です |

以前は表示順を制御する手段が無く、常に作成日時の新しい順で固定表示されていました。プランを1本追加するだけで並びが変わってしまい、施設側で意図した順序を保てませんでした。

> 並べ替えを保存しようとしたときに、他の端末やタブで会員プランが追加・削除されていると、保存はエラーになり並べ替え前の表示に戻ります。画面を再読み込みしてから並べ替えをやり直してください。

## 機能2.7: プランの引退（無効化）と再有効化

プランカードの **無効化** ボタンから、プランそのものを引退させられます。**[機能1.9の「売止め」](#機能19-販売状態公開・非公開・売止め)より踏み込んだ操作**で、実行すると会員のサブスクリプションが Stripe ごと即時キャンセルされ、権限と鍵も失効します。

| 項目 | 内容 |
|------|------|
| 実行できる条件 | 会員が **0 名** のプランのみ |
| 動作 | Stripe サブスクリプションを即時キャンセルし、会員の権限（ロール・施設メンバー登録）と鍵を revoke する |
| 一覧での見え方 | 通常のプラン一覧から消え、画面下部の **「引退したプラン」** セクションに移動する |
| 元に戻す | 「引退したプラン」セクションの **再有効化** ボタンでプランの設定だけを復帰できる |

### 会員が居るプランは引退できません

会員が1名でも在籍しているプランで無効化を実行しようとすると、次のメッセージとともに拒否されます。

> このプランには会員が {会員数} 名います。引退させると全員が強制退会になるため実行できません。新規の募集だけを止めるには、プランを編集して販売状態を「売止め」にしてください。

**新規募集だけを止めたい場合は、引退ではなく売止め（機能1.9）を使ってください。** 売止めは既存会員に一切影響しません。

### 再有効化後の注意

再有効化したプランは、販売状態が自動的に **「売止め」** の状態で戻ります（誤って引退させたプランがそのまま再び売り出されるのを防ぐためです）。再び募集する場合は、プランを編集して販売状態を「公開」または「非公開」に変更してください。

再有効化はプランの設定を復元するだけです。引退時に強制退会となった会員のサブスクリプション・鍵は自動的には戻りません。

## 機能3: 超過時のポリシー設定

クォータを超えた際の挙動を「ブロック」または「追加課金」から選択します。

| ポリシー | 動作 |
|---------|------|
| **ブロック** | 上限に達すると入場・予約を拒否する。追加料金は発生しない。 |
| **追加課金** | 上限を超えても利用可能。超過分は Stripe Invoice Item で自動請求される。 |

### 超過料金（追加課金ポリシー選択時のみ）

追加課金ポリシーを選択すると、超過料金の入力フィールドが表示されます。

| 項目 | 説明 | 例 |
|------|------|----|
| 超過1回あたり料金 | 月間訪問数を超えた入場1回ごとの料金 | ¥500 |
| 超過1時間あたり料金 | 日次利用時間を超えた1時間ごとの料金 | ¥200 |
| 超過1予約あたり料金 | 月間予約数を超えた予約1件ごとの料金 | ¥300 |

超過料金はプランの通貨（JPY/USD）に従います。空欄のままにすると対象クォータの超過課金は行われません。

## 機能4: メンバーシップ専用プランの予約リストからの除外

`selected_plan_type='membership'` として作成されたプランは、予約ページ（Booking アプリ）のプランリストには表示されません。会員アプリのホーム画面から「予約プランを開く」ボタン経由でのみアクセスできます。これにより、会員専用の予約枠が一般の予約プラン一覧に混在するのを防ぎます。

## 機能5: クォータバーの確認（会員アプリ）

会員アプリのホーム画面には、有効なクォータが設定されているプランの場合にクォータバーが表示されます。

### 表示される情報

- **ラベル**: 月間訪問回数 / 本日の利用時間 / 月間予約回数
- **数値**: 使用済み数 / 上限（例: `2 / 5 回`）
- **プログレスバー**: 使用割合を視覚的に表示
  - 青緑（通常）: 使用率 80% 未満
  - 黄（注意）: 使用率 80%〜99%
  - 赤（上限）: 使用率 100%

### 追加課金メモ

超過時のポリシーが「追加課金」に設定されている場合、クォータバーの下に以下の注意文が表示されます：

> 上限超過時は追加料金が発生します

## 機能6: 対象予約プラン（無料枠の適用範囲）

会員プランの編集フォームでは、**予約制限（スロット予約）** セクション内に **対象予約プラン** というマルチセレクトがあります。ここで選んだ通常の予約プランが、このメンバーシッププランの無料枠（クォータ）の対象になります。

> **この設定は予約サービスだけでなく、ウォークイン（フロントデスク／その場のチェックイン）にも共通で効きます。** 以前はウォークインの無料枠を「チェックイン設定」単位で管理していましたが、現在は本セクションのプラン単位の設定に統一されています。

| 選択状態 | 予約サービスでの動作 | ウォークインでの動作 |
|---------|------------------|------------------|
| 未選択（デフォルト） | すべての予約プランが対象。会員はどのプランを予約しても無料枠が適用されます（従来の挙動） | プラン単位では判定せず、下記「チェックイン設定（会員ページの入口）」の設定に従います |
| 1つ以上選択 | 選択したプランのみ対象。対象外のプランは会員でも通常課金されます | 選択したプラン（対象プラン・会員無料）がそのチェックイン設定に含まれていれば無料。含まれていなければ有料 |

> **非会員が締め出されることはありません。** 対象予約プランを設定しても、非会員は引き続きすべてのプランを通常料金で予約できます。この設定は「予約できるかどうか」ではなく「無料になるかどうか」だけを制御します。

### 設定手順

管理画面 → **メンバーシップ** タブでプランを新規作成または編集し、**予約制限（スロット予約）** セクション内の下記 2 つのマルチセレクトを使い分けます（複数選択可、検索ボックスで絞り込み可能）。

1. **対象予約プラン（会員無料）** — ここで選んだプランは **会員特典で ¥0** になります（無料枠 quota の対象）。予約とウォークインの両方に効きます
2. **対象予約プラン（会員向け・通常課金）** — ここで選んだプランは **会員アプリの「予約プラン」カードに表示**されますが、**料金は通常通り課金** されます（時間外割引プラン等の会員導線用）。この欄はウォークインの無料判定には使われません

両方とも未選択の場合は、後方互換で予約側は **すべての予約プランが会員無料** の対象になります（ウォークイン側は次項の「チェックイン設定」欄に従います）。

保存すると、それぞれのセクションで選択したプランがタグとして表示されます。同じプランを両方の欄で選ぶことはできません（一方に追加すると自動的に反対側から外れます）。

### 対象プランの制約

- 選択候補には **この施設の有効な予約プラン** のみ表示されます。他施設のプランや無効化されたプランは新規の選択候補には出ません
- 既にリンク済みのプランが後から無効化された場合、タグとしてプラン名は表示され続けますが、新規選択の候補には出ません
- 保存時に他施設のプランIDや存在しないプランIDが含まれていた場合は自動的に除外され、画面上部に「一部の対象予約プランはこの施設に存在しないためリンクされませんでした」という警告が表示されます（保存自体は成功しています）

### チェックイン設定（会員ページの入口）

**会員ページにチェックインボタンを出すかどうかは、この欄と「対象予約プラン（会員無料）」の 2 つで決まります。** 会員プランの編集画面では常に開いた状態で表示されます。

判定の順序は次のとおりです。

1. 「対象予約プラン（会員無料）」で選んだプランを課金プランに持つチェックイン設定があれば、**それが会員ページの入口になります**
2. 特定できない場合（対象予約プランが未選択、またはどのチェックイン設定にも繋がっていない場合）は、**この欄で指定したチェックイン設定が入口になります**
3. **どちらでも特定できない場合、その会員プランの会員には会員ページにチェックインボタンが 1 つも出ません**

> **⚠️ 「対象予約プラン（会員無料）」を設定しただけでは足りない場合があります。** 対象予約プランに選んだプランが、どのチェックイン設定の課金プランにもなっていないと、料金は会員無料になるのに入口が出ません。その場合はこの欄でチェックイン設定を直接指定してください。

この欄はウォークイン（直接チェックイン）専用で、予約サービスには影響しません。

- 料金（会員が無料になるか）の判定も同じ順序です。「対象予約プラン（会員無料）」を1つでも選び、それがチェックイン設定に繋がっている場合、料金判定はプラン単位に切り替わります
- これまで複数のチェックイン設定に分けて会員ランクごとの入口を作っていた施設は、「対象予約プラン（会員無料）」に移行すると、複数のチェックイン設定を **1つの入口に統合** できます。統合すると、その入口の最大収容人数の設定を施設の実際の同時収容人数に近づけられます（会員ランクの数だけ入口を分ける必要がなくなるため）。加えて、無料プランがその日1件に確定する場合は、会員のチェックイン画面でプラン選択のステップが自動的にスキップされます

### 無料枠の適用ルール

会員が対象予約プランを予約する場合:
- 上記の **月間予約数**（回数制限・時間制限）が設定されていれば、その上限の範囲内で無料
- 月間予約数が「無制限」であれば、常に無料
- 上限を超えた場合の挙動は **機能3: 超過時のポリシー設定** に従います（ブロックまたは追加課金）

会員が対象外の予約プランを予約する場合は、通常のゲスト料金がそのまま適用されます（無料枠は消費されません）。ゲスト側の予約確認画面での表示については [会員・サブスク予約の特典](guest-member-booking.md) を参照してください。

---

## 設定例

### 例1: コワーキング スタンダードプラン

月20回入場 + 日8時間まで利用可能、超過は拒否する場合：

- 月間訪問数: `20`
- 日次利用時間: `8`
- 月間予約数: （空欄）
- 超過時の対応: **ブロック**

### 例2: フレックス メンバーシップ

月10回入場、超過は1回 ¥500 で追加課金する場合：

- 月間訪問数: `10`
- 日次利用時間: （空欄）
- 月間予約数: （空欄）
- 超過時の対応: **追加課金**
- 超過1回あたり料金: `500`

### 例3: スタジオ クラス会員

月4回の時間枠予約のみ制限する場合：

- 月間訪問数: （空欄）
- 日次利用時間: （空欄）
- 月間予約数: **回数制限** → `4` 回
- 超過時の対応: **ブロック**

---

## よくある質問

### Q: クォータはいつリセットされますか？

月間クォータは毎月1日の 00:00（施設タイムゾーン）に自動でリセットされます。日次クォータは毎日 00:00 にリセットされます。手動でのリセットは不要です。

### Q: 複数の上限を設定した場合、どの条件で制限されますか？

いずれか1つでも上限に達した場合に制限が適用されます。例えば、月間訪問数と日次利用時間の両方を設定している場合、どちらかが上限に達すると以降の利用がブロック（または課金）されます。

### Q: 超過料金はいつ請求されますか？

超過課金は Stripe Invoice Item として都度記録され、次回の定期請求サイクル（月次・年次）の請求書に合算されます。

### Q: 会員がクォータを確認できない場合は？

クォータバーはクォータが1件以上設定されているプランでのみ表示されます。月間予約数が「無制限」、かつ月間訪問数・日次利用時間がすべて空欄のプランの場合、クォータバーは表示されません。

### Q: 既存の会員に対してクォータを変更した場合、すぐに反映されますか？

プランのクォータを変更した場合、次回リセット後から新しい上限が適用されます。現在の使用済み回数は引き継がれます。

### Q: 対象予約プランを追加・変更すると、既存の会員にすぐ反映されますか？

はい。対象予約プランのリンクは保存した瞬間に反映されます。バックフィル作業は不要で、既に有効なサブスクリプションを持つ会員は次回の予約から新しい設定が適用されます。

### Q: 対象予約プランを1つも選択しなかった場合はどうなりますか？

すべての予約プランが対象になります（後方互換の挙動）。特定のプランだけを無料枠の対象にしたい場合のみ、対象予約プランを絞り込んでください。

### Q: ウォークイン（直接チェックイン）の無料枠も対象予約プランで決まりますか？

はい。「対象予約プラン（会員無料）」を1つ以上選ぶと、その設定が予約とウォークインの両方に適用されます。1つも選んでいない会員プラン、または対象予約プランからチェックイン設定を特定できない会員プランのウォークインは、「チェックイン設定（会員ページの入口）」欄の設定で判定されます。

### Q: 申込フォームは申請先行プランでしか使えませんか？

いいえ。プラン保存後に表示される「申込フォーム」セクションは、先払い・申請先行のどちらの入会フローでも設定できます。以前は申請先行プラン専用の項目ビルダーでしたが、現在はチェックイン設定と共通のフォーム機能に統合されています（[機能1.5](#機能15-申込フォームの設定)参照）。

### Q: 販売状態を「非公開」や「売止め」にすると、既存の会員は使えなくなりますか？

いいえ。販売状態はこれから入会する人にだけ影響します。既存会員の契約・鍵・請求・会員ページの利用はそのまま続きます。

### Q: 会員が入っているプランを引退（無効化）できません

会員が1名でも在籍しているプランは引退できません（実行すると全員が強制退会になるためです）。新規募集だけを止めたい場合は販売状態を「売止め」にしてください。プランをどうしても引退させたい場合は、会員が0名になってから実行してください。

### Q: 引退したプランを元に戻すことはできますか？

できます。プラン一覧下部の「引退したプラン」セクションから再有効化できます。ただしプランの設定が戻るだけで、引退時に強制退会となった会員のサブスクリプションと鍵は自動的には戻りません。再有効化直後は販売状態が「売止め」になるので、募集を再開する場合は編集して「公開」または「非公開」に変更してください。

### Q: 現地払いの会員に「支払いを記録」ボタンが出ません

まず、その会員のプランが「会費の支払い方法」で現地払い対応（現地払いのみ／申込者が選ぶ）になっているか確認してください。対応している場合でも、その会員が実際にはオンライン決済（Stripe）を選んでいると、二重請求を避けるためボタンは表示されません。また、退会済み・強制退会・却下・失効済みの会員にもボタンは表示されません。

### Q: 現地払いの会費を受け取り忘れると何が起きますか？

次回更新日を過ぎると自動的に「支払い遅延」になりますが、この間も入場は可能です。そこから7日間の猶予期間を過ぎると自動的に「失効」となり、鍵・権限が止まります（[機能1.75](#機能175-現地払い会費の失効自動)を参照）。施設側からの自動督促メールはないため、**支払い待ちタブ**を定期的に確認して回収してください。

### Q: 現地払いの会費を一部だけ受け取って記録できますか？

いいえ。会費の受領は請求額と完全に一致する金額でしか記録できません（部分入金は不可）。後払いの滞在残高のような部分受領が必要な場合は、会費ではなく[チェックイン履歴](checkin-history.md)の後払い残高の受領を利用してください。

---

## トラブルシューティング

### 上限に達していないのに利用をブロックされる

以下を確認してください：

1. 会員アプリのホーム画面でクォータバーの現在の数値を確認する
2. 日次クォータ（本日の利用時間）も上限に達していないか確認する
3. メンバーシップの有効期限が切れていないか確認する
4. それでも解決しない場合は、施設の管理者にお問い合わせください

### クォータバーが表示されない

- 月間予約数が「無制限」で、月間訪問数・日次利用時間もすべて空欄（無制限）の場合は表示されません
- 管理画面でプランの利用制限設定を確認してください

### 会員なのに特定のプランで通常課金されてしまう

1. 管理画面でそのメンバーシッププランの **対象予約プラン** を確認し、該当プランが選択されているか確認してください
2. 対象予約プランが1つ以上選択されている場合、リストに含まれないプランは意図的に通常課金の対象です（無料枠の適用範囲を絞り込む機能のため）
3. すべてのプランを無料枠の対象にしたい場合は、対象予約プランの選択をすべて解除してください（未選択＝全プランが対象）
4. プランを保存した直後は反映されているはずです。反映されない場合はページを再読み込みしてください

### 会員なのにウォークイン（直接チェックイン）で通常課金されてしまう

1. その会員プランの **対象予約プラン（会員無料）** に、利用しているチェックイン設定のプランが含まれているか確認してください
2. **対象予約プランに選んだプランが、そのチェックイン設定の課金プランになっているか** を確認してください。繋がっていれば料金判定はプラン単位に切り替わります
3. 対象予約プランを1つも選んでいない場合は、「チェックイン設定（会員ページの入口）」欄にそのチェックイン設定が含まれているか確認してください

### 会員ページにチェックインボタンが1つも出ない

会員プランの設定で、チェックインの入口が 1 つも特定できていない状態です。次の順に確認してください。

1. **「対象予約プラン（会員無料）」に選んだプランが、どれかのチェックイン設定の課金プランになっているか。** なっていれば、そのチェックイン設定が自動的に入口になります
2. なっていない場合は、**「チェックイン設定（会員ページの入口）」欄でチェックイン設定を直接指定**してください。対象予約プランを設定しただけでは入口は出ません
3. 指定したチェックイン設定が無効化されていないか確認してください

---

## Stripe カスタマーポータルの設定（施設オーナー必須）

会員がカードの変更や領収書のダウンロードを行うには、Stripe Dashboard で **Customer Portal** を有効にする必要があります。

### 設定手順

1. [Stripe Dashboard](https://dashboard.stripe.com/) にログイン
2. **Settings** → **Billing** → **Customer portal** を開く
3. 以下を設定:

| 項目 | 設定 | 理由 |
|------|------|------|
| **Payment methods** | ✅ 有効 | 会員がカードを追加・変更・削除できるようにする |
| **Invoice history** | ✅ 有効 | 会員が領収書・請求書の PDF をダウンロードできるようにする |
| **Subscriptions > Cancel subscriptions** | ❌ 無効 | 退会は UnlockOS の専用フローで処理するため |
| **Subscriptions > Switch plans** | ❌ 無効 | プラン変更は UnlockOS で管理するため |

4. **Save** をクリック

### 注意事項

- この設定は **Stripe アカウント全体** に適用されます（施設単位ではありません）
- テストモードと本番モードで別々に設定が必要です
- 設定が完了すると、会員アプリの **お支払い履歴** ページに「カード・請求書を管理」ボタンが表示されます
- ボタンをクリックすると Stripe のポータル画面が開き、操作完了後に会員アプリに戻ります

### Customer Portal が未設定の場合

設定が完了していない状態で会員がボタンをクリックすると、Stripe からエラーが返されます。必ず上記の設定を完了してからメンバーシップを公開してください。

---

## 関連ページ

- [会員サインアップ](member-signup.md)
- [メンバー管理](members.md)
- [会員ホーム画面](member-home.md)
- [会員・サブスク予約の特典](guest-member-booking.md)
- [時間枠予約（会員向け）](timeslot-booking-member.md)
- [時間枠予約プランの設定（管理者向け）](timeslot-booking-admin.md)
- [予約管理ダッシュボード](booking.md)
- [ブラックリスト管理](blacklist.md)
- [回数券](ticket-books.md)
- [チェックイン履歴](checkin-history.md)

---

最終更新: 2026-09-08 - 会費の現地払い（支払い方法の設定・会員一覧/支払い待ちタブでの受領記録・Stripe請求会員は対象外・現地払い会費の自動失効）を追記（Epic #3421 / #3424 / #3425 / #3426）

以前の更新: 2026-09-02 - 販売状態（公開・非公開・売止め）、プランの並べ替え、プランの引退・再有効化を追記（#3202, #3203, #3204, #2772, #3068）
