Skip to main content
The Customer Care portal adds two self-service features to the members area:
  • Manage — Customers can pause, skip, or cancel a subscription (with optional retention offers). The manage page also shows a list of orders eligible for a refund.
  • Self-refund — Customers can submit a refund request for eligible orders (one-time purchases or subscription first charges).
Both features are configured per merchant in Merchant settings → Customer care and are completely optional.

Brand-level settings

Before configuring individual merchants, set the brand-wide customer support details in Brand Settings → General under the Customer support section: These values are stored as brand variables and are accessible in templates as {{ brand.support_email }}, {{ brand.support_phone }}, and {{ brand.mbg_days }}.
When a refund request is denied, the error message automatically includes your support email and phone so customers know how to reach you. Make sure to fill these in.

Enabling Customer Care

  1. Navigate to Merchants and open a merchant configured with Stripe or NMI.
  2. Click the Customer care tab.
  3. Enable the features you want:
    • Subscription management — turns on the Manage page for active subscriptions.
    • Self-refund — allows customers to request a refund on eligible orders.
  4. Save the merchant.

Subscription management

When enabled, an active subscription card on /members/subscription will show a Manage button. Clicking it opens /members/manage?tx=<transactionId>.
Configure the exit survey reasons and retention offers in the Retention offers tab. The Customer care tab controls the feature toggle; the Retention offers tab controls which offers are shown.

Self-refund — eligibility rules

Eligibility is checked at two levels: Brand level (checked first): Merchant level (checked second): If an order passes both levels, a Request refund link appears on its card in /members/orders and in the refund candidates section on /members/manage.

Self-refund — on-request action

When a customer submits a refund request, one of three things happens (your choice):

Error messages

All customer-facing error messages are friendly and non-technical. When a refund is denied, the message includes your brand’s support contact information automatically:
“The refund window for this order has closed. Please contact us at support@yourbrand.com or call +1 800 555 0100.”
If no support email or phone is configured, it falls back to:
“Please contact our support team.”

The Manage page (/members/manage)

The manage page is a multi-step flow. Customers land here from the Manage button on their subscription card. Step 1 — Subscription summary + refund candidates
Shows the product name, current status, and next charge date with a “I want to cancel” action. Below the subscription card, any orders eligible for a refund are displayed with a “Request refund” link.
Step 2 — Exit survey
Displays the exit survey reasons configured in the Retention offers tab. The customer selects the reason that applies.
Step 3 — Retention offer (optional)
If a retention offer is configured for the selected reason, the customer is shown the offer (discount, pause, or downgrade). They can accept it or proceed to cancel.
Step 4 — Outcome
Shows the result: cancelled, offer accepted, or an error.

Refund candidates on the manage page

The manage page automatically shows refund-eligible orders below the subscription card. An order appears in this list when:
  • refund_eligible is true (merchant rules pass)
  • The order is not fully refunded
  • The order is within the brand’s money-back guarantee window (if configured)
Each candidate card displays the order number, date, how many days ago the order was placed, the total amount, and a link to the refund page.

Customising the manage page

The built-in members/manage page is a starting point. You can build a fully custom version using the getManageData() backend function, getOrders(), and the window.ef.customerCare JavaScript API.
The getManageData() function returns null if the subscription doesn’t exist, doesn’t belong to the current customer, or manage is not enabled on the merchant. Use this to redirect before rendering the page.

The Refund page (/members/refund)

The refund page lets a customer submit a refund request for a specific order. They arrive here from the Request refund link on an order card or from the manage page. What the customer sees:
  • A summary of the order (order number, date, amount).
  • The refund amount (the full remaining balance — read-only).
  • A text area for a reason.
  • A submit button.
Outcome states after submitting:

Customising the refund page

Build a custom page using getRefundEligibility() and window.ef.customerCare.requestRefund():
The getRefundEligibility() function returns null if the order is not found, doesn’t belong to the current customer, or is not eligible for a refund. The eligible flag is false when rules are not met (the reasons array describes why).

Brand variables (brand.*)

The following brand-level variables are available in all templates: Use these in your templates:

Template variables reference

getManageData(transactionId)

Returns an object (or null):

getRefundEligibility(orderCode)

Returns an object (or null):

Order fields (from getOrders())

sub.manage_enabled (subscriptions list)

The getSubscriptions() function includes manage_enabled on each subscription object. Use this to conditionally show the Manage button:

Showing refund-eligible orders

Use refund_eligible, days_since_order, and brand.mbg_days together for the most accurate display: