ADC Module Recomendation?
Let's start with the Leonardo (ATmega32U4) itself and see how it can get what you need.


  1) At least 12 bit of resolution


This sounds like a no-go right on the first step, seeing as how the ADC in the ATmega32U4 only supports 10 bits of resolution. But the thing to remember is that this is at a rate of 15kS/s. If you don't need that rate (which is highly unlikely for battery monitoring) then you can perform oversampling and decimation in order to increase not only the resolution but also the accuracy of the built-in ADC.


  2) 4 channel input (differential)


12 channels, with differential plus gain on two of them. Check.


  3) External reference voltage allowable


Yeeees, but... you may find yourself not needing it. The built-in 2.56V reference may be accurate enough for your needs, but obviously you would have to determine this empirically.


  4) SPI interface (to microcontroller) (as ive read online that SPI is better than I2C in terms of noise senstivity if only one slave is to be connected with Master, which is my case)


All AVR MCU peripherals have a parallel interface to the core.


  5) A very good accuracy, i.e very low INL(&lt;=1LSB), DNL(&lt;=1LSB), Offset(&lt;=4LSB) and Gain error(&lt;=4LSB).


The typical values for the ADC are certainly within those values, and both characterization and calibration and oversampling and decimation can help iron them out even flatter.