Api spot kline doesn't match larger interval

I’ve already asked this in the Binance support (currently waiting on an answer), but they suggested i also ask here.

I’m creating my own C# software to analyse candle data and i’m using the Binance api to populate my database with. To cut down on the amount of calls i need to make, i’m asking for 1000 5min results and then building my own 15m, 30m and 2h candles based on that data.

I’ve tested it with ADABTC and my versions of the candles are identical to what the Binance api provides, but when i tested it against a low volume coin (BNTBTC) it’s showing some differences, so i was hoping for some help to explain what could be wrong.

There were many small differences in the data, but i’ll focus on just one to keep this thread simple.
3x 5min candles - https://api.binance.com/api/v3/klines?symbol=BNTBTC&interval=5m&limit=3&startTime=1641025800000
1x 15min candle - https://api.binance.com/api/v3/klines?symbol=BNTBTC&interval=15m&limit=1&startTime=1641025800000

These are for the same timeframe and my understanding is that the 15min data should be able to be built from the 3x 5min candle data (as long as the 15m candle open time started at 0m, 15m, 30m or 45m).

Those 2 api calls show that the 3x 5min low values are: 0.00006903, 0.00006918 and 0.00006907, but the 15m candle for the same period says the low value is 0.00006907, however the lowest value was actually 0.00006903.
Is this a Binance data issue? Or is my understanding incorrect?

Firstly, your method of calculation is correct. However, you missed out a little detail. The 5m kline at 1641025800000 has 0 trade. Therefore, the low price is inherited from the previous kline which will not be considered for the 15m kline. You can justify this by looking at the number of trades in the 15m kline and adding the 3 5m klines’ number of trades.

On a side note, we have a readily available kline data for download here (https://data.binance.vision/).