Auto-reload
Auto-reload automatically tops up a customer's wallet balance when it falls below a threshold they define, ensuring they always have funds available at checkout without manual intervention.
Overview
Auto-reload lets customers set a minimum balance threshold and a reload amount. When their wallet balance drops to or below the threshold after a purchase or debit, WalletPro queues a background top-up using the customer's saved payment method. The top-up processes like any manual top-up: it runs through the customer's chosen gateway, adds the reload amount to the wallet, and records the transaction in the audit ledger.
From the merchant's perspective, auto-reload drives higher wallet adoption and reduces checkout friction. Customers who enable it rarely abandon a purchase due to insufficient wallet funds.
Auto-reload requires that the customer's payment gateway supports saved payment methods (tokenized cards or similar). Gateways that do not support off-session charges cannot be used for auto-reload.
How it works
The auto-reload cycle follows these steps:
- A debit occurs on the customer's wallet (purchase, transfer, merchant debit, etc.).
- WalletPro checks whether the resulting balance is at or below the customer's configured threshold.
- If the threshold is met and auto-reload is enabled, a top-up job is scheduled via
WC_Queue(Action Scheduler). - The job charges the reload amount to the customer's saved payment method using an off-session charge request.
- On success, the reload amount is credited to the wallet and a transaction record is written to the audit ledger with source
auto_reload. - The customer receives an email notification confirming the reload.
- On gateway failure, WalletPro retries up to the configured retry limit before sending a failure notification to the customer and, optionally, the store admin.
Only one auto-reload job can be queued per customer at a time. If a second debit triggers the threshold before the first job completes, the duplicate is discarded. This prevents double-charging if multiple debits occur in rapid succession.
Merchant setup
Enabling auto-reload globally
Before customers can configure auto-reload, you must enable it at the store level.
- Go to WooCommerce > WalletPro > Settings > Top-up.
- Check Enable auto-reload.
- Configure the options below, then click Save changes.
Auto-reload settings
| Setting | Description | Default |
|---|---|---|
| Enable auto-reload | Master switch. When off, the auto-reload section is hidden from all customer accounts. | Off |
| Minimum threshold (store min) | The lowest threshold value a customer can set. Prevents customers from setting thresholds so low that the feature is effectively useless. | $0.00 |
| Maximum threshold (store max) | The highest threshold a customer can set. Leave blank for no upper limit. | Unlimited |
| Minimum reload amount | The smallest amount a customer can configure as their reload amount. | $10.00 |
| Maximum reload amount | The largest single reload amount allowed. Leave blank for no upper limit. | Unlimited |
| Retry limit | How many times WalletPro retries a failed gateway charge before giving up and sending a failure notification. | 3 |
| Retry interval | Time between retry attempts (hours). | 24 |
| Notify admin on failure | Send the store admin email a copy of the failure notification when all retries are exhausted. | Off |
| Allowed gateways | Restrict which gateways customers can select for auto-reload. Leave blank to allow all gateways that support saved payment methods. | All eligible |
Viewing auto-reload activity
All auto-reload top-ups appear in the standard transaction ledger. To filter for them:
- Go to WooCommerce > WalletPro > Transactions.
- Open the Source filter and select Auto-reload.
- Apply date range filters as needed.
- Export via Export CSV to download filtered results.
Failed auto-reload attempts are logged under WooCommerce > WalletPro > Transactions with a status of failed and a note indicating the gateway error.
Customer usage
Finding auto-reload settings
Customers manage auto-reload from their account dashboard:
- Log in and go to My Account > Wallet.
- Select the Auto-reload tab.
If the merchant has not enabled auto-reload globally, this tab does not appear.
Enabling auto-reload
- On the Auto-reload tab, toggle Enable auto-reload on.
- Set a Reload threshold. This is the balance level that triggers a top-up. For example, entering $10.00 means a top-up fires whenever the balance falls to $10.00 or below.
- Set a Reload amount. This is how much gets added to the wallet each time a reload fires. For example, $50.00.
- Select a Payment method from saved methods on the account, or add a new card using the inline form.
- Click Save auto-reload settings.
After saving, the customer sees a confirmation summary: "Auto-reload is active. Your wallet will be topped up by $50.00 when your balance falls below $10.00, using Visa ending in 4242."
Updating or disabling auto-reload
Customers can return to the Auto-reload tab at any time to change the threshold, reload amount, or payment method. To turn off auto-reload, toggle Enable auto-reload off and save. Any pending queued job for that customer is cancelled.
Reload notifications
Customers receive an email after each reload event:
- Successful reload: Confirms the amount added, the new balance, and the payment method charged.
- Failed reload: States that the charge failed, the reason returned by the gateway (e.g., "Card declined"), and instructs the customer to update their payment method or top up manually.
Email templates are editable under WooCommerce > Settings > Emails: look for WalletPro: Auto-reload successful and WalletPro: Auto-reload failed.
Interaction with other features
| Feature | Behavior |
|---|---|
| Spending limits | Auto-reload respects per-customer and role-based spending limits. If reloading would push the balance over a maximum balance cap configured by the merchant, the reload amount is reduced to the cap ceiling, not rejected outright. |
| Velocity caps | Auto-reload charges count toward the customer's top-up velocity cap (if configured). If the cap is reached, the reload is deferred until the velocity window resets. |
| Cashback rewards | Auto-reload top-ups are eligible for cashback if the merchant has enabled cashback on top-ups. The cashback is credited after the reload succeeds. |
| Multi-currency wallets | Threshold and reload amount are evaluated in the currency of the wallet being debited. Each currency wallet has independent auto-reload settings. |
| KYC gating | If the merchant requires KYC verification before top-ups above a certain amount, auto-reload reloads above that amount are blocked until the customer completes verification. |
Developer reference
Hooks
Use these hooks to extend or monitor auto-reload behavior.
Filters
// Modify the reload amount before the charge is attempted
add_filter( 'walletpro_auto_reload_amount', function( $amount, $customer_id, $wallet_currency ) {
// Round up to the nearest $5
return ceil( $amount / 5 ) * 5;
}, 10, 3 );
// Modify the threshold before it is evaluated
add_filter( 'walletpro_auto_reload_threshold', function( $threshold, $customer_id ) {
return $threshold;
}, 10, 2 );
// Prevent auto-reload for specific customers or conditions
add_filter( 'walletpro_auto_reload_enabled_for_customer', function( $enabled, $customer_id ) {
if ( some_custom_check( $customer_id ) ) {
return false;
}
return $enabled;
}, 10, 2 );
Actions
// Fires after a successful auto-reload
add_action( 'walletpro_auto_reload_success', function( $customer_id, $amount, $transaction_id, $currency ) {
// e.g., log to a custom table or trigger a third-party event
}, 10, 4 );
// Fires after all retries are exhausted and the reload has failed
add_action( 'walletpro_auto_reload_failed', function( $customer_id, $amount, $gateway_error ) {
// e.g., tag the customer in a CRM
}, 10, 3 );
REST API
Auto-reload settings are readable and writable via the WalletPro REST API.
GET /walletpro/v1/customers/{customer_id}/auto-reload
Returns the customer's current auto-reload configuration.
# Example request
curl -X GET https://example.com/wp-json/walletpro/v1/customers/42/auto-reload \
-H "Authorization: Bearer <token>"
{
"enabled": true,
"threshold": "10.00",
"amount": "50.00",
"currency": "USD",
"payment_token_id": 7,
"last_reload_at": "2026-06-15T14:32:00Z",
"last_reload_status": "success"
}
PUT /walletpro/v1/customers/{customer_id}/auto-reload
Updates the customer's auto-reload settings. All body fields are optional; only supplied fields are updated.
| Parameter | Type | Required | Description |
|---|---|---|---|
enabled |
boolean | optional | Enable or disable auto-reload for this customer. |
threshold |
string (decimal) | optional | Balance threshold that triggers a reload. Must be within store-configured min/max. |
amount |
string (decimal) | optional | Amount to reload. Must be within store-configured min/max. |
payment_token_id |
integer | optional | WooCommerce payment token ID to charge. Token must belong to the customer. |
# Example request
curl -X PUT https://example.com/wp-json/walletpro/v1/customers/42/auto-reload \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"enabled": true, "threshold": "15.00", "amount": "75.00", "payment_token_id": 7}'
{
"enabled": true,
"threshold": "15.00",
"amount": "75.00",
"currency": "USD",
"payment_token_id": 7,
"last_reload_at": "2026-06-15T14:32:00Z",
"last_reload_status": "success"
}
WP-CLI
Inspect and manage auto-reload settings from the command line.
# View a customer's auto-reload config
wp wallet auto-reload get --customer=42
# Enable auto-reload for a customer with specific settings
wp wallet auto-reload set --customer=42 --enabled=1 --threshold=10.00 --amount=50.00 --token=7
# Disable auto-reload for a customer
wp wallet auto-reload set --customer=42 --enabled=0
# List all customers with auto-reload enabled
wp wallet auto-reload list --status=enabled --format=table
# Manually trigger the auto-reload check for a customer (useful for testing)
wp wallet auto-reload trigger --customer=42
# Show pending auto-reload jobs in the Action Scheduler queue
wp action-scheduler list --hook=walletpro_process_auto_reload --status=pending
Use wp wallet auto-reload trigger --customer=42 in a staging environment to verify that your gateway is correctly configured for off-session charges before enabling auto-reload for customers on production.
Troubleshooting
| Symptom | Likely cause | Resolution |
|---|---|---|
| Auto-reload tab not visible in My Account | Feature not enabled globally | Enable under WooCommerce > WalletPro > Settings > Top-up > Enable auto-reload. |
| Customer cannot select a payment method | No saved tokens or gateway does not support off-session charges | Ask customer to save a payment method first, or verify the gateway supports tokenized charges. |
| Reload did not fire after balance dropped | Action Scheduler not running, or duplicate job was discarded | Check WooCommerce > Status > Scheduled Actions for stuck or failed walletpro_process_auto_reload actions. |
| Reload fired but customer was not notified | Transactional email suppressed by a plugin or host SMTP issue | Check outgoing email logs. Confirm the WalletPro: Auto-reload successful email template is enabled under WooCommerce > Settings > Emails. |
| Reload amount is lower than configured | Maximum balance cap reduced the reload | Review the customer's spending limit settings under WooCommerce > WalletPro > Customers > [Customer] > Limits. |