Supported payout gateways
| Gateway | Notes |
|---|---|
| PayPal | Payouts API. Loads for any store currency. |
| Stripe | Stripe Transfers. Loads for any currency. Supports asynchronous webhook updates. |
| BACS (Bank Transfer) | Manual bank transfer; you mark requests paid after sending. Loads for any currency. |
| Razorpay (RazorpayX) | INR only. |
| Cashfree | Payouts v2 API. INR only. |
| Paystack | NGN, GHS, ZAR, KES, USD, EUR, GBP. |
woo_wallet_withdrawal_payment_gateways filter — see Pro Hooks.
Admin setup
Go to TeraWallet → Settings → Withdrawal and configure:- Enable Withdrawal — master switch for the module.
- Approval Mode — approve requests manually, or auto-approve and pay out immediately.
- Minimum / Maximum Withdrawal — bounds for a single request.
- Enable logging — write per-gateway debug logs (surfaced on each withdrawal screen).
- Per-gateway options — enable each gateway, enter its API credentials, and set its processing fee (see below).
Processing fees (per gateway)
Each gateway has its own fee, configured with Enable Processing Fee, Fee Type and Fee Amount:- Fee Type:
percent,fixed, orpercent + fixed(a percentage plus a flat Fixed Component). - The fee is deducted from the payout, not added to the debit: the wallet is debited the
requested amount, and the gateway pays out
amount − fee.
Fees are configured strictly per gateway. The old global “gateway charge” options were removed in
Pro 1.0.4 in favor of this per-gateway model.
Customer experience
- The customer opens My Account → Wallet and goes to the Withdrawal tab.
- First time only: they save a Payment Settings profile (e.g. PayPal email, bank details) for their chosen gateway.
- They enter an amount (within your min/max and their available balance) and submit the request.
- They receive a request submitted email, and approval or rejection emails as the request progresses.
Managing requests
Withdrawal requests are stored as their own admin list. For each request you can:- Approve or Reject it (rejection returns nothing from the wallet, since the debit happens on approval).
- Add notes — private (staff-only) or customer-visible, like WooCommerce order notes.
- Review per-withdrawal gateway logs when logging is enabled.
Asynchronous payout webhooks
Stripe, PayPal, Razorpay, Cashfree and Paystack can report final payout status back via signed webhooks under theterawallet/v1 REST namespace (Stripe’s endpoint is
/wp-json/terawallet/v1/stripe/webhook). Signatures are verified and replays are rejected. Set the
gateway’s webhook secret in its settings to enable this.
