To demonstrate the power and flexibility of the CoreWallet accounting processes, the Virtual Transaction feature of the DemoWallet is a showcase for non-emoney businesses.
It is widely known that opening bank accounts and processing real world bank transfers do have a cost (time, money), which can be partly avoided using so called “virtual accounts”. Virtual accounts are, in a simplified way, a sub-ledger, which can be consolidated to provide data needed to perform real world transactions or analytics. Virtual transactions are therefor transactions between two virtual accounts.
Virtual account management can be provided using CoreWallet, due to the highly configurable accounting layer, which is technically decoupled from the wallet part. Although we utilize wallet entities and processes as well in this demo, there is no emoney involved. We do utilize wallet features since they provide convenient account-management in multi-currency via the wallet account management. Creation of transactions is a manual process in the demo, but of course in real world cases these would come from other systems.
To highlight the multi-currency capabilities, there are two currencies configured for this demo. One is HKD (Hong Kong Dollar), with an precision of eight decimal digits. Although HKD is defined with less decimal digits (1 HKD = 100 cent), for the accounting it is relevant to be able to handle sub-granularity transactions. The other is a virtual currency called ‘AAR’, which is configured to have a precision of four decimal digits. Respective currency-accounts will be created automatically while performing virtual transactions.
Building Blocks of the Demonstration
The demonstration consists of three different applications:
To enable this demo, a new persistent entity called “Virtual Transaction” has been implemented in the product layer.
A virtual transaction can represent any kind of real world accountable event, like a liability between two parties, a fee or similar. Based on the event type, balance transfers can be configured. As visible through the Transfer Demo UI and Admin UI, the available “Liability Transaction” will produce a certain trace in the system on each business layer (wallet, accounting). This is easily extendable with new types of transfers, so that more business cases can be represented.
Additionally, a trivial netting and clearing functionality has been added.
The “Netting” will calculate the resulting saldos between all accounts based on the account balances, and provide the data reflecting the accumulated transactions between partners. This data could be used for example to create a SEPA-credit file to take care of the real world money transfers resulting of the accountable events. For example, one liability of 5 HKD from Wallet A to Wallet B, and one liability from Wallet B to Wallet A of 3 HKD, would result in one real world transaction which states that Wallet A owes 2 HKD to Wallet B.
The “Clearing” internally makes use of this data to create so called “Clearing Transactions” which will eventually “zero” all accounts. All APIs that have been implemented to enable this demo can be viewed here: https://demowallet.trimplement.com/api/swagger-ui.html in the “virtual transaction admin controller” section in the “demowallet admin v2” group.
Transfer Demo UI
The Transfer Demo UI is solely built to be able to create new virtual transactions, trigger the netting and clearing, and view the results. The UI is not part of CoreWallet. Creating virtual transactions in this demo is a manual drag and drop process. Virtual transactions are performed between two wallet accounts of two wallets. One can drag and drop between the wallets visible on the screen, and will be prompted to input transaction details (amount and currency), where the fields are prefilled randomly to provide easy usage. After creating one or more of these transactions, one can click on the “start netting” button on the top left to proceed further in the process.
A new section in the Back Office, called Admin UI, has been added, where you can view virtual transactions and the linked entities like wallet accounts and transfers. Clicking on these “info” buttons in the demo-UI will open the respective admin page in a separate tab:
You can read more about the Admin UI in the Admin UI section.
How do Virtual Transactions work exactly?
Virtual Transactions use the Balance Transaction feature of CoreWallet to access the accounting capabilities. A balance transaction performs a balance transfer between two accounts like a credit or debit. The “Liability Transaction” in this demo is represented as a debit from one account to another and the “Clearing Transaction” is a credit. For the system it is not relevant where accountable events come from, as long as an API integration is possible. For the demo we decided to use a simple drag and drop approach, so that one can produce “Liability Transactions” and try out the netting and clearing.
Try it out
To make use of this demo you need to login with an administrator user account. Please contact us for access.
After login you will be presented the main screen. Please note that the transactions that are shown can differ from the below example.
The “Partners” below the menu-header represent wallets that are available for this demo. You can drag and drop between these wallets/partners in order to create new transactions. Once some transactions are created, one can use the “Start netting” button to proceed further. Please note that the liability transactions here are shown as black arrows and the clearing transactions are shown blue. To reset the state you can use the delete-all function via the trash bin symbol on the top right in the menu-header. It is possible to create more wallets using the (+) button located on the right side of the wallets.
Screen 1: Overview after login
Screen 2: Prefilled random values when creating a new virtual transaction
Screen 3: Example of a netting-overview