Admin Balances
The Wallet Balances screen gives merchants one consolidated, paginated view of every customer who holds a wallet balance. From a single page under WooCommerce you can review headline liability figures, sort and page through all balances, edit any wallet, add a one-off credit or debit, and export the full list to CSV.
One unified page
Earlier versions of WalletPro spread balance management across a fragmented set of admin screens. As of version 1.83.1, a single Customer Wallet Balances page replaces them. It lives under WooCommerce > Wallet Balances and is guarded by the manage_woocommerce capability. From this one screen you can:
- Read headline stats: total liability, customers with a balance, average balance, and the top balance.
- Browse a paginated, sortable table of every customer who has a stored wallet balance.
- Jump to the user-profile balance editor for any customer with a per-row Edit link.
- Apply a one-off credit or debit to a single customer with the Add credit action.
- Export every balance to CSV.
The table read is read-only and paginated, so sorting and paging carry no nonce. The Add credit action is a POST and is nonce-protected, and every CSV export link is nonce-protected as well.
Opening the page
- Log in to WordPress as a user with the
manage_woocommercecapability. - Go to WooCommerce > Wallet Balances.
- The page loads with the headline stats on top, the Add credit form, the export link, and the full balances table sorted by balance descending by default.
Headline stats
A small table at the top of the page summarises the whole customer set. These figures come from the same aggregation that powers the Top Balances report, so they reconcile with it to the cent.
| Stat | Description |
|---|---|
| Outstanding liability | Total of every customer's stored balance: the money your store owes across all wallets. |
| Customers with a balance | Count of customers who hold a stored wallet balance. |
| Average balance | Mean balance across those customers (total liability divided by the customer count). |
| Top balance | The single largest customer balance. |
Balances table
Below the stats, the table lists every customer with a stored balance, 20 rows per page. Each row reads from the stored balance joined to the customer's email and to their most recent ledger movement.
| Column | Description |
|---|---|
| Customer | Display name with the user ID, for example Jane Doe (#42). When the user record is missing, only the ID is shown. |
| The customer's account email. | |
| Balance | Current stored balance, formatted in the store currency. |
| Last activity | Timestamp of the most recent ledger movement for this customer. A customer with a balance but no movement yet shows a dash. |
| Actions | An Edit link that opens the WordPress user-profile screen for that customer, where the wallet balance editor lives. |
Sorting and paging
The Email, Balance, and Last activity column headers are sortable. Click a header to sort by that column; click it again to toggle between ascending and descending. The active column shows an arrow and is announced to assistive technology through aria-sort. Balance sorts compare the stored decimal numerically, not as text.
The default sort is balance, descending. The sort key is mapped through a fixed allow-list, so any unrecognised value falls back to balance-descending. When there is more than one page of results, standard WordPress pagination links appear below the table.
To edit a balance directly, click Edit on the row. That opens the user-profile balance editor, where you can set an absolute balance, record an adjustment reason, and optionally lock the wallet. See Manual Adjustments for the full editor walkthrough.
Add credit (or debit)
The Add credit form applies an additive credit or debit to a single customer. Unlike the profile editor, which sets an absolute balance, this action adds to or subtracts from the current balance.
- Enter the Customer ID of the target customer.
- Choose a Direction: Credit (add funds) or Debit (remove funds).
- Enter the Amount (a positive decimal value, greater than zero).
- Optionally enter a Reason. It is recorded on the transaction history and the audit log. A reason you type is remembered so it can be reused later. If you leave it blank, a default note is recorded instead.
- Click Apply. A status notice appears above the table and the table reflects the change.
Every movement is routed through the same FundsManager chokepoint that handles all other balance changes, so the per-role balance cap, the ledger row, and the audit log entry all apply exactly as they do elsewhere. This screen is a convenient entry point, never a second money path.
The two directions behave slightly differently at the chokepoint:
- Credit: The amount passes through the shared per-role maximum-balance cap before it is applied. If the customer is already at or over their cap, nothing is applied and the notice reads that the customer is already at their balance cap.
- Debit: The debit is atomic and refuses an over-draw. If the customer does not have enough balance for the requested debit, nothing is recorded and the notice says the balance is insufficient.
A debit that exceeds the available balance is refused outright and records nothing. There is no partial debit and no negative balance from this action. Confirm the customer ID and amount before applying, because each applied movement is an immutable ledger entry.
Exporting balances
Click Export balances (CSV) above the table to download a CSV of every customer's current balance. The link is nonce-protected and the export is capability-guarded. The file contains one row per customer with three columns:
| Column | Description |
|---|---|
| User ID | The customer's WordPress user ID. |
| The customer's account email. | |
| Balance | The stored balance as a decimal value. |
The export covers the full balance list, not just the visible page, which makes it convenient for reconciliation against your accounting records.
Audit and ledger
Because the Add credit action and the profile-screen editor both run through the FundsManager chokepoint, every change made from these screens writes a ledger row and an append-only audit log entry capturing the affected customer and the before and after balance. The audit write is fail-safe: a failed audit write never unwinds a committed balance change. To review the recorded history, see the Audit Log, and for the broader transaction record see Financial Reports.