Withdraw store credit
A customer with store credit on their account can take it back out as cash from the drawer, or spend it as a payment method at the next sale. Fexl Lite handles both as a single liability draining off the books — 2100 Customer Credits on the credit side, cash sub-account or revenue on the debit side. This page is the mechanics for both paths.
Net balance vs usable credit
Two derived numbers govern what a customer can actually withdraw or spend:
netBalance = balance − creditBalance— the single number the badge shows. Negative means you owe the customer.usableCredit = max(0, creditBalance − balance)— the slice of credit available to spend. Zero whenever the customer also has debt.
A customer with balance=200 and creditBalance=500 has netBalance=−300 (cyan badge, “Credit 300”) but usableCredit=300 — only the net is spendable. The other 200 of their credit is logically tied to clearing their debt before it becomes free cash.
The flow
Open the customer
From Customers, click the row (or use Withdraw Credit in the row’s overflow menu). A cyan Credit badge confirms the customer has a credit balance to draw from.
Click Withdraw Credit
The dialog opens with the customer’s creditBalance and usableCredit both shown. The amount field is capped at usableCredit.
Enter the amount and pick a payout method
Pick the method that the credit will be paid through — cash from the drawer, bank transfer, or any other configured payout method. Store credit itself is not a valid method here (the dialog hides it).
Confirm
The withdrawal posts atomically. creditBalance decreases by the amount, a type='withdrawal' row lands in customer_credit_transactions, and the journal entry posts.
What posts to the books
For a 300 cash withdrawal:
- DR 2100 (Customer Credits) — drains the liability
- CR 1010-xxx (cash sub-account on the active shift)
Both legs at the same amount. No revenue, no COGS — withdrawal is a balance-sheet move, not a P&L event. The credit was already recognised against revenue back at the original return that minted it (DR 4020 / CR 2100), so paying it out doesn’t touch revenue again.
Spending credit on a new sale
The other path: instead of withdrawing as cash, the customer applies their credit to a fresh purchase at the till. When a customer with usableCredit > 0 is attached to the cart, Store credit appears as a payment method in checkout (single or split).
What posts:
- DR 2100 (Customer Credits) — drains the liability for the credit-applied portion
- CR 4010 (Revenue) — recognises that portion as revenue (because the sale is happening)
- Plus the usual COGS / inventory legs
A type='usage' row lands in customer_credit_transactions linked back to the new invoice. The customer’s creditBalance decreases by the applied amount in the same transaction.
This path does affect the P&L (because there’s a real sale), unlike a withdrawal. It’s also the cleanest way to “move” credit toward debt — apply it as a payment method on a partial-paid sale, and the customer’s credit clears against fresh revenue rather than against an old AR row.
Quick decision guide
| Customer wants… | Use | Touches revenue? |
|---|---|---|
| Cash back from credit | Withdraw credit (cash method) | No |
| Bank-transfer payout | Withdraw credit (transfer method) | No |
| Apply credit to a new purchase | Store credit at POS checkout | Yes — as 4010 |
| Apply credit to existing debt | Pay debt → method = Store credit | No |
| Refund taken as future store credit | The return wizard | Reverses 4020 |
Where it shows up afterwards
- Customer detail → Statement tab — one row dated to the withdrawal, running balance updated.
- Customer list — net-balance badge updates (or disappears entirely if balance lands at zero).
- Cash drawer report —
cash_outrow on the active shift for the chosen sub-account. - Trial balance —
2100credit balance shrinks;1010-xxxdebit balance shrinks too. - Balance sheet —
2100Customer Credits liability drops by the withdrawal amount.