PAR POS™ Monthly Maintenance

September 2026

September 2026 Maintenance

5.16r3 In-Store Release Patches

Chit Reprint with Suppress Chit/Label Printing on Send Enabled

Issue:

When "Suppress Chit/Label Printing on Send" was enabled, the setting also prevented users from manually reprinting a chit from the Recall Order screen. The intent of the setting is to suppress automatic chit/label printing when an order is sent, not to prevent a user from manually requesting a reprint later.

Resolution:

Updated the printing behavior so the suppression setting applies only to the automatic print-on-send workflow. Users can now select Print Chit from the Recall Order screen and successfully reprint the chit even when "Suppress Chit/Label Printing on Send" is enabled. (BRNK-70658, PDOC-4432)

Remove Driver Login Dependency for Check-In/Check-Out (1PD Delivery)

Issue:

The first-party delivery flow required the driver to stay logged into the POS for the whole cash-tender checkout, check-in, order reassignment, and auto-close cycle. Driver and employee IDs were written onto those events only while that session was active. Because drivers do not stay logged in during a real delivery, this caused problems in production.

Resolution:

Removed the login requirement so checkout, check-in, reassignment, and auto-close still record the driver correctly. (AS1-3761, PDOC-4432)

3-Digit Currency from Orbit Causing Register to Hang

Issue:

A register became unresponsive near closing. Root cause: a 1% comp produced a fractional-cent price, and Orbit passed it through with 3-digit precision instead of 2, causing the register to loop infinitely.

Resolution:

Rounded all currency values (items, modifiers, payments, tips) to 2 decimal digits on the register side, consistently between CalculateOrder and Order (values above .115 round up, below round down), so this can't recur regardless of what precision any integrator sends. Verified extensively with 2-digit and multi-digit test prices, and confirmed EOD ran cleanly afterward. (BRNK-70811, PDOC-4432)

Printer Randomly Not Printing

Issue:

A Brother TD-4420DN label printer randomly failed to print specific orders, and the only workaround was a manual reprint. Register logs showed the printer closes its TCP session on port 9100 after about five minutes with no printing. The Brother driver treated that closed socket as an unrecoverable "printer not online" error and deleted the queued job, with no retry. Other printer types keep the job queued when they report offline. One log window showed 28 discarded jobs in about 10.5 hours.

Resolution:

The job now stays queued and is retried, and the code no longer reuses a connection the printer has already closed. The printer can still drop the session after idle time; the change stops the label from being lost when that happens. (BRNK-71460, PDOC-4432)

Printer Randomly Not Printing

Issue:

Brother TD-4420DN failure: after about five minutes of idle time, the printer closed its TCP session, and the driver deleted the queued label instead of retrying it.

Resolution:

Same fix as BRNK-71460 -- keep the job queued, retry it, and do not reuse a connection the printer has already closed. (AS1-3768, PDOC-4432)

KDS Layout Changeset Caused Screen to Superimpose Over Menu

Issue:

A KDS layout changeset added a new panel, and that panel immediately superimposed over the menu. A register restart cleared it until the next publish. Root cause: when a changeset adds a panel, AddPanel forced the new panel to Visible, so it drew on top of the current screen instead of waiting for its configured visibility. The same overlay happened when a copied panel was assigned to an "Add panels to screen" button.

Resolution:

Stopped forcing a newly added panel to Visible, so a published panel only appears when it is meant to be shown. (BRNK-71085, PDOC-4432)

Macro/Script Loading Delay

Issue:

The first button press that runs a script (e.g., selecting "Sides") had a 2-4 second delay.

Resolution:

Reimplemented the warm-up call. (BRNK-71190, PDOC-4432)

Orbit: PaymentId Optional for refreshPaymentTokens

Issue:

Aurus, an external tender integrator, doesn't have a payment's PaymentId readily available, but the refreshPaymentTokens endpoint required it, blocking them from refreshing tokens on a pending future-dated order.

Resolution:

Made PaymentId optional; when omitted, the system now defaults to updating the first payment on the order, with logging added to record when that default is used. (BRNK-70634, PDOC-4432)

Orbit: LaneId Mismatch

Issue:

For Orbit/kiosk integrations, LaneId returned by CalculateOrder and AddOrder was always hard-coded to 1 regardless of the request value.

Resolution:

Patched so the requested LaneId is honored on both endpoints and bundled a related fix (BRNK-71224) so IsTaxExempt from Orbit/InStore orders is also properly respected. LaneId is now consistent and correct, and tax exemption is applied as requested. (BRNK-70779, PDOC-4432)

Verifone Integrated Gift Cash Out

Issue:

The Verifone integrated gift-card cash-out feature was needed in an earlier release for specific customers so their store locations could offer cash-out at the register.

Resolution:

Backported the feature to 5.16r3. Ran the full 9-scenario test plan plus an added partial-approval scenario -- balances under/at/over the max cash-out limit, cash-out not configured, invalid and zero-balance cards, balance inquiry, and log tracing -- all passing. (BRNK-71528, PDOC-4432)

Generic Loyalty Code Lookup

Issue:

A customer needed the loyalty code lookup at the start of an order feature early. In the linked signup path, a phone lookup that found no guest offered to create a user; if the cashier selected No, the original "no user found" / "Invalid User" error was shown again.

Resolution:

Patched the loyalty code lookup onto 5.16r3, including a fix (BRNK-70794) so declining to create a user does not surface the original lookup error. Testing confirmed the sign-up workflow, including a clean exit when the cashier declines. (BRNK-71992, PDOC-4432)

Quantity Applies to All Items in a Promotion

Issue:

When a promotion included multiple items with a quantity greater than 1, the quantity was only applied to the first item rather than to every item in the promotion.

Resolution:

Updated the promotion confirmation flow to capture the requested quantity before it resets to 1 after the first item, then apply that captured quantity to each subsequent item added -- so every item in the promotion reflects the correct quantity. (BRNK-72556, PDOC-4432)

CalculateOrder Failed Due To Inactive Included Modifier Item

Issue:

CalculateOrder was failing because the pricing calculation logic processed Included Modifier Items without checking whether the referenced modifier item was actually active. If an included modifier item had been deactivated, the calculation would fail rather than handling that gracefully.

Resolution:

Now, CalculateOrder correctly validates/handles inactive included modifier items in the 5.16r3 line, allowing order calculation to complete correctly instead of failing. (AS1-3906, PDOC-4432)

Above Store - Publishing Fixes

Application Error When Searching for Changesets by Date

Issue:

After upgrading to PAR POS 5.0.16346 (5.16), searching Changeset Publisher for changesets created on a specific date returned an application error instead of the matching results, making it hard to locate historical changesets for research and troubleshooting.

Resolution:

Root-caused to the same GetChangeSets query regression fixed under BRNK-70088 -- date-range filtering could no longer use an index on upgraded production databases and fell back to a full table scan, and the resulting SQL timeout wasn't recognized as a graceful "search timed out" condition, so it surfaced as a raw error. (BBS-14073, PDOC-4432)

Changeset Publisher Keyword Search No Longer Searches Changeset Details

Issue:

After the 5.16 upgrade, keyword searches stopped matching text within a changeset's details; only an exact changeset name returned results. Previously, a keyword like "routing" would return every changeset containing that word in its details.

Resolution:

Added a new multi-select control letting users choose which fields to search (the search field disables if none are selected), restoring keyword search within changeset details rather than only exact-name matching. (BBS-14074, PDOC-4432)

Changeset Publisher Displays Incorrect Original Location [BBS-14075]

Issue:

After the 5.16 upgrade, the Original Location column no longer reflected where a changeset was first created, undermining confidence in the data and making it hard to filter/search by location.

Resolution:

Corrected the Original Location lookup so it now reflects the changeset's true point of origin. (BBS-14075, PDOC-4432)

Search by User + Date Times Out / Application Error (GetChangeSets Regression)

Issue:

Searching for changesets by a specific user and date range could hang, then crash to an error screen instead of showing results.

Resolution:

Restructured how the underlying data is organized and searched, so the system can find matching records directly instead of scanning through everything. Also fixed how the app detects slow searches, so if one ever does run long, users will see a proper message instead of an error screen. Searches that used to take minutes are now dramatically faster (BRNK-70088, PDOC-4432)

Add UI Indicator for Changeset Package Retry Success/Failure

Issue:

When a failed update was retried, the page just reloaded with no indication of what was happening. Users had no way to tell whether the retry had actually started or was still running, and if they refreshed the page while it was in progress, it looked like the retry had failed or disappeared entirely.

Resolution:

Users now see an immediate confirmation message letting them know the retry request went through (or a clear message if it didn't), and the page updates to show the actual result once it's ready, instead of only updating when the user happens to refresh manually. (BRNK-69766, PDOC-4432)

ChangesetService Hangs Under Load (Async/Await Deadlock in Hangfire Jobs)

Issue:

The service would occasionally freeze completely and stop processing anything, requiring a restart. The service was also opening twice as many connections to the caching system as it needed, wasting resources.

Resolution:

Updated the background tasks so they run in a way the job scheduler expects, and fixed the caching connections so only one shared connection is used instead of two. This eliminates the freeze-up risk and reduces resource usage. (BRNK-66657, PDOC-4432)

Trigger Headless Changeset Transient-Fault Sweep via an SQS Command

Issue:

For unattended (no cash register) restaurant locations, a background process automatically retries failed changeset packages. But this retry sweep only ran once, right when the service restarted. If an changeset package failed after that, it got a handful of automatic retries and then just sat stuck, with no way to try again until the next restart. As larger customers grew to a larger number of these unattended locations, this became a bigger problem.

Resolution:

Added a way for Support and Operations teams to manually trigger the retry sweep at any time, without needing to restart. They can either re-run it for all locations or target one specific location that's having trouble. (BRNK-70178, PDOC-4432)

Parent Location Group Dropdown Converted to Autocomplete

Issue:

The Parent Location Group field on the Location Group Creation screen was a plain dropdown; as the number of location groups grew, scrolling to find the right one became slow and cumbersome.

Resolution:

Converted the field to an autocomplete/searchable dropdown that filters as the user types in part of the group name. (BRNK-65041, PDOC-4432)

Expose Customer Account Details When the Guest Comes from the Loyalty Adaptor

Issue:

When a guest was identified during checkout through certain loyalty programs, that guest's information wasn't available to outside partners through the API. This customer information only worked for an older loyalty system that most brands have since moved away from. Partners who needed this guest information could see it on the in-store register activity but couldn't retrieve it when looking up order details through the API. The information was already being saved on individual orders in the store, but it wasn't being carried through to the longer-term order history or made available externally.

Resolution:

Extended the existing path that carries order information from the register into historical records, so it also carries this guest identifier, and confirmed it flows through correctly. Updated the API (both order-lookup methods, in both supported formats) to include this identifier when returning order details. Tested with two different loyalty programs and confirmed the values returned by the API match what's stored in the records. Note that what shows up depends on what each loyalty provider stores in that field. (AS1-3547, PDOC-4432)