M-Pesa支払いスクリーンショット:抽出金額とトランザクションコード

M-Pesaの取引は、すべて同じように終わります。電話にテキストメッセージが届くのです。アプリからのプッシュ通知でも、スワイプすると消えるポップアップでもありません。160文字に収まるプレーンなSMSが、他のメッセージと一緒に受信箱に届きます。そのSMSこそが領収書です。そして、Safaricomの年次報告書によると、FY2025にM-Pesaが371億5千万件の取引(総額38兆2,900億KSh)を処理したこの国では、その160文字のメッセージは、ほとんどの銀行取引明細書よりも多くの金融データを運んでいます。課題は、M-Pesaがすべての取引で同じSMSを送信するわけではないことです。支払いの種類に応じて5つの異なる形式があり、必要なフィールドはそれぞれ異なる場所にあります。

手入力をやめよう — AIに読み取らせるだけ
画像やPDFをアップロード — 10秒で構造化データに
今すぐ試す
登録不要 · カード不要 · 10秒で結果
スマートフォン画面に表示されたM-Pesaモバイルマネー確認SMS。取引金額とコードがケニアシリングで表示されています。

重要ポイント

  1. FY2025のM-Pesa取引件数は371億5千万件。すべての領収書はアプリの確認画面ではなくプレーンなSMSであり、必要なデータは5つの異なるパターンで配置されています。
  2. その1つのSMSには、一見すると同じように見える3つのKShの金額(取引金額、手数料、1日あたりの限度額)と、Send Money(送金)、Pay Bill(請求書支払い)、Buy Goods(商品購入)の間でその正体が完全に変わる取引相手フィールドが含まれています。
  3. スプレッドシートの列は、画面上の位置ではなく、データの意味(トランザクションコード、金額、取引相手)に基づいて定義すれば、テンプレートやルールを一切使わずに、5つのSMS形式を1つのエクスポートにまとめることができます。

M-Pesaが特別な理由:SMSが領収書である

ほとんどの決済アプリ(Venmo、PayPal、WeChat Payなど)は、アプリ内の画面で確認を表示します。ユーザーはその画面をスクリーンショットします。M-Pesaは、スマートフォンを持たない人もいる市場向けに構築されたため、動作が異なります。このサービスは2007年にフィーチャーフォンからダイヤルするUSSDコードで開始され、現在はM-Pesa Super Appが470万人の月間ユーザーにサービスを提供していますが、SMSによる確認は今も変わらず普遍的な記録です。あらゆる端末に、毎回、確実に届きます。2026年3月時点で、M-Pesaのケニアにおける月間アクティブ顧客数は4000万人で、Safaricomは同国のモバイルマネー市場の89.1%を占めています。SMSは単なる礼儀上の通知ではありません。それが領収書なのです。

すべてのM-Pesa SMSは、"PIN YAKO SIRI YAKO"(スワヒリ語で「あなたのPINはあなたの秘密」)という行で締めくくられます。これはSafaricomからのセキュリティリマインダーで、長年にわたり確認メッセージに表示されています。また、これは一貫した目印でもあります。どの取引タイプのメッセージであっても、そのフッターがあれば、SMSが正当で完全なものであることがわかります。冒頭のトランザクションコードとその締めの行の間に、必要な情報(金額、取引相手、トランザクションコード、日付)がすべて含まれていますが、その配置は取引内容によって異なります。

5つの一般的な取引タイプ(Send Money(送金)、Pay Bill(請求書支払い)、Buy Goods(商品購入)(Till Number(ティル番号))、Money Received(受取金)、入金/出金)は、それぞれ異なるSMSテンプレートを生成します。自分が見ている形式がどれで、各フィールドがその中のどこにあるかを理解することが、データを数秒で取得できるか、テキストの文字列から必要な番号を探し回ることになるかの分かれ目です。

5つの取引タイプとそのSMS形式

すべてのM-Pesa SMSは、10文字の英数字コードとそれに続く「Confirmed.」で始まります。この共通の冒頭部分は、すべてのメッセージタイプにわたって最も信頼できる構造的なアンカーです。その後に続く内容は、取引タイプによって分岐します。

Send Money(送金)

最も一般的な取引タイプです。登録済みの他のM-Pesaユーザーに送金します。SMSは次のように表示されます:

ABCDE12345 Confirmed. Ksh150.00 sent to JOHN DOE 0722000000
on 23/6/23 at 3:41 PM. New M-PESA balance is Ksh1,205.10.
Transaction cost, Ksh6.00.

3つのフィールドが順に表示されます:金額(Ksh150.00)、受取人の氏名と電話番号(JOHN DOE 0722000000)、日時です。取引手数料は別途記載されており、金額フィールドには含まれません。

Pay Bill(請求書支払い)

登録済みのPaybill番号を通じて、企業、公共料金、学校、政府機関への支払いに使用されます。SMSの形式が変わり、事業者名とアカウント参照情報が含まれます:

DY28XV679 Confirmed. Ksh4,000.00 sent to KCB Paybill AC
for account 1137238445 on 9/9/23 at 11:31 PM.
New M-PESA balance is Ksh22.00.

ここでは、取引相手は個人ではなく事業者名(KCB Paybill)とアカウント番号の組み合わせです。「for account」という文字列が、Send Money(送金)メッセージとの違いを示しています。取引相手フィールドを抽出する場合は、事業者名とアカウント参照情報の両方が必要です。これらを合わせることで、誰がどの顧客IDで支払いを受け取ったかが特定できます。

Buy Goods(商品購入/Till Number/マーチャント支払い)

ショップ、スーパーマーケット、レストランでTill Number(ティル番号)(Lipa na M-Pesa、つまり「M-Pesaで支払う」とも呼ばれます)を使って支払う場合、Pay Billメッセージに表示される「for account」の記述が省略された形式になります:

GH78KT901 Confirmed. Ksh500.00 paid to Naivas Supermarket
on 15/1/25 at 10:15 AM. New M-PESA balance is Ksh3,400.00.
Transaction cost, Ksh0.00.

動詞が「sent to」から「paid to」に変わっている点に注目してください。受取人はTill Number(ティル番号)に登録された加盟店名です。アカウント参照情報も電話番号もなく、単に店舗名または事業者名のみです。ケニアでのほとんどの小売り支払い(個人商店(duka)からスーパーマーケットチェーンまで)では、この形式がSMSで使用されます。

Money Received(受取金)

誰かから送金を受けると、SMSは受取人向けの形式になります:

BS49OR201 Confirmed. You have received Ksh50.00 from
MICHAEL FEDERSEN 254729901555 on 15/10/24 at 11:52 AM.
New M-PESA balance is Ksh100.00.

ここでの取引相手は送金者で、氏名と電話番号が表示されます。金額は送金者が送った額です(送金手数料は相手が負担し、あなたは負担しません)。同じ形式は、Western UnionやWorldRemitなどのM-Pesa Globalパートナーを通じた国際送金にも使用されます。

入金/出金

現金のチャージイン(エージェントでの入金)では、次のようなメッセージが生成されます:

DF34QR567 Confirmed. You have received Ksh3,000.00 from
HENRY KAMAU 254701234567 on 12/4/26 at 9:14 AM.
New M-PESA balance is Ksh8,450.00.

形式はMoney Received(受取金)と似ていますが、「from」の送信元は入金を処理したエージェントです。現金のチャージアウト(出金)メッセージには「Withdraw」という単語が含まれ、引き出し額とエージェント手数料が表示されます。

5つの形式すべてに共通する重要なポイントは、トランザクションコードが常にメッセージの最初の単語であることです。この一貫性により、取引の種類に関係なく、コードの開始位置を正確に特定できるため、抽出の理想的なアンカー項目となります。

トランザクションコード:日付をエンコードする10文字のキー

M-Pesaのトランザクションコード(例:TB17CVOCY9)は、単なるランダムなレシート番号ではありません。その構造から取引が発生した日時がわかります。最初の3文字が日付をエンコードしています。最初の文字は年(T = 2025年、S = 2024年、R = 2023年、Q = 2022年 — アルファベット順に循環)、2番目の文字は月、3番目の文字は日を表します。4番目の文字は常に数字で、残りの6文字はランダムに生成されます。このシステムは1日あたり約218億のユニークなコードを生成でき、年間8兆コードの容量があるため、重複は事実上不可能です。

ケニアの企業にとって、トランザクションコードは普遍的な照合用キーです。すべてのM-Pesa Till Number(ティル番号)およびPaybillシステムは、このコードで受信した支払いを記録します。Safaricomのカスタマーサポートは、このコードを使用して取引を追跡します。KRA(ケニア歳入庁)は、すべての取引をこのコードでインデックス化したM-Pesa明細書を、税務申告の裏付け書類として受け付けています。また、法的には、MMTK Lawの弁護士がBusiness Daily Africaで指摘しているように、2019年データ保護法の下では、「トランザクションコードは商人が厳密に必要とする唯一の詳細情報」です。なぜなら、それは商人自身の確認システムにすでに表示されているからです。

M-PesaのSMSメッセージからスプレッドシートを作成する場合 — Send Money(送金)、Pay Bill(請求書支払い)、Buy Goods(商品購入)のいずれの取引であっても — トランザクションコードはすべての行に入力される唯一の列です。他のすべての項目(取引相手、金額、日付)もすべての形式に存在しますが、トランザクションコードは重複排除を可能にする項目です。同じコードを持つ2つのSMSメッセージは同じ取引であり、たとえ誰かが同じスクリーンショットを2回転送したとしてもです。

KES金額:SMSが実際に示すもの

すべてのM-Pesaの金額にはKsh(ケニアシリング)が接頭辞として付き、カンマを桁区切り、小数点以下2桁でフォーマットされます:Ksh1,500.00Ksh38,290.50Ksh4,000.00。この部分は一貫しています。しかし、SMSには3つの異なる数量フィールドが含まれており、メッセージを素早く確認していると混同しやすいです。

  • 取引金額 — 送金された金額です。Send Money(送金)のSMSでは「Ksh150.00 sent to」と表示されます。Pay Bill(請求書支払い)では「Ksh4,000.00 sent to」、Money Received(受取金)では「You have received Ksh50.00」です。これがスプレッドシートに必要なフィールドです。
  • 取引手数料 — 送金のために差し引かれる手数料です。別の行またはフレーズで表示されます:「Transaction cost, Ksh6.00.」送金金額には含まれません。500KShを超えるSend Money(送金)の場合、手数料は区分に応じて6KShから110KShの範囲です。
  • 利用可能な1日の限度額 — 「Amount you can transact within the day is 289,950.00.」これは上限であり、残高ではありません。数字の最初の数文字だけを読むと、口座残高と間違えやすいです。

M-PesaのSMSには、各取引後の新しい残高も表示されます(「New M-PESA balance is Ksh1,205.10.」)。これは個人の追跡に役立ちますが、2019年データ保護法で保護された財務データが含まれています。ビジネス確認のためにSMSを共有または転送する場合、残高は取引相手が知る必要がある以上の情報を明らかにする可能性があります。

名前、Till Number(ティル番号)、ビジネスアカウント

取引相手フィールドは、M-Pesaのフォーマットの多様性が最も顕著に現れる部分です。取引の種類によってその正体が完全に変わります:

取引の種類SMSでの取引相手の表示方法
Send Money(送金)氏名 + 電話番号JOHN DOE 0722000000
Pay Bill(請求書支払い)事業者名 + 「AC for account [番号]」KCB Paybill AC for account 1137238445
Buy Goods(Till)(商品購入(ティル))加盟店名のみNaivas Supermarket
Money Received(受取金)送金者名 + 電話番号MICHAEL FEDERSEN 254729901555

ビジネスのすべてのM-Pesa取引をキャプチャするスプレッドシートでは、取引相手の列は4つの異なるフォーマットに対応する必要があります:電話番号付きの個人名、アカウント参照付きの事業者名、単独の加盟店名、または送金者名です。「sent to」の後から「on」の前までのテキストを取得するような位置ベースの抽出ルールは、Send Money(送金)では機能しますが、Pay Bill(請求書支払い)(テキストに「AC for account」が含まれる)やMoney Received(受取金)(構造が「sent to」ではなく「received from」)では失敗します。意味ベースの抽出 — 列を「この取引の相手側の人物または事業体」と定義する — は、固定キーワードに対する位置ではなく意味によって取引相手を識別するため、4つのフォーマットすべてを処理できます。

SMSとスクリーンショットからスプレッドシートへ

M-Pesaのフォーマットの多様性 — 5つの取引タイプにわたる5つのSMSテンプレート — は、支払いデータ抽出がどのように機能すべきかを示す優れたテストケースです。Send Money(送金)、Pay Bill(請求書支払い)、Buy Goods(商品購入)、Money Received(受取金)ごとに個別のテンプレートを作成する必要があるシステムは、新しい取引タイプが導入されたり、SMSフォーマットが変更されたりすると(2025年にトランザクションコードのプレフィックスが「S」から「T」に変わったように)、すぐに使えなくなります。

カスタム列抽出 — 必要な列(トランザクションコード、金額、取引相手、日付)を定義すると、AIが各値のページ上の位置ではなく意味を理解して特定する機能 — は、フォーマットのバリエーションを無視することでこの問題を解決します。SMSに「sent to」「paid to」「received from」「AC for account」のいずれが記載されていても、エンジンは各テキストの意味的な役割を読み取り、正しい列にマッピングします。どの取引タイプを処理しているかを指定する必要はありません。

実際のワークフローは次のようになります。M-PesaのSMS確認メッセージを保存または転送するか、SMSスレッドやM-Pesa Super Appの取引詳細のスクリーンショットを撮り、それらをまとめてアップロードします。列名をトランザクションコード金額取引相手日付と設定します。出力は取引ごとに1行で、各行の値はその取引で実際に使用されたSMSフォーマットから抽出されます。Send Money(送金)、Pay Bill(請求書支払い)、Buy Goods(商品購入)のメッセージが混在する50件のM-Pesa支払いバッチでも、単一の統合テーブルが生成されます — 事前にタイプごとに分類する必要はありません。

ケニアの企業にとって、その後の活用は簡単です。抽出されたデータは、ケニアのアカウント向けにネイティブのM-Pesa統合を提供するZoho Booksや、それを利用する企業向けのQuickBooks Kenyaに直接取り込むことができます。多くの中小企業や簿記係はGoogle Sheetsの台帳も管理しており — 他のモバイル支払い方法と併用することもあります — 同じ列構造がそれら全体で機能します。たとえば、貴社がGCashPayNowでも支払いを受け付けている場合、金額-トランザクションコード-取引相手-日付のパターンは同じです。混乱を招くように思えるフォーマットの違い — 5つのSMSテンプレート、4種類の取引相手、2つ目の金額のように見える手数料行 — は、位置ではなく意味に基づいて抽出が行われることで解消されます。

よくある質問

M-PesaのSMS確認メッセージにはどのような情報が含まれていますか?

すべてのM-Pesa SMSには、10桁のトランザクションコード、ケニアシリング(KSh)での金額、取引相手の名前やビジネスアカウント、日時、新しいM-Pesa残高、取引手数料が含まれています。メッセージの種類によっては、残りの1日の取引限度額などの追加フィールドが表示されることもあります。トランザクションコードは常にメッセージの最初の単語であり、その後に「Confirmed.(確認済み)」が続きます。この形式はすべての取引タイプで一貫しています。

SMSではなく、M-Pesa Super Appのスクリーンショットからデータを抽出できますか?

はい。M-Pesa Super Appでは、トランザクションコード、金額、取引相手、日付といった同じフィールドが視覚的な確認画面に表示されます。電話番号や加盟店名は、SMSよりもアプリ画面の方が読みやすい場合があります(アプリではSMSのように名前が切り詰められることはありません)。照合の目的では、Super App画面からトランザクションコードを取得することを検討してください。そこでは明確にラベル付けされたフィールドとして表示されており、確認のためにSMSと相互参照することができます。

SMSが削除された場合でも、取引データにアクセスできますか?

*234#にダイヤルし、「マイアカウント」→「M-Pesa明細」→「ミニ明細」を選択すると、最新5件の取引がSMSで届きます。最大12ヶ月分の完全な明細が必要な場合は、同じメニューからPDF明細をリクエストし、登録済みのメールアドレスに送信してもらえます。明細書は、デフォルトのパスワードとして国民ID番号を使用してパスワード保護されています。Safaricomはまた、M-Pesa Super Appの「取引」または「明細」セクションから取引履歴を提供しています。

M-PesaはQuickBooksやZoho Booksのような会計ソフトウェアと連携しますか?

はい。Zoho Booksにはケニアのアカウント向けのネイティブM-Pesa連携機能があり、M-Pesa Paybillの支払いを請求書と自動的に照合できます。QuickBooks Kenyaは広く使用されていますが、ネイティブのM-Pesa連携機能は提供していません。SMSやスクリーンショットから抽出したデータはCSVとしてインポートできます。地元のケニアのプラットフォームであるZYNO BooksやERPNextは、組み込みのM-Pesa照合ワークフローを提供しており、多くのケニアの簿記担当者は、KRA(ケニア歳入庁)のeTIMS要件を含む現地のコンプライアンス環境により適していると感じています。

M-PesaのトランザクションコードはKRAの税務申告に十分ですか?

KRA(ケニア歳入庁)は、特にモバイルマネーを主に利用する小規模事業者に対し、税務申告の裏付け書類としてM-Pesaの取引明細書を認めています。各取引はそのトランザクションコードによって索引付けされ、取引明細書は完全な監査証跡を提供します。正式な税務申告において、KRAは通常、個々のSMSコードではなく、完全なM-Pesa取引明細書(Safaricomに*234#をダイヤルしてPDF形式で請求可能)を必要とします。しかし、特定の支払いを取引明細書内の特定の記録に結び付けるのはトランザクションコードそのものであり、その後の監査や照会において重要な参照情報となります。

📮 contact email: [email protected]