M-Pesa 결제 스크린샷:
금액과 거래 코드 추출하기
모든 M-Pesa 거래는 동일한 방식으로 끝납니다. 휴대폰으로 문자 메시지가 도착합니다. 앱의 푸시 알림도, 스와이프하면 사라지는 팝업도 아닌, 160자에 맞춰진 일반 SMS가 다른 모든 메시지와 함께 받은 편지함에 전달됩니다. 그 SMS가 바로 영수증입니다. Safaricom의 연례 보고서에 따르면, FY2025에 M-Pesa가 371억 5천만 건의 거래(총액 KSh 38조 2900억)를 처리한 국가에서, 그 160자의 메시지는 대부분의 은행 명세서보다 더 많은 금융 데이터를 담고 있습니다. 문제는 M-Pesa가 모든 거래에 동일한 SMS를 보내지 않는다는 점입니다. 어떤 종류의 결제를 했는지에 따라 다섯 가지 다른 형식으로 전송되며, 필요한 필드는 각 형식마다 다른 위치에 있습니다.
핵심 요약
- FY2025에 371억 5천만 건의 M-Pesa 거래가 발생했으며, 모든 영수증은 앱 확인이 아닌 일반 SMS로 제공되며, 필요한 데이터는 다섯 가지 패턴으로 구성되어 있습니다.
- 하나의 SMS에는 언뜻 보기에 동일해 보이는 세 가지 KSh 금액(거래 금액, 수수료, 일일 한도)과 함께 송금, 청구서 결제, 상품 구매 간에 완전히 다른 정체성을 가진 거래상대방 필드가 포함되어 있습니다.
- 데이터가 화면상 어디에 있는지가 아니라 무엇을 의미하는지(거래 코드, 금액, 거래상대방)를 기준으로 스프레드시트 열을 정의하면, 단일 템플릿이나 규칙 없이도 다섯 가지 SMS 형식을 하나의 내보내기 파일로 통합할 수 있습니다.
M-Pesa가 다른 이유: SMS가 영수증입니다
대부분의 결제 앱(Venmo, PayPal, WeChat Pay)은 앱 화면 안에서 확인 메시지를 보여줍니다. 사용자는 화면을 캡처합니다. M-Pesa는 모든 사람이 스마트폰을 가지고 있지 않은 시장을 위해 만들어졌기 때문에 다르게 작동합니다. 이 서비스는 2007년 기본 피처폰에서 다이얼하는 USSD 코드로 시작되었으며, 현재 M-Pesa Super App이 월 470만 명의 사용자를 보유하고 있지만, SMS 확인은 여전히 보편적인 기록으로 남아 있습니다. 기기 종류에 관계없이 모든 전화기에 항상 도달합니다. 2026년 3월 기준, M-Pesa는 케냐에서 월 4,000만 명의 활성 고객을 보유하고 있으며, Safaricom은 케냐 모바일 머니 시장의 89.1%를 점유하고 있습니다. SMS는 단순한 예의 알림이 아닙니다. 그것이 영수증입니다.
모든 M-Pesa SMS는 "PIN YAKO SIRI YAKO(당신의 PIN은 당신의 비밀입니다)"(스와힐리어로 "당신의 PIN은 당신의 비밀입니다")라는 문구로 끝납니다. 이는 수년간 확인 메시지에 표시된 Safaricom의 보안 알림입니다. 또한 일관된 기준점 역할을 합니다. 어떤 거래 유형이 메시지를 생성했든, 그 하단부는 해당 SMS가 정당하고 완전하다는 것을 알려줍니다. 시작 거래 코드와 그 마지막 문구 사이에는 금액, 거래상대방, 거래 코드, 날짜 등 필요한 모든 정보가 있지만, 그 배열은 수행한 작업에 따라 달라집니다.
다섯 가지 일반적인 거래 유형(송금, 청구서 결제, 상품 구매(틸 번호), 입금, 입금/출금)은 각각 고유한 SMS 템플릿을 생성합니다. 어떤 형식을 보고 있는지, 그리고 각 필드가 그 안에서 어디에 위치하는지 이해하는 것이 데이터를 몇 초 만에 추출하는 것과 텍스트 문자열에서 필요한 숫자를 찾기 위해 헤매는 것의 차이를 만듭니다.
다섯 가지 거래 유형과 SMS 형식
모든 M-Pesa SMS는 10자리 영숫자 코드로 시작하여 "Confirmed."가 이어집니다. 이 공통된 시작 부분은 모든 메시지 유형에서 가장 신뢰할 수 있는 구조적 기준점입니다. 그 다음 내용은 거래 유형에 따라 나뉩니다.
송금 (고객 이체)
가장 일반적인 거래 유형입니다. 다른 등록된 M-Pesa 사용자에게 돈을 보냅니다. SMS 내용은 다음과 같습니다:
ABCDE12345 확인됨. Ksh150.00이 JOHN DOE(0722000000) 님께
23/6/23 오후 3:41에 전송되었습니다. 새 M-PESA 잔액은 Ksh1,205.10입니다.
거래 수수료 Ksh6.00.세 개의 필드가 순서대로 나타납니다: 금액(Ksh150.00), 수취인의 전체 이름과 전화번호(JOHN DOE 0722000000), 그리고 날짜와 시간입니다. 거래 수수료는 별도로 표시되며 금액 필드의 일부가 아닙니다.
청구서 결제
등록된 Paybill 번호를 통해 기업, 공공요금, 학교 및 정부 기관에 결제할 때 사용됩니다. SMS 형식이 변경되어 업체명과 계좌 참조번호가 포함됩니다:
DY28XV679 확인됨. Ksh4,000.00이 KCB Paybill AC로
계좌 1137238445에 9/9/23 오후 11:31에 전송되었습니다.
새 M-PESA 잔액은 Ksh22.00입니다.여기서 거래상대방은 개인이 아닌 업체명(KCB Paybill)과 계좌번호의 조합입니다. "for account" 문자열이 이 메시지를 송금 메시지와 구분해 줍니다. 거래상대방 필드를 추출할 때는 업체명과 계좌 참조번호가 모두 필요합니다. 이 두 정보가 함께 누가 어떤 고객 ID로 결제를 받았는지 식별합니다.
상품 구매 (틸 번호 / 가맹점 결제)
틸 번호(또는 Lipa na M-Pesa, 즉 "M-Pesa로 결제")를 사용하여 상점, 슈퍼마켓 또는 식당에서 결제할 때 형식에 청구서 결제 메시지에 나타나는 "for account" 절이 생략됩니다:
GH78KT901 확인됨. Ksh500.00이 Naivas Supermarket에
15/1/25 오전 10:15에 결제되었습니다. 새 M-PESA 잔액은 Ksh3,400.00입니다.
거래 수수료 Ksh0.00.동사가 변경된 점에 주목하십시오: "sent to" 대신 "paid to"가 사용됩니다. 수취인은 틸 번호에 등록된 가맹점명입니다. 계좌 참조번호도, 전화번호도 없이 상점 또는 업체명만 표시됩니다. 케냐의 대부분의 소매 결제(동네 가게(duka)부터 대형 슈퍼마켓 체인까지)에서 이 형식이 SMS에 사용됩니다.
입금
누군가가 귀하에게 송금하면, SMS는 수신자 중심 형식으로 전송됩니다:
BS49OR201 확인됨. MICHAEL FEDERSEN 254729901555 님으로부터
KSh50.00을 수신하였습니다. 일시: 24/10/15 11:52 AM.
새 M-PESA 잔액: KSh100.00.여기서 거래상대방은 송금자이며, 전체 이름과 전화번호로 표시됩니다. 금액은 송금자가 이체한 금액입니다(송금자가 거래 수수료를 부담하며, 귀하는 부담하지 않습니다). 동일한 형식은 Western Union 또는 WorldRemit과 같은 M-Pesa Global 파트너를 통해 도착하는 국제 송금에도 사용됩니다.
입금 및 출금
입금(에이전트를 통한 현금 입금)은 다음과 같은 메시지를 생성합니다:
DF34QR567 확인됨. HENRY KAMAU 254701234567 님으로부터
KSh3,000.00을 수신하였습니다. 일시: 26/4/12 9:14 AM.
새 M-PESA 잔액: KSh8,450.00.형식은 입금과 유사하지만, "from" 출처는 입금을 처리한 에이전트입니다. 출금(현금 인출) 메시지에는 "Withdraw"라는 단어가 포함되며, 차감된 금액과 에이전트 수수료가 표시됩니다.
다섯 가지 형식 모두에서 핵심은 거래 코드가 항상 메시지의 첫 번째 단어라는 점입니다. 이러한 일관성 덕분에 거래 유형에 관계없이 추출의 이상적인 기준 필드가 됩니다. 코드가 정확히 어디서 시작되는지 알 수 있기 때문입니다.
거래 코드: 날짜를 인코딩하는 10자리 키
M-Pesa 거래 코드(TB17CVOCY9와 같은 문자열)는 단순한 무작위 영수증 번호가 아닙니다. 그 구조는 거래가 발생한 시점을 알려줍니다. 처음 세 글자는 날짜를 인코딩합니다. 첫 번째 글자는 연도(T=2025, S=2024, R=2023, Q=2022 — 알파벳 순환), 두 번째 글자는 월, 세 번째 글자는 일을 나타냅니다. 네 번째 글자는 항상 숫자이며, 나머지 여섯 글자는 무작위로 생성됩니다. 시스템은 하루에 약 218억 개의 고유 코드를 생성할 수 있으며, 연간 8조 개의 코드 용량으로 중복은 사실상 불가능합니다.
케냐 기업에게 거래 코드는 보편적인 조정 키입니다. 모든 M-Pesa 틸 번호 및 Paybill 시스템은 수신된 결제를 이 코드로 기록합니다. Safaricom의 고객 지원팀은 이 코드를 사용하여 거래를 추적합니다. KRA(케냐 국세청)는 모든 거래를 이 코드로 색인화하는 M-Pesa 명세서를 세금 신고의 증빙 서류로 인정합니다. 또한 법적 측면에서, MMTK Law 변호사들이 Business Daily Africa에서 언급했듯이, 2019년 데이터 보호법에 따라 "거래 코드는 판매자가 엄격히 필요로 하는 유일한 세부 정보"입니다. 이 코드는 이미 판매자 자신의 확인 시스템에 나타나기 때문입니다.
M-Pesa SMS 메시지(송금, 청구서 결제 또는 상품 구매 거래)로 스프레드시트를 구축하는 경우, 거래 코드는 모든 행에 채워지는 유일한 열입니다. 다른 모든 필드(거래상대방, 금액, 날짜)도 모든 형식에 존재하지만, 거래 코드는 중복을 제거할 수 있는 필드입니다. 동일한 코드를 가진 두 개의 SMS 메시지는 동일한 거래이며, 누군가 동일한 스크린샷을 두 번 전달했더라도 마찬가지입니다.
KES 금액: SMS가 실제로 보여주는 정보
모든 M-Pesa 금액 앞에는 Ksh(케냐 실링)가 붙으며, 천 단위 구분 기호로 쉼표를 사용하고 소수점 두 자리까지 표시됩니다(예: Ksh1,500.00, Ksh38,290.50, Ksh4,000.00). 이 부분은 일관적입니다. 하지만 SMS에는 메시지를 빠르게 훑어볼 때 혼동하기 쉬운 세 가지 다른 금액 필드가 포함되어 있습니다:
- 거래 금액 — 이체된 금액입니다. 송금 SMS에서는 "Ksh150.00 sent to"로 표시됩니다. 청구서 결제에서는 "Ksh4,000.00 sent to"로, 입금 시에는 "You have received Ksh50.00"로 나타납니다. 스프레드시트에 필요한 필드입니다.
- 거래 수수료 — 이체 시 차감되는 수수료입니다. 별도 줄이나 구문으로 표시됩니다(예: "Transaction cost, Ksh6.00."). 이체 금액에 포함되지 않습니다. KSh 500 이상 송금 시 수수료는 구간에 따라 KSh 6에서 KSh 110까지입니다.
- 일일 사용 가능 한도 — "Amount you can transact within the day is 289,950.00." 이는 한도이며 잔액이 아닙니다. 숫자의 첫 몇 자리만 읽으면 계좌 잔액으로 오인하기 쉽습니다.
M-Pesa SMS는 모든 거래 후 새 잔액도 표시합니다("New M-PESA balance is Ksh1,205.10."). 이는 개인 추적에 유용하지만 2019년 데이터 보호법에 따라 보호되는 금융 데이터를 포함합니다. 비즈니스 확인을 위해 SMS를 공유하거나 전달하는 경우, 잔액은 거래상대방이 알아야 할 정보보다 더 많은 내용을 드러낼 수 있습니다.
이름, 틸 번호 및 비즈니스 계정
거래상대방 필드는 M-Pesa 형식의 다양성이 가장 두드러지는 부분입니다. 거래 유형에 따라 완전히 다른 형태를 띱니다:
| 거래 유형 | SMS에 표시되는 거래상대방 형식 | 예시 |
|---|---|---|
| 송금 | 전체 이름 + 전화번호 | JOHN DOE 0722000000 |
| 청구서 결제 | 비즈니스 이름 + "AC for account [번호]" | KCB Paybill AC for account 1137238445 |
| 상품 구매(틸) | 판매자 이름만 | Naivas Supermarket |
| 입금 | 보낸 사람 이름 + 전화번호 | MICHAEL FEDERSEN 254729901555 |
비즈니스의 모든 M-Pesa 거래를 캡처하는 스프레드시트의 경우, 거래상대방 열은 네 가지 다른 형식(전화번호가 포함된 개인 이름, 계정 참조가 포함된 비즈니스 이름, 독립형 판매자 이름 또는 보낸 사람 이름)을 수용해야 합니다. "sent to" 뒤와 "on" 앞의 텍스트를 가져오는 것과 같은 위치 기반 추출 규칙은 송금에는 작동하지만, "AC for account" 텍스트가 포함된 청구서 결제와 "received from" 구조를 사용하는 입금(송금의 "sent to"와 다름)에서는 실패합니다. 의미 기반 추출(열을 "이 거래의 상대방인 사람 또는 법인"으로 정의)은 고정 키워드에 대한 상대적 위치가 아닌 의미로 거래상대방을 식별하므로 네 가지 형식을 모두 처리합니다.
SMS와 스크린샷에서 스프레드시트로
M-Pesa의 다양한 형식(5가지 거래 유형에 걸친 5가지 SMS 템플릿)은 지불 데이터 추출이 어떻게 작동해야 하는지를 보여주는 특히 좋은 테스트 사례입니다. 송금, 청구서 결제, 상품 구매, 입금 각각에 대해 별도의 템플릿을 작성해야 하는 시스템은 새로운 거래 유형이 도입되거나 SMS 형식이 변경될 때(2025년 거래 코드 접두사가 "S"에서 "T"로 변경된 경우처럼) 작동이 중단됩니다.
맞춤 열 추출 — 원하는 열(거래 코드, 금액, 거래상대방, 날짜)을 정의하면 AI가 페이지에서의 위치가 아니라 의미를 이해하여 각 값을 찾아내는 방식 — 은 형식 변동을 무시함으로써 이 문제를 해결합니다. SMS에 "sent to", "paid to", "received from" 또는 "AC for account" 중 어떤 표현이 사용되든, 엔진은 각 텍스트 조각의 의미론적 역할을 읽고 올바른 열에 매핑합니다. 어떤 거래 유형인지 알려줄 필요가 없습니다.
실제 작업 흐름은 다음과 같습니다: M-Pesa SMS 확인 메시지를 저장하거나 전달하거나, SMS 스레드 또는 M-Pesa Super App 거래 내역의 스크린샷을 찍어 함께 업로드합니다. 열 이름을 거래 코드, 금액, 거래상대방, 날짜로 지정합니다. 출력은 거래당 한 행이며, 각 행의 값은 해당 거래에 실제로 사용된 SMS 형식에서 가져옵니다. 송금, 청구서 결제, 상품 구매 메시지가 섞인 M-Pesa 결제 50건을 일괄 처리하면 하나의 통합된 테이블이 생성됩니다. 유형별로 먼저 정렬할 필요가 없습니다.
케냐 기업의 경우 다운스트림 활용은 간단합니다. 추출된 데이터는 케냐 계정을 위한 기본 M-Pesa 통합 기능을 제공하는 Zoho Books나 QuickBooks Kenya로 직접 전송할 수 있습니다. 많은 중소기업과 회계사는 Google Sheets 원장을 유지 관리하기도 하며(때로는 다른 모바일 결제 수단과 함께), 동일한 열 구조가 모두에서 작동합니다. 예를 들어 귀하의 비즈니스가 GCash 또는 PayNow를 통해서도 결제를 받는 경우, 금액-거래코드-거래상대방-날짜 패턴은 동일합니다. 혼란스러워 보이는 형식 차이(5가지 SMS 템플릿, 4가지 거래상대방 유형, 두 번째 금액처럼 보이는 수수료 항목)는 위치가 아닌 의미를 기준으로 추출이 이루어지면 사라집니다.
FAQ
M-Pesa SMS 확인 메시지에는 어떤 정보가 포함되어 있나요?
모든 M-Pesa SMS에는 10자리 거래 코드, 케냐 실링(KSh) 단위 금액, 거래상대방 이름 및/또는 사업자 계정, 날짜와 시간, 새로운 M-Pesa 잔액, 그리고 거래 수수료가 포함됩니다. 일부 메시지 유형에는 남은 일일 거래 한도와 같은 추가 필드가 나타납니다. 거래 코드는 항상 메시지의 첫 번째 단어이며, 그 뒤에 "Confirmed."가 옵니다. 이 형식은 모든 거래 유형에서 일관됩니다.
SMS 대신 M-Pesa Super App 스크린샷에서 데이터를 추출할 수 있나요?
네, 가능합니다. M-Pesa Super App은 거래 코드, 금액, 거래상대방, 날짜 등 동일한 필드를 시각적 확인 화면에 표시합니다. 전화번호와 상호명은 SMS보다 앱 화면에서 더 읽기 쉬울 수 있습니다(앱은 SMS처럼 이름을 자르지 않습니다). 조정 목적으로는 Super App 화면에서 명확하게 라벨이 지정된 필드로 표시되는 거래 코드를 가져와 SMS와 대조하여 확인하는 것을 고려해 보세요.
SMS가 삭제된 경우에도 거래 데이터에 접근할 수 있나요?
*234#를 누르고 "내 계정" → "M-Pesa 명세서" → "간편 명세서"를 선택하면 최근 5건의 거래를 SMS로 받을 수 있습니다. 최대 12개월까지의 전체 명세서를 원하시면 동일한 메뉴에서 등록된 이메일 주소로 PDF 명세서를 요청하세요. 명세서는 기본 비밀번호로 주민등록번호를 사용하여 암호로 보호됩니다. 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 명세서(*234#로 전화 걸어 Safaricom에 PDF로 요청 가능)를 요구합니다. 그러나 거래 코드 자체가 특정 지불을 명세서의 특정 기록에 연결하는 요소이므로, 이후의 감사나 문의에 중요한 참조 자료가 됩니다.