ZVT is the German standard that lets your cash register talk directly to your Vivid payment terminal. Your cash register is in charge; the terminal simply carries out what the register asks it to do.
Without this connection, your staff have to enter the payment amount twice — once on the register and once on the terminal. With ZVT, they only enter it once, on the register. The register sends the amount to the terminal, the terminal reads the customer's card, and the register receives a receipt number back. This removes typing errors and means every card total on your register can be traced back to a single transaction.
Which cash registers does this work with?
Our integration works with any cash register that supports ZVT over TCP/IP. Two things follow from this:
We don't keep a list of certified cash registers, and we can't guarantee compatibility with a specific brand or model.
We don't configure your cash register for you. The register side is set up by you or your POS provider — we provide the terminal's network address, port, and protocol.
What do I need before I connect my register?
Requirement | Why it matters |
Your shop's own Wi-Fi network | The terminal has no Ethernet socket, so it must connect over Wi-Fi |
Not mobile data | On mobile data the terminal gets an address your register can't reach |
Register on the same network | Your register can connect to the same router by Ethernet cable or Wi-Fi |
Not a guest Wi-Fi network | A guest network isolates devices from each other, so they can't reach one another |
Register currency set to EUR | Other currencies aren't supported |
One terminal per register lane | Only one register can be connected to a terminal at a time |
How do I connect my cash register to the terminal?
Switch on the terminal and connect it to your shop Wi-Fi — the same network your cash register uses. A guest network ("Guest", "Gast") won't work.
Open the ZVT Bridge app on the terminal. The Type this into the register screen shows the terminal's network address and port. The port is always 20007.
In your cash register's settings, find the terminal connection section. It's usually called ZVT, EC-Terminal, or Zahlungsterminal.
Enter the address and port shown on the terminal, and set the currency to euro.
If your register asks for connection options — receipt printing, status receipts, TLV — set the ones you need.
Start the terminal registration function on your register.
The terminal shows READY and a screen with the options your register requested. The connection is now ready to use.
Make a test payment from the register, then reverse it — also from the register. This confirms the money comes back and shows you how a reversal works.
You can also set the terminal's interface language — we recommend setting it to German.
What should I note down when I set this up?
Keep a record of the terminal ID, the terminal's network address, the port (20007), and whether a pairing code is set. This information can't be retrieved later. If possible, ask for a fixed address in your router — the terminal's address can change after it reconnects to Wi-Fi, in which case you'll need to update it on the register.
What changes about how my shop works day to day?
Payments always start on the register. Your staff never need to press anything on the terminal itself.
End of day must be started from the register, every day. It can't be started on the terminal. Receipt numbers don't restart at 1 — after number 9999 the terminal refuses new payments until an end-of-day operation completes. You'll get a warning when 100 numbers are left.
Refunds work differently depending on timing. Same day, full amount, same terminal: reverse it from the register. Partial amount, after the day's batch is closed, or the original payment was taken on a different terminal: refund it from the Vivid Money app instead.
Your register isn't the full picture for card money. Its batch total doesn't subtract reversals, and refunds or tips made in the Vivid Money app don't show up on the register. Reconcile your card money in the Vivid Money app, not on the register.
A payment can't be cancelled once the terminal has started reading the card.
What are the limits of this integration?
Network
The terminal only connects over your shop's Wi-Fi — it has no Ethernet socket, and mobile data doesn't work.
The terminal's address can change after it reconnects to Wi-Fi. If that happens, you'll need to re-enter the new address on your register.
Register
Only one register can be connected at a time — a second connection attempt is refused.
EUR only.
The terminal only sends receipt text to the register if your register asked for it during setup. Otherwise, the terminal prints the receipt itself.
A pairing code isn't a security feature — it's sent as plain text — and most registers don't send one by default. If a pairing code is set on the terminal, registration will fail, so we don't recommend setting one.
Payments
Supported: payment, reversal, repeat receipt, end of day.
No pre-authorisation. This means the integration isn't suitable for businesses where the final amount is only confirmed later, such as hotels, car rental, fuel, or delivery.
Tips are set up separately in the Vivid Money app and don't go through the register.
The terminal can't hand money back to a customer directly — only a reversal of a payment still in the open batch returns money.
A reversal always cancels the full amount — partial reversals aren't possible, and a reversal must be sent to the same terminal that took the original payment.
What do I do if my register won't connect to the terminal?
First, check the word at the top of the terminal screen and the text below it. If it says READY, the terminal can take card payments — the issue is on the register side or in the network. Then work through these checks in order:
Is a pairing code set on the terminal? This is the most common cause. Most registers don't send a pairing code, so registration will fail if one is set. Open the app on the terminal and remove the code.
Is the terminal on your shop Wi-Fi? The screen should show Shop Wi-Fi. If it shows No Wi-Fi, it's likely on mobile data, which the register can't reach.
Are both devices on the same network? Compare the first three numbers of the terminal's address and the register's address — they should match. Make sure the register is connected to the same router as the terminal, and that the terminal isn't on a guest network.
Did the terminal's address change? If the terminal reconnected to Wi-Fi, check the address on the app again and re-enter it on the register.
Is the register connected but not signed in? The registration may not have completed — start the registration function on the register again.
Does the terminal say it needs an update? On the terminal, go to Settings → Configuration → Status, and apply the update from that screen.
Are you trying to connect a second register? Only one register can be connected per terminal — a second one will be refused.