Resource icon

Payment Refunds v1.0

No permission to download

stromb0li

Well-known member
Licensed customer
stromb0li submitted a new resource:

Payment Refunds - Admin-initiated refunds and partial refund handling in XenForo for modern payment providers

What it does​

This add-on adds two capabilities missing from XenForo's payment system:
  1. 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).
  2. 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...

Read more about this resource...
 
This is great. Thanks so much for providing this tool @stromb0li as well as keeping the authorize.net addon up to date. Really appreciate it.
I have been going to authorize portal and search for the payment using the transaction id and issue the refund there.
When you do so, it will give you an editable text file where you can provide a note for the refund. Maybe this is something can be added in the next release?
 
Wouldn't this actually work for any purchasable that supports reversePurchase()?
Yes, the reverse purchase logic would work for any purchasable, not just user upgrades.

Tactically put, the add-on does four things:
  1. 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.
  2. Provider Updates - Extends both Stripe and PayPal REST providers with their refund API calls, webhook deduplication, and partial refund handling.
  3. Admin UI - Adds the "Issue Refund" button and form to payment provider log entries.
  4. 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.
Other add-on developers would be responsible for implementing refund support in their own payment providers (via the new supportsRefunds() / refund()) that this addon provides) and their own purchasable types (via the payment_refund_complete code event).
 
Back
Top Bottom