Включить голову и подумать, что же ещё.
value = call.data.upper().split('/')
Ты ожидаешь, что call.data будет содержать хотя бы один знак /, тогда value будет содержать два элемента - с индексом 0 и индексом 1. Раз IndexError, значит, скорее всего, value содержит только один элемент. А это слуится если call.data не содержит разделителя, в твоём случае /.
b1 = types.InlineKeyboardButton('USD/EUR', callback_data='usdeur')
Ну собственно, ты и задаёшь значения callback_data, не содержащие /. Вот и вся разгадка.