*** Changelog *** = v1.7.0 (September 11, 2026) = * New - An optional, dismissible notice on TeraWallet's admin screens invites you to join the mailing list; nothing is sent unless you tick consent and submit. * Tweak - Refreshed the colours and type on the Upgrade to Pro banner for better readability. = v1.6.15 (September 7, 2026) = * Security - A repeated or replayed "buy this content" request no longer charges the wallet more than once for the same one-time purchase. * Security - The Adjust Balance screen now escapes the customer's display name and email address before showing them. * Fix - TeraWallet now declares compatibility with High-Performance Order Storage, so it no longer shows as incompatible on the WooCommerce Features screen. * Fix - Checkout no longer fails with a fatal error when the wallet gateway is handed an order that no longer exists; it reports a payment failure instead. * Fix - The partial payment notice at checkout understated what the other payment method would charge, on stores that tax wallet top-ups. * Fix - The wallet is no longer offered as full payment for an order the balance cannot cover, which took the balance and then failed the checkout. * Fix - Settings fields hidden behind their own toggle now appear, including the partial payment Tax treatment setting. * Fix - The Amount label on the Adjust Balance screen shows the store currency symbol again. * Tweak - The Upgrade to Pro page now covers top-up bonus campaigns (Wallet Boost). = v1.6.14 (September 1, 2026) = * New - New Statement tab replaces Transactions: pick a date range, see opening and closing balance with a running balance per row, and download or print it as CSV. * Fix - Statement and wallet amounts now convert correctly on multi-currency stores; the closing balance again matches the wallet balance shown elsewhere. * Fix - The wallet balance on Blocks checkout no longer breaks the payment method when it can't be read as a number. * Fix - The settings screen reopens on the tab you left, on browsers where storage is unavailable. * Tweak - The Transactions tab is gone; old /my-wallet/transactions/ links now open the wallet dashboard. Add-ons overriding templates/wc-endpoint-wallet.php should refresh their copy. * Tweak - Developers: the `woo_wallet_transactons_datatable_columns` and `woo_wallet_transactons_datatable_row_data` filters are removed; use `woo_wallet_statement_columns`, `woo_wallet_statement_row_cells` and `woo_wallet_statement_row_columns` instead. * Tweak - Developers: new `woo_wallet_statement_adjustments` and `woo_wallet_statement_opening_adjustment` filters let an add-on place a non-ledger balance movement on the statement as a dated line. * Tweak - Redesigned the Upgrade to Pro page; pricing now reads "from $79" and links to the 5-site and 25-site licences. * Performance - The wallet's frontend script is 445 KB smaller now that the old transaction table's charting library no longer loads on any store page. = v1.6.13 (August 22, 2026) = * Security - The wallet CSV export and download now require the wallet management capability, not just a valid request token. * Fix - Cashback is credited again on stores that had saved the settings page. No need to re-save; the "Recalculate cashback" order action works again too. * Fix - The cashback type and cashback rule settings can no longer be saved as empty. * Fix - Wallet partial payment is no longer refused at checkout when an add-on reports a balance higher than the wallet actually holds. * Fix - Transaction CSV exports are now written oldest-first, so a store importing them rebuilds the ledger in the order it happened. Re-export any file you plan to import. * Fix - Deleted transactions are no longer included in a CSV export or its record count. * Fix - The order note for a failed wallet partial payment no longer blames the customer's balance when that was not the cause. * Tweak - Refreshed the Wallet Export screen and added an Export button to the Wallet Users screen. * Tweak - Confirmed compatibility with WordPress 7.1. * Performance - Large transaction exports are considerably faster and no longer risk timing out. = v1.6.12 (August 16, 2026) = – **Fix:-** A wallet credit or debit that did not name a user explicitly was applied to user ID 0 instead of the logged-in customer. The wallet object resolved "the current user" while WordPress was still including plugin files — before the function that answers that question exists — so it silently settled on 0 and kept that value for the whole request. It is now resolved at the moment it is needed. Only third-party code using the shorthand `credit()`/`debit()` form was affected; nothing in TeraWallet itself calls it that way, so no existing balances are wrong. – **Tweak:-** The "Upgrade to Pro" banner is no longer an admin notice. It was attached to the `admin_notices` hook and filtered down to TeraWallet's screens from inside the callback; it is now ordinary page content, emitted by TeraWallet's own admin pages through a new `woo_wallet_admin_page_header` action. It cannot reach the wider dashboard by any route, and third-party code can attach its own output to TeraWallet pages through the same hook. – **Tweak:-** The banner itself has been rewritten. On a store already carrying wallet credit it now opens with that store's own outstanding balance and the number of customers holding one, then makes the case against those figures rather than listing features in the abstract; stores with little or no wallet activity get a capability-led version instead. Withdrawals, credit expiry and the breakage reports are described by what they do for the store, the remaining four Pro features are named, and the price, the money-back guarantee and a single clear action are all present without leaving the page. It links to the in-admin Upgrade to Pro page — which carries the full comparison, the store's own numbers and the purchase FAQ — instead of sending a first click straight off-site. – **Tweak:-** The banner's dismiss button has been removed. Dismissal existed because a site-wide notice has to be dismissible; now that the banner appears only on this plugin's own five screens and nowhere else, there is nothing to dismiss it from. It still disappears the moment TeraWallet Pro is installed. Existing dismissals are simply forgotten — the per-user meta and the legacy site option are no longer read. – **Tweak:-** Pending database upgrades now run on `plugins_loaded` instead of while the plugin file is still being included. At the earlier point WordPress has not yet loaded its pluggable functions and WooCommerce may not have loaded at all, so an upgrade routine that needed either one would end the request with a fatal error. This has constrained what upgrade routines could safely do since 1.0.8; they can now use the full WordPress and WooCommerce API. = v1.6.11 (August 15, 2026) = – **Notice:-** The "Upgrade to Pro" promo no longer appears on admin screens that do not belong to TeraWallet. Until now it was attached to the global admin notice hook, so it rendered on every screen in wp-admin — including other plugins' pages, Posts and Settings. It is now confined to the TeraWallet menu and its subpages. – **Notice:-** The same promo is shown again on the Wallet Dashboard and the Settings screen, where it had been invisible since 1.6.6. Version 1.6.6 made the Wallet Dashboard the default TeraWallet landing screen and, in the same release, began stripping every admin notice from the Dashboard and Settings screens to keep third-party nags out of their layout — which removed TeraWallet's own promo from the two screens an administrator sees first. That side effect was not documented at the time. Third-party notices are still suppressed on those two screens; only TeraWallet's own surfaces are exempt. – **Notice:-** Dismissing the promo is now recorded per administrator instead of per site. Dismissal remains permanent and the promo never reappears for anyone who has dismissed it — this only stops one administrator's dismissal from silencing it for colleagues who have never seen it. Sites upgrading with an existing dismissal have it applied to every current administrator account, so nobody who already dismissed it sees it again. For the record, 1.6.7 changed dismissal from a 14-day reminder to permanent (required by the WordPress.org plugin review team) without a changelog entry. – **New:-** Pro-only features are now visible in the interface instead of simply absent, so it is possible to tell what the free plugin does and does not include. A **Withdrawals** page under the TeraWallet menu, a **Credit Expiry** row in Credit Options, and a **Bulk Import** button on Wallet Users each explain the feature and are clearly marked as locked. They are display-only, cannot be submitted or triggered, and disappear entirely when TeraWallet Pro is active. No existing feature was changed, disabled or restricted. – **New:-** The Wallet Dashboard's locked report slots — Breakage, Aging, Expiry trend, Withdrawals and Coupons — now show a blurred sample of the report and open a panel explaining what it does. Previously they were inert grey boxes and a single line of text. The sample figures are illustrative and are not calculated from your store's data. – **New:-** When outstanding wallet liability is substantial, the Dashboard now explains beneath the figure how Pro's credit expiry applies to it. Hidden on stores below a threshold, and filterable via `woo_wallet_pro_liability_nudge_threshold`. – **New:-** The **Upgrade to Pro** page has been rewritten. It now states the price ($79 per year, one site) instead of sending you to the website to find it, describes what each Pro feature does for the store rather than what it is, and answers the questions people actually ask before buying — what the licence covers, the 30-day refund policy, whether Pro replaces the free plugin (it does not — it requires it), what happens if the licence is not renewed, and what updates and support include. On stores already carrying meaningful wallet liability, the page shows that figure and your funded-wallet count so the case is made with your own numbers; stores below the threshold see nothing rather than a row of zeroes. – **New:-** The Upgrade page's Free vs Pro table now lists the free plugin's full feature set — ledger, top-ups, partial payments, cashback, signup, daily visit, review and referral rewards, peer-to-peer transfers, multi-currency, Blocks checkout, the Wallet Dashboard, Dokan/WCFM/WC Marketplace support and the REST API — grouped into sections alongside every Pro addition. Previously it showed six rows, five of which were things the free plugin does not do. – **New:-** The Upgrade page now covers Pro features that shipped after it was last written: the spend milestone and birthday bonus earning actions, the breakage, aging, expiry-trend, withdrawal and coupon reports, per-category credit expiry with pre-expiry reminder emails, and per-gateway withdrawal fees. – **Fix:-** Currency amounts on the Wallet Dashboard could display as `₹4,820.00` instead of `₹4,820.00` on stores whose currency symbol is not a plain ASCII character (rupee, shekel, riyal and others). Affected the displayed figures only; no stored amount was ever wrong. – **Fix:-** The Wallet Dashboard's liability breakdown no longer reports misleading percentages. The shares were calculated against total credit issued while the card sat beneath the net liability figure, so a store with a single credit source read "100%" of a number it did not owe — most visibly as "Other … 100%" next to negative Purchases and Partial payments. The card now states what the percentages are a share of, lists debits separately under "Reduced by" instead of mixing them into the same list, and ends with a "Net outstanding" line that reconciles to the headline figure. No stored data changed. – **Fix:-** Wallet credit returned when an order paid partly from the wallet is cancelled is now recorded as a partial payment refund instead of "Other", so it is categorised correctly in reports and transaction lists. Existing transactions are not reclassified. – **Fix:-** Cashback refunds, cashback adjustments and vendor commissions showed a raw slug rather than their proper name in the Dashboard's liability breakdown. – **Tweak:-** Corrected an inaccurate claim on the Upgrade to Pro page about the number of stores using TeraWallet Pro. – **Tweak:-** Every "Upgrade to Pro" link now identifies which screen it was clicked from, so it is possible to tell which parts of the plugin actually lead to upgrades. No information about your site is added to these links beyond what was already sent before this release. = v1.6.10 (August 07, 2026) = – **Security:-** A wallet top-up paid with a discount coupon no longer credits more than the customer actually paid (CVE-2026-16538). Top-ups go through the normal WooCommerce cart, so an ordinary store coupon could be applied to one — the wallet was then credited with the full pre-discount amount while only the discounted total was collected, letting a customer buy store credit for a fraction of its value, repeatedly. The wallet is now credited with the value the store actually keeps for the top-up: the amount after any discount, excluding tax and shipping. An undiscounted top-up still credits the full requested amount on stores that charge tax or shipping on it, and the `woo_wallet_credit_purchase_amount` filter continues to work for sites that customise this. A top-up left at zero by a full-value coupon now records an order note instead of an empty transaction. The admin dashboard's monthly top-up figure used the same pre-discount amount and has been corrected to match. Sites that do not issue coupons usable on top-up orders were never at risk. Reported by Guillermo Álvarez Fernández. = v1.6.9 (August 05, 2026) = – **Fix:-** Wallet write requests made through the REST API — creating a credit or debit from `terawallet/v1/admin/transactions`, purging a customer's transaction log, and admin-initiated transfers — failed with a critical error on every 1.6.8 site. The replay-protection service these endpoints depend on was never loaded. It is now loaded with the rest of the REST API, so no endpoint can miss it. Sites that are not integrating with the REST API are unaffected; the wallet itself, the admin screens and the customer dashboard never used this path. – **Fix:-** Retrying a wallet transaction whose original request timed out could report an already-completed transaction as failed, and — when the balance allowed it — could have charged the customer a second time. The `Idempotency-Key` was only recorded once a request finished, so a request that died after the money moved (for example while the transaction email was being sent) left nothing behind for the retry to recognise. The key is now claimed before the transaction is attempted: a retry that arrives while the original is still unresolved is refused with a clear "already in progress" response (HTTP 409) instead of running a second time. – **Fix:-** A wallet transaction is no longer reported as failed when only its notification email failed. The transaction row and the updated balance were already saved at that point, but an error from the mail server (or from a third-party mail plugin) was passed back to the caller as a failure, and any follow-up record the caller writes — such as the transfer fee note or the order link — was skipped. Mail problems are now logged and the transaction is reported correctly. – **Fix:-** Retrying a bulk credit or debit that was interrupted part-way through no longer records an unfinished customer as failed. A repeat of a completed bulk action now returns the original result without re-running it, and a repeat sent while the first is still running is refused as a whole with the "already in progress" response. Customers whose outcome is genuinely still unknown are now marked as such, so they are not credited a second time by hand during reconciliation. – **Tweak:-** Wallet transaction and low-balance notification emails are now sent after the wallet lock is released rather than while it is held, so a slow mail server no longer delays other wallet activity for the same customer. – **Fix:-** A locked wallet no longer produces a "Via wallet" partial-payment discount at checkout. With Partial Payment and auto-deduct enabled, a blocked balance was still treated as spendable — the order's total was reduced even though the ledger correctly refused to withdraw the funds, letting the customer be undercharged. The partial-payment fee is now withheld whenever the wallet is locked, across the classic checkout, the Blocks/Store API checkout and the AJAX opt-in. – **Fix:-** Partial payments placed through the Blocks (Store API) checkout could fail with "insufficient balance" even when the wallet held exactly the amount being spent. The "Via wallet" line is applied as a negative fee, and WooCommerce re-taxes negative fees when it rebuilds the order's totals — a step the Blocks checkout performs but the classic checkout does not. TeraWallet already removes that tax, but at this point in the process it could no longer recognise its own fee line, so the tax survived: a ₹94.24 wallet payment was recorded as ₹111.20 and the withdrawal was refused, leaving the order on hold. The fee is now identified correctly at every stage, so the amount withdrawn is exactly the amount shown at checkout. Stores using the "Wallet pays the tax as well" treatment are also corrected — that mode's own calculation was previously overwritten on the Blocks checkout. Classic checkout was never affected. – **Fix:-** Cancelling an order paid partly from the wallet could refund the wallet more than once. Repeatedly clicking Cancel from My Account (or a cancel arriving alongside a WooCommerce refund or the admin "Refund" button on the Via wallet fee) let each request credit the same amount, because the three paths did not share a lock, worked from a stale copy of the order, and only wrote the "already refunded" marker after the money had moved. All three now share one per-order lock, re-read the order inside it and claim the refund before crediting, so the wallet is credited exactly once — and the remainder only, when an earlier partial refund already returned part of it. = v1.6.8 (July 17, 2026) = – **Fix:-** TeraWallet admin screens were partly broken on sites running a non-English language (reported on Persian/fa_IR). WordPress builds each submenu's screen ID from the *translated* menu title, but several checks assumed the English "TeraWallet" spelling, so they never matched: on **Wallet → Users** the credit/debit, edit-balance and delete-log dialogs were never loaded — leaving those bulk actions unresponsive — the mobile bulk-action controls lost their styling, and on the Wallet Dashboard and Settings screens third-party admin notices were no longer suppressed while the Settings page lost its full-height layout. Screen IDs are now resolved from what WordPress actually registered, so every TeraWallet screen behaves identically in any language. English sites are unaffected. – **Fix:-** The Wallet Dashboard displayed a literal ` ` next to the currency amounts (for example `35,370,741 تومان`) on stores whose currency position is "Left/Right with space" — the default for Persian Toman and several other currencies. The animated figures are rebuilt in the browser from WooCommerce's price format, which was passed through with its HTML entity intact. The amounts now render with a proper non-breaking space. – **Fix:-** The currency symbol shown beside the minimum/maximum top-up, minimum/maximum transfer, minimum cart and maximum cashback amount settings appeared as a raw HTML entity (for example `₹` instead of ₹) for currencies whose symbol is not a plain character. = v1.6.7 (July 8, 2026) = – **Security:-** Wallet CSV exports are now written to a dedicated, access-protected `uploads/woo-wallet-exports/` directory (with an `.htaccess` deny rule and index file) instead of the public uploads root, so exported financial data is no longer directly downloadable by URL. – **Security:-** Settings saved through the Settings API are now sanitized by default even when a field does not declare its own `sanitize_callback`, preventing raw values from being stored. – **Security:-** Sell-content template output is now escaped with an allow-list (`wp_kses`) before rendering, while preserving the purchase form controls. – **Fix:-** Replaced the deprecated `utf8_encode()` call in the CSV exporter with `mb_convert_encoding()`. – **Fix:-** The order refund AJAX handler now closes its output buffer before returning, avoiding a stray/unbalanced buffer. – **Fix:-** Corrected two internationalization strings that passed variables into gettext calls (WCMp commission threshold message and the users list "All" count). – **Tweak:-** The "Upgrade to Pro" admin notice is now permanently dismissible — dismissing it no longer re-appears after 14 days. – **Tweak:-** Added a direct-access guard to the settings loader. = v1.6.6 (June 27, 2026) = – **New:-** Added a **Wallet Dashboard** reports page — the new default TeraWallet admin landing screen — showing store-wide wallet liability at a glance: total outstanding liability, the number of wallets holding a positive balance, lifetime credited and debited totals, and an interactive composition bar that breaks the liability down by source (top-ups, cashback, refunds, partial payments, transfers, adjustments). The page is server-rendered (fully usable with JavaScript disabled) with a live **Refresh** button, and the summary is cached and automatically invalidated whenever a wallet transaction is recorded, so a page reload always reflects current data. Add-ons can inject their own metric cards and report tabs through the `woo_wallet_reports_metrics` and `woo_wallet_reports_tabs` filters and read the figures from the `terawallet/v1/admin/reports/summary` REST endpoint (see docs/EXTENDING_REPORTS.md). = v1.6.5 (June 25, 2026) = – **Fix:-** Deleting a WordPress user now clears that user's wallet ledger for all of their transactions. The previous cleanup used an inner join between the transactions and transaction-meta tables, so transactions without any meta (most top-ups and plain credits/debits) were silently skipped. The user's transactions are now soft-deleted (marked deleted, recoverable) via the `deleted_user` hook; the `woo_wallet_delete_transaction_records` filter (now also passed the user ID) still lets you disable this. – **Security:-** Fixed a missing-authorization flaw (≤ 1.6.3) that let any authenticated user (Subscriber and above) enumerate the login name, email address and user ID of every WordPress account — including administrators — through the `terawallet_export_user_search` AJAX action. The capability guard never fired because it tested the (always-truthy) capability *string* instead of `current_user_can()`; the admin exporter search now verifies the wallet capability and uses its own dedicated nonce that is never exposed on the front-end My Account page. The peer-to-peer transfer recipient search is unaffected. – **Tweak:-** Hardened the new `woo_wallet_transactions_query_order_cols` filter: the order-by column whitelist is now passed through `sanitize_key()` so a third-party plugin that appends to the filter cannot smuggle SQL metacharacters into the transaction query's ORDER BY identifier. = v1.6.4 (June 10, 2026) = – **New:-** The customer wallet dashboard now shows a row of summary cards — **Total top-ups**, **Total spent** (covers both full wallet payments and partial payments), **Cashback earned** (shown only when the cashback reward program is enabled), and **Available balance** — above the recent transactions list. Third-party/add-on plugins can register their own cards (e.g. "Total withdrawn") via the new `woo_wallet_dashboard_stat_cards` filter. The figures share one helper (`woo_wallet_get_user_category_total()`) with the admin user report, so dashboard and admin always agree. – **New:-** Partial payment "Tax treatment" setting. Choose **Wallet pays goods only** (default — the non-taxable wallet fee is clamped to the ex-tax subtotal and the tax is charged on the order; correct when top-ups are not taxed) or **Wallet pays the whole order including tax** (a taxable wallet fee so the wallet can cover the tax line; use only when top-ups are taxed at load). This resolves the long-standing "tax stays on the full order" reports, caused by WooCommerce clamping negative fees to the ex-tax total (woocommerce/woocommerce#28028) so a non-taxable wallet fee could never pay the tax portion. – **New:-** Partial wallet payments are now refunded proportionally to the customer wallet when you issue a **partial** WooCommerce refund (previously only a full cancellation refunded the wallet). Opt out via the new "Refund wallet on partial refunds" setting; override the amount with the `woo_wallet_partial_payment_refund_amount` filter. Idempotent per refund and capped so the cumulative wallet refund can never exceed the original wallet debit. – **New:-** "Deduct wallet balance" timing setting — keep deducting at order placement (default) or switch to **When payment completes** so abandoned/failed orders never leave the wallet debited. If the balance was spent before payment cleared, the order is placed on-hold and the `woo_wallet_partial_payment_debit_failed` action fires instead of overdrafting. – **Fix:-** Closed a silent over-cap where entering a wallet amount larger than WooCommerce would accept showed one figure at checkout but debited a smaller one. The applied "Via wallet" amount is now capped to the active mode's true ceiling (filter `woo_wallet_partial_payment_max_amount`) so the displayed amount and the wallet debit always agree. – **Tweak:-** Partial-payment refunds (both full cancellation and partial refunds) now reverse the exact base-currency amount originally debited — captured on the order as `_partial_payment_base_amount` — rather than re-converting at a later exchange rate, eliminating phantom FX gain/loss on multicurrency stores. – **Tweak:-** The partial-payment debit is now serialised by a per-order lock (in addition to the existing idempotency meta) so concurrent gateway webhooks cannot double-debit. – **Tweak:-** The "Details" column in the customer wallet dashboard transaction table now shows its full text by wrapping onto multiple lines instead of truncating with an ellipsis. The column keeps its responsive priority (other columns still collapse into the expandable row on narrow screens), so long descriptions stay readable on mobile without widening the table. – **New:-** The wallet emails ("New wallet transaction" and "Low Wallet Balance") now carry the standard WooCommerce **Additional content** box and are grouped under **Payments** in WooCommerce 10.3+ email settings, matching how core WooCommerce emails behave. – **New:-** Both wallet emails now include action buttons — "View your wallet" on the transaction email and "Recharge your wallet now" on the low-balance email — linking straight to the customer's wallet/top-up page. – **Tweak:-** Reworked the wallet transaction email to clearly show the transaction type, amount, details, date and the resulting balance as separate, correctly formatted values. – **Fix:-** The plain-text wallet transaction email showed the current balance in place of the transacted amount (so the credited/debited figure was wrong) and ran words together; both are corrected. – **Fix:-** The low-balance email no longer re-sends on every subsequent debit while the balance is already low — it now fires once, only when a debit crosses the configured threshold. – **Fix:-** Corrected the "Please recharge you wallet" typo in the low-balance email. – **Security:-** Hardened the My Account wallet page so the `wallet_action` query value is sanitised and allow-listed before it is used to dispatch a tab's content hook, preventing a logged-in customer from triggering arbitrary `woo_wallet_*_content` actions/filters. The set of allowed tabs is filterable via `woo_wallet_allowed_dashboard_actions`. – **Fix:-** On single-currency (single_base) stores, debits could be silently rejected even though the dashboard showed an ample balance, on installs that had previously run in multi-currency / per-currency mode. The displayed balance currency-converted old foreign-currency rows, but the race-safe debit gate reads the raw ledger sum (which assumes every row is already in base currency), so the two figures diverged. A one-time upgrade routine now normalizes any leftover non-base ledger rows into the store base currency — converted at the same rate the dashboard already used, with the original amount/currency/rate preserved in the transaction's audit columns — so the spendable balance and the displayed balance always agree. = v1.6.3 (May 30, 2026) = – **New:-** Transaction category is now a first-class indexed column on `woo_wallet_transactions` (was previously only on transaction meta). Adds `(user_id, category, deleted)` index for cheap admin filters/aggregations. – **New:-** Filterable PHP registry of canonical categories (`woo_wallet_get_transaction_types`, filter `woo_wallet_transaction_types`) so marketplace and addon plugins can register their own kinds. – **New:-** Admin "Transaction descriptions" settings tab with per-category description templates (tokens: `{order_id}`, `{amount}`, `{user_name}`, `{currency}`, `{original_details}`). When a template is set, it replaces the system-generated description on new transactions. – **New:-** Transaction CSV export now includes the `category` column. – **Tweak:-** Ledger writers (`credit`, `debit`, `transfer`) accept `$args['category']`; legacy `$args['for']` continues to work and is normalised (`credit_purchase` → `topup`, `purchase` → `partial_payment`). Transfer legs are now correctly tagged `transfer`. – **Tweak:-** Admin balance-details columns and the customer/admin REST `category` filter now read the column directly instead of joining the meta table. – **Tweak:-** The Wallet > Users bulk Credit / Debit actions now collect amount and description in a WCBackboneModal popup (consistent with the existing Delete Log dialog) instead of inline form fields. Bulk admin adjustments are tagged `category='adjustment'`. – **Fix:-** Ledger amounts are now quantized to the store's price decimals on write, and the spendable balance is floored (never rounded up) on read — closing a rounding loophole where sub-cent "dust" from multicurrency conversion (e.g. a raw balance of 124.12511111 shown as 124.13) could not be debited, blocking wallet-gateway payments and silently breaking partial payments. – **Security:-** Per-category description templates are now stripped of HTML before the rendered text is stored on a transaction, so a template using the `{user_name}` or `{original_details}` token can no longer become a stored-XSS vector via an attacker-controlled display name or details string. – **Security:-** Transaction category slugs passed to the ledger writers are now validated against the registered category set; an unregistered slug collapses to `other` instead of being written verbatim, preventing third-party code from polluting the `category` column with unfilterable values. = v1.6.2 (May 25, 2026) = – **Security:-** Admin bulk credit/debit (`POST /terawallet/v1/admin/transactions/bulk`) now records a per-user idempotency sub-key. A retry after a mid-loop process death no longer re-credits users who already received the credit on the first attempt. – **Security:-** Admin bulk credit/debit now forwards the request `currency` argument, fixing a multi-currency bug where the stored amount depended on the admin's active currency switcher state. – **Security:-** Cancelled-order partial-payment refund is now wrapped in a per-order `GET_LOCK`, so two concurrent cancel webhooks for the same order can no longer double-refund the wallet. – **Security:-** Section-heading admin settings rows are now rendered with the label as a plain text node, and both label and hint are sanitised with `wp_kses_post()` on the REST response — closing a stored-XSS vector exploitable by a third-party plugin hooking the `woo_wallet_action_*_form_fields` filter chain. – **Security:-** `WooWallet_Referral_Service::record_signup()` now serialises its existence check and INSERT under a per-referred-user `GET_LOCK`, preventing two concurrent signup-drain hooks from writing duplicate pending sign-up rows that could later be credited twice. – **Fix:-** New-user-registration and referral signup bonuses are now credited for users created via SSO / SAML, social login, the REST API, WP-CLI or any programmatic `wp_insert_user()`. A new early `user_register` capture (`Woo_Wallet_Signup_Handler`) defers crediting until the earning-action registry is loaded, so signups created before `woocommerce_init` are no longer missed. – **Fix:-** Referral visit and signup bonuses are now credited in the store base currency, matching the amount entered in settings — no more unwanted active-currency conversion in multi-currency stores. – **Fix:-** The referral "Signups" limit now counts credited signups instead of registrations, so a referred customer who never completes the minimum spend no longer consumes a limit slot. – **Fix:-** Crediting a referral signup whose referrer account was deleted no longer credits user ID 0. – **Tweak:-** Referral "Minimum Order Amount" setting renamed to "Minimum Spend" with a clearer description — it gates on the referred customer's total lifetime spend. – **Tweak:-** Loader for action/REST classes now hooks `woocommerce_init` instead of `init`, removing the WooCommerce-existence guard while keeping both the WC-inactive fatal and the WP 6.7 translation notice fixed. – **Tweak:-** Redesigned the Referrals action settings for clarity — labelled fields, section headings, inline help text, and side-by-side limit controls with the cap hidden until a limit period is chosen. – **New:-** Referral activity is now recorded in a dedicated `woo_wallet_referrals` database table — one row per visitor or sign-up referral, with status, reward amount and the currency it was credited in. Replaces the scattered `_woo_wallet_referring_*` user meta and gives referrals a full audit trail. – **New:-** The customer Referrals page now shows a referral history — who was referred, the reward type, amount, status (pending / credited / rejected) and date — alongside a converted earnings summary. – **New:-** New admin Referral Report screen (TeraWallet → Referral Report) listing every referral with referrer / type / status / date-range filters, a store-wide summary header and a filtered CSV export. – **Fix:-** Referral earnings shown to customers now carry their currency and reconvert to the active storefront currency on a currency switch — previously the total was a raw untagged number that could display incorrectly and never reconverted. = v1.6.1 (May 20, 2026) = – **Security:-** Wrapped `wallet_cashback()` in a per-order `GET_LOCK` mirroring the 1.6.0 `wallet_credit_purchase` fix, so duplicate `processing`/`completed` status transitions or replayed gateway webhooks can no longer double-credit cashback. Order meta now stores an array of credited transaction ids so historical doubles are recoverable. – **Security:-** Cashback clawback on cancellation no longer fails silently when the customer has spent the credit. Default policy: debit whatever balance remains and log the gap to a new `_cashback_unreversed_amount` order meta + order note. Opt-in setting `cashback_clawback_allow_negative` allows sites to drive the wallet negative for exact reversal. – **Security:-** The Delete Logs bulk operation is now wrapped in `GET_LOCK('woo_wallet_lock_user_')` + `START TRANSACTION`, matching `recode_transaction()` and `transfer()`. Closes a race where a concurrent top-up landing between the pre-delete `SUM` and the post-delete re-credit was silently lost. – **New:-** New refund handler on `woocommerce_order_refunded` clawing back cashback prorated against the refunded fraction. Off by default for upgrade safety; enable in Settings → Wallet Credit → Refund clawback. New filter `woo_wallet_cashback_refund_clawback_amount` for marketplace overrides. – **New:-** New `max_cashback_scope` setting (`per_item` | `per_order`). Defaults to `per_order` on fresh installs so the global cap applies once per cart; existing sites are migrated to `per_item` to preserve current behaviour. – **New:-** REST transactions endpoints (`/terawallet/v1/me/transactions` and `/wc/v3/wallet/transactions`) now expose a typed `category` field (`topup`, `cashback`, `cashback_adjustment`, `cashback_refund`, `partial_payment`, `transfer`, `refund`, `adjustment`, `other`) and accept a `category=` query argument. – **New:-** Cashback expiry seam: new filter `woo_wallet_cashback_expiry_timestamp` lets Pro and addons mark a cashback row as expiring on a given timestamp; the value is stored in transaction meta and projected as `cashback_expires_at` in the REST response. Core does not enforce expiry. – **New:-** Unified the React Actions tab with the standard settings flow. Each earning action (daily visits, new registration, product review, referrals, sell-content) is now rendered as a grouped collapsible card inside the same Panel component that powers General and Credit Options, and saves through `POST /wc/v3/wallet/settings/section` instead of a dedicated `/action` endpoint. – **New:-** Action settings are now persisted in a single `_wallet_settings_actions` option with namespaced keys (`{action_id}__{field}`) — readable via `woo_wallet_get_setting( '_wallet_settings_actions', 'daily_visits__amount' )`. An idempotent 1.6.1 migration copies pre-existing per-action options (`woo_wallet_daily_visits_settings`, etc.) into the merged row; the legacy rows are kept in place as a rollback safety net. – **New:-** Delete Logs bulk action on the TeraWallet → Wallet admin screen now opens a modal that lets the admin pick the **delete mode** (Soft — recoverable, sets `deleted=1`; Hard — permanent `DELETE FROM`) and the **balance handling** (Keep — insert a single balancing credit/debit so the user's balance is unchanged; Wipe — let the balance settle to 0). Previously the action was hard-wired to "hard-delete everything + re-credit positive balance," with no admin choice. – **New:-** New helper `woo_wallet_purge_user_transactions( $user_id, $delete_mode, $balance_handling )` exposes the same flow to extensions. New action `woo_wallet_user_transactions_purged` fires on completion. Legacy filter `woo_wallet_credit_user_after_delete_log` is still honored when `$balance_handling === 'keep'` for back-compat. – **Fix:-** Order-side cashback recompute (`recalculate_order_cashback`) now writes a compensating `cashback_adjustment` ledger row instead of mutating the original cashback row's `amount` in place. Restores the append-only ledger invariant and keeps the `_current_woo_wallet_balance` cache in sync. Removed the noisy `woocommerce_order_after_calculate_totals` recompute hook. – **Fix:-** Multi-currency parity for order-side cashback: `min_cart_amount` and `max_cashback_amount` are now converted from base to the order's currency on `woo_wallet_form_order_cashback_amount` (matches the existing cart-side filter). Non-base orders no longer compute against raw base-currency settings. – **Fix:-** Coupon cashback amount is now recomputed at credit time from the live order's coupons rather than trusting the checkout-time meta. Order edits no longer desync stored coupon cashback. The legacy `discount_total`/`total` rewrite is replaced with a non-discount fee item; gated by `woo_wallet_legacy_coupon_cashback_total_mutation` so existing reports are not affected on upgrade. – **Fix:-** Negative balances are now preserved symmetrically when "Keep balance" is chosen for Delete Logs — a debt of `-25` inserts a balancing **debit** of `25` instead of being silently zeroed out by the old `if ( $current_balance && ... )` + positive-only `credit()` path. – **Tweak:-** New filter `woo_wallet_cashback_clawback_strategy` lets sites override the partial / full-or-skip / force-negative reversal policy. – **Tweak:-** Custom `WooWalletAction` subclasses keep working unchanged: `init_settings()` now reads the merged option first and falls back to the legacy per-action option, so third-party actions that have not migrated still load their settings correctly. – **Tweak:-** `POST /wc/v3/wallet/settings/action` is kept as a thin deprecated shim that delegates to `/section` for one minor cycle; the React UI no longer calls it. – **Tweak:-** Removed dead pre-React rendering code: legacy server-rendered form callbacks (`show_navigation`, `show_forms`, all `callback_*` field renderers) in the settings API helper, plus the legacy `display_action_settings` / `display_actions_table` handlers and the orphan `WooWalletAction::admin_options()` form renderer. The `?page=woo-wallet-actions` redirect shim remains for old bookmarks. – **Tweak:-** Database migration `1.6.1` is idempotent — fresh installs default to per-order cap scope; upgraded installs preserve per-item cap scope and legacy coupon-cashback total mutation behaviour, and per-action option rows are merged into `_wallet_settings_actions` without removing the legacy rows. = v1.6.0 (May 04, 2026) = – **New:-** add new settings fields and hooks for Woo Wallet – **New:-** Implemented various input fields including AttachmentField, CheckboxField, ColorField, HtmlField, MultiSelectField, MulticheckField, NumberField, PasswordField, RadioField, SelectField, TextField, and TextareaField. – **New:-** Created a custom hook `useSettings` for managing settings state, loading, and saving. – **New:-** Added a field types registry to manage different input types dynamically. – **New:-** Introduced CSS styles for the new settings interface, ensuring compatibility with light and dark themes. – **New:-** Integrated REST API calls for fetching and saving settings data. – **New:-** Multi-currency provider abstraction with first-class adapters for WOOCS/FOX, WPML/WCML, CURCY, Aelia, and YayCurrency, plus a generic fallback for any other plugin that filters `woocommerce_currency`. – **New:-** Per-row currency audit columns (`original_amount`, `original_currency`, `original_rate`, `mode`) and a `(user_id, currency, deleted)` index on the wallet transactions table for accurate historical reporting. – **New:-** Additive REST surface: `/terawallet/v1/me/balance` now returns `base_currency`, `base_amount`, `mode`, and a `balances[]` array; `/me/transfer` and `/me/topup` accept an optional `currency` argument; `/wc/v3/wallet` exposes the new audit fields and a `currency` query filter. – **New:-** Admin endpoint `GET /wc/v3/wallet/multicurrency` and a Currency Mode panel in the React settings app that surfaces the active provider, base/active currencies, and the effective ledger mode. – **Security:-** Hardened the debit balance gate in `recode_transaction()` to read the raw ledger SUM directly instead of the filtered `get_wallet_balance()` value. Closes an overdraft window where any third-party hook on `woo_wallet_current_balance` (credit-expiry, redeemed-totals plugins) could inflate the perceived balance and let a user debit into negative territory. – **Security:-** Wrapped `wallet_credit_purchase()` in a per-order `GET_LOCK` with re-fetch inside the lock so duplicate gateway IPN deliveries (PayPal/Stripe webhook retries) can no longer both pass the `_wc_wallet_purchase_credited` meta guard and double-credit the wallet. – **Fix:-** Partial-payment debit now records the order currency, matching the cancellation refund — no more debit/refund pairs landing in different currencies. – **Fix:-** Cashback debit on order cancellation now passes the order currency, eliminating a second source of mixed-currency rows. – **Fix:-** Mode-aware balance reads — single-base sites continue to sum normalized rows; per-currency sites filter by the active currency, so a user with EUR and USD activity no longer sees an undefined-currency total. – **Tweak:-** Top-up orders honour the requested currency end-to-end: `WooWallet_Topup_Service::create_order()` calls `$order->set_currency()` before totals are calculated, so the gateway charges in the requested currency. – **Tweak:-** `woo_wallet_wc_price_args()` is now mode-aware; in per-currency mode it defaults to the active provider's currency while explicit per-row currency overrides still win. – **Tweak:-** Database migration `1.6.0` is idempotent — fresh installs and upgrades both land on the new schema; pre-1.6 rows keep working with `original_*` NULL and `mode=0`. = v1.5.18 (April 23, 2026) = – **New:-** Added Go Pro admin page showcasing Pro features with a Free vs Pro comparison and license activation UI, replacing the legacy Extensions page. – **Security:-** Implement idempotency key for wallet transfers to prevent duplicate submissions and TOCTOU race condition vulnerabilities. – **Tweak:-** Enhanced partial payment tooltip to provide a clearer breakdown of amounts debited from the wallet and paid via other gateways. – **Tweak:-** Enhance database schema and optimize wallet transaction queries for improved performance. – **Tweak:-** Improved CSV exporter for wallet transactions with better query handling. – **Tweak:-** Update Pro upgrade URLs with UTM parameters for better tracking. =v1.5.17 (March 12, 2026)= - **Fix:-** Remove space in limit parameter for wallet transactions query. - **Fix:-** Simplify wallet transactions query preparation by removing redundant parameter checks. =v1.5.16 (February 12, 2026)= - **Tweak:-** Enhance SQL query construction for wallet transactions with improved safety and readability. - **Tweak:-** Remove return type declarations for compatibility and enhance permission checks in content handling. - **Tweak:-** Update version retrieval for script and style assets. - **Tweak:-** Enhance partial payment validation in frontend. - **Tweak:-** Add checks for zero currency rates in multi-currency conversion methods - **Tweak:-** Database Lock to serialize requests for the same user. - **Tweak:-** Adjust wallet transfer logic to debit before crediting, ensuring proper transaction flow. =v1.5.15 (December 10, 2025)= - **New:-** User wallet dashboard design. - **Tweak:-** Replace thickbox with wc backbone modal. - **Fix:-** Removed moment js and used WordPress core momentjs Library. - **Added:-** WordPress 6.9 support. =v1.5.14 (October 08, 2025) = - **Fix:-** RTL CSS issue. =v1.5.13 (August 21, 2025) = - **Fix:-** PHP warning. =v1.5.12 (August 21, 2025) = - **New:-** Date range filter in wallet transaction page. - **New:-** Settings panel design. - **New:-** Now site admin can enable/disable wallet topup. - **Fix:-** Partial payment issue. - **Fix:-** Cashback display issue on cart and checkout page. =v1.5.11 ( May 08, 2025) = - **Fix:-** Text Domain loading issue. =v1.5.10 ( December 12, 2024) = - **Fix:-** Refund issue. =v1.5.9 ( November 26, 2024) = - **Fix:-** Plugin Localisation issue for WP 6.7. =v1.5.8 ( November 26, 2024) = - **New:-** User role wise cashback restriction. - **Fix:-** WooCommerce analytics and dashboard reports. - **Fix:-** Wallet amount display on cart and checkout block. =v1.5.7 ( September 02, 2024) = - **Fix:-** Broken wallet page link on user page. - **Fix:-** Security issues. - **Fix:-** Wallet top-up amount widget in admin panel. =v1.5.6 ( July 20, 2024) = - **Fix:-** Permalinks issues. - **Fix:-** Partial payment issues. = v1.5.5 ( July 11, 2024 ) = - **Fix:-** Security issues. - **Fix:-** Permalinks issues. = v1.5.4 ( May 10, 2024 ) = - **Fix:-** Multiple refund of partial payment amount when order cancelled. - **Fix:-** Rewrite rule issues for wallet endpoints. = v1.5.3 ( May 02, 2024 ) = - **Fix:-** Partial payment option not showing at old WooCommerce checkout page issue. = v1.5.2 ( May 02, 2024 ) = - **Added:-** Support for WooCommerce HPOS. - **Added:-** Support for WooCommerce block cart & checkout. - **Added:-** Partial payment option for WooCommerce block cart & checkout. - **New:-** Now customer can enter amount they want to redeem at cart & checkout page. - **Fix:-** Conflict with WooCommerce Square plugin. - **Fix:-** Partial payment amount not debited issue for WooCommerce block checkout. - **Fix:-** Coupon cashback issue for WooCommerce block checkout. = 1.5.1 - 2024-03-20 = * Added - Escaping functions for rendering html content. = 1.5.0 - 2024-03-09 = * Fix - Vulnerability: Cross Site Scripting (XSS) = 1.4.11 - 2024-03-01 = * Fix - Compatibility with PHP 8.1 * Fix - Missing Authorization to Authenticated (Subscriber+) User Email Export = 1.4.10 - 2023-11-23 = * New - Added WooCommerce Multilingual & Multicurrency with WPML plugin support. * Fix - Compatibility issue with Dokan 3.8 * Fix - PHP issues = 1.4.9 - 2023-08-17 = * New - Added sell your content action ( Using this action you can sell your site content using wallet balance). * New - Export user wallet balance ( Now site admin also export only user balance of the website in CSV file). * Fix - Compatibility issue with digits plugin. * Fix - Wallet transactions details table. * Add - Support for WordPress 6.3 and WooCommerce 8.0 = 1.4.8 - 2023-06-22 = * New - Redesign wallet admin panel. * New - Added support for WooCommerce block checkout. * New - Added support for FOX – Currency Switcher Professional for WooCommerce * Fix - PHP 8.2 issues. = 1.4.7 - 2023-04-05 = * Fix - Refund issue. * Fix - WooCommerce add to cart notice. * Added - WP 6.2 support. = 1.4.6 - 2023-01-19 = * Fix - Duplicate order issue and negative wallet balance. * Fix - Partial payment issue for draft orders. = 1.4.5 - 2022-12-24 = * Add - Hooks in referral action. * Fix - Transaction exporter. = 1.4.4 - 2022-11-14 = * Fix - Security issue on the function lock_unlock_terawallet. = 1.4.3 - 2022-11-11 = * Fix - Datatable ajax issue. = 1.4.2 - 2022-11-11 = * Fix - Mini wallet nav menu location. = 1.4.1 - 2022-11-11 = * Fix - Fix Cannot uncheck checkbox issue in plugin settings page. = 1.4.0 - 2022-11-4 = * Fix - Plugin CSRF issue ( Thanks Muhammad Daffa ). * Add - Compatibility with WP 6.1 = 1.3.24 - 2022-03-18 = * Fix - Wallet payment process. * Fix - Referral signup action. * Tweak - Wallet pages will be removed from account page if user is bolocked. * Add - REST API V3 [API Docs](https://github.com/malsubrata/woo-wallet/wiki/API-V3). = 1.3.23 - 2022-02-17 = * Fix - Compatibility with WooCommerce Subscription plugin. * Fix - Referral order amount * Fix - Cashback issue for guest user. * Add - Support for order created via rest API. = 1.3.22 - 2021-12-23 = * Fix - Plugin title translation issue. = 1.3.21 -2021-12-22 = * Fix - Exporter column header. * Fix - Incorrect wallet top-up this month widget. * Tweak - delete Transaction history without effecting User balance. * Fix - Cashback coupon for Guest User. * Fix - Referring signup bug. * Add - Compatibility with Dokan > 3.3. = 1.3.20 - 2021-11-26 = * Fix - Wallet top-up issue. * Fix - Extension page CSS issue. = 1.3.19 - 2021-07-02 = * Add - Now admin can setup low wallet balance notification email. * Add - Admin can export wallet transactions. * Add - Admin can lock / unlock user wallet. = 1.3.18 - 2021-3-18 = * Add - Now admin can see which user make credit / debit transaction. * Fix - Cashback recalculation issue. * Fix - Debit Round up issue for bulk action. * Fix - Removed order again button from wallet rechargeable order details page. * Tweak - Now referral bonus will be credited after user purchase something from the store. * Dev - Added new filter `woo_wallet_calculate_cashback_on_total` to set cashback on order total or subtotal. = 1.3.17 - 2020-12-29 = * Fix - Fix URL while searching users in balance details page. * Fix - Redirect issue in adjust balance page. * Fix - Decimal point issue in bulk credit, debit wallet balance. * Fix - WooCommerce Analytics report. = 1.3.16 - 2020-08-26 = * Add - New wallet recharge state in dashboard widget. * Tweak - Now cashback will be calculated on order total instead of order subtotal. * Tweak - Excluded wallet rechargable orders from WooCommerce analytics page. * Tweak - Database query result performance optimization. * Fix - Translation issue and wp list table display issue for mobile. * Fix - Redirection issue in wallet dashboard for wallet shortcode. * Dev - Added hooks into WooCommerce product review action.. = 1.3.15 - 2020-04-22 = * Add - AJAX datatable on wallet transaction details page. * Add - Custom field in WP nav menu setting to display wallet icon and amount instead of menu title. * Notice - Mini wallet display location settings will be removed on next update use WooCommerce endpoint menu item instead. = 1.3.14 - 2020-03-07 = * Add - Bulk credit debit option for admin #46. * Fix - Current link attributes in wallet details page #45. = 1.3.13 - 2020-02-08 = * Fix - Wallet top-up issue. = 1.3.12 - 2020-02-07 = * Add - Mini wallet RTL support. * Add - Support for WooCommerce subscription payment method change. * Add - Copy to clipboard function in referral URL. * Fix - Cashback recalculation function. * Fix - Loading issue in wallet transfer searchbox. * Tweak - `is_full_payment_through_wallet` function. * Dev - Added `woo_wallet_cashback_rules` filter. * Dev - Added `created_by` database column to `woo_wallet_transactions` table. = 1.3.11 - 2019-11-13 = * Add - Mini wallet shortcode. * Fix - Cashback amount for product cart rule. * Fix - Wallet endpoint issue for shortcode. = 1.3.10 - 2019-09-11 = * Add - Submit button at Wallet Top-Up widget. * Fix - Cashback calculation issue for product category. * Fix - Partial payment template. * Fix - WooCommerce endpoint save issue. * Tweak - Alter database column amount and balance. = 1.3.9 - 2019-06-18 = * New - Now admin can configure cashback for variable products. = 1.3.8 - 2019-06-07 = * Add - Role wise filter in wallet transaction page. * Add - Hooks and Filters. = 1.3.7 - 2019-05-05 = * Add - Minimum transfer limit. * Fix - Dokan withdrawal issue. = 1.3.6 - 2019-04-19 = * Updated - Plugin name change. = 1.3.5 - 2019-04-18 = * Add - Support for WC version 3.6. * Add - Referral action. * Fix - `wc_format_decimal` function use in partial payment. * Remove - Deprecated WC functions. = 1.3.4 - 2019-03-23 = * Added - Compatibility with WooCommerce Germanized plugin. * Add - Empty datatable info translation string * Add - Fee amount in woowallet cart total function. * Fix - Wallet transfer menu issue. = 1.3.3 - 2019-03-04 = * Fix - Plugin dependencies file. = 1.3.2 - 2019-02-27 = * Add - Now cart items will be restored after successful wallet top-up. * Fix - Partial payment issues. * Fix - Cashback calculation for variable product. * Fix - Transaction date issue. * Fix - Order by balance column in WooWallet balance details table. * Tweak - Cashback logic. * Tweak - Wallet funds transfer description. = 1.3.1 - 2019-02-04 = * Fix - Cashback issue. = 1.3.0 - 2019-02-02 = * Add - Now cashback will be credited if admin create order for customer. * Add - Added wallet top-up widget. * Fix - Disable partial payment if user balance is zero. * Fix - Multiple ajax call for partial payment. * Fix - Delete transaction records upon deletion of user. * Tweak - Daily visit. = 1.2.9 - 2019-01-08 = * Add - Support for WooCommerce Multivendor Marketplace by WC Lovers. * Fix - Daily visit credit with transient. * Add - Support for multiple subscriptions. = 1.2.8 - 2018-12-19 = * Fix - Datatable responsive issue. * Add - WP 5.0 compatibility. = 1.2.7 - 2018-11-08 = * Fix - Cache issue for WP multisite. * Fix - Translation issue. * Fix - Partial payment amount calculation when cash-back coupon applied. * Fix - User details page issue. * Fix - Role checking issue. * Fix - Email parameters. = 1.2.6 - 2018-10-09 = * Add - Admin now can set rechargeable product image via settings page. * Add - Partial payment amount refund option. * Add - Wallet icon at WooCommerce my-account menu. * Add - Exclude role option for daily visit action. * Fix - WPCS updates and code cleanup for easier readability #20. * Fix - Order total amount for partial payment. = 1.2.5 - 2018-09-27 = * Fix - Resolved performance issue. * Add - Wallet REST API with WooCommerce endpoint. * Dev - Removed WOO_WALLET_ICON constant. = 1.2.4 - 2018-09-24 = * Fix - Fatal error on WordPress Menu page. * Fix - Hide partial payment option for guest user. * Fix - Remaining balance display at email template. = 1.2.3 -2018-09-24 = * Fix- Partial payment. * Fix - Dokan withdrawal. * Add - Dokan auto withdrawal. * Add - Wallet icon file. * Add - Wallet actions (Admin can now set action for wallet credit). = 1.2.2 - 2018-08-17 = * Fix - Partial payment issue. = 1.2.1 -2018-08-15 = * Add - Screen option at transaction details page. * Tweak - Partial payment using WooCommerce fee. = 1.2.0 - 2018-07-26 = * Add - Extension page. * Fix - Refund using default WooCommerce refund function. * Dev - details variable in email. * Dev - Added filter `woo_wallet_rest_check_permissions`, `woo_wallet_process_cashback_status`, `woo_wallet_wc_price_args`. = 1.1.10 - 2018-06-28 = * Add - Wallet transfer charge. * Dev - Created class instance. = 1.1.9 - 2018-05-30 = * Fix - Cashback calculation. = 1.1.8 -2018 -05-28 = * Add - Settings option to choose order status for processing cashback. * Add - Filters in my wallet page and wallet icon constant. * Add - Filter `woo_wallet_order_refunded`. * Add - Support for WooCommerce 3.4. * Add - Support for cashback setup from dokan dashboard. * Fix - Payment gateway available check. * Fix - Order cancellation hook. * Fix - Cashback calculation added support for third party WooCommerce add-on. = 1.1.7 - 2018-05-03 = * Add - Filter `woo_wallet_restrict_other_from_add_to_cart`, `woo_wallet_disable_partial_payment`. * Add - Wallet endpoint to WooCommerce endpoints menu option. * Add - Wallet balance column to user table. * Add - Decimal support for number field. * Tweak - Wallet cashback logic. * Dev - Added `deleted` column to transaction table. * Fix - Wallet payment method. * Fix - number format. * Fix - Variable product cashback calculation. = 1.1.6 - 2018-04-11 = * Feature - REST API. * Feature - Auto transfer commission for dokan marketplace. * Add - DataTable language support. * Fix - Is array checking for transient option. * Fix - Date format for different language support. * Fix - Use of get_order_number instead of get_id to display order number. = 1.1.5 - 2018-03-26 = * Feature - Display cashback amount in admin order page. * Fix - User search in admin balance details page. * Fix - Typos in localization strings #4 * Fix - Partial payment and cashback issue upon order cancellation. * Updated - Language file. = 1.1.4 - 2018-03-19 = * Fix - Typo. * Fix - non-sef endpoint url generation #2 * Tweak - AJAX user search dropdown in transfer fund page. * Tweak - Database query improvement. = 1.1.3 - 2018-03-05 = * Feature - Improved user search drop-down in transfer wallet amount page. * Fix - Payment gateway charge percent issue. * Fix - Cashback rule for non logged in user. * Fix - Coupon cashback rule for non logged in user. * Tweak - Improved look and feel of admin settings page. * Dev - Added filter `woo_wallet_is_enable_transfer`, `woo_wallet_payment_is_available` * Updated - Language file. = 1.1.2 - 2018-02-26 = * Added - RTL support. * Added - Wallet amount transfer option. * Fix - Security issue. * Dev - Added filter `woo_wallet_current_balance`, `woo_wallet_redirect_to_checkout_after_added_amount`, `woo_wallet_hide_rechargeable_product`. * Updated - Language file. = 1.1.1 - 2018-02-21 = * Added - Minified CSS & JS files. * Added - Min Max wallet top up amount restriction. * Added - Shortcode `woo-wallet`. * Updated - Missing translation strings. * Dev - Added filter `woo_wallet_amount`, `woo_wallet_coupon_cashback_amount`, `woo_wallet_transactions_count`. * Updated - Language file. = 1.1.0 - 2018-02-15 = * Added - Support for WordPress Multisite Network. * Tweak - Apply coupon as cashback logic. * Dev - Added filter `woo_wallet_cashback_notice_text` to modify cashback notice. * Updated - Language file. = 1.0.9 - 2018-02-10 = * Added - Product category wise cashback. * Added - Minimum cart amount setting to apply cart wise cashback. * Tweak - Hide mini wallet menu item if user not logged in. * Tweak - Display cashback instead of coupon if coupon is applicable as cashback. * Updated - Language file. = 1.0.8 -2018-02-08 = * Added - Now admin can set wallet endpoints page url. * Added - Currency column to database table. * Dev - Added `woo_wallet_credit_purchase_amount` filter for modify credit purchase amount. * Updated - Language file. = 1.0.7 - 2018-01-31 = * Added - Setting for where to display mini wallet in menu. * Added - Max cash-back amount option for administrator user. * Added - Debit option for administrator user. * Updated - Improve wallet menu item. * Updated - Language file. = 1.0.6 - 2018-01-24 = * Added - Now admin can convert WooCommerce coupon to cashback. * Added - Display cashback amount on WooCommerce products. * Added - Remaining balance display in email template. * Added - Dokan Multivendor Marketplace support. * Updated - Improve wallet menu item. * Updated - Language file. = 1.0.5 - 2018-01-11 = * Added - Auto deduct wallet balance for partial payment option. * Added - Tax options for rechargeable product. * Added - Search option in users wallet details page. * Added - Screen option in users wallet details page. * Added - Template file for mini wallet and partial payment. * Updated - Language file. = 1.0.4 - 2018-01-05 = * Added - Wallet nav menu to wordpress primary menu. * Added - Plugin settings link in WP plugin list page. * Updated - Language file. = 1.0.3 - 2017-12-27 = * Added - Support for WooCommerce Subscriptions plugin. * Added - Support for WC Marketplace plugin. * Added - Current wallet balance display in checkout page. * Fixed - User balance display in admin back-end. * Updated - Language file. = 1.0.2 - 2017-12-14 = * Fix - Admin report = 1.0.1 - 2017-12-18 = * Added - New wallet user interface. * Added - Un-install file. * Updated - Language file. = 1.0.0 - 2017-12-12 = * Initial release