Behind the scenes

Your bank's SMS is the receipt: how Daak knows you paid

Offline payments have no app server to confirm them. Daak uses the SMS your bank already sends. Here's how it reads those messages on your phone, matches them to your payment and shows a real receipt.

Online UPI apps know a payment went through because their server tells them. Daak has no server and no internet. So how does it know when to stamp a payment Paid?

It reads the same thing you'd check anyway: the SMS from your bank.

Every bank says it differently

My first real test was a ₹1 payment over 123Pay. Two messages showed up for that one payment, one from my bank and one from the 123Pay side:

Sent Rs 1.00 from [me] to [the receiver] on 21/10/2026 Ref 6294XXXXXXXX. Team IDFC FIRST Bank
Your UPI transaction of INR 1 to [their UPI ID] is successful. RRN: 6294XXXXXXXX - UltraCash

Same payment, two completely different sentences. One says "Sent Rs", the other says "transaction of INR". One calls the number "Ref", the other calls it "RRN". Neither uses the word "debited", which is exactly what the first version of Daak was looking for. So neither got picked up. 😅

What Daak looks for now

Instead of hunting for one magic sentence, Daak looks for a few pieces that every bank alert has in some form:

  • An amount, like "Rs 1.00", "INR 1" or "₹1".
  • A direction: money going out ("sent", "debited", "paid", "transaction to ... successful"), not coming in.
  • A reference number, like "Ref", "RRN" or "UPI Ref". This is the 12-digit number your bank and NPCI use to track the payment.
  • Who, and which bank, when the message says so: "to RAMU PRASAD", "Team IDFC FIRST Bank".

If a message doesn't look like a bank alert, it's ignored and nothing is stored from it. Your OTPs and family group chat are none of Daak's business.

Matching it to your payment

Finding a bank SMS isn't enough. Daak also checks that it belongs to a payment you just made:

  • The amount has to match.
  • The payment has to be recent: started in the last 15 minutes.
  • The reference number can't have been used already.

That last rule came straight out of the ₹1 test. Two messages, one payment. Without it, the second message could have marked a different ₹1 payment as paid. Now one reference number settles exactly one payment.

The receipt

Once it matches, the Paid screen shows a proper receipt:

  • Paid to: the name your bank has for them. That can differ from how you saved them in your contacts, so Daak shows both.
  • Mobile or UPI ID, and of course the amount.
  • Reference no.: the one to quote if you ever need to raise a dispute.
  • Confirmed by: which bank or service sent the SMS.
  • When it happened.

What if SMS access is off?

Android only lets an app read SMS if you say yes. And if you installed Daak from a file instead of the Play Store, Android blocks it until you turn on "Allow restricted settings" in the app's App info page.

Without SMS access, Daak simply asks you after paying: "Did the payment go through?" You glance at your messages and tap yes or no. A little more manual, still works fine.

Your bank's format not working?

Banks love creative wording. If Daak misses your bank's alert, send me the message (hide your name and account digits first) and I'll teach Daak to read it. That's literally how the IDFC and UltraCash formats got added. You can find me at the bottom of the home page.

And if you're wondering why Daak can't just check with a server instead, here's why Daak has no internet permission.