English · Русский · Deutsch · Español · Français · 日本語 · 中文

Logging expenses automatically where banks connect to nothing

Every budgeting app's best feature is automatic import, and outside the US, UK and EU it almost never works. Banks in Serbia, Georgia, Armenia, Kazakhstan, Turkey and most of the world connect to no aggregator at all. But every one of them still sends a text message the second your card is charged, and that message has the amount in it.

Why the usual import is missing

Automatic import rests on Open Banking — a regulation that forces banks to publish an API, and a layer of aggregators that resell access to it. Both exist in a handful of markets. Where the regulation never arrived, there is no API to connect to, and no amount of app engineering changes that.

What does exist, everywhere, is the SMS your bank sends on every card payment. It is not a standard, each bank writes it its own way, and it is the only universal signal left.

Reading it without reading your messages

iOS gives no app access to Messages, and that is a good rule. The way around it is not to break it but to use Shortcuts: you set up an automation that fires on a message from one specific sender and hands that one message's text to the app.

Nothing else is visible to the app, nothing is sent anywhere, and the parsing happens on the phone. The app receives a string, pulls a number out of it, writes an expense, and that is the end of it.

How to set it up

  1. In Walletable, open Settings → SMS parsing.
  2. Open Shortcuts → Automation → Message.
  3. Set the sender: your bank's number or name, exactly as it appears in Messages.
  4. Add the Parse bank message action and pick the wallet the expenses should go to.
  5. Turn on Run Immediately, so you are not asked to confirm every message.

Teaching it your bank

Since every bank writes differently, the parser learns yours from two examples. You paste two different messages of the same kind — two purchases, different shops, different amounts — and whatever matches in both becomes the fixed part of a template, while whatever differs becomes the fields: amount, currency, merchant, card, date.

Two are needed because one message cannot show what varies in it. After that, messages of that shape become expenses on their own. Anything the app does not recognise goes to a confirmation list instead of being guessed at — the full walkthrough is in the help.

Questions

Does the app read all my text messages?

No, and it cannot. iOS gives no app access to Messages. The automation you set up passes the text of one message from one sender, and only when that message arrives.

Are the messages uploaded anywhere?

No. Parsing happens on the iPhone, inside the app. Messages are never sent anywhere and never leave the device.

Which banks does this work with?

Any bank that sends payment texts, in any language, because you teach the parser on your own bank's messages instead of picking from a list of supported institutions. Two messages of the same kind are enough.

What if the bank changes its message format?

The old template stops matching and those messages start arriving in the confirmation list rather than being created wrong. You teach a new template on two of the new messages.

Is this safer than connecting a bank account?

It is a different trade. There is no account access to grant and no credentials to store anywhere, because the app never touches your bank — it only ever sees the text of a notification you already received.

Read next

Multi-currency, properly · After relocating · Exchange rates · Debts between people

Walletable on the App Store: App Store

Help: How it works

Support: Get help

© 2026 Walletable. All rights reserved.