diff --git a/Telegram/SourceFiles/api/api_credits.cpp b/Telegram/SourceFiles/api/api_credits.cpp
index dcbaac4a6..13cf45474 100644
--- a/Telegram/SourceFiles/api/api_credits.cpp
+++ b/Telegram/SourceFiles/api/api_credits.cpp
@@ -7,8 +7,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 */
 #include "api/api_credits.h"
 
-#include "apiwrap.h"
+#include "api/api_statistics_data_deserialize.h"
 #include "api/api_updates.h"
+#include "apiwrap.h"
 #include "base/unixtime.h"
 #include "data/data_peer.h"
 #include "data/data_photo.h"
@@ -202,4 +203,43 @@ rpl::producer<not_null<PeerData*>> PremiumPeerBot(
 	};
 }
 
+BotEarnStatistics::BotEarnStatistics(not_null<UserData*> user)
+: StatisticsRequestSender(user) {
+}
+
+rpl::producer<rpl::no_value, QString> BotEarnStatistics::request() {
+	return [=](auto consumer) {
+		auto lifetime = rpl::lifetime();
+
+		makeRequest(MTPpayments_GetStarsRevenueStats(
+			MTP_flags(0),
+			user()->input
+		)).done([=](const MTPpayments_StarsRevenueStats &result) {
+			const auto &data = result.data();
+			const auto &status = data.vstatus().data();
+			_data = Data::BotEarnStatistics{
+				.revenueGraph = StatisticalGraphFromTL(data.vrevenue_graph()),
+				.currentBalance = status.vcurrent_balance().v,
+				.availableBalance = status.vavailable_balance().v,
+				.overallRevenue = status.voverall_revenue().v,
+				.usdRate = data.vusd_rate().v,
+				.isWithdrawalEnabled = status.is_withdrawal_enabled(),
+				.nextWithdrawalAt = status.vnext_withdrawal_at()
+					? base::unixtime::parse(status.vnext_withdrawal_at()->v)
+					: QDateTime(),
+			};
+
+			consumer.put_done();
+		}).fail([=](const MTP::Error &error) {
+			consumer.put_error_copy(error.type());
+		}).send();
+
+		return lifetime;
+	};
+}
+
+Data::BotEarnStatistics BotEarnStatistics::data() const {
+	return _data;
+}
+
 } // namespace Api
diff --git a/Telegram/SourceFiles/api/api_credits.h b/Telegram/SourceFiles/api/api_credits.h
index 265e7b387..ae9ff5115 100644
--- a/Telegram/SourceFiles/api/api_credits.h
+++ b/Telegram/SourceFiles/api/api_credits.h
@@ -7,6 +7,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 */
 #pragma once
 
+#include "api/api_statistics_sender.h"
+#include "data/data_bot_earn.h"
 #include "data/data_credits.h"
 #include "mtproto/sender.h"
 
@@ -14,6 +16,8 @@ namespace Main {
 class Session;
 } // namespace Main
 
+class UserData;
+
 namespace Api {
 
 class CreditsTopupOptions final {
@@ -68,6 +72,20 @@ private:
 
 };
 
+class BotEarnStatistics final : public StatisticsRequestSender {
+public:
+	explicit BotEarnStatistics(not_null<UserData*>);
+
+	[[nodiscard]] rpl::producer<rpl::no_value, QString> request();
+	[[nodiscard]] Data::BotEarnStatistics data() const;
+
+private:
+	Data::BotEarnStatistics _data;
+
+	mtpRequestId _requestId = 0;
+
+};
+
 [[nodiscard]] rpl::producer<not_null<PeerData*>> PremiumPeerBot(
 	not_null<Main::Session*> session);