GNU Cash is my perfect app for personal finances. It has all the features I need. It is fast. Easy to use. And it is not cloud-based. But it has one serious drawback: it doesn’t have a mobile application on iOS. I know that there is an Android application that covers all the main features of the app. But I was not able to find such an application on iOS. So here is - Link to the app
I wrote this app to use the necessary features of the Desktop app on the go. Here is a roadmap. I’m planning to implement it in any case, even if the app will not gain any interest in the community. But if it will, I will add new features to it. This app is intended to be used as a Pro version, there are no trial versions in the AppStore, so I have to make it free, but with limited functionality, so users can see that it works, and if there is any issue, they can contact me before buying the app.
The primary purpose of this post is to show my “perfect” workflow with GNUCash and GCash Mobile. Let’s start.
I don’t want anybody to be able to read the data from my GNUCash DB. But I still want to use my GNUCash Mobile easily, without any interruptions. So I’ve added functionality to the Pro version to import DB from any location on my iPhone. For me, such a location is Cryptomator. It has versions for all major platforms. The primary purpose of this app is to encrypt files I store in the cloud, but I can still access them on my iPhone. I’ve installed Cryptomator 2.0 on the phone, which is in beta now, but it is available at TestFlight. This version works with the Files app on iPhone and can be used as a source to import files. My DB is secured now! It is still possible to sync data between iOS and Windows/Linux systems. The easiest way is to use Cryptomator 2.0 supported cloud providers. The second option will be available in the next release of the app. I will add support for Dropbox synchronization.
2. Importing DB
As I said, I can import GNUCash DB files from any location if the Pro version is bought. But it is still possible to open a database in the free version. The app looks for DB files in “iCloud/GCash” or “On My iPhone/GCash” folders. All the files with the *.gnucash extension will be visible on launch (make sure that synchronization is completed and your DB files are downloaded to the device).
3. Creating transactions
After DB is imported, it is possible to create transactions if the Pro version is enabled. In the 1.0 version of the application, I can edit transactions made in the mobile app. But as I wrote in the roadmap, I will add functionality to edit transactions created in the Desktop version.
4. Export transactions
The next step is to export transactions from the app at the end of the day. Two ways available: Automatic and Manual modes. In the automatic mode application exports transactions when the app goes to the background. The drawback of this method is that it is possible to export the state of the app to iCloud only. I don’t want to store unencrypted transactions to iCloud. My way is to export the state to the specified location (cryptomator vault in my case) manually. This option is available in the settings.
4. Importing transactions to the Desktop application
As cryptomator is storing my files on the iCloud, I can see them on my MacBook in a couple of seconds after export. To import transactions to GNUCash on my Desktop, I need to open “Transaction Import Assistant.” It is available at File -> Import -> Import Transactions from CSV… Use “GnuCash Export Format” as preset, but keep in mind that GCash Mobile use “periods” as a decimal separator, so if a semicolon is used in your locale, change this option in import assistant.
5. Reimporting DB in GCash Mobile
After successful import of the transactions from a mobile device, I’m closing the app on my Desktop. DB syncs to my iPhone, and I am importing the DB to the GCash Mobile again. We are reimporting DB again to let GCash Mobile know that previous transactions were committed, and it should not export them again to prevent duplicates. It is possible to change database in the settings.