Skip to content

Update membership dues tiers and copy#814

Merged
ruthgrace merged 9 commits intomainfrom
dues
Mar 21, 2026
Merged

Update membership dues tiers and copy#814
ruthgrace merged 9 commits intomainfrom
dues

Conversation

@ruthgrace
Copy link
Copy Markdown
Contributor

@ruthgrace ruthgrace commented Mar 20, 2026

Summary

  • Removed dues options below $30 (minimum is now $30/month)
  • Added new higher tiers: $125, $150, $200, $250
  • Updated suggested donations table to simplified 3-tier structure
  • Updated all copy referencing old $10 minimum to $30 (scholarship text, donation matching, tax example, sliding scale)
  • Used Stripe auto-generated plan IDs for the new tiers

Notes

  • New Stripe plans have been created and tested on staging
  • The Stripe gem v3 has a known incompatibility with Ruby 3.1 error handling — any Stripe API error surfaces as a misleading ArgumentError instead of the real error. Upgrading the Stripe gem should be a follow-up.
  • Tested successfully on staging (https://du-arooo-staging-896dffc852a3.herokuapp.com/)

Test plan

  • Verified new dropdown options render correctly on staging
  • Verified updating dues to a new tier ($250) works end-to-end on staging
  • Confirm existing plans ($30-$100) still work on production after deploy
  • Hard refresh after deploy to avoid browser-cached old dropdown

🤖 Generated with Claude Code

screenshots from staging:
Screenshot 2026-03-20 at 10 46 16 PM
Screenshot 2026-03-20 at 10 42 55 PM
Screenshot 2026-03-20 at 10 42 49 PM

ruthgrace and others added 8 commits March 20, 2026 14:11
Use explicit Stripe::Subscription.update/create and
Stripe::Customer.update class methods instead of object
mutation + save pattern which causes ArgumentError with
current gem version.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pass explicit hashes instead of keyword args to Stripe class
methods to avoid ArgumentError in Ruby 3.1 where implicit
hash-to-kwargs conversion was removed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Retrieve the subscription as a proper Stripe object before
modifying and saving, rather than using the nested object
from customer.subscriptions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The ArgumentError was actually a masked 404 from Stripe
because the new plans don't exist yet. The Stripe gem v3
error handling is broken on Ruby 3.1, so it shows
ArgumentError instead of the real Stripe::InvalidRequestError.
Reverting to original code since it works when plans exist.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The new plans ($125, $150, $200, $250) were created with
auto-generated price IDs instead of custom IDs. Update the
dropdown and amount mapping to use the actual Stripe IDs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ruthgrace ruthgrace changed the title Dues Update membership dues tiers and copy Mar 21, 2026
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ruthgrace ruthgrace merged commit c1e0aea into main Mar 21, 2026
6 checks passed
@ruthgrace ruthgrace deleted the dues branch March 21, 2026 05:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant