Membership & Subscription
Full membership engine: tiers, renewals, dues invoicing and member portal
Membership organisations need far more than a contact list: they must track who is paid up, who is in grace, who has lapsed, and invoice recurring dues every period without manual chasing. Doing this in spreadsheets or generic invoicing wastes admin hours and lets renewals slip. This module is built for UK clubs, associations and charities on Odoo Community. It defines membership tiers with recurring dues and joining fees, drives members through a draft-active-grace-lapsed lifecycle, generates and posts dues invoices automatically via cron, and gives members a self-service portal to see their tier, expiry and balance.
Key Features
Configurable Membership Tiers
gb.membership.tier defines a billing period (month, quarter, semester or year), a price and a one-off joining_fee, plus grace_days, early_renewal_days and an early_renewal_discount percentage. Each tier lazily creates its own service dues product via _ensure_product for clean invoice lines.
Member Lifecycle States
gb.membership.member links a partner to a tier and moves through draft, active, grace, lapsed and cancelled with mail tracking. Buttons Activate, Renew, Move to Grace, Lapse and Reset to Draft drive the lifecycle, and date_expiry plus days_to_expiry track standing.
Automatic Dues & Invoicing
Activating or renewing a member calls _generate_dues to create a gb.membership.dues line, applying the joining fee on the first period and the early-renewal discount when within the window. action_create_invoice posts a real account.move out_invoice you can Post and Mark Paid.
Renewal & Lapse Cron
The daily _cron_process_renewals moves expired active members into grace, auto-renews those with auto_renew on tiers flagged auto_invoice, and lapses anyone past date_expiry plus grace_days. A second 6-hourly cron _cron_sync_paid flips dues to Paid when the invoice payment_state settles.
Bulk Renewal Wizard
The Renew Memberships wizard (gb.membership.renew.wizard) takes the selected members, renews all non-cancelled ones in one action, and optionally creates and posts their draft dues invoices, so an admin can roll an entire cohort forward at year-end.
Self-Service Member Portal
The /my/memberships portal route shows each logged-in member their tier, expiry date and outstanding dues, with a counter on the portal home. res.partner gains is_member, current_tier_id and a Memberships smart action for the back office.
Live Dashboard & Dues Analysis
get_membership_dashboard returns active, grace, lapsed and draft counts, a retention_rate and total outstanding dues for the kanban header. A SQL-view report model (gb.membership.dues.report) powers pivot analysis by tier, period and state for finance and trustees.
Guardrails & Constraints
Validation blocks negative dues or joining fees, discounts outside 0-100%, negative day windows and an expiry before the join date. Cancelled members cannot be renewed and posted invoices must be cancelled before their dues line, keeping the ledger consistent.
Use Cases
Screenshots
Dues
Dues Analysis
Members
Renew Memberships
Membership Tiers
Why Choose This Module
Membership organisations need more than a contact list. This module defines membership tiers with recurring dues, enrols members through a clear lifecycle, invoices dues automatically each period, and lets members track their status in the portal — a full membership engine built for UK clubs, associations and charities on Odoo Community.
Specifications
- Compatible: Odoo 18.0 / 19.0
- License: OPL-1
- Languages: English
- Author: Pokutsoft
- Dependencies: account, portal, mail
- Support: support@pokutsoft.com
Update date: 2026-07-02