Using the Bricknode API is extremely easy, especially in a .NET environment. The following video demonstrates how to build a simple console application to collect customers from an instance of Bricknode Broker and then listing customer numbers.
This is for all you FinTech entrepreneurs who would like to give the likes of Revolut, N26, Lunar and Klarna a run for their money. In this article I will demonstrate how to literally configure a new subscription to Bricknode as a core banking system to start managing current accounts within 30 minutes and at a fraction of the cost that legacy suppliers charge.
We love to empower entrepreneurs so they can bring new solutions to the market at lightning speed.
First I simply signed up for a subscription at www.bricknode.com and I got the logins for the system the same day.
Now, if I wish I can take care of everything myself or I can ask for help from the customer success team. Starting a current accounts business is extremely easy and this article explains everything that you need to do to get going.
As a first step you will probably already have established a relationship with a bank, or “Custodian” as we call it, where you have an account for client assets. This account has to be created in the Bricknode system as a custody account so the system knows where the assets are stored in the world outside of Bricknode.
Basically the only concept that you really have to understand before you start is what we call Account worlds and Dimensions, that’s it.
Here is an illustration.
The “Internal accounts” are your individual customers accounts, your partners accounts and could also be your own accounts, we call you the “House”. All the assets that reside in the Internal accounts has to be backed up by assets in the outside world, like cash at a client account at a bank.
In Bricknode Financial Systems (BFS) I have now received access to four interfaces, these are:
In the screenshots that follow I will reference which interface they are coming from with BackOffice, Partner, Customer or API.
Let’s have a first look at BackOffice to set up your first Custody account.
When you first log on you will come to the Dashboard, which you can easily customize with regards to the widgets that you see.
Locate the House View in the upper right corner.
To create a new account simply click on the Create button.
In the resulting dialog I will select Custody Account as the Account Type and I will name the account Bank 1 Client Assets, we are going to store the actual IBAN number of the custody account as a property on the account but it is recommended to include parts of the account number in the label so you can easily identify the account going forward.
Within Bricknode an account can hold any asset so we are not limited to having one account per currency, which a lot of traditional banks seems to be limited to because of legacy systems. We do have to set a base currency on the account though because this is used for calculating account returns in percentage terms, we do not have to deep dive into that here though.
If your bank/custodian limits you to one custody account per currency, no problem, just set up more custody accounts within Bricknode to reflect that.
Now the first custody account is created and I can progress to the next step.
Within Bricknode it is possible to manage any financial asset/instrument that I know of, in this article though I will only discuss traditional currencies. Any account can hold any type of asset but for currencies I want to configure a default custody account for ease of use and I also want to activate a certain number of currencies. Let’s navigate to System Data->Currency Management for this.
Within Currency Management I see that there are 33 currencies available by default but I have set a lot of them to Closed. I have the option to open currencies with different permissions to make them available to BackOffice, Partners and/or Customers.
To start with I have enabled four currencies and I use the same default custody account for all of them.
In this article I am working with a partner relationship where a user called Bricknode Partner is bringing in business and the first customer is called Bricknode User. Creating these users manually in Bricknode is very easy, simply navigate to User Management and create the users through the creation buttons.
Repeat the same process as above for creating the customer manually. Through your own customer facing apps or websites you would be doing this using CreatePersons in our API. If you use DotNet you should get our NuGet package where you have everything already implemented.
Let’s navigate to the customer within BackOffice and create a simple account. When you use the API you would implement the function called CreateAccounts for this purpose.
The transactions relating to deposits and withdrawals would probably come automatically from an integration with a payment service or the custodian but here I will illustrate a manual deposit. Click on the action menu for the account and select Deposit Money.
The resulting dialogue will default to the right custody account and set the Trade Date, Settlement Date and Value Date to today. I have entered a deposit of EUR 1,000.
The balance and the transaction will now show up in the Overview within BackOffice.
On the customer account I have set up a relationship with the Partner user.
And I have also set up a Power Of Attorney with “View” permission which will enable the Partner to see what is going on in the account. When you use the API you would implement the method called CreatePOAs.
On the dashboard, which the partner can arrange and add widgets to, the customer account can be seen and the related transactions.
By clicking on the customer the partner can drill down into the details.
If you do not have your own app or website ready you can let your customers log on to the standard customer portal where full interaction can take place and the content can be fully configured by the administrator together with branding.
The final step is the reconciliation of accounts that should occur daily. Remember the Internal and External accounts, the first I will check is the total balance of the Custody Account against the account statement that I get from my bank/custodian. To view this I will navigate to Positions->Cash.
Now I will filter on the transaction dimension Settlement and enter the balance date of what I would like to reconcile and also select Custody Account as the Account Type.
Here I see that EUR 1,000 is present in the custody account which should align with the account statement from the bank/custodian. If it does not I can click on the account and drill down into each transaction to see where the difference comes from.
Now when I know that the External account is fine I want to know if these assets are correctly spread out across Internal accounts too and for that I want to activate the Add-on that we call Reconciliation Manager. By navigating to the Marketplace I can request a trial of this Add-on right away.
The Reconciliation Manager is now activated and available in the House menu.
From the reconciliation overview I can drill down into each transaction if I wish by clicking on the House icon in the list.
Now I am all set and can continue doing business!
I love metaphors! They are extremely useful for explaining new concepts before they gain mainstream recognition. Like the Ents in Lord of the Rings I also think that if things are not worth taking a long time to do, they are not worth doing at all.
We have built a real operating system for financial activities, the same way that Microsoft built an operating system for the computer. It took us 10 years to build this thing and for the next 10 years our plan is to become something for everyone.
Windows harnesses the communication with the computer and standardizes how you use the processor, memory, storage and much more. Bricknode standardizes how you perform financial activities of any kind. Trading stocks for us is like storing data in computer memory for Windows. Initially Microsoft had to create their own applications on top of their own operating system as well, like office. We have created “office”-like applications like Bricknode Broker, Bricknode Fund Manager, Bricknode Lending and a few more to perform specialized financial activities and we are just getting started!
Are you a startup FinTech company? Get in touch with us, just as a new software developer would not start off by developing a new operating system we can deliver it to you and you do not have to concern yourself with the nitty gritty details of communicating with the CPU, you can get started right away with building the business logic and customer experience.
Are you an industrial company with 20 shareholders where you are going to manage a shareholder loan with interest calculations and monthly payouts? We have the “office”-application for you!
We deliver the software in the way we think that financial software buyers should be able to receive software in the 21st century. Delivered the same day, no strings attached and completely composable and scalable. You activate the stuff that you need when you need it, just as the App Store, and you pay only for what you use!
Launching a financial service company or managing financial activities have never been easier. If you want to build your own applications for managing financial activities come join our marketplace and we will give you a free setup of Bricknode Financial Systems right away as a developer. Just as with the App Store you can build and market your own business on top of ours.
Let’s start the operatingsystemfor.finance-revolution together!
In order to simplify things and make this method (CreateInternalInstrumentTransferOrders) less error prone we have removed the two properties AcquisitionPrice and AcquisitionPriceAccountCurrency. Instead we calculate these from their corresponding value-properties: AcquisitionValue and AcquisitionValueAccountCurrency.
But don’t worry, we will not make any breaking changes for you but instead deprecate these properties in the API method in the near future. Be aware though that these properties will not correspond to any functionality.
AcquisitionPrice = AcquisitionValue / Units
AcquisitionPriceAccountCurrency = AcquisitionValueAccountCurrency / Units
We also let the user decide if they want the system to use a default behavior to set the Acquisition values or not. If the properties AcquisitionValue and AcquisitionValueAccountCurrency are submitted with any values apart from null we will use the formulas above to set their corresponding Acquisition prices on the order. However, if these values are submitted as null, the system will default these values on the order. The Acquisition values set on the order will be as follows:
The acquisition values on the transactions placed on the account where the asset is transferred from, will always be calculated from the acquisition price taken from its origin position.
The transactions on the account where the assets are transferred to will depend on whether the order will result in a technical trade or not.
If the order will result in a technical trade the acquisition values will be calculated from the current price of the asset that is transferred. An order that will not result in a technical trade will calculate its acquisition values from the current position and will therefore obtain the same values as for the transactions placed on the account where the asset was transferred from.
Many of our customers use Autogiro to automatically collect cash and send cash to end customers and they also use RecurringOrderTemplates to work with recurring savings. Until now it has been difficult to retrieve the generated AutoGiroOrders to check on the resulting orders but now we have just published this new API method which you can read about here.
In addition we also added a new property to GetTradeOrders where you can now filter on a property called FourEyesStatus and get information about it in the response. FourEyesStatus tells you if the order has been approved by a second person if you have this in your process for order entry.
Finally we added the response property AccountTypeKey to GetPositions. Up until now it has only been possible to filter on this property but in many cases when working with positions in the API you would like to know what account type each order is associated to. Historically the only way to get this information has been to also collect all the accounts by using GetAccounts which introduces unnecessary complexity to this simple requirement.
Our customers are adopting the use of our API faster than ever which makes us extremely happy! Even though we think our API is rather extensive we are developing new functionality at record pace and we also found a way of making new API releases disconnected from our other releases while moving towards full CI/CD.
As an example we just now released a new method in our API called CancelTradeOrders which can be used to cancel regular trading orders before they have been executed or received allocation from portfolio management. In connection with this we also released version 4.0.1 of our NuGet package which includes this new functionality.
As long as the introduced functionality does not introduce breaking changes or database changes we can do this stuff in a much faster way then before, let us know if there is urgent API functionality for Bricknode Broker that you need and we will have a look!