- ℹ️ XF versions
- 2.3.x
This add-on adds two capabilities missing from XenForo's payment system:
- Admin-initiated refunds — Issue full or partial refunds directly from the admin panel instead of logging into the provider dashboards (e.g. Stripe, PayPal, etc).
- Smart partial refund handling — Fixes a core XenForo behavior where partial refunds (e.g., a $15 discount adjustment on a $30 purchase) downgrades the user vs only refunds. Partial refunds now log as informational events without triggering a reversal. Full refunds continue to auto-downgrade as before.
- Provides a refund framework for providers - Defines the supportsRefunds() / refund() interface that any payment provider can implement, plus the payment_refund_complete event for purchasable add-ons to listen to.
- Provider Updates - Extends both Stripe and PayPal REST providers with their refund API calls, webhook deduplication, and partial refund handling.
- Admin UI - Adds the "Issue Refund" button and form to payment provider log entries.
- User Upgrade handling - Since user upgrades are native to XenForo, this add-on tries to complete partial vs full refund handling for User Upgrade purchases. The behavior of any refund amount triggering a downgrade has been changed to support partial refund scenarios. However, if you want to do a partial refund and downgrade the user, the UX provides that capability.
- Admin navigates to Logs → Payment Provider → [specific payment entry]
- Clicks "Issue Refund" (only visible for providers that support refunds)
- Enters refund amount (pre-filled with remaining refundable balance)
- For user upgrades: option to reverse the purchase (downgrade user)
- For other purchasable types: the refund is processed with the provider, and the owning add-on handles reversal via the payment_refund_complete code event
- The add-on calls the provider's refund API, logs the result, and tracks the cumulative refunded amount