Aller au contenu

G. Mobile money and agents

Ce contenu n’est pas encore disponible dans votre langue.

Mobile money is the main way many people in Ghana and West Africa send and keep money, through wallets such as MTN MoMo, Telecel Cash and AT Money, and a large network of agents who turn cash into e-money (cash-in) and back again (cash-out).

That makes it a target. Agents can be complicit or careless; SIM cards can be hijacked; wallets can be used to collect and sweep fraud proceeds. These rules are designed for those risks and ship in the gh-psp pack for Ghanaian PSPs and mobile money operators.

ID Rule Mode Status
G1 Agent cash-in volume anomaly vs peer agents SCH Ships (gh-psp, scheduled daily)
G2 Agent cash-out immediately after cash-in for same wallet PE Ships (gh-psp, post-event)
G3 SIM swap or recent number change, then high-value transfer RT Ships (gh-psp 1.1.0, real-time)
G4 Wallet-to-bank sweep after many inbound P2P PE Ships (gh-psp, post-event)
G5 Reversal or refund abuse PE/SCH Ships (gh-psp, post-event)
G6 Large mobile money transfer at night PE Ships (gh-psp, post-event)

G1 Agent cash-in volume anomaly vs peer agents

Section titled “G1 Agent cash-in volume anomaly vs peer agents”

What it looks for: an agent whose cash-in volume is far out of line with similar agents: agents in the same region or of the same tier. An agent processing several times more cash than its neighbours may be placing cash for someone, or splitting a large customer’s deposits.

Example

With the defaults (window_days 7, zscore 3, min_peers 10, min_volume 50,000, peer_group region):

  • ✅ Fires: an agent in Techiman takes GHS 900,000 of cash-ins in a week, when the 24 other agents in the Bono East region average GHS 150,000 with a standard deviation of GHS 60,000: that is 12.5 standard deviations above its peers.
  • ❌ Does not fire: the same agent in a region with only 6 other agents (fewer than min_peers): the comparison isn’t reliable.

Parameters

Parameter Meaning How to tune
window_days The period, in days (1 to 90) A week evens out market days
zscore Standard deviations above the peers, at least (1 to 20) 3 is a common starting point; lower catches more
min_peers Other agents in the peer group, at least Small groups give unstable averages
min_volume The agent’s cash-in volume at or above (base currency) Keeps quiet agents in quiet regions out
peer_group The attribute that names an agent’s peer group, for example region or tier Pick groups that really are comparable: a market-town agent and a rural agent are not

How agents and peer groups are found. An agent is the counterparty of your customers’ cash_in transactions. Its peer group is read from the attribute named in peer_group, looked for in this order: on the agent’s own account (when the agent’s account number is one of your accounts), then on that account’s customer, then on the cash-in itself. Agents with none are compared with all agents together. Each agent’s average and spread are worked out without that agent, so one very large agent can’t hide inside its own average.

Mode and pack: scheduled, every day at 05:00 (daily 05:00), in gh-psp 1.2.0. See Scheduled rules. Once it has flagged an agent, it doesn’t flag it again until a whole window has passed.

False positives: agents in markets or transport hubs, and super-agents. Put them in their own peer group with the attribute.

Data it needs: cash_in transactions with the agent as the counterparty, and a peer-group attribute (for example "region": "Bono East") on the agent’s account, its customer or each cash-in.


G2 Agent cash-out immediately after cash-in for same wallet

Section titled “G2 Agent cash-out immediately after cash-in for same wallet”

What it looks for: money cashed in to a wallet and cashed out again at an agent shortly afterwards. Legitimate customers rarely do this. It is used to convert stolen e-money into cash, or to disguise where cash came from.

Example

With window 2 hours and min_amount GHS 2,000:

  • ✅ Fires: a wallet receives GHS 4,000 cash-in at 14:10 and GHS 3,900 is cashed out at a different agent at 14:45.
  • ❌ Does not fire: cash-in in the morning, spent on bills and airtime.

Parameters

Parameter Meaning How to tune
window Time between cash-in and cash-out Minutes to hours
min_amount Minimum amount Keep small everyday amounts out

Mode and pack: post-event.

Data it needs: agent for each cash-in and cash-out, amount, timestamps.


G3 SIM swap or recent number change, then high-value transfer

Section titled “G3 SIM swap or recent number change, then high-value transfer”

What it looks for: a large transfer shortly after the wallet’s SIM card was replaced or its phone number changed. SIM swap fraud works by convincing the mobile network to move a victim’s number to a new SIM, then using it to receive OTPs and empty the wallet.

Example

With sim_change_hours 48 and threshold_amount GHS 1,500:

  • ✅ Fires: the SIM was replaced at 09:00; at 11:20 a GHS 6,000 transfer to a new recipient is attempted.
  • ❌ Does not fire: a GHS 1,500 transfer a week after a SIM replacement.

Parameters

Parameter Meaning How to tune
sim_change_hours How long after a SIM change the rule is watching 24–72 hours are common
threshold_amount Transfer amount that triggers it Relatively low — victims are often emptied completely

Mode and pack: real-time, so the transfer can be blocked, held or stepped up before it happens. Ships in gh-psp 1.1.0.

Data it needs: sim_swap account events, and payouts sent through a real-time decision.


G4 Wallet-to-bank sweep after many inbound P2P

Section titled “G4 Wallet-to-bank sweep after many inbound P2P”

What it looks for: a wallet that receives many person-to-person transfers and then sweeps most of the balance to a bank account in one go — moving collected money out of mobile money into the banking system.

Example

With min_inbound 15, window 7 days and sweep_pct 80%:

  • ✅ Fires: 22 incoming P2P transfers (GHS 11,000) during the week, then GHS 10,000 transferred to a bank account over GhIPSS.

Parameters

Parameter Meaning How to tune
min_inbound Number of incoming P2P transfers Higher for traders who are paid by mobile money
window The period Days to weeks
sweep_pct Share of the inbound total swept to a bank 70–90% are typical values to test

Mode and pack: post-event, in gh-psp.

False positives: small businesses moving their takings to the bank. Compare with I3.

Data it needs: channel (P2P vs wallet-to-bank), counterparties, amounts.


What it looks for: an unusual number of reversals or refunds on one wallet or merchant. Some scams depend on reversals (“I sent it to you by mistake, please send it back”), and some insiders abuse the reversal process.

Example

With max_reversals 3 and window 30 days:

  • ✅ Fires: five reversal requests on one wallet in a month.

Parameters

Parameter Meaning How to tune
max_reversals Reversals allowed in the window Low for consumers; higher for busy merchants
window The period Weeks

Mode and pack: post-event, in gh-psp.

Data it needs: reversal and refund transactions identified as such, linked to the original transaction where possible.

What it looks for: a large mobile money transfer out of a wallet in the small hours. Account-takeover and social-engineering fraud often happens at night: the fraudster has the victim’s PIN or SIM, and the victim is asleep and won’t notice the SMS until morning.

Example

With threshold GHS 5,000, from_hour 0 and to_hour 5 (midnight to 05:59, workspace time):

  • ✅ Fires: GHS 6,500 sent by MoMo at 02:14 to a wallet the customer has never paid.
  • ❌ Does not fire: the same transfer at 07:30.
  • ❌ Does not fire: GHS 800 at 02:14 (below the threshold).

Parameters

Parameter Meaning How to tune
threshold Smallest transfer that counts Above most customers’ normal night-time payments
from_hour First hour of the night period (0–23) Must not be later than to_hour. The period can’t cross midnight
to_hour Last hour of the night period, inclusive 5 means “until 05:59”

Mode and pack: post-event, gh-psp pack. Ships today. As a post-event rule it alerts after the money has left. To stop such a transfer before it happens, a rule author can build a real-time version in the rule builder.

False positives: night-shift workers, traders who settle with suppliers before dawn, and customers abroad. Look at the customer’s history: someone who regularly sends money at night is different from a first-time 2 a.m. transfer to a new payee.

Data it needs: channel (momo), direction, amount, and the transaction time. The hour is read in your workspace’s time zone.