Skip to content
Shop integration & processes

Vouchers in shop and store: one balance for every channel

Keep one voucher balance across shop and store: a leading system, reservations against double redemption, offline POS rules, cancellations and ERP and DATEV.

19 min read GutscheineKassensystemDATEVUmsatzsteuer

In short and in plain language

Many people buy a voucher in an online shop. Others use it in a store. Then the shop and the till must know the same balance.

For this, one single program keeps the value. The shop and the till ask it. Each use is written down there.

Before you pay, the amount is held for a short time. So the voucher cannot pay for the same amount twice.

If the store loses its network, a fixed rule applies. The till sends its data later.

Accounting gets each change. At the end of the year there is a list of all open vouchers. We help you set this up.

In November, a customer buys a 50 euro voucher in an online shop and gives it away. In December, the recipient spends part of it online and wants to use the rest in a store in January. At the till, a question comes up that often only surfaces during the holiday season: how does the POS know the balance the shop has booked? And what happens if the same code is used at the till and in the checkout at the same moment? A voucher is a payment promise that applies across channels. To make that work technically, it needs exactly one balance, one leading system and a handover of every movement to the ERP and to accounting. This article shows how to model the voucher as an account with movements, prevent double redemption, handle the POS while offline, book cancellations and returns cleanly and pass the movements on to the ERP and DATEV. Tax and time limits appear where they shape the data model.

Key takeaways

  • Gift vouchers were the most frequently named category for Christmas 2025, planned by 29 percent of respondents (HDE consumer barometer); 20 percent planned to buy gifts roughly half online and half in stores (Bitkom).
  • A stored-value voucher is not a discount code: it is consideration for a supply (Section 3(13) UStG) and needs its own account with number, face value, balance, tax type and a complete movement journal.
  • Exactly one leading system holds the balance. Shop and POS check, reserve and book there; a second redemption of the same amount fails an atomic condition and receives a response such as 409 Conflict (RFC 9110).
  • The POS needs a fixed rule for offline operation: block redemptions or cap them per voucher, post redemptions later with their original time and route negative balances to a review list.
  • The tax type, single-purpose or multi-purpose, is a mandatory field on the voucher: it determines when VAT is due (Section 3(14) and (15) UStG) and drives the POS transaction type, the tax code and the booking account.
  • Every movement reaches the ERP and DATEV with its voucher number. At year end, the journal provides the list of open balances by year of issue; a 2023 voucher without its own expiry usually becomes time-barred at the end of December 31, 2026 (Section 199(1) BGB).

Why a voucher connects two channels

Vouchers are a Christmas topic, and the holiday season carries particular weight for retail. Retail generates 18.5 percent of its annual revenue in the last two months of the year (HDE); for November and December 2025 the association had forecast revenue of 126.2 billion euros (HDE). Among planned gift purchases, gift vouchers came first with 29 percent of respondents, just ahead of toys (HDE consumer barometer).

Purchase and redemption do not necessarily happen in the same channel. 73 percent of respondents aged 16 and over planned to order Christmas gifts online in 2025, and one in five (20 percent) to buy them roughly half online and half in local stores (Bitkom). 15 percent planned to buy all their gifts in stores (Bitkom). A voucher that one person buys online can therefore easily end up with someone who prefers to shop in a store, or the other way around.

As long as shop and POS keep separate voucher lists, the same error patterns keep appearing. They rarely show up at the sale, but at redemption, when a customer stands at the till and the code is unknown there, or during the January reconciliation, when the total of open vouchers does not match the account in accounting.

  • Unknown code: The POS only knows vouchers sold at the POS. Online vouchers are rejected or noted down by hand.
  • Two balances: The shop has booked a partial redemption, while the POS still works with the face value.
  • Double redemption: The same code is redeemed online and in store within minutes because neither system knows about the other.
  • Gap in accounting: The sale appears in the shop export, the redemption in the POS closing, and no one can match both to the same voucher.
  • Unclear cutoff: At year-end closing, it is unclear how much is actually still outstanding on vouchers.

The basics of a POS integration, such as shared inventory, click and collect and returns in store, are covered in the article on connecting the POS system to the shop. This article is about an object that does not appear there: the voucher and its balance.

Voucher or discount code: two different data objects

Many shop systems offer promotion codes out of the box that deduct an amount or a share from the cart. For a voucher that was sold for money, that is not enough, for legal as well as technical reasons. The German VAT Act defines a voucher as an instrument that must be accepted as full or partial consideration for a supply of goods or services; instruments that merely entitle the holder to a price reduction are expressly not vouchers (Section 3(13) UStG). The tax administration clarifies that vouchers can exist on paper, as plastic cards or in electronic form, and that an instrument is still a voucher if the holder has to pay an additional amount at redemption (UStAE 3.17 para. 1).

AttributeStored-value voucherDiscount codePrepaid card
Classificationconsideration for a supply (Section 3(13) UStG)price reduction, not a voucher under the UStGmeans of payment, refundable at any time without conditions (DSFinV-K)
Balancebalance remains after a partial redemptionno balance, the code is used up or stays validcredit like on an account
In the cartpayment method that reduces the amount duededuction from the line or cart valuepayment method
At the POSseparate transaction type for sale and redemption (DSFinV-K)discount line on the receiptpayment type prepaid card (DSFinV-K)
In accountingfor balance-sheet preparers no income until redemption (DSFinV-K)revenue reductionmeans of payment, the purchase made with it is ordinary revenue

For the integration, this means the stored-value voucher is a data object of its own, with number, face value, balance, tax type, issuing channel and status. In the checkout and at the POS, it is treated as a payment method, not as a discount. That has a practical consequence for the invoice: with a multi-purpose voucher, the line items and the tax on the goods purchased stay unchanged, and the voucher only reduces the amount to be paid. Modeling it as a discount lowers revenue and the tax shown, even though the customer paid with the voucher. Which system then issues the invoice is a separate decision covered in the article Invoice from shop or ERP.

Choosing the leading system for the balance

The central decision is this: which system holds the authoritative balance? All other systems query it, reserve there and book there. They may display the balance, but they must not decide on a redemption based on a copy of their own. In practice, four places come into question, each with its own strengths.

Leading systemStrengthWeaknessFits when
Online shopsale and redemption online without detoursPOS depends on shop availability, booking data is scatteredfew stores, the customer account lives in the shop anyway
POS systemfast redemption in store even on a weak connectionshop needs access to the POS back office, interfaces often closedstore business dominates, the POS back office has an open API
ERPaccounting and cutoff lists close to the sourceresponse time and load in the checkoutthe ERP responds quickly and already knows payment methods
Dedicated voucher service in the middlewareclear ownership, built for real time, all channels treated equallyan additional service that has to be operated and monitoredseveral channels, marketplaces or partners redeem vouchers

The ERP or a dedicated service in the middleware is often the obvious choice, because orders, payment methods and the export to accounting already come together there. What matters is less the location than the rule: exactly one balance, one movement journal and one defined interface through which shop, POS and, where relevant, partners access it. A nightly reconciliation between two equal voucher lists does not solve the problem; it finds double redemptions only after the goods have left the store. How conflicts between systems can be resolved in general is described in the article on bidirectional sync.

The voucher account: movements instead of an overwritten amount

The balance is not a field that gets overwritten with every redemption. It is the result of a series of movements. Each movement carries type, amount, channel, store or shop, document number, timestamp and user. Typical types are issue, reservation, redemption, release of a reservation, cancellation, credit from a return and write-off. The balance is the sum; every change stays traceable, and a wrong booking is corrected by a reversing movement, not by deletion.

Number and check code

A unique voucher number that is hard to guess, plus a PIN or check code for online redemptions. Sequential numbers can be tried out one by one.

Face value and balance

The issued value and the current balance calculated from the movements. Currency and rounding are defined per voucher.

Tax type

Flag for single-purpose or multi-purpose, plus tax rate and place of supply for single-purpose vouchers. The flag drives receipt, invoice and booking.

Issue

Channel, store or shop, date and sales document of the issue. The year of issue later determines when a limitation check is due.

Status and block

Active, reserved, blocked, redeemed or written off. A block after loss or suspected fraud takes effect in all channels at once.

Movement journal

Every issue, redemption, release and correction as a separate record with a document reference. The journal is the basis for POS audits and accounting.

A partial redemption is therefore nothing special, just a movement like any other. A worked example: a 50.00 euro voucher is used online for a purchase of 32.90 euros; the journal receives a redemption of 32.90 euros, and the balance is 17.10 euros. Later, the customer pays 12.00 euros with the voucher in a store, and the balance drops to 5.10 euros. The POS passes the voucher number with every redemption. The German tax administration's export description for POS systems provides a dedicated field to link a redemption to the voucher originally issued (DSFinV-K).

Preventing double redemption: check, reserve, book

The most dangerous gap opens when two channels use the same voucher almost simultaneously: one customer shows the code at the till while someone else types it into the checkout. If both systems read the same balance, both deduct their amount and both write the result back, more value is redeemed than the voucher carried. No later reconciliation prevents that; only a redemption in clear steps does.

From scan to new balance

  1. 1

    Check

    The channel sends number and check code. The leading system reports status, balance and tax type without changing anything.

  2. 2

    Reserve

    The required amount is blocked with an expiry time. The reservation only succeeds if the free balance is sufficient; a second channel can then no longer reserve the same amount.

  3. 3

    Complete

    Only when the receipt or order is completed and any remaining payment has gone through does the reservation become a redemption with a document number.

  4. 4

    Release

    If the customer cancels or the remaining payment fails, the channel releases the reservation. Otherwise it expires on its own after the expiry time.

  5. 5

    Confirm

    The new balance goes back to the channel and appears on the receipt, the order confirmation and in the customer account.

Technically, an atomic operation decides: the reservation is only booked if the free balance at the time of booking covers at least the requested amount, for example through a conditional update in the database or a version number on the voucher account. If the condition fails, the channel receives a clear rejection. Over HTTP, status 409 Conflict fits this case, as it reports a conflict with the current state of the resource (RFC 9110). POS and shop then show the actual balance instead of silently retrying the redemption.

An idempotency key per redemption attempt belongs to this as well. If the connection drops after the booking and the POS sends the request again, the leading system must not deduct the amount a second time but return the result of the first booking. How such keys and retries are built is shown in the article on idempotency and retry strategies.

Set an expiry time per channel

At the till, a few minutes are usually enough because the receipt is completed right away. In the checkout, the reservation has to survive a trip through an external payment page and an approval in the banking app, so it needs more time. A cleanup job releases expired reservations and reports unusual clusters, such as many reservations on the same code within a short time.

When the POS is offline

At the POS, a special case comes on top. An electronic recording system must record every transaction subject to recording individually, completely, correctly, in a timely manner and in an orderly way, and it must be protected by a certified technical security device (Section 146a(1) AO). That also applies when the connection to head office fails. The POS can keep selling offline, but it does not know the current balance of a voucher. For this case, there needs to be a rule that is defined in advance and known to staff.

  • Block redemption: The simplest rule. Without a connection, the POS accepts no vouchers, and the customer pays another way or comes back. Low risk, but unfriendly during the holiday season.
  • Offline limit: Without a connection, the POS redeems up to a fixed maximum per voucher and day and flags the redemption as offline. This caps the possible loss at a known amount.
  • Local block list: The POS keeps a regularly updated list of blocked and fully redeemed vouchers and rejects them even while offline.
  • Posting with original time: After the connection is restored, the POS sends the buffered redemptions with timestamp, receipt number and idempotency key. The leading system books them in order of arrival.

If the later posting results in a negative balance because the same voucher was redeemed online in the meantime, the case belongs on a review list, not in an automatic correction. The list shows the voucher, both movements and the documents involved so that the store and accounting can decide. More on buffering and an orderly restart is in the article on fallback operation during an ERP outage.

Cancellations, returns and refunds to the voucher

Cancellations and returns are where voucher balances drift apart most often. If a receipt on which a voucher was redeemed is canceled, the redemption must go back to the voucher account as a reversing movement, referencing the canceled receipt. The same applies to an abandoned online order: the redemption is reversed, not deleted. If, on the other hand, the sale of a voucher itself is reversed, the leading system blocks the code before the money flows back.

A return adds a business decision: does the refund go back to the voucher, to the customer as a new voucher or as money to the original payment method? One possible rule is to refund to the voucher first; another is a proportional split by how the purchase was paid. If an 80 euro order was paid with 30 euros from a voucher and 50 euros by card and one item is returned, the rule has to define which part is refunded first. That rule belongs in the middleware or the ERP, not in the memory of the store staff.

The document reference in both directions matters: the credit to the voucher carries the return number, and the return in the ERP carries the voucher as the refund route. The process from return request to credit note is described in the article on the RMA process between shop and ERP. When a consumer withdraws from an online purchase, separate rules on the refund route apply, which the article on the withdrawal button in the shop covers.

Tax type and year of issue: what the data model needs to know

The tax type is a field on the voucher and no minor detail, because it determines when VAT becomes due; the year of issue determines when a balance can become time-barred. A single-purpose voucher exists when the place of supply and the tax due are fixed at issue; its transfer already counts as the supply (Section 3(14) UStG). With a multi-purpose voucher, only the actual supply at redemption is subject to VAT, while any earlier transfer is not (Section 3(15) UStG). A stored-value voucher that customers can exchange for goods at the reduced or the standard rate is a multi-purpose voucher in the view of the tax administration (UStAE 3.17 para. 9). If no separate expiry date was agreed for a voucher, the standard limitation period of three years applies (Section 195 BGB); it begins at the end of the year in which the claim arose and the creditor learned of it or should have learned of it without gross negligence (Section 199(1) BGB). A voucher sold in 2023 without its own expiry date therefore usually becomes time-barred at the end of December 31, 2026. Whether a shorter validity is effective and how a voucher is classified for tax purposes is for your tax advisor and legal counsel to decide in each case; the integration has to map the result cleanly.

Data pointSingle-purpose voucherMulti-purpose voucher
Tax at saleyes, at the rate of the specified supplyno, document without VAT shown (DSFinV-K)
Tax at redemptionno further tax; showing it again on the receipt can trigger the excess amount as well (Section 14c(1) UStG)tax on the goods purchased under the general rules
Transaction type at the POSone separate type each for buying and redeeming single-purpose vouchers (DSFinV-K)one separate type each for buying and redeeming multi-purpose vouchers (DSFinV-K)
Voucher item in shop and ERPtax code of the specified supplyseparate code without tax
Unredeemed balanceno further VAT consequences as long as nothing is refunded (UStAE 3.17 para. 7)no VAT consequences (UStAE 3.17 para. 13)

For the interface, this means the tax type is set at issue and travels with every movement. The POS uses it to choose the transaction type, the shop to choose the tax code of the voucher item and the export to accounting to choose the account. Special cases, such as vouchers for customers abroad or partner businesses that also redeem them, belong on your tax advisor's desk before launch, not after the first advance VAT return.

Handing movements over to ERP and DATEV

Every movement on the voucher account is a transaction that accounting needs to see. At the sale, a liability toward the holder usually arises; for balance-sheet preparers, no income has been realized at that point (DSFinV-K). At redemption, the liability is released and the revenue for the goods purchased is booked, and writing off a time-barred balance usually leads to income. Which accounts and tax codes apply is something you agree with your tax advisor. The interface makes sure every movement arrives with the voucher number as its document reference.

The routes there differ. The shop delivers individual documents per order, the POS a daily closing with totals per transaction type, and the leading system the complete journal. It makes sense to use the journal as the authoritative source for voucher bookings and to reconcile shop and POS data against it. How invoices, credit notes and payments reach the DATEV batch is shown in the article on DATEV integration in e-commerce; we set up the ongoing handover through our DATEV integration.

  • The total of all open balances in the journal equals the balance of the liability account in accounting.
  • Redemptions per store and day equal the voucher transaction types in the POS closing.
  • Online redemptions per day equal the voucher payments in the shop's orders.
  • Sales per channel equal the voucher items in the POS closing and the shop export.
  • Every difference lands on a review list with the voucher number and documents.

The journal has to last longer than any single voucher. Books and records must be kept for ten years, accounting documents for eight years (Section 147(3) AO). Storage of the journal, access rights and reconciliations therefore belong in the process documentation, as described in the article on GoBD process documentation for interfaces. Matching remaining payments with payment providers works the same way as for any other payment method; see the article on payment reconciliation.

The cutoff list at year end

At the turn of the year, the question of open balances comes up, and the answer has to come from the journal, not from an estimate. At the cutoff date, accounting needs a list of all vouchers with a balance above zero, grouped by year of issue, tax type and channel. The year of issue shows which vouchers without their own expiry date can become time-barred at year end; the tax type shows how an unredeemed balance is to be treated.

Time-barred balances are written off only after approval, and as a separate movement in the journal, so that a later goodwill redemption stays possible and traceable. Like any other movement, the write-off carries voucher number, amount, timestamp and user, and reaches the ERP and DATEV as a transaction of its own.

A trial run of this list in the weeks before Christmas pays off, because redemptions, returns and stocktaking all coincide in January. What else needs doing at the interfaces at the turn of the year is summarized in the article on stocktaking and year end; for the load of the promotion weeks, the preparation for the Black Week order peak helps.

Rolling it out in six steps

Which voucher types exist, where are they sold and redeemed, how many are open? This includes paper vouchers from the store and codes from past promotions.

An integration like this can be added to existing systems. POS and shop do not have to be replaced as long as both allow checks and reservations through an interface. How we connect ERP and shop is described on the page about ERP and inventory integration; the additional interfaces we develop are covered under API development.

One voucher, one account, one journal

The customer sees a code and a balance. Behind them are one leading system, a reservation before every redemption and a journal that POS, shop and accounting read the same way. Settling these three things before the holiday season answers the question at the till in seconds instead of by callback.
This article is based on data from: Handelsverband Deutschland (HDE), press release of November 5, 2025 on the Christmas business, and the HDE presentation “Das Weihnachtsgeschäft im Einzelhandel 2025” with the HDE consumer barometer (HRI survey conducted by YouGov, 2,060 respondents); Bitkom, press release of December 5, 2025 “Rund drei Viertel besorgen Weihnachtsgeschenke online” (1,002 respondents aged 16 and over); German VAT Act (UStG), Section 3(13) to (15) and Section 14c(1); VAT Application Decree (UStAE), section 3.17; German Fiscal Code (AO), Section 146a(1) and Section 147(3); German Civil Code (BGB), Section 195 and Section 199(1); Digital Interface of the Tax Administration for POS Systems (DSFinV-K) of the Federal Central Tax Office; RFC 9110 of the IETF. The notes on tax and law do not replace professional advice.

Related Articles

Shop integration & processes

IDS Connect: linking trade software to the wholesale shop

IDS Connect links trade software and the wholesale shop: how login, article search, basket return and deep link work and what a Shopware shop needs for it.

18 min read
APIs, middleware & architecture

Bulk Import from the ERP: Using the Shopware Sync API

Bulk import from the ERP into Shopware: the Sync API with upsert and delete, package sizes set by server limits, indexing via the message queue and delta sync.

19 min read
APIs, middleware & architecture

Documenting Interfaces: OpenAPI Instead of Tribal Knowledge

Describe shop-ERP interfaces with OpenAPI: fields, error codes, examples and scopes, the description as a contract and the handover package for a switch.

18 min read