あらゆるM-Pesa SMSフォーマットから、トランザクションコード、金額、取引相手を取得
M-Pesa SMSから4つのフィールドを手動でスプレッドシートに入力するには1メッセージあたり90秒かかりますが、本ツールならスクリーンショット1枚あたり5秒で完了。5種類すべてのトランザクションフォーマットに対応し、テンプレートは一切不要です。
SMSスクリーンショット1枚あたり5~10秒 · 印字テキストの精度は最大99%
M-Pesa SMSから取得できる情報
M-Pesaの確認メッセージはプレーンなSMSであり、アプリのUIや視覚的なレイアウトはありません。カスタム列抽出を使用すれば、フィールドに名前を付けるだけでAIがそれらを見つけ出します。
すべてのSMSの先頭にある10文字のコード。最初の3文字は日付をエンコードしています(T = 2025年)。ユニバーサルな照合キーです。
Ksh1,500.00のように表示されます。AIはラベルを読み取ることで、取引手数料や新しい残高という他の2つのKshの数値から、これを分離します。
取引の種類によって異なります。送金では氏名、請求書支払いではアカウント番号付きの事業者名、商品購入では加盟店名、受取金では送金者名となります。セマンティック抽出により、その役割に基づいて識別されます。
すべてのSMSには東アフリカ時間のタイムスタンプ(on 23/6/25 at 3:41 PM)が含まれています。トランザクションコードにも日付がエンコードされており、相互確認が可能です。
M-Pesaはアプリ画面ではなく、5つのSMSテンプレートを使用します
M-Pesaは、誰もがスマートフォンを持っているわけではない市場向けに作られました。領収書はプレーンなSMSであり、同じ4つのフィールドが5つのフォーマットにわたって配置されています。テンプレートベースのツールや画面OCRは視覚的な構造を前提とするため、機能しません。
従来の抽出方法がM-Pesaで機能しない理由
フィールドを固定するアプリUIがない。 VenmoやPayPalには視覚的な画面がありますが、M-Pesaのレシートは生のSMSです。太字の見出しも色もありません。アプリのインターフェース向けに設計されたOCRツールは、視覚的な構造がないと機能しません。
1つのメッセージに3つのKsh金額が含まれ、そのうち1つだけが取引金額。 送金金額、取引手数料、新しい残高はすべてKshという接頭辞を共有しています。「Kshの後の数字」を取得する正規表現ルールは、しばしば間違った数字を拾ってしまいます。正規表現でM-Pesa SMSを解析する開発者は、メッセージタイプごとに正しいKshの出現箇所を特定する必要があり、この脆弱性がフォーマット間で問題を引き起こします。
取引相手の形式が取引タイプごとに異なる。 「Sent to JOHN DOE 0722000000」は個人を指します。「Paid to Naivas Supermarket」は事業者を指します。「AC for account 1137238445」は請求書支払いです。文法構造が形式ごとに異なるため、1つの正規表現ルールですべてを処理することはできません。
セマンティック抽出がM-PesaのSMSを読み取る仕組み
トランザクションコードは常に最初の単語です。 M-PesaのSMSはすべて、10文字のコードで始まり、その後に「Confirmed.」が続き、最後は一貫したフッター「PIN YAKO SIRI YAKO」(スワヒリ語で「あなたのPINはあなただけの秘密」)で締めくくられます。AIはこれらの目印をアンカーとして使用し、メッセージをテキストとして読み取り、位置によってコードを特定し、そこから残りの抽出を構築します。
ラベルが各Ksh金額の意味を決定します。 「Transaction cost, Ksh6.00」は手数料としてタグ付けされます。「New M-PESA balance is Ksh1,205.10」は残高としてタグ付けされます。「sent to」または「received」の前に続く値のみが金額列に入力されます。位置を仮定せずに、意味的に異なる3つの金額が解決されます。
取引相手は意味的な役割によって識別されます。 SMSに「sent to JOHN DOE」、「paid to Naivas Supermarket」、または「received from MICHAEL FEDERSEN」と記載されている場合でも、AIは取引の相手側のエンティティを取引相手列にマッピングします。特定のキーワードの位置ではなく、関係性を読み取ります。
「いくつかの事業者(学校、賃貸、小規模な財務チーム)と話していて気づいたのですが、取引量が増えるとすぐに照合作業が非常に煩雑になります。」
— r/nairobitechies
バラバラのM-Pesa SMS形式を、1つのきれいなスプレッドシートに
M-Pesa SMSのスクリーンショットをまとめてアップロード
先週分のM-Pesa確認メッセージがフォルダにあります。クライアントからの送金レシート、学校の授業料支払いの請求書支払いSMS、スーパーでの商品購入確認、仕入先からの受取金通知。4つの異なるSMS形式です。これらをすべて1つのバッチにアップロードしてください。SMSスレッドのJPG、PNG、WebP形式のスクリーンショットが対象です。
列を一度定義 — トランザクションコード、金額、取引相手、日時
必要な列を入力します。AIが各SMSスクリーンショットを個別に読み取り、先頭の単語から10桁のトランザクションコードを見つけ、送金されたKsh金額(手数料や残高は除く)を抽出し、動詞が「送金先」「支払先」「受取元」のいずれであっても、その役割に基づいて取引相手を特定し、日時を記録します。
1つの統合テーブルを取得 — 種類ごとの並べ替えは不要
処理時間はスクリーンショット1枚あたり5~10秒です。出力は1つのXLSXまたはCSVファイルで、4行4列(トランザクションコード、金額、取引相手、日時)、トランザクションの種類ごとに1行ずつになります。送金、請求書支払い、商品購入、受取金の各形式から、同じクリーンな構造が生成されます。各SMSを開いて手動で値を入力するよりも、およそ18倍高速です (4フィールドの手動入力に1件あたり約90秒かかるところ、こちらは約5秒)。
5種類すべてのM-Pesa SMS形式で共通して取得できるデータ:
| トランザクションコード | 金額 (Ksh) | 取引相手 | 日付 |
|---|---|---|---|
| ABCDE12345 | 1,500.00 | JOHN DOE | 23/06/25 |
| DY28XV679 | 4,000.00 | KCB Paybill | 09/09/25 |
| GH78KT901 | 500.00 | Naivas Supermarket | 15/01/26 |
最適なケースと注意すべきケース
適用範囲を理解することで、安定した結果が得られます。
最適なケース
SMSスレッドまたはSuper Appの端末直接スクリーンショット。 フル解像度のスクリーンショットでは最大99%の精度を達成します。機械でレンダリングされたSMSテキストはコントラストが高くなっています。
1つのバッチに混在する取引タイプ。 送金、請求書支払い、商品購入、引き出しのスクリーンショットをまとめてアップロードできます。処理前にタイプごとに仕分ける必要はありません。
過去データの一括照合。 多数のM-Pesa確認画面から、QuickBooks KenyaやZoho Booksにインポート可能な1つの整列済みスプレッドシートが生成されます。
注意すべきケース
WhatsAppやMessenger経由で転送されたスクリーンショット。 メッセージングプラットフォームは画像を圧縮します。転送されたスクリーンショットは解像度が低く、特にトランザクションコードの文字レベル精度が低下する可能性があります。
非常に古いM-Pesa SMSフォーマット。 トランザクションコードは2025年にS接頭辞からT接頭辞に移行しました。AIは既知のバリエーションを処理しますが、さらに古いフォーマットでは不完全な結果になる可能性があります。
アーキテクチャ上の境界:SMSデータフィードではなく、SMSのスクリーンショット。 このアプローチはスクリーンショット(転送されたレシートや他者から送られた画像)で機能しますが、電話のメッセージデータベースから直接SMSを解析することはできません。SMS読み取りツールを補完するものであり、置き換えるものではありません。
よくある質問
AIは、M-PesaのSMSにおいて、取引金額、手数料、残高をどのように区別していますか?
すべてのM-Pesa SMSには3つのKshの金額が含まれています。AIは各金額の前にあるラベルを読み取ります。Ksh1,500.00 sent toは送金金額、Transaction cost, Ksh6.00は手数料、New M-PESA balance is Ksh1,205.10は残高です。「sent to」「paid to」「received」などの動作動詞の前にあり、取引の主体となる金額のみが金額列に入力されます。これにより、メッセージを手動で確認する際に生じる混乱を防ぎます。
トランザクションコードには実際に日付が含まれているのですか?そして、それがなぜ重要なのでしょうか?
はい、含まれています。M-Pesaのトランザクションコードの最初の文字は年(T = 2025年、S = 2024年、アルファベット順に循環)、2番目は月、3番目は日を表します。つまり、トランザクションコードフィールドだけで、SMSのタイムスタンプがスクリーンショットから切り取られていたとしても、取引日を確認できるのです。また、これは普遍的な照合キーとしても機能します。同じコードを持つ2つのSMSメッセージは同一の取引であるため、重複排除やKRA参照のための最も信頼性の高いフィールドとなります。
プレーンなSMSのスクリーンショットとM-Pesa Super Appのスクリーンショットを同じバッチで処理できますか?
はい、可能です。M-Pesa Super Appは、トランザクションコード、金額、取引相手、日付といった同じデータを視覚的な確認画面に表示します。AIは両方の入力形式を1つのバッチで処理します。Super Appの画面はSMSよりも加盟店名が読みやすく表示される一方、SMSにはアプリ画面では省略されることのある取引手数料や新しい残高が含まれています。列を一度定義すれば、AIは各スクリーンショットのソースに応じて適応します。
抽出したデータをKRAの税務申告に使用できますか?
KRAは、特にモバイルマネーを主に利用する小規模事業者に対して、税務申告の裏付け書類としてM-Pesaの明細書を認めています。各取引はトランザクションコードでインデックス化されており、特定の支払いをKRAの記録に結び付けます。正式な申告には、引き続き完全なM-Pesa PDF明細書が必要ですが、抽出されたSMSデータは、公式の明細書が届くまでの間、中間的な照合や経費追跡のための実用的なスプレッドシートを提供します。
100件のM-Pesa確認メッセージから一度にデータを抽出する必要がある場合はどうすればよいですか?
バッチ処理では、複数のスクリーンショットを一度にアップロードできます。すべてのSMSスクリーンショットをまとめてアップロードし、トランザクションコード、金額、取引相手、日付の4つの列を定義するだけで、AIがすべてのスクリーンショットを同じ列定義で処理します。バッチに10件でも100件でも、さまざまな形式のM-Pesa確認メッセージが含まれていても、出力は1つのExcelファイルで、トランザクションごとに1行ずつ表示されます。会計ソフトへのインポートや元帳との照合にすぐに使用できます。
このツールで対応可能な、Venmo、PayPal、WeChat Pay、PIXなど、すべての支払いスクリーンショットタイプをご覧ください: 支払いスクリーンショット概要
M-Pesaの5つのSMS確認フォーマット、トランザクションコードの構造、取引相手フィールドのバリエーションについての詳細: M-Pesa支払いスクリーンショット — 金額とトランザクションコードを抽出する
フォーマットの多様性という課題を抱える、もう一つのモバイルマネー優先の支払いシステム: GCashスクリーンショット抽出