No, it doesn't create all the data. It relies on user input. If the customer is, say, paying in or withdrawing money, the cashier has to select the right type of transaction and enter the correct amount. If the customer is paying for something with cash, the cashier has to enter the amount tendered correctly and give the correct change as indicated by Horizon. There are plenty of further examples. Horizon records data about transactions, but much of the data comes from external sources.
So he is correct - data integrity is not the same as data accuracy. Imagine a customer withdraws £100 but the cashier pushes the wrong button and enters it as a deposit of £100. In that situation, the data is clearly not accurate. However, data integrity will be fine as long as Horizon continues to show the transaction as a £100 deposit.
Having said that, one of the problems with Horizon is that it was not error repellent. For example, the buttons for depositing and withdrawing money were next to each other and the screens were very similar, so it was easy for the cashier to record a deposit as a withdrawal or vice versa.