「ポイント」の分別管理における落とし穴


以下の記事を読んで「ポイント」の分別管理について思うところがあったので書き残す。

東洋経済 - マイナポイント「使われすぎ」、セブン銀行の悲鳴

東洋経済の記事の内容を要約すると以下の通り。

  1. マイナポイント事業に参加した会社が付与するポイントは、政府による補助金で補填される
  2. 事業者が付与するポイントには「失効」がありえるので、付与額と同額を補助金として支給すると失効分だけ事業者が利益を得る計算になる
  3. マイナポイント制度では、過去の失効率実績をもとに付与額から割り引いた消費予測額を補助金として支給するという仕組みになっていた
  4. セブンカードはマイナポイント制度で付与したポイントの失効率が予想を下回ったことで、当初の見込みから追加で 12 億円の費用を計上した

本記事の目的

この記事ではセブンカードの事件について概要を説明した上で、以下について自分の考えを整理することを目的とする。

  • ポイントの分別管理が必要になる背景
  • 分別管理するとしたら、どのようなデータ構造にするか

書いたことは自分の個人的な意見であり、絶対の正解とは考えていない。

マイナポイント制度によるセブンカードの損失

以下の画像はセブンカード2024 年 3 月期 第 3 四半期 決算説明資料より引用する。セブンカードは今期損失を計上する見込みで、12 億円の損失は大きな影響を及ぼしている。

seven_card

topics

このスライドの内容については決算説明会の文字起こし(logmi)に詳しい説明がある。

マイナポイントは国の事業であり、その原資は基本的に国が負担します。ただし、このようなポイントは、一定比率が失効するのが通例のため、国から補助金は出るものの、過去の「nanaco ポイント」の失効率実績をもとに、失効すると見込まれる金額を差し引いて交付されることになります。

現在、どのようなことが起きているかといいますと、補助金が出た際の算定の根拠になった失効率を下回るかたち、要はどんどん使われているかたちで進捗しています。すると、補助金以上にポイントの利用が進んでいる状況になるため、それが我々の費用負担となり、セブンカードの利益を圧迫してしまうという状況になります。

今後もさらに損失は膨らむようだ。

事後精算できないのか?

ここで不思議なのが「失効率を(過去の実績から)見積もって差し引いた上で交付する」というマイナポイント事業の仕組みだ。実際に失効したポイントを計算して有効期限が到来した後に精算すれば、事業者には利益も損失も出ないと考えられる。

しかし、冒頭に挙げた東洋経済の記事によると(マイナポイント事業としては)例外的に事後精算をすることもできたようだが、セブンカードのシステムの都合で断念したとされている。

実は、事業者の公募要項にはポイントの利用状況が「精緻に計測可能な場合」、例外的に補助金額の事後精算を容認する、との記載がある。事後精算であれば、失効率が想定と異なる事態は生じない。

この点、決済サービスコンサルティングの宮居雅宣代表は、事後精算の規定をこう指摘する。「通常の買い物で付与されたポイントと、マイナポイント事業で付与されたポイントとを別々に管理する必要がある。場合によっては大規模なシステム改修が必要となる」。

別の関係者によれば、セブンカードは両ポイントの切り分けがシステム上困難だとして、事後精算を選択しなかったという。

つまり、セブンカードのデータとしてはマイナポイント制度によって付与されたポイント(X)と事業で日常的に付与されるポイント(Y)が区別されておらず、X の失効額を正確に計算することができないので過去の失効率実績を基に補助金を計算したが、実際には X の方が Y より遥かに失効率が低かった(より多く消費された)ために損失を計上することになった。

分別管理が必要になる理由

記事によると、セブンカードのポイント(nanaco ポイント)では分別管理が行われていなかった。マイナポイントで付与を受けるユーザーはポイントを消費するために面倒な手続きをしているのだから、通常のポイントより消費率は高いと考えられる。よって、分別管理をしていれば事後精算を選択しただろうと推測できる。

一般的に、ポイントの付与原因による分別管理が必要になる理由は以下のようなものがある。

  1. 販促目的で付与したポイントについて費用対効果を計測する
  2. 消費額を付与原因に応じて会計税務で異なる取り扱いをする(nanaco ポイントのケース)
  3. ポイント残高に対して引当金を見積もるために予想消費額を算出する

最後のポイント引当金については説明が必要なので、以下に整理する。

ポイント引当金

日本の会計基準では(これに関しては US GAAP も IFRS もほぼ変わらないと思うが)引当金の 4 要件というものがあり、これに該当するものを負債として計上しなければならない。

  1. 将来の特定の費用又は損失であること
  2. その費用又は損失が当期以前の事象に起因して発生するものであること
  3. 発生の可能性が高いこと
  4. その金額を合理的に見積ることができること

参考: https://www.ey.com/ja_jp/corporate-accounting/commentary/reserve/commentary-reserve-2017-08-10

ポイント残高はこれらの条件に該当するので、原則的には引当金を積む必要がある。具体的には、期末時点で積み上がっているポイント残高について「将来利用されるであろう金額」を見積もって引当金を計上することになる。基本的には過去の実績を使えば「合理的な見積もり」と言えるだろうが、複数の原因でポイントを付与していると実績の計算が面倒になる。

例えば、コーヒー豆を売る EC サイトを例に考えてみる。この EC サイトでは、ユーザーがコーヒーを購入すると購入額の 5% をポイントとして還元しており、その 80% が消費され残り 20% が失効している。ある決算期 N 期末時点でポイント残高が 1,000 万円分あると仮定すると、この 1,000 万円は将来 800 万円分が消費されると合理的に見積もることができる。この費用は当期の費用に計上される。法人税の計算では損金不算入となる。

さらに次の N + 1 期で新たに「最後の購入から半年経過したユーザーに 500 円分のポイントを付与する」販売促進の施策を行い、2,000 万円分のポイントを付与した。さて、N + 1 期末のポイント残高が「購入時の 5% 付与 1,000 万円 + 新規施策の 2,000 万円 = 3,000 万円」だったとき、この 3,000 万円に対する引当金としてはいくらが合理的と言えるだろうか。

過去の実績から言えばポイントの失効率は 20% なので、期末残高の 80% が消費されると仮定すると 3,000 万円 * 80% = 2,400 万円となる。しかし、内 2,000 万円分を最後の購入から半年経過したユーザーに付与しているということは、当該ユーザーはすでにこの EC サイトを日常的には利用していないだろうから、多くのポイントは失効すると推測できる。

仮に実際の失効率が 90% とすると、最終的には 10% しか使われない。この場合、通常のポイントの 80% と合わせて 1,000 万円 * 80% + 2,000 万円 * 10% = 1,000 万円が合理的な引当金額と言えるだろう。もちろん、この失効率 90% という数字はその施策で配ったポイントの有効期限が来るまで最終的には不明な状態であるから、それが判明するまでは他の施策をもとに失効率を低く見積もってしまっても非合理的とまでは言えないかもしれない。

全てまとめて失効率 20% と想定した場合の予測消費額と実際に消費された額には 1,400 万円の差がある。仮に引当金を 2,400 万円積んでいて実際に 1,000 万円しか使われなかったとすると、翌期に引当金を取り崩すので 1,400 万円分だけ利益にプラスのインパクトがある。実際には見積もりを誤っただけなのだが、これにより損益が乱高下してしまうと将来の利益予測が立てづらくなる。

これを正しく計算するには発行額・消費額・失効額のそれぞれを異なる付与原因別に追跡できていなければならない。つまり、分別管理ができていない状態で複数の経路でポイントを付与すると、ポイント引当金を正確に見積もることができず、会社の損益予測の正確性に負の影響を与えてしまう可能性があると言える。

セブンカードはこれまでも複数の原因で nanaco ポイントを付与しているが、おそらくは nanaco 支払いやクレジットカードの利用によるポイント付与が大部分を占めておりこの失効率が一定だったので、ポイント失効率の差が損益に与える影響は大きくなかったのだろう。

「ポイント」の基本的性質

まず、一口に「ポイント」と言ってもその性質は事業者によって異なる。詳しくは各社の利用規約を読むことになるのだが、ここでは以下の性質を持つと想定する。

  1. 事業者が一定の条件でユーザーに付与する
  2. ユーザーはポイントをサービスの対価として事業者のサービス内で利用できる
  3. ユーザーはポイントの残高、付与および利用履歴を確認できる
  4. ポイントには有効期限があり、それを超えると失効する
  5. ポイントを利用したのちサービスを受ける前にキャンセルすると、ポイントは返還される。このとき、有効期限が近いまたは過ぎている場合は延長した上で再付与する
  6. 事業者はポイントの付与額、利用額、返還額、失効額を集計できる

素朴なデータ構造

付与理由別にポイント付与、消費、失効額を分別管理する場合、素朴に考えると以下のようなデータ構造になる。

point_balance

  • ポイントを付与する理由が新しく生まれる場合は、PointReason に追加する
  • ポイントを付与する場合は、対象者の customerID や pointReasonID、発行額、有効期限などを決めて PointBalance と PointHistory に追加する
  • ポイントを消費する場合は、有効期限が近い順に使うなど特定のロジックに基づいて PointBalance の残高を減らしつつ、PointHistory に追加する
  • ポイントを消費した transaction をキャンセルした場合は、キャンセル額だけ PointBalance の残高を増やして再付与額を PointHistory に追加する
    • 有効期限が既に到来しており有効期限を延長して再付与する場合は、新たな PointBalance を追加する
  • 有効期限が到来した場合、PointHistory に失効額を追加し PointBalance から残高を差し引く
  • 特定の Customer が今つかえるポイントを取得する場合は、customerID ごとに有効期限別に PointBalance を集計する
  • ポイント付与理由別の残高や消費額を集計する場合は、PointHistory に PointBalance を JOIN して pointReasonID で GROUP BY して集計する
    • 会計上は取引の進行状況に応じて Transaction を JOIN する必要がありそう

ここでは特定の条件でのみ使用可能なポイントは考慮していない。例えば割引クーポンと併用できないとか、特定の商品やサービスの購入には使えないとか。

最後に

長々と書いてきたが、ポイントを分別管理できていないからといってサービスが運営できなかったり法令に触れたりするわけではない(実際に nanaco ポイントは分別管理していない)。顧客はポイントを使えればよいのであって、裏側のデータ構造は気にしない。

ただし、マイナポイント制度に伴う補助金の受け取りのように、特定の付与原因を持つポイントの消費額や失効額を特別扱いしなければいけなかったりポイント残高に対する引当金を正確に見積もるには、分別管理をしなければならない。

将来にわたってあらゆる需要に応えられる完璧なデータ構造などというものは存在しないので最初からポイントを分別管理できるように設計する必要は薄いかもしれないが、このような落とし穴があるということを知っておくに越したことはない。

ポイントのデータ構造設計については令和トラベルさんの記事も大変面白いのでぜひ読んでほしい。