- {formatAmount(option.price_kopeks / 100)} {currencySymbol}
+ {option.price_kopeks === 0
+ ? t('subscription.free', 'Бесплатно')
+ : `${formatAmount(option.price_kopeks / 100)} ${currencySymbol}`}
{months > 1 && (
diff --git a/src/pages/Subscription.tsx b/src/pages/Subscription.tsx
index d1e70d0..d73674a 100644
--- a/src/pages/Subscription.tsx
+++ b/src/pages/Subscription.tsx
@@ -183,7 +183,10 @@ export default function Subscription() {
const destructiveConfirm = useDestructiveConfirm();
// Helper to format price from kopeks
- const formatPrice = (kopeks: number) => `${formatAmount(kopeks / 100)} ${currencySymbol}`;
+ const formatPrice = (kopeks: number) =>
+ kopeks === 0
+ ? t('subscription.free', 'Бесплатно')
+ : `${formatAmount(kopeks / 100)} ${currencySymbol}`;
// Device/traffic topup state
const [showDeviceTopup, setShowDeviceTopup] = useState(false);
diff --git a/src/pages/SubscriptionPurchase.tsx b/src/pages/SubscriptionPurchase.tsx
index 13d29f9..0d9fd60 100644
--- a/src/pages/SubscriptionPurchase.tsx
+++ b/src/pages/SubscriptionPurchase.tsx
@@ -37,7 +37,10 @@ export default function SubscriptionPurchase() {
const { isDark } = useTheme();
const g = getGlassColors(isDark);
- const formatPrice = (kopeks: number) => `${formatAmount(kopeks / 100)} ${currencySymbol}`;
+ const formatPrice = (kopeks: number) =>
+ kopeks === 0
+ ? t('subscription.free', 'Бесплатно')
+ : `${formatAmount(kopeks / 100)} ${currencySymbol}`;
// Subscription query (shares cache with /subscription page)
const { data: subscriptionResponse, isLoading } = useQuery({