Wallets
Give customers a stored-balance wallet for instant payments with zero processing fees
Wallets let customers pay from a stored balance, eliminating card processing fees on every wallet transaction. Customers fund their wallet via card or bank transfer, and future payments draw instantly from the balance.
What are Wallets?
A wallet is a closed-loop stored-balance account attached to each customer. When a customer has wallet funds available, they can pay invoices instantly without a card transaction — meaning zero processing fees for you.
Wallets support multiple balance types, expiry tracking via lots, and hold/capture mechanics for checkout atomicity.
Balance Types
Every wallet credit is tagged with a funding type that determines how the balance can be used:
| Funding type | Meaning |
|---|---|
cash | Purchased/cash-backed value. |
promotional | Granted promotional value; not purchased cash. |
code_redemption, refund, and manual adjustments describe where a credit came from, not additional lot funding types. Preserve both the source and funding origin when reconciling a balance. Withdrawal/refund eligibility depends on the original funding and supported action; a balance label alone is not approval to withdraw.
How It Works
The wallet payment flow follows a hold/capture pattern for atomicity:
Fund → Hold → Capture → Settle- Fund — Customer tops up their wallet, or merchant credits the account
- Hold — At checkout, the required amount is reserved (held) from the balance
- Capture — Once the order is confirmed, the hold is captured as a debit
- Settle — The transaction is recorded and the invoice marked as paid
If the checkout is abandoned or fails, the hold is released and the balance is restored.
Wallet Settings
Configure wallet behavior for your account in Settings > General > Wallets:
| Setting | Description |
|---|---|
| Auto-apply at checkout | Automatically apply wallet balance to invoices during checkout |
| Allow top-up | Let customers add funds to their wallet |
| Low balance threshold | Trigger a webhook when a customer's balance drops below this amount |
| Credit expiry days | Default expiry period for wallet credits (lots) |
| Top-up amounts | Preset top-up amounts shown to customers |
Related
- Managing Balances — Credit, debit, and transaction history
- Wallet Codes — Create and manage redeemable codes
- Checkout Integration — How wallets work at checkout
- Customer Portal — Customer-facing wallet features
- Products and Pricing — Product configuration
Funding origin and refund trace
A wallet transaction's source and its funding origin answer different questions. Purchased value is cash-backed; a promotional benefit grant is not. Code redemption must preserve the code's funding origin instead of treating every redeemed code as purchased cash. Lots retain their source and expiry so spending and reversal can be traced.
Example in GBP minor units: a benefit grants a promotional lot of 1000; the customer spends 400; 600 remains in that lot. A full refund that revokes that benefit claws back the remaining 600 from that specific grant lot. It does not take another cash lot or fabricate a negative balance for the already-spent 400. Repeated processing uses the same grant identity so the claw-back happens once.
A refund-to-wallet is a separate credit tied to the original transaction, currency, refundable remainder, and idempotency key. Inspect the transaction and invoice references to explain the balance change. Top-up rule evaluation is not itself proof that an automatic card charge occurred. Show the recorded funding/transaction outcome in the portal.