Pricing in CHF: 3/mo, 30/yr, localized-display hook (#23) #30

Merged
Cordy merged 1 commit from chf-pricing-23 into main 2026-09-06 01:11:44 +00:00
Owner

Per the #24 decision. Paddle sandbox catalog already updated in place via the Paddle MCP (same price ids — pri_…tyz monthly 300 → CHF, pri_…903 yearly 3240 USD → 3000 CHF — so checkout wiring and the license-server webhook path are untouched).

Site side: account.htmlfmt() renders CHF in de-CH convention, cycle buttons and demo fixtures follow; real charge previews were already currency-aware via money(amount, currency). index.html — pricing card and bullets in CHF ("Yearly is 30 CHF per seat per year — ten months' worth"), plus a token-gated PricePreview block: a strict no-op (no script loaded, no request leaves the page) until PADDLE_CLIENT_TOKEN is set at launch, after which the card shows the visitor's local currency from the first pageview, CHF static as fallback.

Remaining on #23 after this: enable automatic currency conversion in the Paddle dashboard (account-level setting, not exposed via API), set the client token at launch, and one sandbox purchase to verify webhook → licence issuance in CHF (v0.7 dress-rehearsal slice). Account dashboard deliberately stays CHF-denominated — it is the billing record; localization is for the discovery surface.

Per the #24 decision. Paddle **sandbox** catalog already updated in place via the Paddle MCP (same price ids — `pri_…tyz` monthly 300 → CHF, `pri_…903` yearly 3240 USD → 3000 CHF — so checkout wiring and the license-server webhook path are untouched). Site side: `account.html` — `fmt()` renders CHF in de-CH convention, cycle buttons and demo fixtures follow; real charge previews were already currency-aware via `money(amount, currency)`. `index.html` — pricing card and bullets in CHF ("Yearly is 30 CHF per seat per year — ten months' worth"), plus a token-gated PricePreview block: a strict no-op (no script loaded, no request leaves the page) until `PADDLE_CLIENT_TOKEN` is set at launch, after which the card shows the visitor's local currency from the first pageview, CHF static as fallback. Remaining on #23 after this: enable automatic currency conversion in the Paddle dashboard (account-level setting, not exposed via API), set the client token at launch, and one sandbox purchase to verify webhook → licence issuance in CHF (v0.7 dress-rehearsal slice). Account dashboard deliberately stays CHF-denominated — it is the billing record; localization is for the discovery surface.
Per the #24 decision: monthly stays 3.00 (now CHF), yearly 30 CHF
(was USD 32.40) - ten months' worth. Paddle sandbox catalog updated in
place (same price ids, so the checkout wiring is untouched). account:
fmt() renders CHF in de-CH convention, cycle buttons and demo fixtures
follow. index: pricing card and bullets in CHF, plus a token-gated
PricePreview block - a strict no-op (no script, no request) until
PADDLE_CLIENT_TOKEN is set at launch, after which the card localizes
into the visitor's currency on first pageview with CHF as fallback.
Cordy merged commit caf5e6da16 into main 2026-09-06 01:11:44 +00:00
Cordy deleted branch chf-pricing-23 2026-09-06 01:11:46 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Cordy/cairn-site#30
No description provided.