Real payee names
UPI, NEFT, IMPS, card and ATM lines become one clean payee each, so reports by payee and category learning work.
Actual has no bank sync for Indian banks, and is unlikely to get one soon. Reading bank data in India goes through the Account Aggregator framework, which is open to registered financial institutions with a commercial contract, not to a free open-source app. So the route is to download a statement and import it. india2actual makes that painless.
npx india2actual statement.csvIt reads CSV, Excel and PDF statements (including password-protected PDFs) and writes a file you can import into Actual. You need Node.js 22.14 or newer.
Your bank describes two orders from the same shop with a different reference number each time, so Actual sees two payees:
| What your bank writes | What Actual gets |
|---|---|
UPI/DR/412345678901/SWIGGY/YESB/swiggy@ybl/Payment |
Swiggy |
UPI/DR/419876543210/SWIGGY/YESB/swiggy@ybl/Payment |
Swiggy |
The bank’s original text is kept in Notes, so nothing is lost.
Real payee names
UPI, NEFT, IMPS, card and ATM lines become one clean payee each, so reports by payee and category learning work.
Checks its own work
Every amount is checked against the statement’s own balance, or a card statement’s printed totals. If it does not add up, nothing is written.
Credit cards too
Card statements are read with the right signs, payments are recognised, and a card payment can be linked as a transfer with your bank account.
Import or push
Write a CSV for Actual’s import dialog, or send the transactions straight into your budget.
Safe to re-run
Importing overlapping statements does not create duplicates.
Stays on your machine
Nothing is uploaded. The only connection the tool ever makes is to your own Actual server, and only when you ask it to push.
Tested on real statements: ICICI (savings and credit card, PDF), Federal Bank (savings, PDF), IDFC FIRST Bank (Excel) and CSB Bank (CSV). Other banks are expected to work but are not yet confirmed. See the full list in the docs, and if you try one, a report of what worked or failed is very welcome.