Если человек платит через обычный кошелек, например MetaMask, то он может заполнить поле "data" (например 0x1 или 0x2), это поле доступно для анализа в коде контракта (msg.data).
Важно помнить, что перевод с обычных кошельков отлавливает функция без названия с модификатором "payable":
function () payable{
}
если такой функции в контракте нет, то посылка на него денег будет давать отлуп.