Documentation / Elite Balance

about the plugin →

Withdrawals

Customers request money out, the store pays it externally, and the plugin proves every step. How the lifecycle, fees, queue, and privacy work.

What withdrawals are (and are not)

A withdrawal is a customer asking for money out of their wallet: a marketplace vendor collecting earnings, a customer cashing out store credit, a refund that should leave the ecosystem. Elite Balance records the request, reserves the funds, and gives your team a queue to work; the plugin never transmits money. You send the payment through your bank, PayPal, or payout provider, then mark the request transferred with the real transfer reference. That design is deliberate: no stored API keys to a money pipe, no surprise payouts from a compromised admin account, and a ledger that matches your bank statement line by line.

The whole feature is off by default. Switch it on at WooCommerce → Settings → Elite Balance → Withdrawals, set your limits and payout methods, and the Withdraw tab appears on the customer wallet page; the settings reference lists every switch.

How the money moves

A request reserves the amount instantly: the customer’s available balance drops, their actual balance does not, and nothing can spend the reserved funds in the meantime. From there, exactly three things can happen:

  1. Transferred. After you send the money externally, staff mark the request transferred. The reservation becomes one ledger debit for the full requested amount, exactly once, no matter how many times the button is clicked or a script retries.
  2. Rejected. Staff decline with a required reason (presets or your own words). The reservation is released, the funds are spendable again, and the customer sees the reason on their wallet page and in the rejection email.
  3. Cancelled. The customer changes their mind while the request is still pending. Same release, no money ever moved.

Fees are bookkeeping, not a second money movement: the customer requests 50.00, the wallet is debited 50.00, and you send 50.00 minus the fee. Each payout method can carry its own fee, falling back to the default fee, and staff can adjust the final fee on each request at transfer time (it must stay below the amount). The ledger note records the net, the fee, and your reference, so the customer’s history explains itself.

What customers see

The Withdraw tab on their wallet page: available amount, a payout method picker with your instructions and that method’s fee, and a details field that remembers what they entered last time per method. One active request per customer at a time; a pending request can be cancelled, a processing one cannot. The full customer surface is covered in the customer wallet page.

Working the queue

WooCommerce → Elite Balance → Withdrawals lists every request with status views (Pending, Processing, Transferred, Rejected, Cancelled) and customer search. Each request opens a detail view with the amount, method, the customer’s payout details, and the ledger linkage, plus the actions its status allows:

  • Mark processing is optional bookkeeping: it tells the customer you are on it and stops them cancelling underneath you. No money moves.
  • Mark transferred requires the external transfer reference and takes the editable fee and an optional internal note. Do this only after the money has actually been sent.
  • Reject requires the reason. The reason presets are editable in settings; the chosen reason reaches the customer.

The Overview tab shows an attention card whenever requests are waiting, with the count and the age of the oldest.

For payout days at volume, two tools: Export pending requests (CSV) produces a bank-ready file (amount, customer, method, and an empty reference column to fill; payout details are deliberately excluded), and the WP-CLI command group (wp rb-elbal withdrawals list|show|transfer|reject) scripts the whole flow with the same never-debit-twice guarantees.

Emails

Four emails ride the lifecycle: request received (customer), a new-request notification (staff, configurable recipient), transferred (customer, with the actual fee, net, and reference), and rejected (customer, with the reason). Each is editable and switchable on its own WooCommerce email screen; see the emails guide.

Privacy

Payout details (IBANs, PayPal addresses) are the most sensitive data the plugin ever stores. They are visible only to wallet managers, never placed in URLs, excluded from every export and email, and automatically blanked 30 days after a request reaches a terminal state (the window is filterable). The request row and the ledger remain forever; only the payout coordinates are erased.

Money is sacred here like everywhere else in Elite Balance: a status change never moves money by itself. The reservation, the single capture, and the release are the only three money events in the whole feature, and each one is idempotent.

Stuck, or found a gap in these docs? Tell us and a human who works on the plugin answers.

Contact support →