diff --git a/docs/paid-hosting.md b/docs/paid-hosting.md index 346b335..f0a212e 100644 --- a/docs/paid-hosting.md +++ b/docs/paid-hosting.md @@ -7,7 +7,7 @@ Billing is opt-in. `BILLING_ENABLED=false` preserves self-hosted behavior. This Configure these EUR prices in Stripe. The amounts below are suggested prices, not hard-coded charges: - Author monthly: €5/month, recurring monthly. -- Author annual: €30/year, recurring yearly. +- Author annual: €49/year, recurring yearly. In the first nine days of paid hosting, 6 of 22 subscribers chose it and it brought 79% of revenue, so it keeps its price; it is also easy to expense on a grant. - Live updates (`author_pass`): €4 once. Automatic refresh and a separate storage allowance for one existing repository for 180 days from checkout creation. - Extended expiration (`repo_extend`): €2 once. One existing repository can be scheduled to expire up to one year after purchase. Purchases stack: each one adds a year after the latest earlier extension. - Never expire (`repo_never`): €10 once. It costs more than Extended expiration because it is the only purchase that keeps storage in use indefinitely. One existing repository can use Never expire without a subscription. diff --git a/scripts/test-stripe-sandbox.js b/scripts/test-stripe-sandbox.js index 3883210..0523d3c 100644 --- a/scripts/test-stripe-sandbox.js +++ b/scripts/test-stripe-sandbox.js @@ -43,7 +43,7 @@ async function main() { const product = await stripe.products.create({ name: "Anonymous GitHub sandbox integration " + run, metadata }); products.push(product.id); for (const [key, amount, interval] of [ - ["STRIPE_AUTHOR_MONTHLY_PRICE",500,"month"],["STRIPE_AUTHOR_ANNUAL_PRICE",3000,"year"], + ["STRIPE_AUTHOR_MONTHLY_PRICE",500,"month"],["STRIPE_AUTHOR_ANNUAL_PRICE",4900,"year"], ["STRIPE_AUTHOR_PASS_PRICE",400],["STRIPE_REPO_EXTEND_PRICE",200],["STRIPE_REPO_NEVER_PRICE",1000],["STRIPE_REPO_SLOT_PRICE",200],["STRIPE_REPO_PACK_PRICE",500],["STRIPE_CONFERENCE_SMALL_PRICE",4900],["STRIPE_CONFERENCE_PRICE",14900],["STRIPE_CONFERENCE_LARGE_PRICE",39900]]) { const p = await stripe.prices.create({ product: product.id, currency: "eur", unit_amount: amount, metadata, ...(interval ? { recurring: { interval } } : {}) }); prices.push(p.id); config[key] = p.id;