fraud ยท 7 min read
How Payment Fraud Works in Ethiopia (and How to Stop It)
Fake screenshots, duplicate receipts, and social engineering. A complete guide to the payment fraud tactics used in Ethiopia and how to detect every one with automated verification.
Payment fraud is one of the biggest challenges for Ethiopian businesses. Unlike countries with card payments and automatic merchant confirmation, most Ethiopian transactions happen through bank transfers and mobile money. Merchants must manually verify each payment before releasing goods. This creates opportunities for fraud.
The 5 most common fraud tactics in Ethiopia
1. Edited screenshots
The most basic and most common tactic. The fraudster takes a real receipt screenshot and edits the amount or date using a photo editing app. They change 1,000 ETB to 10,000 ETB, or modify the date to make an old payment look recent.
Why it works
The human eye cannot reliably detect well-edited screenshots, especially on small phone screens under pressure at a busy counter. Staff often glance at the screenshot, see the right amount, and release goods.
Detection: Verify the transaction reference against the bank's official system. If the amount on the official receipt doesn't match what the screenshot shows, it's fake. cheki does this automatically.
2. Duplicate receipts
The fraudster makes a genuine payment and receives a real receipt. A week later, they return and present the same receipt for a new purchase. The receipt is legitimate, but it was for a previous transaction.
Hard to detect manually
The receipt is real. The reference number checks out. The amount matches. Without tracking which receipts have been used, staff have no way to know it's a duplicate.
Detection: Store every verified transaction reference in your system. Before accepting a payment, check if the reference has already been used. cheki's API returns the transaction date, so you can also reject receipts older than a set time window.
3. Wrong account screenshots
The fraudster sends a screenshot of a transfer to a different account. The screenshot shows a real transfer for the right amount, but the money went to someone else's account, not yours.
Detection: Verify the receiver name and account on the official receipt. cheki returns the receiver name and account number, which you can compare against your own.
4. Fabricated receipts
Some fraudsters create completely fake receipts that mimic the design of the real banking app. These are harder to make but can fool staff who don't know exactly what the real receipt looks like.
Detection: Verify the transaction reference. If the reference doesn't exist on the bank's system, the receipt is fake. The bank endpoint will return a 404 or error.
5. Social engineering
The fraudster creates urgency. They claim they're in a hurry, the transfer is processing, or they'll lose a flight. They pressure staff into releasing goods before verification is complete.
Detection: Never release goods under time pressure. If a customer is genuinely in a hurry, verify the payment first and release goods after. A real payment can be verified in 1-3 seconds with cheki.
Building a fraud prevention checklist
| Fraud type | What to check | How cheki helps |
|---|---|---|
| Edited screenshot | Amount on official receipt vs claimed amount | cheki returns the official amount from the bank |
| Duplicate receipt | Has this reference been used before? | Store references in your DB, check before accepting |
| Wrong account | Receiver name and account match yours | cheki returns receiver name and account number |
| Fabricated receipt | Does the reference exist on the bank system? | cheki returns 404 if the receipt doesn't exist |
| Social engineering | Never skip verification under pressure | cheki verifies in 1-3 seconds, no excuse to skip |
Automating fraud prevention
Manual verification is unreliable because it depends on human judgment under pressure. The solution is to automate verification so every transaction is checked, every time, with no exceptions.
With cheki's API, you can integrate verification into your POS system, e-commerce checkout, or delivery app. Here's a simple integration pattern:
// Before releasing goods, verify the payment
const response = await fetch('https://chekiapp.vercel.app/api/verify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
bank: 'cbe',
reference: customerReference,
accountNumber: myAccountNumber
})
});
const result = await response.json();
// Check 1: Does the receipt exist?
if (!result.verified) return reject('Receipt not found');
// Check 2: Does the amount match?
if (result.amount !== expectedAmount) return reject('Amount mismatch');
// Check 3: Is the receiver our account?
if (result.receiverAccount !== myAccount) return reject('Wrong account');
// Check 4: Is this a duplicate?
if (await isDuplicate(result.reference)) return reject('Duplicate receipt');
// Check 5: Is the payment recent?
if (isOlderThan(result.date, 1, 'hour')) return reject('Stale payment');
// All checks passed
return approve();Use batch verification for reconciliation
At the end of each day, use cheki's batch endpoint to verify all receipts at once. POST to /api/verify/batch with up to 50 receipts. This catches any fraud that slipped through during the day.