回収できたら 10%。回収できなければ 0 円。
導入する側から見れば、損のしようがない。
問題は、作る側から見たときだった。
失敗した月のコストは、全部こちらが被る
月額課金なら、その月に何が起きても決まった額が入る。成果報酬は違う。
決済に失敗した人を検知して、文面を作って、送って、リンクを踏まれるのを待って、更新されたかを確認する。この一連は、回収できても、できなくても、同じだけ動く。
回収できたときだけ 10% をもらう。つまり回収できなかった分の作業は、丸ごとこちらの持ち出しになる。
当たり前の話に聞こえる。私も式を書くまではそう思っていた。
変動費の正体は「通知」だった
固定費のほうは大したことがない。ホスティングは無料枠に収まるし、Stripe の API 呼び出しに課金はない。
効いてくるのは通知だ。決済が失敗するたびに送る。1 人に 1 通で終わることもあれば、3 通送って結局戻らないこともある。
戻らなかったときは、その 3 通ぶんが持ち出しになる。
ここで、料金の分母がおかしいことに気づいた。
こちらの原価は「送った通数」に比例する。なのに料金は「回収できた金額」にしか比例していない。
同じ 10% でも、テナントによって全然違う
極端な例を 2 つ置くと分かりやすい。
片方は、単価の高いサブスクを少人数に売っている。決済失敗は月に数件で、1 件戻れば額が大きい。送る通数は少なく、回収額は大きい。
もう片方は、数百円のプランを大人数に売っている。決済失敗は月に何十件も出て、1 件あたりの回収額は小さい。送る通数だけが増えて、10% はほとんど残らない。
同じ料率で、後者では赤字になりうる。
プラットフォーム料は、その保険だった
月額 9,800 円を、月間回収額が 10 万円以上のテナントからいただくことにした。
最初は「10 万円以上なら払えるだろう」くらいの気持ちで置いた数字だった。でも原価の式を書いたあとで見ると、意味が変わって見える。
回収額が積み上がるテナントは、それだけ決済失敗の母数が大きい。母数が大きければ送る通数も増える。
プラットフォーム料は「たくさん使う人から多めにもらう」ではなく、「通数が増える人の変動費を回収する」ための線だった。
10 万円という境界は、10% ぶんが 1 万円になる地点だ。ここを超えると成果報酬とプラットフォーム料がだいたい同じ大きさになる。
作ってから理由が後付けで見えてきた形で、褒められた決め方ではない。
実額を出さない
この記事に具体的な原価の数字が無いのは、もったいぶっているからではない。
通知 1 通あたりの原価を公開すると、そこから逆算してテナントの回収額や決済失敗の件数が推測できてしまう。
まだ 1 社も繋がっていない今は問題ない。だが繋がったあとで同じ記事を書けなくなる。だったら最初から書かない形にしておく。
同じ理由で、料金ページにも回収率の実績値を出していない。持っていない数字を出せないというのもあるが、持ったあとも出さないと決めている。
この計算は全部、見積もりだ
正直に書いておくと、ここまでの話は 1 円も回収していない状態で立てた式にすぎない。
実際に動かしたら、通数の見積もりが倍だったということも、逆に 3 通も送る必要がなかったということもありうる。
そもそも、この式には抜けているものがある。自分の時間だ。
決済まわりのツールには問い合わせが来る。「更新したのに通らない」「メールが届いていない」「請求がおかしい」。1 件の問い合わせに使う時間は、通知 1 通の原価とは桁が違う。
一人でやっている以上、いちばん高い変動費は自分の工数になる。それが通数に比例するのか、テナント数に比例するのか、それとも文面の分かりにくさに比例するのかは、まだ分からない。
「変動費の正体は通知だった」と書いたが、動かしてみたら別のものが出てくる可能性がある。そのときは料金を変える。変えるときは、先行案内に登録してくれた人に先に伝える。
作る前に原価を計算しておく意味は、正しい数字を出すことではなかった。
どの変数が効くのかを、先に知っておくことだった。
今回の場合、効くのは回収額ではないところまでは分かった。通数なのか、自分の工数なのかは、動かしてから決まる。
そこまで絞れていれば、実データが出たときに何を見ればいいかが分かる。
料金を先に決めて、原価を後から数えると、たいてい手遅れになる。
churndown — Stripe の決済失敗を検知して、日本語で連絡し、カードの更新画面まで案内するツールです。まだコードはありません。
30 日後に、作るか作らないかを登録数で決めます。どちらに転んでも結果はこの連載に書きます。
この記事について
一人会社で SaaS を作りながら、経営の判断を Claude Code に手伝わせている記録の続きです。決済リカバリーのツールを作る(か、やめる)ところまでを書いています。
前: 【#13】売上が減ったんじゃない、カードが止まってただけだった
次: 【#14】Stripe の「Connect で繋ぐ」は、もう新規では勧められていなかった
arecore.net の中の人です。受託開発・SES・自社プロダクト開発をやっています。ご相談・フィードバックは arecore.net からどうぞ。