Ledger › Guides
Guide · iPhone

How to log bank SMS automatically on iPhone

Every UPI or card payment in India sends you a bank SMS. On Android, expense apps read those messages from your inbox. On iPhone they can't, and that's on purpose. Here's what does work, step by step.

Why iPhone apps can't read your SMS

iOS doesn't let any app read your Messages inbox. It's one of the reasons an iPhone is private: no app, however useful, can quietly look through your OTPs and bank alerts.

So on iPhone there are two honest ways to turn a bank SMS into an expense:

What's in a bank SMS

A typical UPI debit message looks like this:

Rs.480.00 debited from A/c XX1234 on 14-10-26 to VPA zomato@icici (UPI Ref No 629012345678)

It has everything an expense needs: the amount, who you paid, and the date. The wording changes from bank to bank. Some say debited, some say sent, card alerts often say spent, and money in says credited. That matters for the automation below.

The SMS comes from your bank, not from the UPI app, so it doesn't matter whether you paid with GPay, PhonePe, Paytm or your bank's own app. If your bank sends an SMS for the payment, it works.

Way 1: paste a message (any iPhone)

  1. In Messages, press and hold the bank SMS, then tap Copy.
  2. In Ledger, open Quick log (the ✦ button) and tap Paste.
  3. Check what Ledger read (amount, merchant, date and category), then Save entry.
Ledger's Quick log with a pasted bank SMS read as ₹480 to Zomato, paid with UPI, with a note that the same amount was already logged today

Sample data. Ledger reads the SMS on the phone, and points out when the same amount is already in your ledger that day.

Way 2: log every bank SMS automatically

This takes about two minutes, once. You'll need Ledger installed (it runs on iOS 17 or later).

  1. Open the Shortcuts app → Automation → New Automation → Message.
  2. Set Message Contains to debited. Add filters for sent, spent and credited, and choose Any, so every bank's wording is caught. Choose Run Immediately.
  3. Add the action Log a bank message (Ledger), and set its Message to Shortcut Input → Content.
  4. That's it. From now on, each matching message is logged as it arrives.

Messages that aren't payments, like an OTP, a balance alert or an offer, are ignored, even if they contain one of those words. The same message is never logged twice. New entries wait in To review on Ledger's Now screen, so you can glance over each one.

On iOS 27, Ledger can add a ready-made shortcut for you: Settings → Bank messages → Set up automatic logging. If your bank's messages say “sent” or “spent” rather than “debited”, add those words as in step 2.

Which banks it reads

Ledger's reader is tested on messages from HDFC, ICICI, SBI and Kotak, including the “Sent Rs…” style. Most other Indian banks use the same kind of wording. If a message isn't read right, you can correct the entry in To review, or paste the message into Quick log and fix it before saving.

What stays private

Log bank SMS with Ledger

Free on the App Store, for iPhone with iOS 17 or later.

Get Ledger on the App Store

Questions

Will this log OTPs or promotional messages?

No. Only messages that read as a payment become entries. An OTP, a balance or an offer is ignored.

What if I already typed the expense in myself?

Ledger notices the same amount on the same day and flags the new entry in To review, so you can check it.

Does the automation need the internet?

No. Shortcuts runs on the phone, and so does Ledger's reader.


More guides