diff --git a/frontend/src/components/learn/LearnPage.tsx b/frontend/src/components/learn/LearnPage.tsx
index f2ac2ca..4ddf34a 100644
--- a/frontend/src/components/learn/LearnPage.tsx
+++ b/frontend/src/components/learn/LearnPage.tsx
@@ -228,7 +228,6 @@ export default function LearnPage() {
{ question: t('learnPage.faqPricing1Q'), answer: t('learnPage.faqPricing1A') },
{ question: t('learnPage.faqPricing2Q'), answer: t('learnPage.faqPricing2A') },
{ question: t('learnPage.faqPricing3Q'), answer: t('learnPage.faqPricing3A') },
- { question: t('learnPage.faqPricing4Q'), answer: t('learnPage.faqPricing4A') },
],
},
{
diff --git a/frontend/src/components/pricing/PricingPage.tsx b/frontend/src/components/pricing/PricingPage.tsx
index b82730a..fc7359b 100644
--- a/frontend/src/components/pricing/PricingPage.tsx
+++ b/frontend/src/components/pricing/PricingPage.tsx
@@ -340,11 +340,11 @@ export default function PricingPage({
{license.error}
)}
-
- {isFree
- ? t('pricingPage.noCreditCard')
- : t('pricingPage.moneyBackGuarantee')}
-
+ {isFree && (
+
+ {t('pricingPage.noCreditCard')}
+
+ )}
>
) : isFilled ? (
diff --git a/frontend/src/i18n/locales/de.ts b/frontend/src/i18n/locales/de.ts
index 97b85fe..d62bc46 100644
--- a/frontend/src/i18n/locales/de.ts
+++ b/frontend/src/i18n/locales/de.ts
@@ -94,7 +94,7 @@ const de: Translations = {
free: 'Kostenlos',
once: '/einmalig',
freeForEarly: 'Kostenlos für Frühnutzer. Keine Kreditkarte erforderlich.',
- oneTimePayment: 'Einmalzahlung. Lebenslanger Zugang. 30 Tage Geld-zurück-Garantie.',
+ oneTimePayment: 'Einmalzahlung. Lebenslanger Zugang.',
redirecting: 'Weiterleitung...',
claimFreeAccess: 'Kostenlosen Zugang sichern',
upgradeFor: 'Upgrade für {{price}}',
@@ -382,7 +382,7 @@ const de: Translations = {
getStarted: 'Jetzt starten',
getStartedPrice: 'Jetzt starten — {{price}}',
noCreditCard: 'Keine Kreditkarte erforderlich',
- moneyBackGuarantee: '30 Tage Geld-zurück-Garantie',
+
soldOut: 'Ausverkauft',
upcoming: 'Demnächst',
failedToLoad: 'Preise konnten nicht geladen werden. Bitte später erneut versuchen.',
@@ -562,9 +562,7 @@ const de: Translations = {
faqPricing3Q: 'Was kann ich mit der kostenlosen Version nutzen?',
faqPricing3A:
'Kostenlose Nutzer können alle Funktionen im Demogebiet erkunden (Innenstadt London, ungefähr Zonen 1 bis 2). Für den Zugang zu Daten für den Rest Englands benötigen Sie den lebenslangen Zugang.',
- faqPricing4Q: 'Kann ich eine Rückerstattung erhalten?',
- faqPricing4A:
- 'Selbstverständlich. Wir bieten eine 30-Tage-Geld-zurück-Garantie. Wenn Sie nicht zufrieden sind, schreiben Sie innerhalb von 30 Tagen an support@perfect-postcode.co.uk für eine vollständige Rückerstattung.',
+
// FAQ items — Tips and Tricks
faqTips1Q: 'Wie nutze ich den KI-Filter, anstatt Filter einzeln hinzuzufügen?',
faqTips1A:
diff --git a/frontend/src/i18n/locales/en.ts b/frontend/src/i18n/locales/en.ts
index 69110a8..de65b40 100644
--- a/frontend/src/i18n/locales/en.ts
+++ b/frontend/src/i18n/locales/en.ts
@@ -92,7 +92,7 @@ const en = {
free: 'Free',
once: '/once',
freeForEarly: 'Free for early adopters. No credit card required.',
- oneTimePayment: 'One-time payment. Lifetime access. 30-day money-back guarantee.',
+ oneTimePayment: 'One-time payment. Lifetime access.',
redirecting: 'Redirecting...',
claimFreeAccess: 'Claim free access',
upgradeFor: 'Upgrade for {{price}}',
@@ -378,7 +378,7 @@ const en = {
getStarted: 'Get started',
getStartedPrice: 'Get started - {{price}}',
noCreditCard: 'No credit card required',
- moneyBackGuarantee: '30-day money-back guarantee',
+
soldOut: 'Sold out',
upcoming: 'Upcoming',
failedToLoad: 'Failed to load pricing. Please try again later.',
@@ -551,9 +551,7 @@ const en = {
faqPricing3Q: 'What can I access on the free tier?',
faqPricing3A:
'Free users can explore all features within the demo area (inner London, roughly zones 1 to 2). To access data for the rest of England, you need lifetime access.',
- faqPricing4Q: 'Can I get a refund?',
- faqPricing4A:
- 'Absolutely. We offer a 30-day money-back guarantee. If you’re not satisfied, email support@perfect-postcode.co.uk within 30 days for a full refund.',
+
// FAQ items — Tips and Tricks
faqTips1Q: 'How do I use the AI filter instead of adding filters one by one?',
faqTips1A:
diff --git a/frontend/src/i18n/locales/fr.ts b/frontend/src/i18n/locales/fr.ts
index e111d4a..efb71ff 100644
--- a/frontend/src/i18n/locales/fr.ts
+++ b/frontend/src/i18n/locales/fr.ts
@@ -95,7 +95,7 @@ const fr: Translations = {
free: 'Gratuit',
once: '/unique',
freeForEarly: 'Gratuit pour les premiers utilisateurs. Aucune carte bancaire requise.',
- oneTimePayment: 'Paiement unique. Accès à vie. Garantie satisfait ou remboursé sous 30 jours.',
+ oneTimePayment: 'Paiement unique. Accès à vie.',
redirecting: 'Redirection...',
claimFreeAccess: "Réclamer l’accès gratuit",
upgradeFor: 'Passer à la version complète pour {{price}}',
@@ -387,7 +387,7 @@ const fr: Translations = {
getStarted: 'Commencer',
getStartedPrice: 'Commencer - {{price}}',
noCreditCard: 'Aucune carte bancaire requise',
- moneyBackGuarantee: 'Garantie satisfait ou remboursé sous 30 jours',
+
soldOut: 'Épuisé',
upcoming: 'À venir',
failedToLoad: 'Échec du chargement des tarifs. Veuillez réessayer plus tard.',
@@ -565,9 +565,7 @@ const fr: Translations = {
faqPricing3Q: 'Que puis-je faire avec la version gratuite ?',
faqPricing3A:
'Les utilisateurs gratuits peuvent explorer toutes les fonctionnalités dans la zone de démonstration (centre de Londres, approximativement zones 1 à 2). Pour accéder aux données du reste de l’Angleterre, il faut l’accès à vie.',
- faqPricing4Q: 'Puis-je obtenir un remboursement ?',
- faqPricing4A:
- 'Absolument. Nous offrons une garantie satisfait ou remboursé sous 30 jours. Si vous n’êtes pas satisfait, envoyez un e-mail à support@perfect-postcode.co.uk dans les 30 jours pour un remboursement intégral.',
+
// FAQ items — Tips and Tricks
faqTips1Q: 'Comment utiliser le filtre IA au lieu d’ajouter les filtres un par un ?',
faqTips1A:
diff --git a/frontend/src/i18n/locales/hu.ts b/frontend/src/i18n/locales/hu.ts
index 3e89c7f..fc0e599 100644
--- a/frontend/src/i18n/locales/hu.ts
+++ b/frontend/src/i18n/locales/hu.ts
@@ -95,8 +95,7 @@ const hu: Translations = {
free: 'Ingyenes',
once: '/egyszeri',
freeForEarly: 'Ingyenes a korai felhasználóknak. Nem szükséges bankkartya.',
- oneTimePayment:
- 'Egyszeri fizetés. Élethosszig tartó hozzáférés. 30 napos pénzvisszatérítési garancia.',
+ oneTimePayment: 'Egyszeri fizetés. Élethosszig tartó hozzáférés.',
redirecting: 'Átirányítás...',
claimFreeAccess: 'Ingyenes hozzáférés igénylése',
upgradeFor: 'Frissítés {{price}} áron',
@@ -382,7 +381,7 @@ const hu: Translations = {
getStarted: 'Kezdjük el',
getStartedPrice: 'Kezdjük el – {{price}}',
noCreditCard: 'Nem szükséges bankkartya',
- moneyBackGuarantee: '30 napos pénzvisszatérítési garancia',
+
soldOut: 'Elfogyott',
upcoming: 'Következő',
failedToLoad: 'Nem sikerült betölteni az árakat. Kérjük, próbáld újra később.',
@@ -557,9 +556,7 @@ const hu: Translations = {
faqPricing3Q: 'Mit érhetek el az ingyenes szinten?',
faqPricing3A:
'Az ingyenes felhasználók a demó területen (Belső-London, megközelítőleg az 1-2. zóna) fedezhetik fel az összes funkciót. Anglia többi részének adataihoz élethosszig tartó hozzáférés szükséges.',
- faqPricing4Q: 'Kérhetek visszatérítést?',
- faqPricing4A:
- 'Természetesen. 30 napos pénzvisszatérítési garanciát kínálunk. Ha nem vagy elégedett, írj a support@perfect-postcode.co.uk címre 30 napon belül a teljes visszatérítésért.',
+
// FAQ items — Tips and Tricks
faqTips1Q: 'Hogyan használjam az AI szűrőt a szűrők egyenkénti hozzáadása helyett?',
faqTips1A:
diff --git a/frontend/src/i18n/locales/zh.ts b/frontend/src/i18n/locales/zh.ts
index c75d3ae..a748d27 100644
--- a/frontend/src/i18n/locales/zh.ts
+++ b/frontend/src/i18n/locales/zh.ts
@@ -93,7 +93,7 @@ const zh: Translations = {
free: '免费',
once: '/一次性',
freeForEarly: '早期用户免费。无需信用卡。',
- oneTimePayment: '一次性付款。终身访问。30天无条件退款。',
+ oneTimePayment: '一次性付款。终身访问。',
redirecting: '跳转中...',
claimFreeAccess: '领取免费访问权限',
upgradeFor: '升级仅需 {{price}}',
@@ -375,7 +375,7 @@ const zh: Translations = {
getStarted: '立即开始',
getStartedPrice: '立即开始 - {{price}}',
noCreditCard: '无需信用卡',
- moneyBackGuarantee: '30天无条件退款保证',
+
soldOut: '已售罄',
upcoming: '即将开放',
failedToLoad: '加载价格信息失败,请稍后重试。',
@@ -541,9 +541,7 @@ const zh: Translations = {
faqPricing3Q: '免费版能用哪些功能?',
faqPricing3A:
'免费用户可以在演示区域(伦敦市中心,大约 1 至 2 区)内探索所有功能。要访问英格兰其他地区的数据,需要获取终身访问权限。',
- faqPricing4Q: '可以退款吗?',
- faqPricing4A:
- '当然可以。我们提供 30 天退款保证。如果您不满意,请在 30 天内发送邮件至 support@perfect-postcode.co.uk 申请全额退款。',
+
// FAQ items — Tips and Tricks
faqTips1Q: '如何使用 AI 筛选功能,而不是逐个添加筛选条件?',
faqTips1A:
diff --git a/server-rs/src/routes/pricing.rs b/server-rs/src/routes/pricing.rs
index bf43f80..c6136de 100644
--- a/server-rs/src/routes/pricing.rs
+++ b/server-rs/src/routes/pricing.rs
@@ -11,7 +11,7 @@ use crate::pocketbase::get_superuser_token;
use crate::state::{AppState, SharedState};
/// Pricing tiers: (cumulative user cap, price in pence).
-const TIERS: &[(u64, u64)] = &[(10, 99), (15, 999), (30, 2999), (50, 4999)];
+const TIERS: &[(u64, u64)] = &[(5, 99), (15, 999), (30, 2999), (50, 4999)];
const FINAL_PRICE_PENCE: u64 = 9999;
#[derive(Serialize)]