How to Check a Transfer Proof: Real or Fake?
The way to tell whether a transfer proof is real is to check your own account mutation, not to squint at the image. An Indonesian bukti transfer is just a screenshot — there is no QR or verification code you can check against the bank's system, so even a clean-looking image is not proof of money received. Open your mobile banking and look at the mutation: did the money arrive, for that amount, at that time? To make matching easy, use a unique amount (say Rp350,123 instead of Rp350,000) or go straight to an exact-amount dynamic QRIS — a QRIS payment triggers a real-time notification from your own PJP app, the strongest confirmation there is, because it comes from the payment system rather than the buyer.
The single most important rule: do not trust the transfer-proof image — trust the money that actually lands in your account. A screenshot can be edited in minutes, and one genuine transfer screenshot can be reused across several orders at once. This guide covers why transfer proofs are easy to fake, why Indonesia has no official way to verify the image itself, and the four checks that actually work — from manual mutation checks to QRIS notifications.
By the Tagihin team · Updated 10 Jun 2026
Note: this article is general information, not legal advice for a specific case. Mobile-banking features, notifications, and policies differ per bank/PJP and can change — check with your own bank or PJP. If you have been defrauded, report it to your bank and the police.
Why transfer proofs are so easy to fake
An Indonesian transfer proof is almost always a screenshot from mobile banking or an e-wallet: BCA mobile, BRImo, Livin’ by Mandiri, GoPay, DANA. It is just an image — pixels on a screen — and images can be manipulated in three ways, all of them cheap:
- Edited. Photo editors, “transfer-proof generator” templates, and AI tools can swap the amount, date, or recipient name in minutes — complete with fonts and layouts nearly identical to the real thing. Major banks such as BCA regularly warn about this in their fraud-alert channels.
- Reused. One genuine transfer produces one genuine screenshot — which then gets sent to two, three, five different sellers. Every copy of the image is “real”, but the money only arrived once, to one person.
- Stale. An old transfer screenshot from a previous order gets resent for a new one. The image is genuine — it is the date a busy seller fails to notice.
The Indonesian reality: no verifiable QR on transfer receipts
In some countries, bank transfer receipts carry a QR or code you can scan to check the transaction directly against the bank’s system. Indonesia has no such mechanism: transfer proofs from mobile banking and e-wallets carry no standardized payload a third party can verify. That means no app, website, or service can confirm a screenshot is genuine from the image alone — anyone promising that is selling an illusion.
The consequence is simple and liberating: stop analyzing the image and start checking the sources of truth you yourself hold — your account mutation, and (for QRIS) the notification from your own PJP app.
The four checks that actually work
1. Check your account mutation in mobile banking — the primary source of truth
Open your own mobile banking and look at the account mutation: is there an incoming credit, for the right amount, at a plausible time? This is free, definitive, and cannot be fooled by an image. Interbank transfers over BI-FAST (Bank Indonesia’s infrastructure, fee capped at Rp2,500) arrive in seconds, so “the transfer is still pending” is almost never a valid excuse. Turn on incoming-funds notifications (push or SMS) so you do not have to keep opening the app.
2. The unique-amount trick — Rp350,123, not Rp350,000
When several clients pay the same amount into the same account, your mutation becomes hard to read: which order does that incoming Rp350,000 belong to? The fix has been used by Indonesian marketplaces for years: the unique code. Add two or three random digits to the bill — order A becomes Rp350,123, order B becomes Rp350,287 — and every mutation line points to exactly one order, no ambiguity. Fake proofs also become easier to catch: a fraudster has to guess the unique digits exactly.
The downside: the figure looks “odd” to clients and you must track the unique codes. An exact-amount dynamic QRIS (check #4) achieves the same precision without altering the price — the amount is locked inside the QR instead of guessed by the client.
3. Automatic mutation-checking services (Moota and the like)
Services like Moota poll your bank account’s mutation feed via API and match incoming credits to your bills automatically — usually combined with the unique-amount trick. Understand what they actually do: these services do NOT inspect proof images; they automate the mutation check, the same source of truth as check #1. They suit high order volumes, at a subscription cost and with one consideration of their own: you grant a third party read access to your account mutations.
4. The QRIS notification from your own PJP app — the strongest confirmation
When a client pays via QRIS, your PJP’s merchant app (GoPay Merchant, DANA Bisnis, or the mobile banking your QRIS is registered with) sends a real-time payment notification. That notification comes from the payment system — not from the buyer — so it cannot be faked with a screenshot. There is no image to inspect at all. Combined with an exact-amount dynamic QR (one QR = one invoice = one amount), you get two layers of certainty: the amount is necessarily right, and the confirmation comes from the system.
How dynamic QRs work — including why funds still settle to your own account — is covered in full in the QRIS guide for freelancers, and you can try it without an account via our free dynamic-QRIS tool.
| Method | Strength of evidence | Notes |
|---|---|---|
| Transfer-proof image | Weak | Editable, reusable, or stale — no official way to verify it |
| Visual cues on the image | Weak | Catches crude edits only; modern edits are clean |
| Mutation check in mobile banking | Strong | Free and definitive; pair with unique amounts for instant matching |
| Mutation-check services (Moota et al.) | Strong | The same mutation, checked automatically; paid, third-party access |
| QRIS notification from your PJP | Strongest | Real-time confirmation from the payment system, not the buyer |
Signs of a fake transfer proof (a second layer, not your mainstay)
Visual inspection is still useful for catching crude edits, as long as it is never your only defence:
- Fonts, sizes, or number alignment subtly different from the surrounding elements
- Implausible dates and times — a “last night” transfer for an order agreed this morning
- Reference numbers that are missing, cropped, or identical to a previous proof from the same person
- Wrong fee details — e.g. an interbank transfer showing no fee where the route should carry one, or vice versa
- Low resolution or heavy compression — the classic way to hide editing artifacts
Remember: finding none of the signs above does NOT mean the proof is genuine. A clean edit leaves no visible trace. The decision to ship still waits for the mutation.
How Tagihin guards the payment-proof gate
On Tagihin, clients pay an invoice through its payment page and can upload their transfer proof right there. Every incoming image is hashed with SHA-256 and checked against a platform-wide duplicate ledger: if the exact same image was ever uploaded for another invoice — yours or any other Tagihin merchant’s — the proof is automatically flagged as a duplicate on your dashboard. The reused-screenshot trick, the most common form of proof fraud, gets caught here.
We are honest about the limits: the match works on byte-for-byte identical files. An edited or cropped image produces a different hash and will not be caught — which is why Tagihin never claims to detect fakes from the image itself. A proof that passes the duplicate check sits at “awaiting confirmation”, and the invoice only flips to Paid after you tap confirm — ideally after you have seen the funds land in your mutation or your QRIS notification. The full flow, including the duplicate status and the planned mutation-based auto-verification, is covered in the Tagihin payment-verification guide.
And the best layer sits upstream: Tagihin invoices carry an exact-amount dynamic QRIS QR, so most clients pay via QRIS — you get the notification from your PJP and never have to touch a transfer proof at all. Funds flow straight to your account via your own PJP; Tagihin never holds money.
Send invoices with exact-amount QRIS QRs + automatic duplicate-proof checks (free plan available).
Read next
References / Sources
- Primary sources
- Bank Indonesia — BI-FAST: real-time interbank transfers, fee capped at Rp2,500
- Bank Indonesia — Quick Response Code Indonesian Standard (QRIS)
- Secondary sources
- BCA — Awas Modus: official warnings on fake transfer proofs and other fraud schemes
- OJK Sikapi Uangmu — consumer education: digital-transaction fraud awareness
- Moota — automatic bank-mutation checking service
Information as reviewed on 10 Jun 2026. Mobile-banking features, merchant notifications, and policies differ per bank/PJP and may change — check with your own bank or PJP.