Changing original battery for a different type

I know that changing that battery is something that can result in unpredicted results and is strongly not recommended. Having in mind that one of my directives is to have a device that does not need to charge for 3 years so I added a bigger battery. My default battery holds only for a day in alarm mode sync every 5 minutes. My question is how do you calculate the % of the battery in the backend? Can you make it support bigger batteries? When I plugged the new battery at first I got 97% charge for a day or two, judging by the beacon settings in the IDE when I plug it with Bluetooth, then it went to 0 % although it is clearly 97% again or at least that’s what I think.
I came up with a better solution that might give no error, simply connecting the battery via the C-type.

If you want to calculate current battery charge in %, you can use sensors.battery.getVoltage() and then refer to your battery data sheet and try to match it with battery discharge charts. This approximation might not be as good as value provided by sensors.battery.getPerc().
For assessing battery state LTE Beacon uses so called fuel gauge, it is a dedicated IC that measures how much current goes in and out battery. If you connect a different battery it might not work properly and beacon might shutdown even if there is a lot of power in the battery left. Make it support bigger batteries would require calibrating it against each battery type which is not an easy process.
Using USB-C to charge beacon continuously might be a better solution, but you need to consider all the loses that happen due to voltage conversion.