Данные должны записываться в базу в тот момент, когда осуществляется платеж и, соответственно, списывание средств. Если деньги снимаются со внутреннего счета на сайте, то можно сразу, главное чтобы посетитель понимал, что при клике деньги снимутся, иначе будут претензии и недопонимание. Какая Вам разница сколько будет записей, если при этом будут поступать деньги? А старые записи можно и нужно выгружать в архив. Это хорошая практика.
Если оплата осуществляется не постфактум, а через сторонний шлюз, то запись будет сохраняться при формировании платежа и при успешном платеже. Либо, если на сайте реализована такая возможность, только после получения средств будет запись в базу. Но для этого на шлюз придется передать ID пользователя на сайте (можно даже не авторизованного, а по сессии, например, но это не надежно для посетителя), стоимость и ID сущности, за которую осуществляется платеж.