Skip to main content
&

Admin Home Dashboard

Navigate to /admin/dashboard for a real-time overview of store performance.

KPI Cards

Four headline metrics appear at the top of the dashboard:

Total Sales Revenue

Aggregate revenue from all completed orders in the selected date window.

Orders Processed

Count of orders that have moved past the pending state.

Pending Orders

Active orders awaiting fulfillment action.

Active Customers

Unique customers who placed at least one order in the period.

Dashboard Widgets

Date Filters

The dashboard defaults to the last 30 days. All KPI cards and widgets update when you change the range.
Available presets:

Pending Orders Queue

Displays all active non-completed orders that require a fulfillment action. Results are paginated at 25 per page.
An order appears in the Pending Queue as long as its status has not been set to completed or cancelled. Use this view as your primary daily fulfillment worklist.

Orders List

Full order lookup across all statuses. Paginated at 25 per page. Use the search bar to filter by order ID, customer name, or email.

Order Details

The Order Details page is the central hub for invoice review, fulfillment, and refund actions.

Order Comments Block

Customer-submitted comments are rendered above the Items Purchased section on the invoice. No action is required — they display automatically if the customer entered a comment at checkout.

Payment History Log

A structured log of every payment event for the order:

Mark Shipped

Clicking the Mark Shipped button immediately:
  1. Updates the order status to Shipped (status 2).
  2. Triggers and sends a shipment confirmation email to the customer.
The shipment confirmation email is sent the moment you click Mark Shipped. Confirm the shipping address and tracking details are correct before clicking.
You can also trigger the same action via the Status dropdown: selecting status value 2 (Shipped) has identical behavior — the confirmation email fires immediately.

Send Download Reminder

For orders containing digital items, the Send Download Reminder button manually re-dispatches the download reminder email to the customer on demand.
This button is only visible on orders that include at least one digital download item.

Double-Confirmation Action Gate

High-consequence email actions — Resend Order Confirmation and Send Download Reminder — require two clicks to execute:
  1. The first click reveals a confirmation prompt inline on the page.
  2. The second click sends the email.
This two-step gate prevents accidental duplicate emails. Do not click through both steps unless you intentionally want to re-send the email to the customer.

Status Dropdown Reference


Partial or Full Refunds

Partial or full refunds are issued directly from the Order Details page (/admin/ecommerce/orders/{id}).
1

Open the Order

Navigate to Admin → Orders and click the order you need to refund.
2

Set Order Status (Optional for Full Refunds)

Change the order status using the Update Order Status dropdown to either Refunded or Partially Refunded and then click the Apply Status button (this will not send the customer an email automatically).
Note: If the entire order amount is refunded across payments, the order status will automatically update to Refunded upon processing the refund, allowing you to skip this manual status update.
3

Click the Refund Button in Payments List

Locate the Payments section and click the Refund button next to the specific payment you want to refund.
Automatic Gateway Dispatch: If the payment was processed via Stripe, PayPal, or Paddle, the refund will automatically post directly to the customer’s payment provider via their API.
4

Enter Refund Amount

In the refund modal, review the maximum refundable balance. The field defaults to the full remaining payment amount, but can be modified to any smaller amount for partial refunds. You may also add an optional administrative note or reason.
5

Confirm & Process Refund

Ensure the Post refund via Payment Processor API toggle is enabled (auto-checked for gateway transactions), and click Confirm & Process Refund. The gateway executes the credit, records the refund transaction in order_refunds, updates the payment status, and recalculates the balance due.

1. Direct Gateway API Linkages

When an admin processes a refund, the system resolves the associated payment method and interacts with the respective processor API:

1. Stripe Integration

  • Driver: App\Services\Payments\Processors\StripeProcessor
  • Mechanism: Calls the Stripe REST API via \Stripe\Refund::create().
  • Identifier Resolution:
    • Automatically handles Payment Intent IDs (pi_...), Charge IDs (ch_...), or Customer Payment Methods (pm_...).
    • If a Subscription agreement ID (sub_...) is provided, it retrieves the latest invoice and its underlying PaymentIntent to execute the refund.
  • Amount Handling: Converted to integer cents with currency preservation.

2. PayPal Integration

  • Driver: App\Services\Payments\Processors\PayPalProcessor
  • Mechanism: Calls the PayPal Captures API v2 (POST /v2/payments/captures/{capture_id}/refund).
  • Identifier & Subscription Fallback:
    • Automatically resolves capture IDs from PayPal Checkout Order IDs or Subscription agreement IDs (I-...).
    • If the transaction is a subscription billing agreement sale, it automatically falls back to PayPal’s Sale Refund API (POST /v1/payments/sale/{sale_id}/refund).
  • Error Diagnostics: Intercepts granular error issues and descriptions from PayPal API responses (e.g., already refunded, capture expired, or balance limits) and displays clear toast notifications.

3. Paddle Billing Integration

  • Driver: App\Services\Payments\Processors\PaddleProcessor
  • Mechanism: Calls the Paddle Billing Adjustments API (POST /adjustments).
  • Adjustment Types:
    • Full Refund: Dispatches action: 'refund', type: 'full', and the transaction_id.
    • Partial Refund: Retrieves the transaction line items and creates a partial line adjustment with type: 'partial' and item-level amount tracking.
  • Identifier Resolution: Resolves transaction IDs directly or via Subscription IDs (sub_...) and Customer IDs (ctm_...).

4. Test Gateway & Offline Ledgers

  • Test Driver: App\Services\Payments\Processors\TestProcessor returns simulated refund authorizations (TEST-RFND-XXXXXXXX) for testing environments.
  • Offline / Manual Override: Administrators can uncheck the Post refund via Payment Processor API toggle if the payment was already settled outside the gateway (e.g., cash, check, wire transfer, or direct bank chargeback resolution).

2. Payments Table & Status Behavior

The Payments table on the Order Details view provides clear real-time visibility into the lifecycle of each charge:

Balance Summary Calculations

The order ledger dynamically reflects:
  • Order Total: Original total order charge.
  • Total Paid: Sum of all payments recorded in order_payments.
  • Total Refunded: Sum of all refunds recorded in order_refunds (displayed in red).
  • Balance Due: max(0, Order Total - Total Paid + Total Refunded). Displays a green Paid in Full badge when the net balance due is $0.00.

3. Automated Order Status & Inventory Safeguards

Automatic Order Status Elevation

  • When cumulative refunds equal or exceed the order’s total charge (order_total), the overall orders.order_status is automatically set to 3 (Refunded).
  • For partial refunds, administrators can optionally set the order status to Partially Refunded via the status dropdown.

Inventory Restocking Safeguard

  • When the first refund on an order is created, the system iterates over the order line items (order_details) and increments the available product stock (product_inventory.quantity_available += item_qty).
  • Subsequent partial refunds on the same order will not duplicate inventory restocks.

4. Code & Architecture Reference


Invoice Address Formatting

US and Canadian order invoices display the city, state, and ZIP in the standard inline format:
  • City — customer’s city
  • State — two-letter abbreviation positioned between city and ZIP (US) or province abbreviation (CA)
  • ZIP / Postal Code — appended after the state abbreviation

Checkout Custom Fields Manager

Access to the Checkout Custom Fields Manager is restricted to Admin role only.
Use this tool to inject custom data-collection fields directly into the checkout flow.

Field Positions

Field Types

Billing Page User Type Filter

Step-2 fields can be targeted to specific customer segments:

Data Storage

All custom field responses are stored in the orders.custom_field_data JSON column on the order record. The data is available in the Order Details view and exportable via the Orders export.

Session Carryover

Step-1 (shipping page) field values are held in session after the customer advances. When the order is placed, Step-1 values are merged with Step-2 values and written together into orders.custom_field_data.