This is an index of open-source code and demos of apps and systems built and shared by the Programmable Banking Dev Community.
🚧 This readme is always being updated - view it as a work in progress - like all awesome things 🦄
Let's make Open Banking a reality by building, sharing reusable software and connecting!
If you're looking for something to build, or want to challenge the community to build something. The intention of the Build Challenges is to incentivise the creation of "building blocks" in the form of reusable libraries, utilities and code snippets. This should reduce the effort required for others in the community to build personal and business projects.
Project Name | Description | Author |
---|---|---|
Mock API simulator | Mimics the programmable banking API service for local testing. | Devin Pearson |
CLI card code emulator | Write and test programmable card code in a safe environment. | Devin Pearson |
- Hackathon Build Submissions
- Built with Investec Business Banking
- Built with Investec Open API
- Built with Investec Programmable Card
- Collection of demos
- Some Useful Resources
We've seen some awesome bounty challenge submissions. Check a few of them out below:
Full Name | Snippet Name | Documentation | Description |
---|---|---|---|
Peter Smythe | Swipe 'n Save | Documentation | Demo code integrating the Private Banking API (OAuth2) with the Card API. |
Amery Winter & Peter Smythe | CarbonCooler | Documentation | Tracks carbon footprint of fuel purchases and invests in carbon offset initiatives. |
Peter Smythe | Virtual Card Fortress | Documentation | Shifts recurring subscription payments to a separate virtual credit card. |
Roberto Aldera | Payment Pinger 💸 | Documentation | Posts payment details to Telegram for card payments and includes anomaly detection for non-ZAR transactions. |
Matt van Niekerk | Teleidop | Documentation | Uses Investec's Programmable Card feature to send transaction notifications via Telegram. |
Dominic Santo | Card To Sheet Sync | Documentation | Sends card transactions to a Google Sheets document. |
Melody Mbewe | 🎄 Investec API Wrapper: Your Festive Helper! | Documentation | A simple PHP wrapper for Investec's Private Banking and ICIB APIs. |
Bounty Submissions | Business Banking | Open API | Programmable Card | Demos | Resources
Hackathon Date | Team Name | Description | Open Source Repo | Demo Video |
---|---|---|---|---|
Q4 2020 | Ziggy | Our solution gives users a fun and practical way of developing better spending habits, through individualised objectives and instant progress feedback. | Ziggy | Demo recording |
ECSMS : Employee Card and Spend Management System | Companies will be able to integrate their HR system with our platform to allocate cards to specific employees. The HR or Payroll departments will be able to customise allowable expenditure in various ways and automatically decline all card expenses if an employee was terminated on the HR system. | ECSM | Demo recording | |
CardShark | Our product allows businesses to easily restrict and manage the use of Investec credit cards at specific merchants. Parent’s can restrict their children’s spending, universities can make sure that funds are spent in bookshops, and transport businesses can allow their vehicles to be filled up at any garage. | CardShark | Demo recording | |
Budgie | A platform on which a variety of tools can be built to make use of individual as well as anonymized collective transaction data | Budgie | Demo recording | |
Home Assistant Integration | Your personal finances are placed at your fingertips, or peripheral vision, depending on how much you like your Home assistant. This could allow you to better track your financial goals, on a day to day basis. Every drop in the bucket helps, why not count every penny to secure your financial future. | Python Library: and Home Assistant Integration | Demo recording | |
Snack or Save | Initially block purchases by category to help counteract impulse spend. | Snack or Save | Demo recording | |
SafeWord | Block online trial subscriptions from billing you via a blocklist. | SafeWord | Demo recording | |
Investec Wealth Projection | Investec’s Wealth Projection, shows you long term benefits of short term spending patterns, and how it affects your financial wellbeing. | Investec Wealth Projection | Demo recording | |
Q2 2021 | Insert-name-here | Open Source Participation Tokens: A mechanism for contributors to be fairly and transparently recognised for their contributions to projects. | Trophies | Demo recording |
Snitch | Automatically track subscriptions on multiple credit cards. Maintain a list of subscriptions to update once a credit card expires. | Snitch | Demo recording | |
CSTech | A web solution for Investec clients to create their own rules using a web interface. | Card Guard | Demo recording | |
Bits&Bytes | An app to allow teams to add members, and elect an employee for ”Employee of the Month” The solution will auto pay the winner at the end of each term. | In-cent-ive | Demo recording | |
Q4 2021 | DivZero | Ingests and categorizes transaction and balance data extracted via the Investec Open API. | BankBot | Demo recording |
Jan | Automatically track usage of items and then transfer savings contributions based on the usage, item life expectancy and replacement value. | Run to the Bills | Demo recording | |
Frikkie | Keeping a minimum balance in our transactional account, we put all our money in our savings/loan account. If we swipe our cards, or a debit order goes off, we transfer money back from the savings/loan account to our transactional account, preventing us from using our facility. | Investec Interest Maximizer | Demo recording | |
Cache Yo Cash | Track transactions on a primary business account and provide a UI mechanism to process transactions and add details on their tax relevance. | Cache Yo Cash | Demo recording | |
Peter & Tiaan | Automatically detect when a large deposit (e.g. a salary) is made into the Investec Transactional Account, and move it to the (home loan) account. Thereafter, move the money (or part thereof) back when needed (e.g. when the balance drops below a threshold). | Home Loan Interest Saver | Demo recording | |
Something Bubbly | Scheduling transfers as a portion of revenue, based on legislation or percentage of account credits. | Bubbling | Demo recording | |
Members 404 | Keep money in higher interest bearing accounts, round up transactions and save the difference. | Bank My Change | Demo recording | |
Q2 2022 | ProSSBanking | Spreadsheet Banking: A single source of financial truth. | ProSSBanking3 | Demo recording |
AI Budget tracking | Spreadsheet Banking: AI Budget tracking Spreadsheet. | Budget Tracking | Demo recording | |
ZATechRadio | Spreadsheet Banking: AI Powered Transaction Categorizer. | ZATechRadio | Demo recording | |
CaptainPlanet | Spreadsheet Banking: Turning spending into saving… Mother Nature ❤️. | CaptainPlanet | Demo recording | |
Telegrammetry | Spreadsheet Banking: Your own 24/7 private banker. | Telegrammetry | Demo recording |
Bounty Submissions | Hackathon Builds | Open API | Programmable Card | Demos | Resources
Open Source Repo | Description | Tech Stack | Author |
---|---|---|---|
Team Spend Tracker | Financial recon for teams using who use Investec Business Banking and the Open API. | Ruby on Rails, PostgreSQL, Heroku | @OfferZen |
Bounty Submissions | Hackathon Builds | Business Banking | Programmable Card | Demos | Resources
Open Source Repo | Description | Tech Stack | Author |
---|---|---|---|
investec-api-python | Python client for Investec Programmable Banking | Python | Tai Lucas |
NPM_my_API | An NPM module to interact with Investec's Open API. | NPM | Frikkie Snyman |
The Maintainer | Moves money into your PrimeSaver every 5 minutes, so that you can maximise that interest every month | Python | Rijnhardt Kotze |
investec-openapi-wrapper | A python wrapper for the IPB OpenAPI Personal Banking API | Python | Anri Goosen |
investecOpenAPI package for Golang | A Golang package for Investec's API | Golang | Amnon Melzer |
Investec Programmable Banking Open API Simulator | A nodejs server to get eveyone building and demoing regardless whether you have an account. | Node.js | @devinpearson |
Investec Bank GraphQL | GraphQL API for Investec Open Banking | F#, .Net Core, GraphQL | @naartjie |
Investec to Sage One | Sync Investec transactions with Sage One accounting. | FastAPI, Sage API, Python, Heroku, Python Investec OpenAPI Wrapper | @imraanp |
SparaBox and SparaBoxFlutter | Personal budget app to explore the potentials of programmable banking. | Spring Boot, Keycloak, Flutter, Android | @RendaniDau |
investec-openbanking-dotnet | C# Open API wrapper. | C# | @dalion619 |
Java Wrapper for Investec Programmable Banking Open API | Java Open API wrapper. | Java | @vchegwidden |
investec-openbanking-python | Python Open API Wrapper. | Python | @vchegwidden |
investec-openapi | JavaScript Open API Wrapper. | JavaScript/TypeScript | @barrymichaeldoyle |
openbanking-investec-dashboard | Component based dashboard configurable by user. (slides), (demo) | Blazor WebAssembly, Entity Framework, .NET Core, ML.NET, SQL DB, Azure Functions | @pivendren |
Investec Open Banking CLI | An interactive CLI application for communicating with the Investec Open Banking APIs. Built with Deno. | Deno, TS | @adrianhopebailie |
Ruby Gem and Wrapper | Ruby Gem and Wrapper for the Investec Open API. | Ruby | @OfferZen |
Elixir Package | Elixir Package for the Investec Open API. It can also be used as a Wrapper for the API. | Elixir | @theodowling |
Python CLI | Python CLI Wrapper for Investec Private Bank Accounts. | Python | @banshee |
API library for Clojure | Clojure wrapper for Investec's Programmable Banking API. | Clojure | @Walter |
Bounty Submissions | Hackathon Builds | Business Banking | Open API | Demos | Resources
Open Source Repo | Description | Tech Stack | Author |
---|---|---|---|
Subtrack | A kick-ass webapp that is a subscription management for you and your business. | Tools: JavaScript, framer | @nicbotes |
Card-notifier | A simple script that gets executed once a transaction has completed that notifies an external service. | Tools: JavaScript | @dominicsanto |
Savings Roulette | Random transaction rejections funnelling into savings. You control the rules! | Tools: JavaScript | @FrikkieSnyman |
Card Guard | Web solution for Investec clients to create their own rules using a web interface. Non technical account holders have the opportunity to configure their own rules. Banking app users have greater control over where and how they want to transact. | Tools: C#, TypeScript Components: ASP.net, Angular | CSTech |
Command center bridge | A bridge solution for other programmable banking solutions that enables a single point of contact for approval determination and secure transaction forwarding to other APIs. Constructed in conjunction with aws-cdk-js-dev-guide. | Tools: CDK (a mix of TypeScript and Javascript) Components: AWS: api-gateway, lambda, sqs, dynamodb | @fisher.adam.online |
Investec Query Bot | A NLP service for interpreting transaction data from Investec Programmable Card API 🤖 | Python, Flask, SQLAlchemy, Rasa | @lebo0 |
pdb-investec-transaction-insights | Store programmable card transactions in Google Sheet | AWS Serverless, Google Sheets | @grimx13 |
programmable-banking-glow | First iteration of a team spending dashboard. | JS, Google Script | @jethrof @jeriko1 |
InvestecPOC | Store programmable card transactions in S3. Can be extended to trigger processing on object creation. | C#, Swift | @WernerPereira |
ur-command-center | Infrastructure to save programmable card transactions into S3. | C#, Swift | @dale10 |
investec-logs-functions | Store programmable card transactions in Firebase. | JS, Firebase | @JeremyWalters |
investec-logs-web | A Vue frontend for Firebase (builds on investec-logs-functions | Vue | @JeremyWalters |
investec-command-center | Process investec programmable card transactions via GCP services | GCP, JS | @bezchristo |
programmable-banking-rules | A Blazor WebAssembly app that uses a Warewolf back-end to allow the customization of rules for accepting/declining transactions using Investec's Programmable Banking platform. | Blazor WebAssembly, Warewolf | @HagashenNaidu |
ynab-sync | Sync programmable banking card transactions with YNAB. | YNAB, Python. | @ferdis |
programmable-banking-power-bi-template | Sync programmable banking card transactions with PowerBI. | PowerBI | @dalion619 |
programmable-banking-cf-worker | Cloudflare worker. | Cloudflare | @dalion619 |
Go Backend | Go backend for programmable card transactions management. | Go | @donohutcheon |
React Frontend | React frontend for programmable card transactions management. | React | @donohutcheon |
Telegram to Wave Receipt Capture | A hack to remind you via Telegram message to send your receipt to Wave Receipts. | Telegram Bot API, Wave Receipts, Email | @benblaine |
Bounty Submissions | Hackathon Builds | Business Banking | Open API | Programmable Card | Resources
We meet every last Thursday of the month at 6:30pm over Zoom to see demos from community members. Come support us :)! Watch all past recorded Meetups here. and newly recorded meetups here.
Demo | Open Source Repo | Description | Tech Stack | Author |
---|---|---|---|---|
Watch Consuming about GraphQL in the Browser | As a follow up to his presentation GraphQL Wrapper for Investec open API, Marcin took us on a deep dive into the frontend developer experience. It was a really insightful session. If you want to learn more about the power of GraphQL and get some ideas of what you can do with the Investec Open API then you should check it out. Thanks Marcin!. | ** | Marcin | |
Watch or Read Transaction Event Listening | Slide deck - Renen Watermeyer shows how he built a system that checks an account via the Investec OpenAPI to find new transactions every minute. He also demos how he created a webhook mechanism to push new notifications to another service. | ** | Renen | |
Watch or Read about Temporary Store of Value | Slide deck - Lishen Ramsudh discusses the tool he’s been working on to streamline business operations and open up product possibilities through the use of a temporary store of value. The temporary store of value and automation of certain operations opens up a different trust relationship with a process being the custodian instead of hoping that a transaction is upheld. | C# DotNet Core 3.1, Postgres, Redis, Xamarin Forms, (eventually include Docker, AWS ECS Fargate and API Gateway, AWS Aurora) | Lishen | |
Watch or Read about Crypto Hedge | Slide deck - Christo Bezuidenhout shares how he built a tool to hedge his spending against the Rand using crypto. His goal was to see if he could build something to 10X using programmable banking. | Next.js, React, GCP (PubSub, Functions), Firestore, Auth0, Ant Design, Puppeteer. | Christo Bezuidenhout | |
WATCH: GraphQL Wrapper for Investec open API | Slide deck - Exploring functional languages to create a GraphQL wrapper for restful apis. This week he will take us through round 1, an F# implementation. | F#, GraphQL | @naartjie | |
WATCH: OneCart - Fraud detection and prevention | Slide deck] - Problem: OneCart has around 140+ shoppers working daily across SA. Each shopper has their own OneCart debit card and are fulfilling customer orders. They steal! Why solve this? Reduce shopper theft and be more proactive to shrinkage. Solution: Real-time alerts of suspicious activity on cards. | Investec Programmable Card, Serverless, Slack webhooks, QlikView | @michaellouis157 | |
WATCH: Client Creator] | Slide deck - How to use proto to create open banking clients. | protobuff | @mikewl | |
WATCH: Receipt Capture App | Slide deck] | Flutter, Flask, Firebase | @LoicAn21 | |
WATCH: O I CR What You Almost Did There | Slide deck - What it does: Problem: I don’t know if I’m spending too much money on cheese - and the info is lost with the receipts I wantonly discard. Why solve this? Figure out if I’m “over-cheesing”. Solution: My Friend “Bill” who reminds me to capture my receipts.. | Telegram Bot API, Email, Wave | @benblaine | |
WATCH: Investec @ Home | Slide deck - A quick and dirty experiment to get my Investec account to interact with physical devices or a smart home. | HomeBridge, Node.js, MQTT, HomeKit. | @avgjoe | |
WATCH: Investec Open Banking CLI | Slide deck - What it does: CLI for working with your bank account(s). No need to log into app or Web. Built to learn Deno. How it works: Very simple (one Typescript file). REPL (Read Eval Print Loop). Basic state held in-memory and shown in prompt (e.g. :closed_lock_with_key: vs :unlock:). Logged in (valid access token). Selected Account. Privacy mode. Auto-login if possible (looks in ENV variables for credentials).. | Deno | @adrianhopebailie | |
WATCH: Sync Investec to Sage One | Slide deck - What it does: Syncing transactions automatically from Investec into Sage One. The current methods of importing transactions are manual or where you have to give your credentials to a third party. How it works: Retrieves the transactions from both Investec and Sage to compare. Removes transactions already synced. Sage will have the transaction hash. Compares manually added transactions in Sage One to stop duplication. Imports the transactions that are left over.. | FastAPI, Sage API, Python, Heroku, Python Investec OpenAPI Wrapper | @imraanp | |
WATCH: Flutterflys in Spring | SparaBox and SparaBoxFlutter | Slide deck - Personal budget app to explore the potentials of programmable banking.. | Spring Boot, Keycloak, Flutter, Android | @rendani10 |
WATCH: OfferZen Finance App | Slide deck - Empowering the OfferZen team to spend money and helping the Finance team manage that spend easily and confidently. | Ruby on Rails, PostgreSQL, Heroku | @OfferZen | |
WATCH: Command center bridge | A bridge solution for other programmable banking solutions that enables a single point of contact for approval determination and secure transaction forwarding to other APIs. Constructed in conjunction with aws-cdk-js-dev-guide. | Tools: CDK (a mix of TypeScript and Javascript) Components: AWS: api-gateway, lambda, sqs, dynamodb | @fisher.adam.online | |
WATCH: Investec CLI Tool | REPO | Get accounts, balance and transactions in your CLI. | Python Tabulate, Python Fire (CLI) | @rpurdon-nf |
Shared Expenes | Slide deck - Simple sharing of expenses in small groups. Existing shared expense app needed Investec Programmable Banking to make adding expense easier.. | Rails, React, Redux, Postgres | @jethrof | |
WATCH: Money Report Dashboard Mirror | Slide deck Component based dashboard configurable by user. | Blazor WebAssembly, Entity Framework, .NET Core, ML.NET, SQL DB, Azure Functions | @pivendren | |
WATCH: Vanilla Transaction Dashboard | Go Backend AND React Frontend | Slide deck - Why create it? Learn stuff: Primarily Go. But also React, Heroku. Build a dashboard to record my spending habits. Create a platform upon to build something cooler. | React, Go, Heroku | @donohutcheon |
WATCH: Transacational Insights | programmable-banking-power-bi-template AND investec-openbanking-dotnet AND programmable-banking-cf-worker | Slide deck Data mining bank account transactions for meaningful insight. Low code approach that non-devs can use. | PowerBI, Cloudflare, Azure Functions, Investec Open API | @dalion619 |
WATCH: Toshigotchi | Slide deck - What it is: Create an emotional connection to your spending habits. Money is a very emotionally charged topic and there we should be ways to make it more personable & relatable so we can react better to various financial circumstances. | @jacousteau | ||
WATCH: Paper Budget | Slide deck: What it does: Sync transactions to YNAB budget and categorize them. Why create it? Keep budget up to date without manual intervention. | Starlette, React and SQLite | @ferdis | |
WATCH: Investec Query Bot | What it does: It takes a user’s input, defines their intent, extracts queryable information, and generates a query to the DB. Eg. Show me all my transactions in Cape Town above 400 during June. Why create it? I was unsure of what to do with the card data, so figured why not let the user decide what they want to do with it. | Swift UI (iOS), Ngrok, RASA NLP/U, SQLAlchemy, Python | @lebo0 | |
WATCH: Programmable Banking Rule (PBR) | What it does: Allows the creation of rules that can be used at present for accepting/declining a transaction. Why create it? Most banking apps only allow hard limits to be set on spend. The idea with this is to put the account holder in charge of the rules of the card.. | .Net Core, Blazor WebAssembly, Warewolf, Sql DB | @HagashenNaidu | |
WATCH: InvestecCMD | What it does: Sync transactions to Firestore as they come in. From Firestone, you can view you transactions in the iOS app as well as details of the transactions. You will also receive pushes when transactions are approved to the iOS App. Why create it? Great opportunity to learn how the Investec APIs works & to cut my teeth on a bunch of new techs I been dying to play with: firebase, cloud functions. typescript.. | Native iOS, Swift, Firebase (Firestore, Cloud Functions) | @WarrenFoxley | |
WATCH: Decentralised API | What it does: The goal was to create a decentralised API to handle incoming beforeTransaction and afterTransaction requests before storing the data. This allows you to execute logic prior to storing the data and before validating transactions. Why create it? The main goal was to allow for validation logic on a transaction based on externally defined criteria, eg: limit daily spend, limit per transaction spend etc. Also, this provided an authenticated basecamp on which to build logic. | Google Cloud Platform, Laravel | @cwbmuller | |
WATCH: HankApp | Hank is banking done right. Imagine a world where banking is an intuitive pleasure. It's our mission to make that world a reality. As banks open up their API's we aim to unlock their utility for the people. | Flutter, Firebase | @Chris.Fraser | |
WATCH: Investec Oracle | What it does: Routes data through cloud functions to Google pub/sub, to which I can add multiple subscriptions for different applications. Why create it? To serve as a base for all transactions to flow through and to which different applications can connect to to receive transaction data. I also wanted to have the ability to replay transactions, which Google pub/sub provides and make it easy for other users to be able to spin up their own command center with a few clicks. | Google Cloud Platform (Cloud functions, pub/sub, Firestore), Twillio, React, Zapper | @bezchristo | |
WATCH: Purple Pigger | Linked to the beforeTransaction function, PP checks all transactions (for now) and approves or declines them, to help you control budgets in certain periods. Keeping those wild nights, not too wild. I keep a mental count of my daily spending and how it affects my budget. Now I can get a machine to do it. Basically I'm lazy!. | Firebase, Svelte | @kamogelo.sebopelo | |
WATCH: Payments Splitter | An app that let's you split the bill for a transaction with a friend using their email address. | Node, AWS | [@Yashu Tanna](yashutanna @yashutanna) | |
WATCH: Investec Logs | investec-logs-functions AND investec-logs-web | System to log transactions to Google Firebase using NodeJS and a frontend view with VueJS. | Firebase | @JeremyWalters |
WATCH: Ur Command Center | Infrastructure to save transactions into S3. The idea is that S3 is the source of truth and this can be extended to trigger processing on object creation. That will come in a future iteration. | AWS, Terraform, Lambda, S3, Grafana | Dale Tristram @dale10 | |
WATCH: InvestecPOC | Mobile App to categorise expenses. | C#, Swift | @WernerPereira | |
WATCH: Receipt Scanner | Simple app to fire off messages from Go through Firebase Cloud Messenger. | Go, Firebase Cloud Messaging | @brian.entersekt | |
WATCH: Transappenate | A mobile app for storing and cateogrising transactions. | Appenate | @matthew.alport | |
WATCH: Singularity | Info management app, transaction logger, auto-create transaction with Investec Beta, charts to display spending. Third party lib: "QtWebApp HTTP Server in C++". | C++ | @lcoetzer | |
OfferZen's Spend Tracker | JS and Google Script Repo | This repo contains source code for our first iteration of a team spending dashboard, as demonstrated in the community update on 19 March 2020. | JavaScript | @jethrof @jeriko1 |
WATCH: PDB Investec Transaction Insights | This project utilises AWS Serverless and managed infrastructure to deliver transaction data to a Google sheet where I can draw insights from in near real time | NodeJS, Python | @grimx13 | |
demo | Slide deck - description. | Tech_Tools | @author |