Heavily inspired by Actual Tap but written in python using Actualpy and a added a few enhancements.
Special thanks to @MattFaz for the initial Actual Tap work!
Automatically create transactions in Actual Budget when you use Tap-to-Pay on a mobile device
Actual Tap uses FastAPI that utilises the Actualpy to create transactions.
The primary purpose of Actual Tap is receive a POST request from mobile devices (.e.g iOS Shortcuts) when a Tap to Pay transaction is made. Once the POST request is received Actual Tap will POST the Name and Amount to Actual Budget.
In addition, there is a sample configuration file that allows you to map between the Tap to Pay account and your Actual Account ID. It can be used as a template to create your own config.yml within the same directory.
Ideal flow:
- Mobile device is tapped to make a purchase
- Automation on mobile device is triggered
- POST request containing transaction information (merchant, amount, and card) is sent to Actual Tap
- Actual Tap creates the transaction in Actual Budget
Notes: This is in active / heavy development, issues, pull requests, feature requests etc. are welcome.
To run Actual Tap locally (i.e. for development or not containerised):
$ cp config/config.yml.sample config/config.yml- Edit the
config.ymlfile accordingly - Run locally using
uvicorn main:app --host 0.0.0.0 --port 8000
To run Actual Tap in docker ensure you edit variables in the docker-compose.yml file.
- Note: You will also need to update the volumes path
The app will be running on port 8000
- Import these 2 shortcuts:
- Open Shortcuts app
- Edit the Wallet to ActualTap - Shared shorcut
- Under the Dictionary block, modify the following values
Key Text Example ActualTap URLThe URL of your ActualTap instance followed by /transactions/https://actualtap-api.com/transactions/ API KeyThe api_keydefined in your configuration file527D6AAA-B22A-4D48-9DC8-C203139E5531
- Under the Dictionary block, modify the following values
- Now, Create new Automation to Run Immediately
- When:
- I tap any of x Wallet passes or payment cards
- Do:
-
Receive transaction as input
-
Dictionary
Key Text amount(shortcut Input -> Amount) card(shortcut Input -> Card or Pass) merchant(shortcut Input -> Merchant) name(shortcut Input -> Name) -
Run shortcut -> Wallet Transactions to JSON - Shared
-
Run shortcut -> Wallet to ActualTap - Shared
-
- Create a blank
wallet.txtfile at the root of your iCloud Drive folder - To prevent duplicate transaction issues, make sure to set the
wallet.txtto "Keep Downloaded" at the root of your iCloud Drive folder in the Files app.
TBC