Did You Know?

Stayflexi can give you more direct bookings from Google. Contact your CSM today!

SHIFT4 UTG Troubleshooting Guide

Card terminal not responding? Nine times out of ten the problem is not the card reader and not Stayflexi — it is the Shift4 Universal Transaction Gateway (UTG), a small Windows program that sits between the two. This guide takes you from “the terminal is dead” to a working $1 test charge, and tells you exactly when to stop and call Shift4.

Before you use this guide, confirm the property actually runs a UTG. Some Shift4 properties use Commerce Engine for Cloud instead — Shift4’s cloud middleware talks to the card terminal directly over the internet, with no gateway software on any property PC. None of the steps below apply to those properties.

Check Meta → Configure Custom Payment Gateway Information:

  • Shift4 Utg Url is filled in (e.g. https://192.168.1.14:277/) — this is a UTG property. Continue with this guide.
  • Shift4 Utg Url is blank, and Terminal Serial number + Terminal Manufacturer are filled in (e.g. 2210184124 / PAX) — this is a Commerce Engine property. Stop and use the Commerce Engine guide instead.
  • All three are blank — the property is not configured for card terminal payments at all. Escalate to Stayflexi Ops.

Never add a UTG URL to a Commerce Engine property to “fix” it. That field is what selects the mode: filling it in silently switches the property out of cloud mode and points it at gateway software that was never installed.

Who does what:
Front desk steps need no admin rights and no training.
Stayflexi Ops steps need Windows admin access on the property’s PC.
Shift4 only steps must not be attempted by us — Shift4 owns them.


1. How the Shift4 integration actually works

Understanding this one diagram resolves most tickets, because it tells you which link in the chain is broken.

Front desk browser
Stayflexi PMS
▼
HTTPS request to https://<UTG-IP>:277/api/rest/v1/transactions/sale
the IP and port stored in Stayflexi Meta
Property’s Windows PC

Shift4 UTG
running as a Windows service, or as the Stand Alone app

  • listens on the REST interface
  • presents an SSL certificate
  • routes to a device by API Terminal ID

▼
over the local network
PIN pad / card reader
shows the EMV prompt and amount

outbound TCP 26880 / 26881
Shift4 data centre
authorises the transaction

Key consequences of that design:

  • The UTG runs on the property’s own PC. If that PC is off, asleep, or off the network, card payments stop — even though Stayflexi itself is perfectly healthy.
  • Stayflexi talks to the UTG by IP address. That address is stored in Stayflexi Meta as the Shift4 UTG URL. If the PC’s IP changes, the stored URL becomes wrong and every transaction fails.
  • The connection is HTTPS with a self-signed certificate. The browser must trust that certificate, and the certificate must have been generated for the IP the browser is calling.
  • The UTG routes to a specific PIN pad using the API Terminal ID. That ID must match on both sides — in the UTG and in Stayflexi Meta.

Only one UTG program can run at a time. The UTG ships in three forms — the background service (Shift4 UTG2), the Stand Alone app, and TuneUp (the configuration editor). Starting one requires stopping the others. Day to day, the service should be the one running.


2. Symptom → cause quick reference

What you see Most likely cause Go to Owner
PIN pad shows “This Lane is Closed” UTG not running, or cannot reach the PIN pad §3, then Procedure A Front desk
PIN pad screen blank / no Shift4 splash Power or network cable, or PIN pad needs a reboot §3 Front desk
PMS spins, then fails. Network tab shows ERR_CONNECTION_TIMEOUT UTG IP changed — Meta / TuneUp no longer match the PC Procedures B + D Ops
Network tab shows ERR_CONNECTION_REFUSED UTG software not running on the PC Procedure A Ops
Network tab shows ERR_CERT_AUTHORITY_INVALID Certificate not trusted on this PC, or issued for a different IP Procedure F Ops
Network tab shows ERR_SSL_SERVER_CERT_BAD_FORMAT or ERR_CERT_INVALID Certificate was generated incorrectly Procedure F Ops
Terminal worked yesterday, dead after a reboot No static IP — the PC picked up a new DHCP address §7 Shift4 + Ops
Error 9956 TID NO PINPAD API Terminal ID in Meta does not match the UTG Procedures C + D Ops
“Terminal(0002) is not configured for any PinPad” The UTG has no PIN pad set up for that API Terminal ID — usually a second terminal Shift4 has not finished configuring Procedure C Ops + Shift4
Error mentions MID MISMATCH or a Merchant Id of all zeros Shift4-side merchant account configuration — our request was correct §4, then escalate Shift4
Error 9833 UTG Offline / 9775 The PC has lost internet to the Shift4 data centre §8 Shift4
No Shift4 UTG2 service exists at all UTG was never installed as a service §8 — escalate Shift4
AuthToken not valid ENGINE27S7 during onboarding Expired or wrong auth token from the partner portal §6, Procedure D Ops

3. Front desk: the five-minute check Front desk

Work through these in order before raising a ticket. Most “terminal is dead” reports are resolved by step 4 or 5.

Step 1 — Look at the PIN pad screen

  • Blank / no lights: it is a power or cable problem. Go to step 2.
  • “This Lane is Closed”: the PIN pad is alive but the UTG is not talking to it. Skip to step 4.
  • Shift4 splash screen / idle logo: the PIN pad is healthy. The problem is further up the chain — skip to step 5.

Step 2 — Reseat the cables at both ends

Unplug and firmly re-plug the Ethernet (or USB) cable at both the PIN pad and the network switch or PC. Confirm the switch port shows a link light.

Step 3 — Reboot the PIN pad

Hold the yellow key + # together until the device shuts down, then let it restart. If that key combination does nothing, unplug the power cable, wait ten seconds, and plug it back in. Wait for the Shift4 splash screen.

A PIN pad that has been off the network for a while will not fully reconnect on its own. Seeing the splash screen is not proof it is working. You must run an actual transaction to confirm.

Step 4 — Confirm the UTG computer is awake and online

Find the property PC that Shift4 installed the UTG on (usually the back-office or front-desk workstation). Confirm it is powered on, logged in, not asleep, and has network/internet. If that PC has been shut down, switched to Wi-Fi, or moved to a different network, card processing will not work.

Step 5 — Restart the Shift4 UTG service

  1. On the UTG computer, press Windows + R, type services.msc, press Enter.
  2. Find Shift4 UTG2 (it may appear as Universal Transaction Gateway).
  3. Right-click it → Restart.
  4. Confirm Status = Running and Startup Type = Automatic.
  5. Wait 2–3 minutes for it to fully initialise. Do not test before that.

If Restart throws an error, open Task Manager, end the task named Shift4 Gateway, then restart the service again.

If there is no Shift4 UTG2 service in the list at all, the UTG was never installed as a Windows service. Stop here and escalate to Shift4 — see §8.

Step 6 — Run a $1 EMV test

From the Stayflexi folio, run a $1 card transaction. The PIN pad should light up and display the amount. If it does, void or refund the test and you are done.

If it still fails, do not keep retrying. Capture the error as described in §4 and raise a ticket with that screenshot attached.


4. Investigating a case, end to end Front desk Ops

A case almost always arrives looking like this: a red message in the Perform EMV transaction window, and nothing else to go on. The message is passed through from the UTG word for word, so it is a real clue — but on its own it rarely says whose problem it is.

The Perform EMV transaction window in Stayflexi showing a red error reading ApiTID 001 is defined as Merchant Id 0000000000, with the amount and a Terminal Id dropdown
Figure 1 — What the front desk sees. The red banner is the UTG’s own text, passed straight through. Note the Terminal Id(s) drop-down — whichever entry is selected decides which API Terminal ID is sent.

The whole method fits in one sentence: whatever the UTG holds must match what Stayflexi Meta holds. Everything below is how to see both sides, and how to decide who owns the problem once you have.

The two values that have to match

Stayflexi Meta field Must equal Where to read it in the UTG
Shift4 UTG URL
https://<IP>:277/
The REST interface’s Host Address and Port TuneUp → Express (Host Address), confirmed on API Interfaces → REST
API Terminal ID
e.g. 001
The device’s API Terminal ID — think of it as the PIN pad’s device ID TuneUp → Devices

The UTG URL is normally the same for every terminal at a property, because one UTG serves them all. The API Terminal ID is different for each PIN pad. A property with two readers has one URL and two terminal IDs.

If both values match and the charge still fails, the configuration on our side is correct. The fault is then in the UTG or in Shift4 beyond it, and the job changes from fixing to evidencing — see step 3.

Step 1 — Open the card terminal diagnostics

Start here. Every failed terminal attempt is now recorded against the folio, and the word FAILED is a link.

  1. Open the booking’s folio and find the failed payment attempt.
  2. Click the FAILED label. The Card terminal diagnostics panel opens.
  3. Read it top to bottom. It shows the gateway and Terminal ID used, the endpoint that was actually called, the error text, the exact request sent and the exact response received.
  4. Click Copy diagnostics and paste the result into the ticket — or hand it straight to Shift4 if they are on the call.
The Card terminal diagnostics panel showing gateway SHIFT4, Terminal ID 001, the endpoint called, the error text, and the full request and response JSON
Figure 2 — The Card terminal diagnostics panel. Everything needed to diagnose or escalate is on one screen, and Copy diagnostics puts it on the clipboard.

This panel usually ends the investigation. It tells you which URL was called, what we sent, and what came back — so you can see immediately whether the request was correct and the reply was a refusal. When Shift4 support are on the call, this is the evidence that shows the fault sits on their side. The same panel exists for Fortis terminals.

Step 2 — Read the Network tab

Use this when you need more than the diagnostics panel, or when the attempt is older than the diagnostics feature.

  1. In Chrome, on the Stayflexi tab, press F12 (or Ctrl + Shift + I on Windows, Cmd + Option + I on Mac).
  2. Click the Network tab and tick Preserve log.
  3. Run the $1 EMV transaction again and watch the rows appear.

Which row is which

One charge produces four or five rows. Only one of them is the actual card transaction — knowing which saves a lot of wasted reading.

Row What it is What to do with it
generateShift4UtgRequest Stayflexi’s own backend building the request. It never touches the UTG, so it succeeds almost every time. Open Preview and confirm the terminalId and the amount we are about to send. A success here proves nothing about the terminal.
sale or authorization The real call to the UTG, to https://<IP>:277/api/rest/v1/transactions/sale. This is the only row that matters. Its status and its response body are the answer.
A row named after the UTG’s IP, returning 404 Expected datasnap context A probe the interface makes to check the UTG is alive. Ignore it. A reply here is good news — it proves the UTG is running and reachable.
recordTerminalAttempt Stayflexi recording the failed attempt so it appears on the folio. Ignore it. This is what makes the FAILED link in step 1 possible.
Chrome Network tab listing generateShift4UtgRequest, sale, two IP probe rows and recordTerminalAttempt, with the generated request payload showing terminalId 001
Figure 3 — The row list, with generateShift4UtgRequest open. Use its Preview to confirm the terminalId Stayflexi is sending — here 001.

Reading the sale row

Click the sale row. Headers tells you where we called and what came back; Preview tells you why.

What the sale row shows What it means Whose problem
A status code such as 400 — any real reply The UTG received the request and answered. The message in the response is Shift4’s own wording, passed straight through. Usually Shift4 — go to step 3
ERR_CONNECTION_TIMEOUT Nothing answered. The request never reached the UTG. Ops — Procedures B and D
ERR_CONNECTION_REFUSED The address is reachable but nothing is listening. The UTG is not running. Ops — Procedure A
A certificate error TLS was refused by the browser. Ops — Procedure F
The sale row Headers tab showing Request URL https://192.168.0.107:277/api/rest/v1/transactions/sale, method POST and status 400 Bad Request
Figure 4 — Headers on the sale row. Check the Request URL matches the property’s real IP address, then read the status.
The sale row Preview tab showing the UTG error body with shortText MID MISMATCH, primaryCode 9787 and longText about Merchant Id 0000000000
Figure 5 — Preview on the same row. The shortText, primaryCode and longText are Shift4’s verdict — here MID MISMATCH, code 9787.

Step 3 — Decide who owns it

We can fix it Shift4 must fix it
  • Certificate errors — Procedure F
  • ERR_CONNECTION_REFUSED / the UTG not running — Procedure A
  • ERR_CONNECTION_TIMEOUT after an IP change — Procedures B and D
  • A Meta value that does not match the UTG — Procedure D
  • The UTG replied with an error message of its own
  • Merchant ID, MID mismatch, or account-level errors
  • An API Terminal ID with no PIN pad configured against it
  • The service was never installed, or the slot needs re-activation
  • PIN pad hardware

Once the UTG has answered, we are out of road. Stayflexi calls the UTG, and the UTG calls Shift4’s servers. If the reply came back from that chain, no change in Meta or TuneUp will alter it. Send the property to Shift4 support with the copied diagnostics, and say plainly that the error text came from the UTG.

Attach evidence to every escalation. A ticket that says “terminal not working” gets a slow generic reply. A ticket carrying the copied diagnostics — endpoint, request, response — gets routed to the right engineer immediately.


5. Error decoder

Browser / network errors

Error What it means Fix
ERR_CONNECTION_TIMEOUT Nothing answered at that IP and port at all. Usually the PC’s IP address changed and the stored URL now points at an address that no longer exists. Procedure B (fix IP in TuneUp), then Procedure D (fix Meta)
ERR_CONNECTION_REFUSED
or PIN pad reads Lane Closed
The IP is reachable but nothing is listening on the port — the UTG software is not running, or is running but cannot reach the device. Procedure A, then Procedure E to confirm it is listening
ERR_CERT_AUTHORITY_INVALID TLS connected, but the browser will not trust the certificate the UTG presented. Either it was never imported into this PC’s trust store, or it was issued for a different IP than the one being called. Procedure F
ERR_CERT_INVALID The certificate Shift4 generated is not valid. Procedure F — regenerate and reinstall
ERR_SSL_SERVER_CERT_BAD_FORMAT The certificate was generated incorrectly — wrong format, or the key was not paired properly. Procedure F — regenerate and reinstall
404 with “Expected datasnap context in request /”
and response header Server: DatasnapHTTPService
Not a fault — this is good news. Something asked the UTG for its bare root address (https://<IP>:277/) instead of an API path. The UTG answered, which proves it is running, reachable on the network, and that its certificate was accepted. Ignore this row. Look at the sale row instead for the real failure.

UTG error codes returned by Shift4

Code Meaning Action
9956 TID NO PINPAD The Terminal ID sent by Stayflexi does not match any PIN pad configured in the UTG. Procedure C to read the real ID, Procedure D to correct Meta
“Terminal(XXXX) is not configured
for any PinPad NAME“
The plain-English form of 9956, returned by the UTG itself. The API Terminal ID Stayflexi sent (the XXXX) does not match any PIN pad in the UTG’s Devices tab. NAME is the PIN pad group the UTG searched, often DEFAULT. Procedure C — and note this is usually a Shift4-side job, not a Meta change
9787 MID MISMATCH
or UTG_UNREACHABLE with text like
“ApiTID 001 is defined as Merchant Id 0000000000… check DOLLARS ON THE NET®”
The API Terminal ID exists, but on Shift4’s side it is tied to a merchant account that is wrong or unset — an all-zero merchant ID is never valid. The request and the terminal ID were correct; Shift4’s own records are not. Nothing to change in Meta or TuneUp. Copy the diagnostics (section 4) and escalate to Shift4 — this is fixed in their merchant configuration.
9833 UTG Offline The UTG cannot reach the Shift4 data centre. Check the PC’s internet. Confirm outbound TCP 26880 and 26881 are open. Escalate to Shift4 / the property’s ISP.
9775 NO SUPPORT That function is not available while the UTG is in offline mode. Restore connectivity first, then retry
9838 AMT EXCEEDED UTG is offline and the amount is above the offline stand-in limit. Restore connectivity; do not retry offline
9962 / 9971 / 9972 Timeouts between the UTG, the device, or the data centre. Retry once. If persistent, escalate to Shift4.

6. Ops procedures Stayflexi Ops

Before you touch anything: these procedures change live payment configuration on a property’s machine. Announce a short card-processing outage to the front desk first, and do them with someone from the property present.

Procedure A — Get into the UTG and open TuneUp

This procedure assumes you have never opened the UTG before. Everything here happens on the property’s Windows PC, over a remote session or in person — never on your own laptop.

A1. Understand the three programs before you start

“The UTG” is not one program. It ships as three, and they all run from the same folder, C:\Shift4\UTG2. Knowing which is which prevents most of the confusion.

Program What it is When it should be running
Shift4 UTG2
the service
The background Windows service. It has no window and starts automatically with the PC. All the time. This is what a healthy property runs day to day.
UTG (v2) Stand Alone The same gateway, but with a visible window showing live device status and the last transactions. Only while you are testing a change. Never left running.
UTG (v2) TuneUp The configuration editor. This is where the IP address, REST interface, certificate and terminal IDs live. Only while you are editing settings. Card payments are down while it is open.

Only one of the three can run at a time. TuneUp will refuse to open while the service is running — usually with a “service already running” message. That is not a fault, and it is why every procedure below starts by stopping the service.

A2. Stop the Shift4 UTG2 service

  1. Press Windows + R together. A small Run box opens in the bottom-left corner of the screen.
  2. Type services.msc and press Enter. The Services console opens — a long alphabetical list of every background program on the PC.
  3. Scroll down to the letter S and find Shift4 UTG2. On some installs it is listed as Universal Transaction Gateway. Check the Status and Startup Type columns before you change anything, and note what they say.
    The Windows Services console with the Shift4 UTG2 entry selected, showing Status Running and Startup Type Automatic
    Figure 6 — The Services console. A healthy property shows Status Running and Startup Type Automatic.
  4. Right-click Shift4 UTG2 and choose Stop. Wait for the progress box to finish and the Status column to go blank.

Card payments are now down at this property. Everything from here until you restart the service in Procedure G is an outage. Tell the front desk before you start, and work quickly.

A3. Confirm the gateway has really stopped

Stopping the service does not always kill the underlying process, and TuneUp will still refuse to open if it is alive.

  1. Right-click the taskbar at the bottom of the screen and choose Task Manager. If it opens small, click More details.
  2. Look through the list for Shift4 Gateway. If it is there, select it and click End task. If it is not there, the gateway has stopped cleanly and you can move on.

A4. Open UTG TuneUp

  1. Click the Windows Start button and type TuneUp. In most installs UTG (v2) TuneUp appears straight away.
  2. If it does not, open Start and look for a folder named Shift4 or Shift4 Payments, then Universal Transaction Gateway, then UTG (v2) TuneUp.
  3. Right-click it and choose Run as administrator. TuneUp cannot save changes without it.

If there is no TuneUp shortcut anywhere, it can be recreated. TuneUp is not a separate program — it is the ordinary UTG executable started with a -t flag:

C:\shift4\utg2\utg2.exe -t

Open File Explorer, go to C:\Shift4\UTG2, right-click UTG2 and choose Create Shortcut. Right-click the new shortcut, choose Properties, and on the Shortcut tab add a space and -t to the end of the Target box so it matches the line above. Rename it “UTG TuneUp”.

A5. Find your way around TuneUp

TuneUp opens on a window with tabs across the top. Only three of them matter for the procedures in this guide.

Tab What lives there Used by
Express The property’s identity with Shift4 — Serial, Slot, and the Host Address drop-down holding the PC’s IP address. Procedure B
API Interfaces The REST interface Stayflexi connects to — its Host Address, Port (normally 277) and the SSL certificate. Procedures B and F
Devices The PIN pads, each with its own API Terminal ID. Procedure C
The UTG TuneUp main window showing the row of tabs including Express, API Interfaces and Devices
Figure 7 — TuneUp when it first opens. The tabs run across the top; Save is at the top of the window.

Clicking Save closes TuneUp. There is no “apply and keep working”. Make every change you intend to make across every tab first, then click Save once. If you close TuneUp any other way, your changes are lost.

A6. Verifying configuration without being able to change it

If all you need is to read the settings — which is the case for most investigations — there is a safer route than the full editor. With Stand Alone running, open Tune Up from the menu at the top of its window.

TuneUp opened this way is read-only. Every field is greyed out and the window has only a Close button, with no Save. You can move through Express, API Interfaces and Devices and confirm every value, with no risk of changing something by accident.

UTG TuneUp opened from the Stand Alone Tune Up menu, showing the Express tab with greyed-out fields and only a Close button
Figure 8 — TuneUp opened from Stand Alone. The fields are greyed and there is a Close button but no Save — that is how you know you are in read-only mode.

Use this route whenever you are only checking. It answers every “does Meta match the UTG” question from section 4 and cannot damage a working property. Only open the editable TuneUp, as in A2–A4, when you actually intend to change a setting.

Procedure B — Verify and fix the UTG IP address

This is the fix for ERR_CONNECTION_TIMEOUT and for “it stopped working after a restart”.

B1. Find the PC’s actual IP address

Open Command Prompt and run:

ipconfig

Note the IPv4 Address of the active adapter — for example 192.168.1.14. This is the true, current address. Everything else must be made to match it.

B2. Check the Express tab

In TuneUp, open the Express tab and look at Host Address. It is a drop-down of the addresses available on this machine.

  • If it is empty — this is the classic failure. The old IP disappeared when the machine got a new one, so the setting was blanked out.
  • If it shows a different IP than ipconfig reported, it is stale.

Select the correct current IP address from the drop-down.

The Express tab in UTG TuneUp showing the Host Address drop-down, Serial and Slot fields
Figure 9 — The Express tab. Host Address must show the PC’s current IP address — an empty box here is the classic sign the IP changed. Serial and Slot live on this tab too; Shift4 will ask for them.

B3. Check the API Interfaces tab

Open the API Interfaces tab and select the REST interface. Verify:

  • Host Address — same current IP as above.
  • Port — normally 277. (Stand Alone displays ports in hex, where 277 appears as $0115. That is the same number, not an error.)
  • Max Connections — default is 6. On a busy property, ask Shift4 to raise this if you see intermittent refusals under load.
The API Interfaces tab in UTG TuneUp with the REST interface selected, showing Host Address, Port and certificate fields
Figure 10 — The API Interfaces tab with the REST interface selected. This is the address and port Stayflexi calls, and where the certificate is attached.

B4. Save and test

Click Save (TuneUp closes). Then continue to Procedure G to verify with Stand Alone before putting the service back.

Important limit on what we can fix. Shift4’s own documentation states that any change to the IP address affects the UTG and can prevent it operating, and that Shift4 Support must re-authorise activation if the IP address changes after transactions have been processed. If re-selecting the IP in TuneUp does not restore service, do not keep trying — the slot needs Shift4 to re-activate it. Escalate.

Procedure C — Verify the API Terminal ID

The API Terminal ID identifies which PIN pad a transaction should go to. It is set per device, not on the interface.

C1. Read the ID the UTG actually has

  1. In TuneUp, open the Devices tab.
  2. Find the PIN pad and read its API Terminal ID exactly — it is 1–32 alphanumeric characters and is case-sensitive. For Stayflexi properties it is usually 0001, but never assume; read it.
  3. This value must match the API Terminal ID stored in Stayflexi Meta exactly. A mismatch produces error 9956 TID NO PINPAD.
The Devices tab in UTG TuneUp listing configured PIN pads with their API Terminal IDs
Figure 11 — A PIN pad opened from the Devices tab. API Terminal ID is the field that must match Stayflexi. If the ID from a “not configured for any PinPad” error has no device here, Shift4 has not set that terminal up.
The Devices tab listing two Ingenico Lane 5000 devices, L1 with API Terminal ID 001 and L2 with API Terminal ID 002
Figure 12 — A property with two PIN pads. L1 carries API Terminal ID 001 and L2 carries 002. These are the only IDs this UTG will accept.

The address shown against a device is not the UTG URL. Each device lists its own Parameters or Address — that is the PIN pad’s own address on the network, and it is unrelated to the https://<IP>:277/ value in Meta. Ignore it when checking the UTG URL; the only field on this tab you need is the API Terminal ID.

C2. Properties with more than one terminal

Many properties run two or more card readers — for example one at each front desk position. On those, the EMV window shows a Terminal Id(s) drop-down listing entries like Terminal - FD1 - 0001 and Terminal - FD2 - 0002. The number on the end is that terminal’s own API Terminal ID, and whichever entry the agent picks is the ID sent to the UTG for that charge.

Each terminal in Stayflexi carries its own API Terminal ID and its own UTG URL. They normally share one UTG URL, because a single UTG serves every PIN pad at the property, while each PIN pad gets a distinct API Terminal ID.

Adding a terminal in Stayflexi does not create it in the UTG. These are two separate records. Stayflexi can be configured perfectly and the charge will still fail, because the UTG has never been told that a PIN pad with that API Terminal ID exists.

This is the usual cause of “Terminal(0002) is not configured for any PinPad DEFAULT” when a property brings a second terminal online while the first one keeps working normally.

C3. Diagnosing “not configured for any PinPad”

The Perform EMV transaction window showing the error Terminal(0002) is not configured for any PinPad DEFAULT
Figure 13 — The multi-terminal failure as the front desk sees it. Stayflexi sent 0002 correctly; the UTG has no PIN pad registered under that ID.
  1. Note the number in the message. That is the API Terminal ID Stayflexi sent, and it came from whichever terminal the agent selected in the drop-down.
  2. Confirm the same value appears on that terminal’s entry in Stayflexi. If the drop-down showed FD2 - 0002, Stayflexi sent 0002 — that part is working.
  3. Open TuneUp on the property PC (Procedure A) and go to the Devices tab. Check whether a PIN pad exists with that exact API Terminal ID.
  4. If only the first terminal is listed, the Stayflexi side is correct and the remaining work is Shift4’s. Ask Shift4 to add and configure the second PIN pad in the UTG with API Terminal ID 0002. Do not change anything in Meta.
  5. If a PIN pad with that ID does exist, compare it character by character — it is case-sensitive — and correct whichever side is wrong.

A useful signal while you are in the Network tab: a 404 from https://<IP>:277/ reading “Expected datasnap context in request /”, with a Server: DatasnapHTTPService response header, means the UTG is alive and answering. That rules out everything in Procedures A, B, E and F and points the investigation straight at the terminal ID.

Procedure D — Update Stayflexi Meta

Meta holds the two values Stayflexi uses to reach the UTG.

Meta field Value Example
Shift4 UTG URL https://<IP_ADDRESS>:<PORT>/ — must match the PC’s current IP and the REST interface port https://192.168.1.14:277/
API Terminal ID Exactly as read from the UTG Devices tab 0001

Include the https:// prefix and the trailing slash. Save, then have the front desk hard-refresh their browser before retesting.

Onboarding note — access tokens

Before a new install session, confirm the merchant is visible on the Shift4 partner portal and that you hold a valid AUTH token. Generate the access token in Meta using that AUTH token and save it.

If you see AuthToken not valid ENGINE27S7, the auth token is not valid. Use the Reissue token button in the partner portal to generate a fresh one and retry. If reissuing also fails, escalate to Shift4.

Note: merchants under Blisspoint are not visible on the partner portal — request the token from Shift4 directly.

Procedure E — Prove the UTG is actually listening

Do this before blaming certificates or Meta. It isolates “is the gateway alive at all” from everything else.

E1. Shift4’s browser test

With the UTG running (service or Stand Alone), open a browser on the property PC and go to:

https://<UTG-IP>:277/api/rest/v1/

An error message here is a PASS. A healthy UTG replies with a complaint about an invalid request format. That response proves the listener is alive and TLS negotiated correctly. No response at all is the failure case — it means traffic never reached the UTG, which points to a network or firewall restriction on that port.

E2. Confirm the UTG owns the port

In Command Prompt:

netstat -n -a -o | find "LISTENING"

Find the line for port 277 and note the PID in the last column. Cross-check that PID in Task Manager’s Details tab — it should belong to the UTG, not some other application.

E3. The negative control

This is the test that catches an impostor. Stop the Shift4 UTG2 service, then test the port again:

Test-NetConnection -ComputerName <UTG-IP> -Port 277

With the UTG stopped, this must fail. If it still succeeds, a different program has taken port 277 and the UTG can never bind to it. Restart the service and the test should succeed again.

Procedure F — Regenerate and reinstall the certificate

Use this for ERR_CERT_AUTHORITY_INVALID, ERR_CERT_INVALID, and ERR_SSL_SERVER_CERT_BAD_FORMAT.

The UTG presents a self-signed certificate. Two separate things must be true: the certificate must have been generated for the IP address the browser is calling, and the PC must trust it. An IP change breaks the first; a fresh PC or a skipped install step breaks the second.

F1. Remove the old certificate first

A stale certificate issued for the previous IP is the most common reason a reinstall “doesn’t help”. Check the Windows trust store (F4 below) and delete any previous Shift4 UTG certificate before importing the new one.

F2. Generate the new certificate

  1. Stop the service and open TuneUp (Procedure A).
  2. Go to API Interfaces, select the REST interface, and click Generate Certificate.
  3. Fill in the Subject box — Common Name, Organization, Email Address, Locality, State/Province and Country. Stayflexi installs use stayflexi, support@stayflexi.com and usa, with the property’s own town and state.
  4. In the Subject Alternative Name (SAN) box, click the IP tab and enter both addresses, one per line:
    • 127.0.0.1
    • the machine’s actual current IP address, from ipconfig

    This box is what binds the certificate to the address. Get it wrong and you will see ERR_CERT_AUTHORITY_INVALID no matter how many times you reinstall.

  5. Under Certificate Generation Options, tick SelfSigned, Server Authentication and Client Authentication. Leave CA SelfSign and CA Intermediate unticked.
  6. Under Cert Type, choose CRT and leave Embed Key unticked. Unticking it is what produces two separate files — a certificate and a key — which is what the next step expects.
  7. Set Key Size to 4096 bit. Leave the Dates at their default ten-year span unless Shift4 says otherwise.
  8. Type the Password: 123456 (the value Stayflexi installs use).
  9. Click Generate, choose a save location, and wait for SUCCESS.
The Shift4 Certificate Generator dialog showing Common Name, Locality, State, Country, IP address, SelfSigned option, password and Embed Key checkbox
Figure 14 — The Generate Certificate dialog. Both IP addresses go in the address field, SelfSigned is selected, the password is 123456, and Embed Key stays unticked so that two files are produced.

Watch the two similarly named options. CA SelfSign and SelfSigned sit next to each other and are easy to confuse. The generator may open with CA SelfSign already ticked — untick it and tick SelfSigned instead. A certificate built with the wrong one will not work as the REST interface’s server certificate.

F3. Bind it to the REST interface

Still in the REST interface window: Browse to the newly created certificate file, and then the key file. If the files do not appear in the dialog, change the file-type filter to All Files. Enter the certificate password (123456). Click Save.

The certificate file and key file browse fields on the REST interface, with the certificate password entered
Figure 15 — Attaching the new certificate and key to the REST interface. Switch the file-type filter to All Files if the certificate does not appear in the browse dialog.

F4. Install it into the Windows trust store

This must be done at the computer level so it applies to every user on that PC. Local admin rights are required.

  1. Press Windows + R → mmc.exe → Enter.
  2. File → Add/Remove Snap-in → select Certificates → Add.
  3. Choose Computer account → Next → Local Computer → Finish → OK.
  4. Expand Certificates (Local Computer) → Trusted Root Certification Authorities.
  5. Right-click Certificates → All Tasks → Import.
  6. Browse to the new certificate. If it is not listed, change the file-type filter to *.*.
  7. On the store page choose Place all certificates in the following store → Trusted Root Certification Authorities.
  8. Next → Finish. You should see “The import was successful.”
The Certificates snap-in in mmc.exe with Trusted Root Certification Authorities expanded and the Certificate Import Wizard open
Figure 16 — The Certificate Store page of the import wizard. Choose Place all certificates in the following store and pick Trusted Root Certification Authorities — do not leave it on “Automatically select”.

Close and reopen Chrome completely afterwards — it caches certificate decisions.

Procedure G — Verify with Stand Alone, then hand back to the service

Never go straight from TuneUp back to the service. Stand Alone shows you live status that the service hides.

  1. Launch UTG (v2) Stand Alone as administrator: Start → search “UTG” → UTG (v2) Stand Alone → Run as administrator. (Or run C:\Shift4\UTG2\UTG2.exe as admin.)
  2. Watch the Devices section at the top. Give it up to five minutes to come up, and wait until the device status reads Idle or Listening — Idle means the device is ready to take a payment. A device stuck on Start-Up or Abort Failure signals a misconfiguration — recheck Procedures B and C.
  3. Check Global Status reads Ready No Failures. WaitKeyPage or Offline means it has not registered with the data centre yet — give it a moment, then investigate connectivity.
  4. Run the browser test from Procedure E1.
  5. Run a $1 EMV transaction from Stayflexi with the Chrome Network tab open. The PIN pad should display the amount.
  6. Once it works: close Stand Alone via File → Exit → Yes (use Override first if it will not close).
  7. Restart the Shift4 UTG2 service and confirm Startup Type is Automatic.
  8. Wait 2–3 minutes for the service to initialise, then run one final $1 test.
CONTENTS