I was currently developing a PoC of a "core banking system" in my current company, a pawn shop that generally offers lending services to retail customer and deposit services. We've built a legacy system since 1998 using FoxPro DOS and this year we have successfully rewritten our platform using Java Spring Boot. As time goes by, our management started to introduce development plans for "electronic banking" platform, such as mobile apps for customer, which include some features like account inquiry, deposit withdrawal to bank account (integrating with payment gateway service), online loan repayment, etc.
Our current system depends heavily on daily "end-of-day" batch process, which include computation for: generating daily trial balance from journal entry, standing instruction for loan repayment via deposit account, daily accrual and amortization computing, etc. Our system also has a separate "system date", that were different with the actual date. The system date was incremented after end-of-day process and was skipped on public holidays and Sundays.
As we introduce our mobile services, we started to have some problems on integrating the platform with our "core banking system", like: The deposit withdrawal feature on mobile apps where achieved by integrating our system to bank's API, where we deposited some funds (nostro account) to that bank, so basically when a customer withdraw their deposit, the system will generate this journal entry (Dr. Customer Deposit A/c, Cr. Nostro Account). Due to regulatory requirements, we must reconcile our nostro account so the balance stated on bank's statement was same with the balance shown on our system. This reconciliation process sometime takes one day to be done, so it must be done by doing a back-dated journal entry. As we were generating trial balance daily on the batch process, back-dated entry would be tricky because we must re-generate the trial balance from the entry date until current "system date". Have we done the right thing on handling this case? Because the another method that would make this back-dated transaction easier was to remove the "trial balance" table and calculate account balance on the fly every time it was needed, but on the long run the account balance inquiry will getting slower as the number of rows of the journal entry increases
While integrating the transactional features on the mobile apps to the "core banking systems", currently we inserted the transaction to a separate database for the mobile apps API and asynchronously create a journal entry in the core system related to the transaction (for example, for a repayment transaction, the journal will be Dr. Nostro Account, Cr. Loans and Cr. Interest Income). Is this a common way to integrate a mobile banking app to the core banking systems? Related to the reconciliation process, should we do all the mobile app transaction journal into a separate suspense account, and move the suspense account balance to the nostro account upon daily reconciliation process? I think this method would also apply if in the future we would introduce some integration into card network system or ATM system.
I've searched for some resources on the internet related to this topic, but unfortunately there aren't many resources that discussed about this, i think because some of it were involving "secret sauces" of each institutions. Thank you in advance for your kind help :)