A guest has collected 1,000 points = 100 SEK of discount value (at the preset rate 1 point = 10 öre). They now order food and drinks for 300 SEK and choose to redeem 500 points = 50 SEK discount.
The question every accountant asks: "Should VAT decrease proportionally?"
The answer is yes. Because loyalty discount in Swedish accounting is treated as revenue reduction, it reduces both the revenue base and the output VAT. Otherwise the restaurant would remit more VAT than it actually received.
This is the same principle as for regular price discounts — "10 % Christmas discount" or "Regular guest offer" — and it's why Vendion implements loyalty redemption as a proper order-level discount.
Scenario 1: 300 SEK order, food only (12 % VAT)
The order contains a lunch menu for 300 SEK (incl. 12 % VAT). The guest redeems 500 points = 50 SEK discount.
Step 1 — Compute the new revenue row
| Before discount | After 50 SEK discount | |
|---|---|---|
| Gross | 300.00 SEK | 250.00 SEK |
| Net (/1.12) | 267.86 SEK | 223.21 SEK |
| VAT (net × 0.12) | 32.14 SEK | 26.79 SEK |
| Total | 300.00 SEK | 250.00 SEK |
The guest pays 250 SEK after discount.
Step 2 — T-accounts
DR 1580 (Card receivable) 250.00 SEK
DR 3910 (Loyalty discount, revenue red.) 50.00 SEK *
CR 3001 (Food revenue) 267.86 SEK
CR 2620 (Output VAT 12 %) 32.14 SEK
* Alternative: book the discount directly as negative on 3001.
Effect is identical. 3910 is used if you want to
analyze discount volume separately in the P&L.
Wait — does the balance match?
Total debit: 250 + 50 = 300.00 SEK Total credit: 267.86 + 32.14 = 300.00 SEK ✓
But the guest only paid 250 SEK — where does the 50 SEK debit come from?
The 50 SEK debit is not a receivable — it's an expensed discount. It reduces your gross margin but is entirely booked as a revenue-reducing item (group 39 in BAS), not as a real cost on a 4xxx account. This means when the accountant looks at Net Revenue in the P&L, it becomes 267.86 − 50 = 217.86 SEK — exactly the net you earned.
Step 3 — Alternative implementation (Vendion default)
Vendion makes it even simpler. The discount is recorded on the order and the voucher becomes:
DR 1580 (Card receivable) 250.00 SEK
CR 3001 (Food revenue) 223.21 SEK
CR 2620 (Output VAT 12 %) 26.79 SEK
Here the revenue reduction is baked into 3001 — there is no separate discount row in the general ledger. Net Revenue in the P&L becomes 223.21 SEK directly, no middle step.
Which model you pick is up to you and your accountant. Vendion reports discount volume separately (Analytics → Discounts), so you don't lose insight.
Scenario 2: Mixed order — 200 SEK food + 100 SEK alcohol
Now it gets interesting. Different VAT rates → the discount must be allocated proportionally.
Step 1 — Allocate the discount
Order is 300 SEK total. The 50 SEK discount allocates:
Step 2 — Compute new net per rate
Food after discount: 200 − 33.33 = 166.67 SEK
Alcohol after discount: 100 − 16.67 = 83.33 SEK
Step 3 — Voucher
DR 1580 (Card receivable) 250.00 SEK
CR 3001 (Food revenue) 148.81 SEK
CR 3003 (Alcohol revenue) 66.67 SEK
CR 2620 (VAT 12 %) 17.86 SEK
CR 2610 (VAT 25 %) 16.67 SEK
Check: 148.81 + 66.67 + 17.86 + 16.67 = 250.01 SEK (öre diff 0.01 → account 3740 Penny Rounding covers)
How Vendion computes automatically
Vendion does the allocation for you. Logic:
You see the result in the Z-report's voucher — it's already proportionally correct.
Edge case: Discount exceeds base per VAT rate
Suppose an order is 100 SEK food + 20 SEK alcohol = 120 SEK. The guest redeems 500 points = 50 SEK.
Allocation gives 41.67 SEK on food and 8.33 SEK on alcohol. No problem — both VAT rows decrease proportionally.
But: the max redemption percent setting (default 50 %) prevents the guest from redeeming so much that the whole order hits zero. With default 50 %, 50 SEK ≤ 50 % × 120 SEK = 60 SEK → allowed.
When should you use account 3910?
Some accountants want a separate discount trail for analysis and year-end. Then you create a BAS account 3910 (or own number in the 3900 group) and post the discount as negative revenue on that account. Others prefer to skip it — then the Vendion default applies (discount baked into 3001).
Setting is in Admin → Accounting → Account Mappings. Set your own discount account if you want separation; leave blank for default.
Summary
| Principle | How it's realized in Vendion |
|---|---|
| Redemption = discount on order | Discount value added to the order |
| VAT decreases proportionally | Vendion allocates across VAT rates automatically |
| No liability booking | Point balance lives in the loyalty ledger, not the GL |
| Separate discount account possible | Optional discount account setting (default empty) |
| SIE export | Voucher shows net after discount — no extra handling |
Tip: If you want total loyalty discount per month — use Analytics → Discounts, not the SIE export. SIE shows only net.
This feature is part of Vendion POS.
Curious how it looks in practice? Read more about the product or book a short demo.
Was this article helpful?