フィットネス・健康

ヨガ・ピラティススタジオのクラス予約と、回数券・月謝の管理。Web予約と店頭の受付の二重管理をなくす設計

ヨガ・ピラティススタジオのクラス予約と、回数券・月謝・都度払いの管理を、Web予約と店頭の受付で二重に持たない設計です。残り回数を付与と消化の記録から数える持ち方、引当と消化の分け方、有効期限、紙のカードからの移し方まで。

この記事の結論:ヨガやピラティスのスタジオで、Webのクラス予約と店頭の受付の二重管理をなくすには、回数券・月謝・都度払いを「受講できる権利(受講権)」という1つの形にまとめ、Webでも店頭でも同じ記録を読み書きするようにします。残り回数は数字を書き換えるのではなく、購入による「付与」と受講による「消化」を1件ずつ記録して、その合計から数えます。予約した時点では回数を「引当(取り置き)」にとどめ、出席した時点で消化に変えます。店頭での当日参加や現金の支払いも、スタッフ用の画面から同じ記録に入れます。

この記事は、少人数のクラスを開くヨガ・ピラティスのスタジオを運営する方と、その予約と会員の仕組みを作る開発者に向けたものです。キャンセルの期限や振替の決め方は、ジム・スタジオの予約の運用ルールの記事で扱ったので、ここでは回数と支払いの記録の持ち方に絞ります。資金決済法の扱いは、関東財務局と日本資金決済業協会の案内をもとにした整理(読んだのは2026年10月3日)で、個別の券の扱いを判断するものではありません。

二重管理は、受講できる回数の記録が2か所にあるから起きる

Web予約と店頭の二重管理は、予約の道具と、回数券や月謝を管理する道具が別々になっているときに起きます。どちらかを直すだけでは解消せず、「受講できる回数」の記録を1か所にまとめる必要があります。

記録 よくある置き場所 起きやすいずれ
クラスの予約 Webの予約サービス 店頭で受けた予約が入っておらず、定員を超える
回数券の残り 紙のスタンプカード、表計算 予約の画面では使えるのに、カードでは使い切っている
月謝の入金 会計の帳簿、口座の明細 入金が止まった会員が、予約の画面では予約できる
当日の参加 受付のノート 予約なしで来た人の受講が、回数に反映されない
支払いの方法 店頭のレジ、決済サービスの管理画面 どの支払いでどの券を買ったかが、つながらない

表のどの行も、「誰が、あと何回、いつまで受けられるか」を2つ以上の場所で持っていることが原因です。設計の出発点は、この問いに答える記録を1つにすることです。

回数券・月謝・都度払いは「受講権」という同じ形で持つ

支払いの形が違っても、仕組みの中では「何回分を、いつからいつまで受けられるか」という受講権として持つと、予約の処理を1つにできます。違いは、受講権をいつ、何回分付与するかだけです。

支払いの形 付与のタイミング 付与する回数 使える期間
回数券 購入したとき 券の回数(例:10回) 購入日から、券に書いた有効期限まで
月謝(月の回数が決まっている) 毎月の請求が成功したとき その月の回数(例:月4回) その月の末日まで(繰り越すなら翌月の期限まで)
月謝(通い放題) 毎月の請求が成功したとき 上限なし、または1日1回のような上限 その月の末日まで
都度払い その回の支払いのとき 1回 そのクラスの日だけ
体験 申込のとき 1回 決めた期間内

予約の処理は、「そのクラスの日に有効で、残りがある受講権」を探して引き当てるだけになります。使える受講権が複数あるときは、有効期限の近いものから使う、という順番を決めておくと、会員にとって損のない引き当てになります。

月謝を「請求が成功したときに付与する」と決めておくと、入金が止まった会員は翌月の受講権が付与されず、自然に予約ができなくなります。カードの継続決済の失敗や休会をどう扱うかは、請求の側の設計で決めます。

残り回数は数字を書き換えず、付与と消化の記録から数える

残り回数は、会員ごとに1つの数字を持って増減させるのではなく、付与・引当・消化・戻しを1行ずつ記録した台帳の合計として数えます。Webの予約と店頭の受付が同時に操作しても記録が消えず、あとから経緯をたどれます。

sql
-- 受講権:何を、何回分、いつまで
CREATE TABLE entitlement (
  id            BIGSERIAL PRIMARY KEY,
  member_id     BIGINT NOT NULL,
  kind          TEXT NOT NULL,          -- ticket / monthly / dropin / trial
  granted_count INT,                    -- 通い放題は NULL
  valid_from    DATE NOT NULL,
  valid_until   DATE NOT NULL,
  source        TEXT NOT NULL           -- web_payment / front_cash / migration など
);

-- 回数の動き:1回の操作で1行。行は消さない
CREATE TABLE entitlement_move (
  id             BIGSERIAL PRIMARY KEY,
  entitlement_id BIGINT NOT NULL REFERENCES entitlement(id),
  booking_id     BIGINT,
  move           TEXT NOT NULL,         -- hold / consume / release
  qty            INT NOT NULL,          -- hold・consume は 1、release は -1
  operated_by    TEXT NOT NULL,         -- member / staff:◯◯
  reason         TEXT,
  created_at     TIMESTAMPTZ NOT NULL DEFAULT now()
);

残りは「付与した回数 − 引当や消化で使っている回数」で求めます。スタッフが例外として1回分を戻すときも、数字を直接書き換えず、理由を入れた戻しの行を足します。こうしておくと、会員から「残りが合わない」と言われたときに、いつ、誰の操作で、何回分動いたかを画面で見せて説明できます。

同時に操作されたときの二重の引当を防ぐには、引当の前に、その受講権の行をロックしてから残りを数えます(PostgreSQL なら SELECT … FOR UPDATE)。Web予約と店頭の画面が同じ処理を呼ぶようにしておけば、どちらから操作しても同じ検査が通ります。

予約した時点では「引当」にし、出席した時点で「消化」に変える

予約の時点で回数を減らしきってしまうと、取り消しや振替のたびに戻す処理が増え、店頭の受付とずれる原因になります。予約では回数を取り置く(引当)だけにし、出席を確かめた時点で消化に変えます。

出来事 台帳に足す行 残りへの影響
Webか店頭で予約した 引当(hold) 使える回数が1減る
期限内に取り消した 戻し(release) 使える回数が1戻る
受付で出席を確かめた 消化(consume)+引当の戻し 使える回数は変わらない。消化として確定する
期限を過ぎた取り消し、無断の欠席 スタジオのルールに従い、消化か戻し ルールしだい
受講権の期限が過ぎた 行は足さず、期限切れとして数える 残っていた回数は使えなくなる

出席を確かめる場所は、受付のタブレットやスタッフのスマホにします。クラスの開始前に、その回の予約者の一覧を出し、来た人に印を付けるだけで消化が記録される作りにしておくと、紙のカードに判を押す作業が要らなくなります。

店頭での当日参加と現金の支払いも、スタッフ用の画面から同じ記録に入れる

予約をせずに来た人や、受付で現金で回数券を買う人を、ノートやレジだけで処理すると、そこから二重管理が始まります。スタッフ用の画面に「当日参加を入れる」「店頭で受講権を売る」の2つの操作を用意し、Webと同じ台帳に記録します。

  1. 会員を名前か電話番号で探す(初めての人は、その場で会員を作る)
  2. 受講権を売る場合は、種類と支払いの方法(現金・カードの端末など)を選び、付与の行を作る
  3. その日のクラスを選び、空きがあれば予約と同時に出席の印を付ける
  4. 定員を超える場合は、スタッフの判断で受けるかを決め、受けたときは理由を残す

レジの売上とのつき合わせは、日ごとに「店頭で売った受講権の一覧」を出して、レジの締めと比べる形にします。支払いの方法を付与の行に持たせておけば、現金だけを抜き出して合わせられます。

回数券の有効期限は、仕組みで守ると資金決済法の扱いの整理にもつながる

回数券の有効期限は、表示するだけでなく、仕組みの側で期限を過ぎた受講権を使えなくしておきます。前払いで売る回数券は資金決済法の前払式支払手段にあたるかが問われ、期限の扱いがその判断に関わるからです。

日本資金決済業協会のよくある質問では、有効期間が6か月以内と明記された前払式支払手段は法の適用の対象外とされています。ただし、期限が切れても実際には使える、システムの上で期限を過ぎても使えるといった、期限が形骸化しているものは適用を受けるとも書かれています。同じ質問の答えでは、残った回数を新しく発行した券に引き継ぐ仕組みで、最初に発行した日から通算して6か月を超えるものや、「受け取った日から6か月」のように発行の起算日がはっきりしないものも、適用を受けるとされています。回数券の期限の延長や残り回数の繰り越しをするときは、この点も含めて確かめておく必要があります。また、関東財務局の案内では、自家型の前払式支払手段は、基準日(3月31日・9月30日)の未使用残高が初めて1,000万円を超えたときに届出が必要とされています。

設計で気をつけるのは次の3点です。

  • 期限を過ぎた受講権は、Webでも店頭でも引き当てられないようにする
  • スタッフが期限を延ばす操作を作る場合は、延長の理由と操作した人を記録し、延長の運用そのものを専門家と相談して決める
  • 期限内に使われていない回数を、基準日ごとに集計できるようにしておく

どの券が対象になるか、6か月を超える券を売るときに何が必要かは、スタジオの売り方によって変わります。仕組みは「決めたルールどおりに動き、記録が残る」ところまでを受け持ち、ルールの判断は専門家や所管の財務局に確かめます。

紙の回数カードからは、締めの日を決めて残りを「移行の付与」として入れる

紙のスタンプカードや表計算から移すときは、締めの日を決め、その日までの残りを1件ずつ「移行による付与」として新しい台帳に入れます。過去の消化の履歴まで入れようとせず、残りの回数と元の期限だけを移します。

  1. 締めの日を決め、その日以降は紙のカードに判を押さないとスタッフで決める
  2. 締めの日の営業が終わったら、カードと表計算から、会員ごとの残りの回数と有効期限を書き出す
  3. 書き出した内容を、source を「移行」にした受講権として登録する
  4. 会員が来館したときに、画面の残りとカードの残りを一緒に見て確かめ、合っていればカードを回収する
  5. 合わなかった分は、理由を書いた戻しや付与の行で直す

移行の付与を元の購入と区別しておくと、移行のあとに見つかった食い違いを、移行のときの読み取りの誤りか、その後の操作の誤りかで切り分けられます。

株式会社bundlyzeでは、複数の業種に合わせられる予約の管理システムを自社で企画・開発し、本番での運用まで担当しています。受講権の台帳とWeb予約・店頭の画面を1つの仕組みにまとめる場合の進め方は、システム開発の案内ページで紹介しています。

参照した公的な案内(2026年10月3日時点)

よくある質問

回数券の残り回数は、会員ごとに数字で持っておけば十分ですか?

数字を1つだけ持って書き換える形は、おすすめしません。Webの予約と店頭の受付が同じ数字を同時に書き換えると、片方の操作が消えることがあり、あとから「なぜこの回数なのか」も追えません。購入で付与した回数と、受講で使った回数を1件ずつ記録し、残りはその合計から数えると、誤りに気づけ、店頭での説明もしやすくなります。

月謝の会員が、その月に使わなかった回数は翌月に繰り越すべきですか?

繰り越すかどうかはスタジオの決めごとで、どちらでも作れます。大事なのは、決めたルールを仕組みの側に持たせることです。繰り越す場合は「いつまで使えるか」の期限を付けて翌月に付与し、繰り越さない場合は月末で失効させます。スタッフの判断で例外を入れるときも、理由を書いた記録として残します。

回数券に有効期限を付けると、法律上の扱いは変わりますか?

前払いで売る回数券は、資金決済法の前払式支払手段にあたるかどうかが問題になります。日本資金決済業協会のよくある質問では、有効期間が6か月以内と明記されたものは法の適用の対象外とされる一方、期限が切れても実際には使えるような形骸化したものは適用を受けるとされています。自社の券がどうなるかは、専門家や所管の財務局に確認してください。