Skip to content

Payment Plans

Structured installment plans — different from one-off promises. Use when a brother needs to spread a payment over multiple installments at fixed intervals (e.g. "$100 every 30 days for 6 installments").

The bot pre-generates the full installment schedule, sends DM reminders for each one, and flips overdue installments to missed.

/payment_plan

Create a new plan.

Usage: /payment_plan <member> <installment_amount> <interval_days> [total_amount] [start_date] [note]

Argument Required Description
member yes The brother on the plan
installment_amount yes Dollar amount per installment
interval_days yes Days between installments (e.g. 30)
total_amount no Total they owe — bot derives count = ceil(total / installment)
start_date no First installment due date (default: today)
note no Optional note (e.g. "spring dues split")

Examples:

Closed-end plan (knows total):

/payment_plan member:@joe installment_amount:100 interval_days:30 total_amount:600
Creates 6 installments of $100, 30 days apart, starting today.

Open-ended plan (no total):

/payment_plan member:@joe installment_amount:100 interval_days:30
Pre-generates 6 installments. You can extend later if needed.


/payment_plans

List active plans, optionally filtered to one brother. Shows progress bars (████░░░░░░ 40%).

Usage: /payment_plans [member]


/show_plan

Full schedule for one plan — every installment with status (✅ / ⏳ / ❌), due date, paid date, and ID.

Usage: /show_plan <plan_id>


/plan_progress

Quick progress view for a brother's active plan(s).

Usage: /plan_progress <member>


/cancel_plan

Cancel an active plan. Drops all pending installments (no more reminders).

Usage: /cancel_plan <plan_id>

Already-paid installments are preserved in history.


/mark_installment_paid

Manually credit one installment. Use when:

  • The brother paid but /log_payment's auto-match didn't catch it
  • You're reconciling against a Slash transaction

Usage: /mark_installment_paid <installment_id>


Reminder schedule

For each installment, the same daily 1pm UTC loop fires:

When Who Message
Day before Brother "Installment #N of $X due tomorrow"
Day of Brother "Today: installment #N of $X"
Day of Treasurer "Joe — installment #N, $X"

Each installment tracks its own reminded_day_before and reminded_day_of flags so reminders are idempotent across bot restarts.

Auto-match on /log_payment

If a /log_payment for a brother matches a pending installment's exact amount, the response embed includes the matching installment ID under "💡 Possible plan installment". One command (/mark_installment_paid <id>) credits it.