Go to the Keystroke POS Home Page

Keystroke POS Version 8.00 Read Me

Current version is 8.00 Build 98O (02/24/23)

Thank you for using Keystroke POS Software.

This file contains a chronological listing of changes made to the Keystroke POS v8.00 program and its modules. New entries to this file are at the top, older entries are towards the bottom. A listing of abbreviations and coding used in this readme.txt file is located near the end of this document.

Besides this ReadMe.txt file, the file WhatsNew.pdf can be used to review changes made to the current version of Keystroke. WhatsNew.pdf contains mostly the same information as ReadMe.txt but it groups similar changes together and is rewritten to be read as instructional documentation instead of as a list of changes. It is much easier to read when updating from a previous version. But since it is not in chronological order, the ReadMe.txt file does a better job of showing what has recently changed and should be checked whenever an update is installed.

This document also includes changes made to Keystroke Advanced POS that do not apply to Keystroke POS. In most cases these changes will be marked with the characters (AO) or the words Advanced Only will be used.

- Lines beginning with a hyphen are bug fixes for recently introduced errors.

****** Most Recent Changes *******

****** NEW VERSION NUMBER=v8.00 *******

02/24/23 - v8.00 Build 98O - NOT A FULL REBUILD

- TRN - AUTH BUTTON ON PAYMENT ENTRY - Clicking on the "Auth" button when entering or editing a payment using one of the older authorization methods (including In-House lists) would cause the program to stop responding.

- EVO - Alternate PIN Pad - The program was not always finding the Alternate PIN Pad unless both the Mach# and Reg# were specified (and matched). Work-around was to use the command line switch "PINPadAltIP=" instead of relying on the finding the match in the PIN Pad list. Note the specifying both the Mach# and the Reg# on entries in the PIN Pad list can cause confusion as one or the can sometimes change on a device (Reg# will change if there are multiple drawers, Mach# will change if it is not specified at startup).

02/08/23 - v8.00 Build 98N - NOT A FULL REBUILD

- TRN - RETURNS W/ RESTRICTED PAYMENTS - When the transaction amount was negative and there was more than one payment on the transaction, the calculation for the amount left that could be paid on a restricted payment was being set to the mount left to be paid on the transaction (ignoring the restriction).

02/06/23 - v8.00 Build 98M - NOT A FULL REBUILD

- KSDirect (EVO) - Unrecognized processing errors were displaying a blank message box instead of the error message.

- AR - KSDirect (EVO) - ROA Payments processed with KSDirect were not retrieving the token information for the payment so the Void/Return would fail. Data is now retrieved correctly.

01/31/23 - v8.00 Build 98L - NOT A FULL REBUILD

CNF - Sales Payments - Removed Advanced Only restriction from setting Payment Surcharge/Discount ("Discount/Surcharge" button now works with Keystroke POS and Express licenses).

- TRN - KSDirect (EVO) - Returns were not working with EBT.Food payments.

- KSDirect (EVO) - Payment Cancelled - If the payment was cancelled at the PIN Pad and the reason was not recognized by the program, then the payment entry would be cancelled and the program would return to the Payment List. It now returns to the Payment Entry screen so the payment can be tried again (or the Manual Entry button can be selected).

- KSDirect (EVO) - Log Files - Entries were not being made in the log files ("KSD*.log") until at least one payment was processed with the PIN Pad. Payment types like Manual Web Entry or Voids/Returns communicate directly with the server and do not use the PIN Pad. The logging feature was not being initialized by these payment types. Once it was initialized, these payment types would then record in the log file.

- AR - Captured Payments - If the Payment Type did not have the "Always Mask Ref/ExpDate" parameter turned on then the Reference field would not be viewable later when the ROA payment was viewed.

- AR - CAYAN GENIUS - If the PIN Pad was turned off, the payment list was showing all payments instead of the single payment processed by the Cayan Genius interface. The payments that were supposed to hidden could then be used even though there would not be any processing done (the payment would NOT be captured).

11/10/22 - v8.00 Build 98K - NOT A FULL REBUILD

- AR - EVO (KSDirect) - The payment list was not being read correctly so processed payments were reverting back to cash and the processed payments were not being displayed as a single payment.

- TRN - Change Made - Bad Reference field - When a "Change Made" payment was added by the program its reference was not readable due to using the wrong encryption method. {from v8.00 build 98}

- CNF.DLL - Fixed Test button on WorldPay PIN Pads.

- TRN.DLL - EVO - RETURNS - Were not working correctly as no AuthCode is created. AuthCode now set by program to a generic name (depending on what is being done).

- KSRN.EXE/KSR8.EXE - Were not working as they were still calling "KeystrokePOS.exe" which is now "Keystroke.exe"

- KSDrct.dll - If the PIN Pad device was not available, the response was “One or more errors occurred.” due to the device not responding to the request. A Ping command is now sent to the device's address before any request is sent. If the ping fails, the response will be "Error: No Device at ###.###.###.###".

07/08/22 - v8.00 Build 98

** Payment Processing through EVO **

Added support for processing payments through EVO. The method used is called Keystroke Direct which supports processing through both PIN Pads and directly through the Internet. The PIN Pads are not connected directly to the computer. Instead, they are IP based and are connected via the local area network. (The IP address of the PIN Pad(s) will need to be entered during set up).

The use of PIN Pads is optional if all card data will be entered manually. But in most cases you should have at least one. Before setting up the PIN Pads in Keystroke they should first be connected to your network and powered up. The record the IP Address that will be used for each PIN Pad (to be entered later).

All set up is done in the Configuration Manager and can be completed from inside the Tables-Sales Payment Types menu. Select the first payment type that should be processed through EVO and then click on the "Auth Method" button. Press [Ins] to add a new Auth Method and enter a short filename (e.g. EVO). Then use the "Type" button to set it to "EVO - Keystroke Direct" and then "Ok" to proceed to setting up the authorization method. You will need to enter Merchant ID for web based payments ("Card Not Present MID:") and the Web Key ("Card Not Present Token Key:") provided by EVO. Note that you should also receive a standard Card Present Merchant ID and Token but those are not entered as they are programmed into the PIN Pads by EVO. You also need to select the "Payment Mappings" button and use the list to map each standard payment type to the payment on your payments list that you want that type of payment to be assigned to (All should be set to something).

If using one or more PIN Pads then select the "PIN Pads..." button and use the PIN Pad List to enter the IP Address and Register and/or Machine Number that each PIN Pad will be used by. If you have only one computer and one PIN Pad, use the Default entry to enter the IP Address and you are done. For larger setups, it is generally best to leave the Default entry set to None (leave the IP Address Blank) and create an entry for each computer that will have access to a PIN Pad and enter the IP Address for its PIN Pad.

If using EBT (SNAP) then you will need to create/set the Auth Methods for those payment types where the Card Type in the Auth Method matches the payment type ("EBT-Food" or "EBT-Cash").

Card On File payments are also supported by EVO. In order to use it you will need a "Card On File" payment type and unique Auth Method for it (see the Technical Info section below for more details).

Press [F10] to save everything as you exit out. You can also use the Test buttons as you go along to make sure everything is working correctly.

If using Gift Cards, then use the Tables-Gift Cards menu to create/set the Auth Method to a new EVO method (e.g. "EVOGIFT") that is set up for "Card Type-Gift".

Technical Info:

KSDirect.DAT - Information for All Pin Pads is kept in this file instead of in KSCNF.DAT. The settings can be changed through either the Hardware -PIN Pad menu or by selecting the "PIN Pads..." button while editing the Authorization Method.

CNF - Hardware - PIN Pads - If no other PIN Pad is set up, and an EVO - Keystroke Direct Auth Method is attached to at least one sales payment type, then the "EVO - Keystroke Direct" PIN Pad will be displayed. When the "EVO - Keystroke Direct" PIN Pad is displayed, the "Setup..." button can be used to display and edit the list of PIN Pads for all machines/ registers. When done this way, the PIN Pad that would be used by this machine will be highlighted when the list first pops up.

CNF - AUTHORIZATION METHOD - Added support for creating/editing "EVO - Keystroke Direct" authorization files (very similar to the Mercury Direct ones). The most important settings in these files is the Merchant ID and Token Key. (Note that a In-Store Token Key may be sent to the merchant but it is not used). The PIN Pads button can be used to manage all the PIN Pads in the store (same as the Hardware-PIN Pads-Setup button). The Test button can be used to test the on screen payment entry.

CARD ON FILE - The "Active" processor for saving new "Card On File" cards to a customer is determined by the first Payment on the list of Sales Payments that is marked as "Card On File". The processor used by that payment is determined by its Auth Method. For "Cayan/TSYS/Global" the Auth Method should be "None" while the PIN Pad is set to Genius. For any other processor that supports Card On File the Auth Method should be set to a file that uses that processor.

SURCHARGING - Surcharges are supported (set in the parameters of the Payment Type). The Surcharge amount should be entered as a percentage (the recommended maximum is 3.99% based on current published opinions). Note that charging a Surcharge is not permitted in all states and may have a different maximum in other states. If a surcharge is used, then the program will display the amount that will be requested. This amount will be added to the charge total if permitted based on the Card Type. If the card type does not allow surcharging then no additional amount will be added (surcharge will be set to $0.00 for that transaction). All merchants should first consult with the appropriate professional and/or their payment processor to make sure how the rules apply to their particular situation.

On Screen Manual Entry - WebView2 - The "EVO - Keystroke Direct" manual card entry screen is a browser based program that requires Microsoft's Web View 2 module from the Edge browser. Whenever the manual card entry screen is brought up, it will check that this module is installed. If it isn't, then Microsoft's installation program for it will automatically be run.

** END Payment Processing through EVO Section **


CNF - SALES PAYMENT TYPES - PRINT IN TAX LOOP - Added a new parameter "Print in Tax Loop on Forms". If this is On, then when printing a transaction form (e.g. Receipt, Invoice, etc.) this payment will print in the Tax Loop section instead of the Payment Loop section (and its amount will be reversed). This parameter should only be used with payment types that are set to balance out "Discount/Surcharge", "Round To", and "Gratuity To" amounts on other payments. Also note that if this is On, then the forms must contain both a Tax Loop and a Payment Loop or the totals will not add up.

CNF - EXPORT - Added flags to exclude the "Printable" or "Non-Printable" portion of the comment when exporting a database (e.g. Inventory). The vertical bar key ("|" aka pipe character, press [Shift+Backslash]) in a comment field is used to specify which portion is "Printable" on a form (e.g. Receipt or Invoice) and which portion is not. One use for the portion that is not printable would be as a special long description to be uploaded to a Web or eCommerce site. When the "|" character is included, the text before it is "Printable" on forms while the text after it is considered "Non-Printable". Note: Turning on both parameters will cause the comment field in the export to always be blank.

KSEXPORT.EXE - The Exclude Printable/Non-Printable text in comments parameters can be specified by adding 16 (for Exclude Non-Printable) and/or 32 (for Exclude Printable) to the "Flags=" switch.

TRN - QOH Check with Merge Same Line Item - The program will now run the QOH Check (if turned on) after the Merge Same Line Item function has merged lines together.

TRN - MACROS - Changed the macro "SalesEntryCommand: MWGenius," to "SalesEntryCommand: PINPad,". It still works the same and the older "MWGenius" syntax is still supported. The reason for the change is that it now applies to other types of IP PIN Pads as well.

IMPTRN - SALES TAX AMOUNT OR 'EXEMPT'= - Added support for labeling this field "Sales Tax Amount" or "SalesTaxAmount" (without the quotes). All three work the same.

IMPTRN - TRANSACTION DATE (TIME) - Added support for the DateTime combination in the TRANSACTION DATE field in the YYYY-MM-DD HH:MM:SS format (e.g "2022-06-22 01:31:29"). This will set both the Date and Time for the transaction being imported.

.NET - TITLE BAR - If the text in the title bar does not include (".NET ") somewhere in it then ".NET " will be added to the beginning of the title to help differentiate which product is being run.


- .NET REPORTS - WEIGHTED CASH/CASH METHOD - Invoices that had payments that did not match the date of the invoice (and were ROA payments) were not being included in the report or were not included with the correct value. Also, Some ROA payments were not being included.

- CLOSEOUT - Fixed possible Error 55 if a payment type was used in the closeout period that is no longer displayed on the Sales Manager's payment list (either deleted or "Available on Sales" if Off).

- DATABASE - CONTACT CODES - Adding a new contact could generate and Error 6 if an existing contact's code was manually entered but similar to an automatically generated one. To avoid this, the routine that automatically generates the next Contact ID Code was rewritten to recognize and avoid conflicts.

- KSL/KSR - @WRAP - The @WRAP function was not working correctly if the last character of the wrap point was the same as the width specified in the @WRAP function. The program now checks the character after it and will wrap if it is a space or it is past the end of the text to be printed.

- KSR - TRANSACTIONS REPORT TO EXCEL - Printing a Detailed Transaction report to Excel would sometimes generating an Error 9 when multiple payments existed on the transaction.

- LOGO - LICENSE CHECK - If license files were being kept in the Data Directory then installing a new version/build of Keystroke was not updating the license for that directory right away.

- TRN - SCRIPTS - ERROR 9 - If at least one script was marked with "Run Once Per Transaction" then an Error 9 could result after the script has run several times.

- TRN - MERCURY DIRECT - A recent update to the drivers for the P400 was causing it to return a different message when the customer pressed the "Cancel" button. The program now recognizes this new message and will prompt for Manual entry.

- TRN - HIDDEN PAYMENTS - If a hotkey was used to select a hidden payment and the payment was towards the end of the payment list, an error 9 would sometimes be generated.

- TRN - Mercury Direct with hidden payments was not using the correct entry settings. If payments are hidden (due to a parameter or security level) that come before the first payment used with Mercury Direct, then selecting the Mercury Direct payment was using the payment settings from the payment before it. Work-around is to move the first Mercury Direct payment to be above any payments that were being hidden.

- TRN - Transaction Sort - Ship Date - Only the first 4 transaction types were supporting sorting/listing by the Ship Date field. Now all, except the last type (Archives), support it. The transaction file will need to be Packed in order to add the Ship Date index to the file for transactions saved prior to installing this build.

- TRN - ERRORS - MENUS - If an error occurred the Menu Bar was sometimes being left disabled.

- TRN - CREDIT MEMO - CARD ON FILE - Using a Card On File payment to create a Credit Memo was using up a Transaction Number. It now uses the Customer Number as the InvoiceNo when processing the payment.

- TRN - Driver's License Scan - Added support for Michigan which is missing the Country Code so it was using the wrong date format.

- KSR - Report Editor - Using the Dealer Temporary Access Tool was not allowing the Report Editor to be used.

- IMPTRN - TRANSACTION DATE - Importing a Transaction date field that was not properly formatted could result in an Error 6 - Overflow if the date was interpreted to be way out into the future (or the past).

- .NET - KSR8 - Sales-SalesTax-TaxTable/District report was not working.

- .NET - STR.EXE - Scrolling through line items was slow and had a memory leak that would cause it to eventually crash.

03/02/22 - v8.00 Build 97


.NET - KEYSTROKE.EXE - The EXE to launch the .Net version has been changed from "KeystrokePOS.exe" to "Keystroke.exe" (located in the Exes\ folder).

RECORD LISTS - EDIT MODE to VIEW ONLY MODE - If the clerk presses [F3] to edit a database record from the Record List but does not have the security level to edit the record, then the program will automatically display the record in View Only mode (as long as the clerk has the security to view it).

STARTUP SWITCHES - ADD FILE EXTENSION - If a startup switch is used to specify the Printers, Forms, or NavMenu file and an extension is not included, the program will now add the Data File Extension to it (e.g. "/F FormsR1" will now set the Forms data file to "FormsR1.dat"). Note that it is recommended to always include the data file extension (usually ".DAT") as it makes it easier to see what is being requested. If no file extension is desired, add a period to the filename (e.g. "/F FormsR1.")

CNF - Sales Payments - The list of Sales Payment Types now includes the Auth Method for each payment.

TRN - CAYAN GENIUS - At the end of a transaction the program will now check for the new "Remove Card" screen (64) as well as the Transaction Completed screen (10) and then display a message on the computer screen so the clerk knows to ask the customer to remove the card.

VAR - DETBOX - Added the ability to show the WebItem flag and Web Price from the current Inventory Item. (WebItem=Field#51, WebPrice=Field#52).

CHECK WINDOW POSITION - Pressing [Ctrl+Alt+Enter] will now check the program's main window position and move it to the primary monitor if it does not appear to be displaying in a valid position (it will also continue to set the window to a standard size). This can be used if the startup window position in the WS#.INI file causes the program to be hidden.

KSRN - Receivables - Changed the "Don't Print if Empty" parameter to "Active Customers Only". If on, then the report will only include customers that have a Finance Charge, Credit Memo, or an Invoice with an amount due on it (or if "Include Current Invoices" is on under Sales Transaction Settings and they have a current invoice). Note that this parameter is not the same as "Balance Due Only" which only looks at the Customer's Amount Due field.

.NET REPORTS - Added a "More Settings" button to the standard Report Settings screens. The button displays as 3 vertical dots. The "More Settings" function Can also be launched by pressing [F8].

.NET REPORTS - MORE SETTINGS - Added the ability to set the Highlight Lines parameters (style, color, width). The available options are "None", "Gray Bars" (note color and be changed), and "Top Lines". The highlight is only added to the last (or most detailed) band(s) of the report since upper bands are already separated by the details.

IMPTRN - Added ability to look up customers by the "Customer eMail" field when imported them with a transaction.


- KSR - INVENTORY - PRINT INDIVIDUAL - Added support for pressing [Ctrl+End] to cancel the report from the Record List Box since [Esc] does not necessarily cancel the report (happens when there is a band above it).

- KSR8 (.Net Legacy Report Manager Only) - Customer/Purchase Activity Reports were sometimes not printing any Transaction data.

- INI Files - If a switch's full name was the same as the last characters in another switch's name and if the shorter named switch came after the longer one then it would not be found (e.g. if "Left=" came after "PVLeft=" then the "Left=" parameter would not be found. This would mostly be noticed by the program's width and height not being set back to what it was the last time the program was closed.

- TRN - CAYAN GENIUS - GIFT CARDS - REDEEM - ON SCREEN MANUAL ENTRY - Cards manually entered on the screen (not on the Genius device) would not be processed by the "Redeem" function (program would just beep) if a Genius device was active.

- TRN - QuickLoad - If the QuickLoad button was pressed twice and the transaction that was loaded had a customer attached to it, then the Transaction Browse functions were locking on that customer.

- STR - CONSOLIDATE INVENTORY - INVALID AVG LEAD TIME - If the Total Purchased field of both the Consolidated Store's item and the other Store's item added up to 0 (in most cases this would happen because they were both 0), then the Avg Lead Time was being set to an "Invalid Number" which displays as "-1.#INF" and can cause overflow errors in other parts of the program. The Consolidate Inventory function now tests for this condition and won't update the Avg Lead Time field in this case.

- TOOLBAR EDITOR - The program now stamps the toolbar file with [KSToolBars Version"8.00.54"] when it is saved. This keeps the .Net programs from adding the line that hides the toolbars in the new Report Manager.

- TOOLBAR EDITOR - Added KSRN and KSR8 to the list of Modules on the Toolbars settings list.

- .NET - If the Windows theme had a border or background color that was too bright (close to white) then an error 5 would result when trying to generate the shading for the report settings boxes. It will now automatically use darker colors if the background color would be too bright to read the text.

- KSRN - Fixed getting an Error 5 when running a report when the form did not have any printable fields in a band and the Summary parameter was turned on.

- KSRN - Extra Line in Summary mode - When the Summary parameter was turned on and SubTotals from the next band were being printed in line with the Summarized band's Details, an extra blank line was appearing between the records being printed.

- KSRN - Slow reports with Date Interval Band - Sales and Purchase Transaction reports that included the Date Interval band (Sales-Tax-Detail/Summary, Sales-Profit, Purchases-Tax-Detail/Summary, and Purchases-Summary) where taking much longer than they should have (especially over a long date range) due to the program feeding all transactions from the Date Range to the report engine for each date interval (normally Day) instead of just the transactions for that day (the reports were still correct as the report engine would filter out the data that didn't belong).

- KSRN - Receivables - Invoices - The program was not searching back to the Customer's Last Open Item date, this could cause older transactions to not appear on the Sales Transactions part of the report.

- .NET REPORTS - SUMMARY MODE - If the SubReport field was on a lower line then extra blank lines were being included when the band's "Summary" parameter was turned on.

- KEYMAIL - Account Password - The program would not save an Account Password (for the email server) of more than 57 characters. Limit is now 184 characters.

- SENDKM.EXE - If KeyMail was not found the program was not creating an entry in the error log (SendKM.err). It now does this and if the Confirm flag is on will display the Status screen to show the parameters being used.

- SENDKM.EXE - If an email is Canceled but the settings didn't allow it to be then the message stating this contained would show some extra characters (an "E" and then "xity") at the beginning of the message.

12/13/21 - v8.00 Build 96


STARTUP SWITCH - ReportManager= This switch can now be used to specify which module is loaded when the Report Manager is selected (by a menu or a macro). The generic module code for the Report Manager is "KSR". When the program receives a request to load the "KSR" module it will either load the upcoming .Net KSRN report module or the existing KSR8 module. The default for this setting is currently "KSR8" but in a future release the default will be changed to "KSRN". The ReportManager= switch can be used to specify which module "KSR" stands for no matter what the standard default is.

KSRN - If The upcoming .Net "KSRN" report module is launched from Keystroke (not .Net version) then it will load as a separate stand-alone program. If it is already running, then it will become the active window instead of loading another instance of it.

KSRN (.NET) - The "Report Manager" option on the "Exit To" menu is changed to "Legacy Report Manager" when in the new "Report Manager".

KSRN (.NET) - If loaded as a stand-alone module then the "Exit To" menu will only show "Exit (Close Module)" (or "Exit Program" if loaded by KSRN.EXE) instead of the usual list of modules.

KSR - If KSRN is the default Report Manager then the "Report Manager" function on the "Exit To:" menu will be enabled and will load the new Report Manager (KSRN in .NET).

.NET - NavMenu.dat - Starting in v8.00.54 the NavMenu.dat was changed automatically to have macros with CHANGEMODULE=KSR set to CHANGEMODULE=KSRN. Now if NavMenu.dat is stamped with a version prior to v8.00.96 those macros will automatically be changed back since "KSR" now means the Report Manager which could be either "KSRN" or "KSR8" depending on the license and the .ini settings.

.NET - The .NET version of Keystroke ignores the new "ReportManager" startup switch. So when running the .NET version, "KSR" will always map to "KSRN" which is the new Report Manager. The .NET version of the "Legacy Report Manager" can be reached through Extension/Custom Modules menu or adding ChangeModule=KSR8 to a macro.

KSRN - Print To - File - The file format that is used is based on the extension in the Filename (.e.g .pdf is Acrobat, .bmp is Bitmap). Only supported extensions are allowed. The program will now check, warn, and not except invalid extensions on the filename entered (or selected).

KSRN - Print To - File - The default filename will be based on the type of report instead of always "Export". The extension will be set to either "pdf" or "png" depending on which file type is selected. Other graphic file types besides "png" are supported.

KSRN - CONVERT SETTINGS AND CUES - When converting the report settings and cues files from KSRE*.DAT to KSRS*.DAT, any report with Print To set to "File" will be changed to Print To "Screen". Also, the Output Filename will have its extension removed. This is due to the new engine using advanced layout routines that don't print well to most older file formats. Therefore, the only file formats the new reports support are Adobe Acrobat (.pdf) and several graphic/ image formats (.png, .jpg, .bmp, etc.). Cues that are used to export data will continue to work (and should be run) using the "Legacy" Report Manager ("KSR" aka "KSR8").

KSRN - CUES - IMPORT - Added support for importing Report Cues from the Legacy Report Manager. When importing, the program will examine the file to determine if it is from the new .NET Report Manager or the Legacy Report Manager. Cues from the Legacy Report Manager will automatically be converted as they are read in.

LOGO - Added support for pressing [F8] from Evaluation Notice screen to bring up the Update Keystroke License Files function.


- DIALOG BOXES - SINGLE CHARACTER BUTTONS - Single Character buttons in some dialog boxes were not toggling between their two states when clicked with a mouse (or touch screen). For example the "$" to "%" toggle button on Price Formulas.

- TRN/POR - Detail Box - The Flag "2" to hide a field if the next field is blank was not working. (Used on the "W=" field in standard detail boxes.)

- TRN - Line Item SalesPerson - On new transactions the "Change Salesperson on Edit" security level was being used instead of the "Change Salesperson on New Transaction" security level.

- .NET - Printing Forms to Screen - If extended characters were used (e.g. Line Draw characters) then they were not printing correctly. The program now re-maps them to the correct character as they are being printed.

- KSRN - CUES - When printing to "File" or "Printer" the cues would only print the first report then the program would get stuck in a loop.

- KSRN - CUES - When printing to "Screen" each report had to be closed before the next report would print.

- .NET Reports - If Summary was turned on then the GroupBy settings were being ignored.

- STR - LEVELS REPORT - The levels report's cache file was not always being cleared so changes made QOH at the stores via store transfers or inventory updates would not be shown without leaving the module and going back in. Fixed to rebuild the file when changes have been made (e.g. Saving a Transfer).

10/27/21 - v8.00 Build 95


- SERIAL NUMBERS - Each time a serial number was added to the line item comment, the comment that was already there was erased (including any serial numbers already selected). (From Build 94). Work-around is to always use multiple lines with qty of 1 each.


TRN - PAYMENT DECLINED - Added a Red Border around the message box that states a payment was declined (when using an EMV processing interface).

TRN/POR/VAR - DETBOX - Added ability to show WebItem flag from Inventory Item. (TRN=Field#184, POR=Field#135)

TRN - CARD ON FILE PAYMENTS - PRINT BUTTONS - When a Card-On-File payment is used, the payment type assigned to the transaction is based on the payment card type that actually gets charged and so the payment settings are based on the card type and not the Card On File payment type that was originally selected. However, now if either the PrintButton or AltPrintButton on the Card On File payment are set to something other than "0-Save" then the print button settings from the Card-On-File payment will be used (PrintButton, PrintButtonThreshold, and AltPrintButton).

LOGO - SALES PAYMENT TYPES - A quick conversion will be done to Card On File payments to set their PrintButton and AltPrintButton to 0 so data sets prior to v8.00 build 95 will still use the print buttons for the payment type based on the card type that was charged.

KSRN - Added support for printing to Printer or File without having the Report Viewer (to "Screen") window appear. Both options will deliver the same output as first printing to Screen and then using the Print or Export buttons at the top of the Report Viewer.

SHOWSTATUS - Changed it use "Display" as the printer driver instead of the default Windows printer. This allows the displayed size to be correct even if the default Windows printer has a very small paper size.

STATUS BAR - Clicking the Message area of the Status Bar no longer runs the help screen (use F1 or the Help Menu or the Help toolbar button instead).


CNF - SECURITY LEVELS - Added "View Menu / Auto Logout" to the "General" Security Levels list. If the current clerk does not meet this security level then the Top Menu Bar will be hidden and the Auto Logout time will be ignored. This is designed to be used for a Sales Entry Only clerk (Security Level = 11) to be used on a self check-out kiosk.

CNF - SECURITY LEVELS - Added "Can Click on Main Screen" to the "General" Security Levels list. If the current clerk does not meet this security level then using the mouse (or a touch screen) on the main transaction line item entry screen will be ignored. Note the mouse will still work on any toolbar buttons and in any pop up dialog boxes.

TRN - KIOSK MODE - To help the entry of sales in in a self checkout or Kiosk mode, the following settings should be made:

1) Create a kiosk sales entry clerk with a security level of 11 (and no password). Note: when using this clerk almost everything will be locked down. Use the [F4] key to change to a clerk with an elevated security level to make changes or exit the Sales Manager. Make sure in the set up of the Kiosk toolbars that a button has a macro with SendKeys={F4} to bring up the clerk login screen.

2) Set a startup command with a unique register number and KSCNF.DAT file.
3) In Sales Manager-Transaction-Parameters-Entry-Customer Entry: Turn Off Enter Customer First.

4) In Configuration Manager, set the Settings-Database-Default Clerk to the Kiosk clerk.

5) In Configuration Manager-Tables-Security Levels change the following to 11:
Modules-Access Sales Manager 11
Sales Transaction-Sales Invoice:
Create New Transaction 11
Payment-Add New to New Transactions 11
Sell (Back Order) Out of Stock Items 11
Valid Customer NOT Required 11

6) In Configuration Manager-Tables-Sales Payment Types: Change the Security Levels- "Add New Payment" on any payment to be used to 11 (e.g. Visa/MC/Disc)

7) In Configuration Manager-Tables-Print Buttons-SM: Sales: Change the Security Level of the print buttons to be used to 11.

8) In the WS#.INI file, add: Goto=TRN and StatusBar=Off lines.

Note: To enable any other functions for the Kiosk clerk, set the security level to 11 on them as well.


- CHECKBOXES - Right Clicking on a CheckBox was causing it to toggle on/off (same as Left Clicking). Right Clicking now just selects the field without changing it.

- CNF - MWGENIUS - Test PIN Pad was not displaying test Line Items. This is only an issue with the test function, not the Genius interface. (Caused by the change in Build 87 to not display line items until a transaction has been changed).

- CUES - REPORTVIEWERPRINTER - Printing To PDF - If the ReportViewerPrinter= startup switch was used then Cues printed to a PDF printer were not saving the PDF file.

- KSRN - REPORT CUES - When running Report Cues from the command line (e.g. KSRN.EXE CUEID=2) the program was closing when the reports were finished which would also close the report windows.

- KSRN - SALES REPORTS - METHOD WEIGHTED CASH or CASH - When looking at ROA Payments made during the report period that were applied to invoices prior to the report period, the program was only looking at the first 4 applied payment amounts on the ROA Payment (i.e. if the ROA payment was applied to more than 4 items, all items past the 4th one would be ignored).

- RECORD LISTS - Fill Empty Lines - If there were not enough records to fill the displayed list, then sometimes the program would not highlight the correct record.

- STATUSBAR STARTUP SWITCHES - Most "StatusBar" startup switches (e.g. "StatusBarViewers=Off") were not working if entered as a command line switch. (Work-around is to enter them in the WS.INI or WS#.INI file).

- TRN - TRANSACTION HAS CHANGED MESSAGE - If a previous transaction was loaded that had a gift card that was saved as a payment but displayed as a line item (e.g. Balance Check) then leaving the transaction would always display the "Changes to the current transaction will be lost" message even if no changes had been made.

- TRN - Extra Payments default to negative - If the transaction type is set to one that does not have a Minimum Payment (e.g. On Hold) and more than one payment is added before the transaction is saved, the default amount for the additional payments would be a refund of the payment amounts already entered. The program now defaults the payment amount to the amount remaining to fully tender the transaction in this case.

- IMPTRN - CUSTOMER BIRTH DATE - If this field was imported it could not be set to a null date (0, /, or / /). It now accepts the Null date nomenclature (0, /, or / /). Note: Importing date fields but leaving them blank will set them to the current date.

09/20/21 - v8.00 Build 94


CLOSEOUT - COMMENTS - Added support for adding/editing comments on Closeout records. Press [Shift+Enter] from either of the main entry or deposit screen.

KSR - CLOSEOUTS - Added supported for printing comments on Closeout reports.

MACROS - HOTKEY - The [Shift+F12] key combination is reserved for showing the ShowStatus screen and will no longer be allowed to be saved as a Macro "Hot Key". Note that it will also be ignored as a macro Hot Key if it has already been assigned to one.


DASHBOARD - Added Tile Templates for "Inventory Sales by Department". These produce the same graphs as "Department Sales" but the department (or category/location) is based on the current setting on the inventory item instead of on the department/ category/location code saved with the line item at the time it was sold. The new graphs are slightly slower than the straight department ones due to the time it takes to look up each inventory item.

KSRN - Report Settings - If the report settings match the "Default" settings for the report then only an "Options" bar will be displayed. Selecting this bar (or loading settings that have at least one change from the default) will switch the display back to showing a bar for each database used in the report.

KSRN - Report Viewer - The position on the screen that a Report Viewer appears in is based on an anchor point. Initially the anchor point is near the upper left corner of the program screen. If additional viewers are displayed they will also use the anchor point but will cascade down and to the right if another viewer is already in that position (as long as that offset doesn't place the viewer off the screen). By default, whenever a Viewer is moved (or opened), its new location will become the anchor point that is used for any additional viewers opened after it. In other words, the next report viewer will always appear near the last viewer that was opened or moved. (This behavior can be changed via a Startup Switch.)

STARTUP SWITCH - ReportViewer= - Added the flags 16-Don't change Anchor Point, and 32-Only update Anchor Point with Last Opened Viewer. These can also be combined to only update the anchor point when the Last Opened Viewer is Closed.
ReportViewer=16 - All new report viewers will be placed based on the initial Anchor Point (upper left corner of program window).
ReportViewer=32 - The Anchor Point is only changed when the newest Report Viewer is moved.
ReportViewer=50 - The Anchor Point is only changed when the newest Report Viewer is closed.


- NAVMENU - Clicking on a module name was switching to the module instead of opening its sub-menu.

- MOUSE WHEEL - Was not working when the mouse was over the List part of a Record List Box.

- KSR - Matrix Database Report - Would give an Error 6 if the "Skip Non-Matrixed Items" was NOT checked (but other parameters were). {from build 93}

- POR - Line Item Sort () - would give Error 9 if MultiStore Orders were enabled.

- POR - MultiStore Orders - When loading a previously saved MultiStore Order, if a line item did not have any store allotments but the previous transaction did on that same line number, then the transaction just loaded would use the allotments from the previous transaction.

- POR - MATRIX ITEMS - When editing or inserting a matrix line item by its individual code, if the key was used to exit the item entry field then the next line item would sometimes be changed to that inventory item and the select matrix item box would appear.

- TRN - MATRIX ENTRY - If using the Multiple Item mode for Matrix Items on a sales transactions, entering more items in the grid than there were rows available on the display window would cause an Error 340.

- TRN - "Display Cost As" parameter - Last/Fixed Cost - Changing the Profit fields were always using the standard Avg Cost instead of the Cost that was being displayed. The Complete Sale box was also ignoring this parameter.

- SERIAL NUMBERS - If text was added after a Serial Number in a line item's Comment field then it would also be considered part of the serial number and would not match up with the inventory item. To help guard against this, now a Carriage Return will always be added after a Serial Number when it is selected from the Serial Number list and added to a line item Comment.

- KSRN - Sales Transaction Report - was not working with transaction types that were stored in their own file.

- KSRN - Report Viewer - Minimizing the Report Viewer would cause its location to be remembered as off the screen. If the program is set to use the report's location for the next report run then the next report would be off the screen and so would appear to not have run.


- DASHBOARD - SETTINGS - The names on the Sample Tiles where sometimes not reflecting the names of the tiles to be displayed.

- CONTPRIC - Print Single Customer Report - Was not working - giving an error. {from build 93}

08/09/21 - v8.00 Build 93


CNF/TRN - Sales Transaction Types - Entry Parameters - Added a "Displayed Cost" setting for use when the Line Item display is set to "Cost/Profit". The default is "Avg Cost" (which is often labeled as "Cost"). Other choices are "Last Cost" and "Fixed Cost" (which uses Cost if Fixed Cost is not set on that item). Note that this only changes the Line Item display screen, the transaction's cost is still based on the Avg Cost ("Cost") field.

CNF/TRN - CARD ON FILE - The "Card On File" payment type now supports Signature Capture. This is done by adding an "External" "Auth Method" that is set to "Capture Signature".

LOGO - SPLIT TRANSACTION FILE - If the transaction reaches 3.6 million records then it will be "split" (its ending date will be set to 10 minutes from now so new transactions will go into the next file). At this point the file will be approaching 2GB in size which is the maximum.

POR - TRANSACTION LOCK DATE - Purchase Invoices now check the Transaction Lock Date and won't allow Purchase Invoices to be changed that are prior to that date. Note that payments can still be edited/added.

TRN - NVC FORMS - Added the field "Sales Person Email".

RECORD LIST BOXES - Always fill list (if possible) - When a line in a Record List Box is highlighted and then the list is changed (usually by changing the "Sort" field) the program will try and stay on that same record in the new list and will display it at the top of the list. This can sometimes leave blank space at the bottom of the listbox if the highlighted record is near the end of the record list. The program will now automatically scroll the lines so the bottom of the list is filled in. Note that the currently highlighted item will remain highlighted but will no longer always be displayed at the top of the list box.

AUDIT ENTRY - START PROGRAM - the START PROGRAM audit entry now includes the command line switches used to start the program.

STARTUP.DAT - Each time the program is loaded the command line used will be written to the file StartUp.DAT in the data directory. This file can then be used to help with setting up the program on a new system if necessary. Older entries in this file will be dropped off once the file reaches about 32K in size.

ERROR CHECKING - Increases amount of error checking done as program runs by changing compile options.

HELP [F1] - A message box is now displayed while the help screen is being loaded.

MATRIX/INV - Reports - Updated some of the field names so the name used in the Inventory database is the same as the Matrix database.

CONTPRIC - Now remembers column sizes and sort column (and direction). Also the "Quick Search" box now shows the name of the sorted column.

KSRN - Date Range - Added a "Run" button. Works similar to the "Ok" button but also runs the report (same as selecting "Ok" from the Date Range box then "Run" from the settings box). Note, [Shift+F10] can also be pressed to select the "Run" button.

.NET - REPORT ENGINE - Updated engine to latest version (no notable changes).

.NET Reports - Added a message bar to the bottom of the report viewer window to show the status of the report.

.NET - REPORTS - Report form files that have not been converted to the new report engine will now be displayed below a line separating the .flxr files from the .ksr files.

.NET - REPORTS - The list of Form Files will no longer include .KSR files that ship from SBS. The command line switch "ShowKSR=1" can be used to include them.

.NET REPORTS - The command line switches "START=", "END=", "STARTTIME=", and "ENDTIME=" can now be used to set the default date/time ranges for reports. (These are the same switches that were already available when running a report cue from the command line).


- AR - MWGENIUS - Using the Genius device for Signature Capture Only was not working (worked if the payment itself is processed through device).

- HELP [F1] - Loading the help screen would sometimes take a few seconds due to check making sure it was available online. The program now skips this step to make loading faster.

- KSR - DELIMITED - EXCEL - Was only printing the column headers for fields listed as "Line 1" in the report form.

- REMDUPES - Fixed error checking for overflow errors (usually caused by bad data on matrix items).

- SENDKM.EXE - StatusFileLoc (or StatusDir) switch was not working. If it was used then the program was always looking for KMSTATUS.TMP in the Program Directory.

- STR/STRUPDTE.EXE - Using the flag "No Store Update" was not working correctly. It was being ignored if used on an item in the Master Inventory. If used on an item in a store being updated then the Inventory Update function would skip all other items from that point on.

06/01/21 - v8.00 Build 92


KSRN - DATE/TIME RANGE ENTRY - Shortcut By Month - Entering the 3 character code for a month in the "Start Date" field will set both the Start and End dates to the month. For example, entering "Nov" will set the Start Date to "11/01/20" and the End Date to "11/30/20". Note the case of the 3 characters does not matter. Also, entering the 3 character code in the "End Date" field will set that date to the end of the month that was entered.

KSRN - DATE/TIME RANGE ENTRY - Clicking the "This Month" button when the range is already set to "MTD" (Month To Date) will set it to the full month. Clicking it again will set it back to "MTD". The "Last Month, "This Year", and "Last Year" buttons also now work in a similar way.

KSRN - Analysis Reports - Added "RptTot" fields so values of an individual item can easily be compared to the grand total of that value on the report. This includes RptInvQOH, RptInv.

VAR - Parameters - Added the parameter "Lookup List Field". If this is set to something other than "Current" (which is the default) then the Inventory Record List will be sorted by the specified field when it is brought up.

KEYMAIL - Attachments - Added support for Wild Cards in the filenames of attachments.

- LOGO - MAINTENANCE HAS EXPIRED MESSAGE - This message was displaying slightly more often then it was supposed to and would also sometimes be displayed even after the message was disabled. Note that even after disabled, the message will still appear again after a set number of days or weeks.

- KSRN - Print Individual - The "Sort By" buttons on the Record List that appears to select the individual records was not working.

- TRN - Cancel on Complete Sale Box - Using a Touchscreen Monitor and pressing the [Cancel] button on the Complete Sale Box while the [Ok] button was highlighted was causing the Complete Sale Box to reload.

- MERCDIRECT - Server IPAddress and Port Number were being set once based the first MercDirect payment type on the list of payments. It now sets these parameters each time a MercDirect payment is used based on that payment's Auth Method.

- REMDUPES - Payments that had duplicates were being deleted completely if there were duplicate transactions that referenced them. Fixed by changing it so duplicate transactions no longer remove their payments (they will be removed when searching for duplicate payments).

- TOOLBARS - Double Click - if the same button was pressed fast enough for Windows to consider it a "Double Click" then the macro was being run an extra time {from build 90}. (Windows was sending the second Click plus the DoubleClick as another Click). Keystroke now recognizes the 3rd invalid click and ignores it. (Work-around: In builds that had this problem, the issue can be reduced by increasing the Double Click speed in the Windows Mouse Settings).

- TOOLBARS - "Repeat" buttons were not repeating. {from build 90}.

04/21/21 - v8.00 Build 91


TOOLBARS - Shift Buttons - Auto Macro - If a button's ShiftStyle is set to something other than "(None)", then the Auto Macro will no longer be used. (Auto Macro is used when a button does not have a macro. In which case the "Button Text" will be sent using SendsKey= as the macro.)


- TRN - Enter Customer box - The "SalesEntryCommand:EnterCustomer" macro was not working while in the Enter Customer box. The program will now automatically leave that box after the macro was run so that the customer is not set back from the one set by the macro.

- TOOLBARS - "Shift Down" macros were not being used after a ShiftKey button was pressed. Instead, the "Standard" macro was always being used. (from Build 89).

- SOUNDS - If the specified path for a sound file (stored in WS.INI) included a backslash ("\") the path search for the file was from the Program Directory (e.g. "C:\KEYSTROK") instead of the Forms Directory (e.g. "C:\KEYSTROK\FORMS") or the default Sounds directory (e.g. "C:\KEYSTROK\FORMS\SOUNDS\"). The program will now use the specified path+filename with all 3 of those directories in order to find the sound file. (Work-around is to specify the full path of the sound file in the WS.INI file.)

04/12/21 - v8.00 Build 90


TRN - MACROS - SalesEntryCommand - EnterCustomer - Added the new command "EnterCustomer" which can be used to specify an individual customer to set the transaction to. The parameters include the field to identify the customer by, followed by the customer's text for that field. For example:
SalesEntryCommand: EnterCustomer, Number=101

TRN - KeyMail - If an Email was sent but there was a problem with it, the message box showing what happened will stay on the screen for a few more seconds (instead of just 1 second).

SENDKM.EXE (Send Email through KeyMail)- Added a new stand-alone program to send emails from the command prompt (or a macro/script). SendKM.exe uses the same information as the MAIL: port in Keystroke and sends it on through KeyMail in the same way as well. Command line switches and/or an .INI file can be used to specify what is in the email and where to send it to. A simple example:
SendKM DataDir=Tutor SendTo=You@gmail.com Subject="Test Email" Message="Have a great day!" Attachment=Invoice.pdf;ThankYouLetter.pdf;StoreFrontPhoto.jpg
Please see Doc\SendKM.txt (or run SendKM /?) for more information and details.

MESSAGE BOXES - If the width of the Toolbars being used is more than 30% of the width of the Keystroke window then the program will assume it is being used as a touch screen application and will make the size of the buttons that appear in standard message boxes larger.


- BUTTONS - If there were multiple windows (or toolbars) being displayed that were overlapping and the button that popped up the new windows was beneath the one that was then clicked, the underlying button was being activated instead of the one visible on the screen.

- LOGO - V7 Conversion - Converting Purchase Transactions from versions before v7.00 would generate an error. (from v8.00 build 80)

- FORMS - The "Concatenate with next field" flag (256) was not working correctly when used with multiple fields. It would often cause a new line to be started when it should not have been.

- KSRN - The tag Flags=2048 (print '--' instead of 0) was not working. Now if a field has this flag on, its Format property will be set to print "-- " when the value of the field is 0. This is done by changing it to a positive;negative;zero format. For example, a Format of "0.0" will be changed to "0.0;(0.0);-- " and a Format of "Currency" will be changed to "$#,##0.00;($#,##0.00);-- ".

- .NET - PRINTING - Printing to a Windows printer with a Keystroke Print Button or the Legacy Reports was always printing to the Default Windows Printer (it was ignoring the printer name in the Keystroke Printers settings).

- TRN - MATRIX ITEMS - If a matrixed inventory item was selected from the lookup list and then [Esc] (or Cancel) was used on the Select Matrix Item Grid, then the program would jump to the Complete Sale screen instead of staying on the blank line item.

- TRN - BOGO PRICING - Max Uses - When editing a Transaction, the items that were already used and saved as BOGO items were not being counted against "Max Uses" for that formula. Not only would this allow new items added to the transaction to receive the BOGO pricing but would also cause existing items to now receive it when they didn't before due to exceeding the Max Uses limit.

- STOREMRG - Improved Error checking for invalid field values (to help avoid Error 6 - Overflow).

- STR - If using XP style borders, the Enter Store field was shifted down one line. Also the the background color was being shaded if Tint colors were in use.

- STRUPDTE.EXE - Added additional switches to control the Update and Consolidate inventory processes. See Doc\StrUpdte.doc for more info.

03/09/21 - v8.00 Build 89


CNF/TRN - SALES TRANSACTION TYPES - Added the setting "Default Print Button" to the Complete Sales parameters. This will normally be set to "0 - Save" but can be set to a different print button on a Transaction Type if needed. If a payment is used, its default Print Button setting will override this one.

CNF - PRINTERS - Forms Run Command - Added support for waiting for the command to finish (start command with /WAIT). Also added support to run in a Minimized Window (start command with /MIN). If both are used /WAIT must be first. Both switches will be stripped out of the command before it is run. For example, in the Printer Setup Box - Forms Run Command: /WAIT /MIN MyProgram.exe Parm1 Parm2 will run MyProgram.exe with Parm1 and Parm2 in a Minimized Window when a form is printed and Keystroke will stop and wait for MyProgram.exe to close before continuing.

TRN/CNF - CREDIT ON RETURNS - Added the Sales Manager Security Level "Ignore Credit Limits on Returns". Normally a customer that has a Credit Limit of 0.00 and does not have a negative Balance (in store credit available) cannot use a credit type payment (e.g. "On Account") on a Sales Transaction. However, if the transaction has a negative payment amount left to be tendered (a "Return") then using a Credit Type payment is allowed. This can now be blocked by entering a lower value on the new "Ignore Credit Limits on Returns" security level. The default value is 9 on new data sets. On existing data sets it will default to the current value set on the "Sales Transactions" - "Enter Returns" level.

STRUPDTE.EXE - Added command line switches to control running of Consolidate Inventory function. Primary switch is "ConsolidateOnly=1". See DOC\StrUpdte.doc for details.

SUMMARY (Calendar Reports) - Inventory - The QOH stored in the Summary Data for Inventory Items marked as Service, Bulk, or Rental will no longer be changed based on Sales, Purchase, Production or Transfers (only Variances will change it but those items would not normally be on a Variance anyway).


- POR - OPEN ORDER WARNING - When saving an edited Purchase Order that has items being received, the program was sometimes displaying the message "WARNING: Could not remove Open Order!". In some cases the Class field in the Open Order did not match what was in the Purchase Order Line Item and so the two records did not appear to belong to each other. Program now corrects for this.


- KSR - Cues - Blank Reports - If a cue contained a Delimited report and then the next report was not delimited and did not have anything to print (due to filters. ranges, etc.) then that report would not print the blank report.

- TRN - "Tax" label - If the Display Parameter "Show Tax Rate" was on and a Restricted Payment was available (e.g. "Food Stamps") then the label "Tax" was not showing on the main entry screen (the Tax Amount was being displayed).

- STR - Consolidate Inventory - LastShipped, LastReceived, and LastTransferred fields were not being updated.

- STR - Inventory Update and Consolidate Inventory - Vendor Info - Program was not checking to make sure the LastPurchased and LastQtyOrdered fields where being updated from matching Vendors.

- Summary.exe - Customers - When creating the summary file for the latest period the Sales totals from the end of that period until the current time were being included. (Not a problem if there were no new sales yet when the program was run).

- IMPPOR - The Transaction Amount Due field was not being updated on Purchase Transactions when being imported with the ImpPor.exe program.

02/16/21 - v8.00 Build 88


TRN - SALESENTRYCOMMAND MACROS (AO) - Added macro commands to automatically fill out the Shipped Qty column on Sales Orders (or any transaction type that can show the "Shipped" column). Note that not all line items can be changed. Those with Serial Numbers or those linked through scripting will not be changed. In this case, a message will appear listing the items that could not be changed and why. There are 3 commands in this group:
AutoShip - Changes the Shipped value to the available QOH or the Qty left to be shipped (whichever is less).
ShipAll - Changes the Shipped value to the Qty left to be shipped. However, if the clerk does not meet the "Sell (Ship) Out Of Stock Items" then this will work the same as "AutoShip".
ClearShipped - Sets the Shipped value to 0 on all lines.

TRN - RETURNS - If a payment is not approved, it is now removed from the Returns Transaction instead of leaving it there with its amount set to $0.00.

TRN/POR - Transaction Number/Date - Security Levels - The box that allows the clerk to view/edit the Transaction Number/Date now available through either the Transaction Menu or by clicking on the Number or Date fields on the transaction screen no matter what security level the clerk has (but they may not be able to change anything depending on their security level).

POR - COMPLETE PURCHASE BOX - If the Entry Parameter "Default To"-"Invoice Number" is On, then the program will now go to that field when receiving items on an Order even if the "Invoice No:" field already has an entry. It can then be changed if the vendor included a new invoice with the shipment (or left as is if there is no change).

STR - Consolidate Inventory - Added new function to combine Inventory Qty and Dates from all stores into a single inventory database. This is done by designating a store to Consolidate the inventory through the new "Transfers-Parameters-Consolidate Inventory..." menu item. Once set up, use the "Stores- Consolidate Inventory.." to run it. This function will first erase all the qty and date fields in the specified store's inventory file. It will then read in inventory data from the other stores and combine it into the inventory data in the specified Consolidate store. Once completed, the Consolidate store's data can then be used on reports and/or export functions to view the combined inventory of all stores. Currently, stores marked as "Exclude from Levels Reports" are not included. Note that the "Exclude Hidden Items" applies to the inventory item from the other stores as they are being read in (not the status of the items in the Consolidate store).

DELUTIL - Converted to .Net source code and moved TO Exes\ folder. There is still a small dummy DelUtil.exe in the program directory which simply runs the DelUtil.exe in the Exes\ folder.

DELUTIL - UPDATE - Transaction Cust/Vend Name - Added a new function to update the CustomerName field on transactions (both Sales and Purchase). Note that on Purchase transactions the CustomerName and ClientNum fields store the Vendor LookupName and VendorNumber fields. This functions checks all specified transactions and updates the CustomerName field if it is different than the current LookupName field in the Customer Database (or Vendor if it is a Purchase Transaction). Note that the Trans.CustomerName field in versions 5 and 6 could only hold 26 characters and it now holds 40. This function can be used to update older transactions to the full name.


- KSR/KSRN - Analysis Reports - Transactions with a date/time that was within 8.7 seconds after the ending date of the report were being included in the Analysis Data. This would mainly happen when transactions were automatically generated by an automated function like Recurring Charges or Importing Transactions. The program now correctly handles these date/times so they will only be used with the correct date/time range.

- TRN - BOGO Pricing - If the number of line items was changed due to BOGO pricing, an Error 340 could result.

- TRN - Simplified Customer Entry - Pressing an invalid key combination, or the hotkey to switch the transaction type, was locking up the program.

- TRN - CREDIT MEMO - If using Cayan Genius with PINPADOFF, the default Credit Memo amount was being set to a very large number.

- TRN - CAYAN GENIUS LINE DISPLAY - If an item's description included a character that was reserved by the HTML language (e.g. "/") around the 15th character then it could cause problems with the Line Display function of the Genius device.

- TRN - Returns with KeyPay - When processing a return with a payment captured through KeyPay, the program was first requesting a Void even if the return amount was not the same as the original payment amount. It now skips the void request when using the Returns function. (Note that if the return was not being made on the same day as the original sale, the Void would usually be denied and a refund for the correct amount would be processed anyway.)

- KEYPAY - CAYAN - Partial returns were being approved but for the full amount of the original payment. It now blocks partial returns as the interface KeyPay uses does not support them.

- SCRIPTS - USE ON - The Use On button for setting up scripts was not working correctly. It was always changing the selection to All Sales Transactions.

- .NET - Database - Alternate Codes - was giving Error 91 when bringing up the Alternate Codes list on a database record (.Net version only).

- .NET REPORTS - PicFileName - Added the field PicFileName to the list of fields for Inventory, Customer, Vendor, and Clerk databases. This will show the complete path to the name of the file associated with the item (derived by searching for a file in the "Photos\" folder below the data folder. The name will be blank if no file is found. The name can be used as the Picture property of an Image field or can simply be printed out (or used on Filters to limit to those items that do (or do not) have a photo).

- STR - Inventory Update - Matrix Items - The comment field on Matrix Items was not being updated.

- STR - Matrix Items - Using the mouse to select a Matrix Item from the grid was not working.

- CONTPRIC - Reports were not working correctly. They were always showing information from the same item. Also, if the "Show Class" parameter was on, then the header for that column would still show "Product Code" even though the cells were displaying the item's "Class".

12/11/20 - v8.00 Build 87


MENUS - Changed the menu "Exit" to "Exit To:" to clarify that selecting it does not shut down the program.

TRN - RETURNS - The transaction created by the Returns Function will now have a lower case "r" added to its SubNumber. This allows it to stand out as a return on lists and reports.

TRN - DISPLAY PARAMETERS - Tax Percentage - Added the parameter "Show Tax Rate (% based on $100 "T" item)". It is "On" by default. If turned "Off" then the Tax % will not be shown in the totals section of the the main line item entry screen nor on the Complete Sale box (but the Tax Amount is still shown).

TRN - LINE ENTRY PARAMETERS - Added the parameter "Prompt to Add Item Not Found". If this is "On", and the clerk has "Add Inventory Item" security then before the displaying the "Item Not Found! Proceed with Non-Inventory Item?" message the program will display the new "Item Not Found! Add item to database?" message. If "Yes" is selected then a new inventory item screen will pop up (same as pressing [Ctrl+F3]. Default button is "No". If [No], [Cancel] or [Esc] is used then the program will proceed and display the normal "Item Not Found! Proceed with Non-Inventory Item?" message.

CNF/TRN - BOGO Pricing - Added the parameter "Allow Price Formulas to Set Price" to the Buy Item portion of BOGO Pricing. If this is "On", then the price of the the item that must be purchased can be discounted through Price Tables while still using it as the basis to receive the "Get Item". If it is "Off" (which is the default) then line items that are used as "Buy Items" will ignore Price Formulas.


LOGO - V6 CONVERSION - When converting Purchase Transactions from v6 the program will now check and correct the Order Multiplier. This guards against error 6 (overflow) which was sometimes being caused by multiplying Qty by an invalid Order Multiplier.

CNF - SETUP PIN PAD - WorldPay(Mercury) Ingenico Lane7000 (and iSC250) - If port is set to an IP address then it is now saved to a local file on the computer instead of in the configuration file so each machine can easily have a separate IP Address that it used. The file name is MercDirect.xml and is stored in the special system folder for "Common Application Data" (same location KeyMail uses to store its settings).

STARTUP SWITCH - MercDirectIP= - Added the startup switch "MercDirectIP=" (can be in WS#.INI or command line) to specify the IP Address of the PIN Pad if using the Lane7000 or iSC250 in IP mode with Vantiv(Mercury) Direct payment processing. Following the switch should be the IP address of the device. Optionally it can include the Port Number by adding "=" and the Port Number to the end. If the port number is not specified then the default one will be used (usually 12000). This switch overrides the PIN Pad port name stored in the local file (or the configuration file).
Examples: MercDirectIP= or MercDirectIP=

CNF - SETUP PIN PAD - If the "Port" is being overridden by a startup switch then the Port number will be disabled and the port name stored in the configuration file will not be updated.

TRN - SCRIPTING - Added support for the global Database Parameter "Inventory List Shows Current Price" (which shows Sales Price on items that are marked "On Sale") to the Add Item from List function in scripting.

TRN - MWGENIUS - The Line Display will no longer start (and be updated) on the MWGenius until a change to the transaction has been made. This is to avoid the delay it takes to turn on the display mode and display the line items on the Genius device when editing a transaction.

DBNAMES - Changed the list of field names used on reports and filters to mark fields that are not yet active (those that are in the databases but are not being updated) with an underline character in front of them.

.NET - Paragraph Symbol - If the Paragraph Symbol is set to 20 (which is not displayed properly in .Net), the program will automatically use Chr(182) which does display the paragraph symbol correctly.

CONTPRIC.EXE - Reports - Removed the "Summary" setting since it does not make sense to use it on these reports.

IMPTRN - Added support for using "TRANSACTION instead of "INVOICE in field names for consistency. For example, "INVOICE DATE" should now be labeled as "TRANSACTION DATE". The use of "INVOICE is still supported for backwards compatibility.

FORMS - IMPTRN.NVC - This file used the older "INVOICE fields. Copied it to ImpTrOld.nvc and changed the field names in IMPTRN.NVC to us "TRANSACTION instead of "INVOICE.

TRANSMON.EXE - Rewritten from older source to new .Net code. TransMon.exe is a sample program provided to demonstrate the use of the DataPort function to write custom add-on helper programs to extend the flexibility of Keystroke POS Sales Entry. Both the runable program (TransMon.exe) and source code (TransMon.vb) are included for reference.


- CNF - EXPORT - MATRIX - If "Include Non-Importable Fields" was on then the MatrixEntryCode field was was always blank.

- POR - Editing - Delete Payment - Deleting a payment from a Purchase Transaction was not marking the transaction as changed. So unless some other change was made, saving the transaction would not do anything and the payment would still be there.

- TRN - RETURNS - Clicking on the Save Button would also cause the Transaction Number/Date function to then be loaded.

- TRN - Run Once Scripts - Scripts that are marked as Run Once were being counted as having been run even if they weren't due to other restrictions (e.g. a filter that wasn't met yet).

- TRN - Default Tax/Price Table - If a Customer had a Tax Table of * and a Contact with a Null Tax Table, and Dataport was set to Export when Customer was Selected then the Tax Table for the transaction would be set to "*" instead of the default Company Tax Table as set in the Configuration Manager. (Same problem existed with Price Table).

- KSR - Purchase Payments - If Group By was set to "None" then no payments were being found.

- .NET - Using the mouse to go to a field would cause the key to not advance to the next field.

- .NET - TRN - When an Invoice was Created from an Order the payments were not being saved correctly (.Net Only).

- KSRN - Purchase Analysis reports were using the Sales field names. The report data engine has been changed to use the correct Purchase field names. The report forms need to be changed as well.

- KSRN - Fixed Error 5 if a report form had more than one subsection in a Detail section of the report.

- MATRIX - EXPORT/REPORTS - The "MatrixCode*" field was in the wrong location on the list of fields names (swapped with "Reserved").


- IMPPOR - Searching for a transaction by Number and Letter was not working, it would always ignore the letter and use the first transaction with the matching number.

- IMPPOR - Some of the On/Off command line switches were only working if entered as all uppercase.

- DELUTIL - Payments Paid - Filter on list of Payments Paid was not working as no available fields to filter on were available.

11/03/20 - v8.00 Build 86


POR/KSR - Added more fields to the "PTHC" list of data fields that are available. Fields added are: 5-"On Deposit", 5-"TransTypeShortName", 7-"TransTypeName" These can be used by the Search Display Screen as well as on reports.

KSRN - Convert .KSR to .FLXR - When converting legacy report forms (*.ksr) to the new report engine format (*.flxr), the program will now use the full "If..Then..Else" syntax instead of the immediate "If(,,)" syntax as it is more robust and stable.

MACROS - MessageBox - Added the ability to use parameters with the MessageBox macro command to set the Title and the Default button of the message box that pops up. The parameters are entered by enclosing them in parenthesis. For example: MessageBox=Are You Sure you want to do this?(Default=Cancel)(Title=Confirm macro) Also added "Pause=". If this is used then no buttons are shown and the message will be displayed for that many seconds (or until a key is pressed) before the macro proceeds. Note that it will always proceed even if [Esc] is pressed. Also added "NumButtons=" (ignored if "Pause=" is used). The standard is "2" but can be set to "0" (no buttons), "1" (Ok only), "2" (Ok/Cancel), or "3" (Yes/No/Cancel). Note that "No" and "Cancel" both stop the macro. If there are no buttons displayed then any key except [Esc] (or clicking the X) will continue the macro.


- CNF - MWGENIUS - Updating the MWGenius.xml file would add the settings to the end of the file instead of updating the existing values.

- MWGENIUS - WEB FORM ENTRY - Restricted length of customer name sent to Web Manual Entry page to 25 characters as prescribed by TSYS/Cayan.

- TRN - PAYMENT PROCESSING LOGS - If the command line switch PINPADOFF was used then the payment processing logs (e.g. MW1.log) were not automatically being written to. (Work-around was to add TestMode=12 the command line.)

- TRN - PAYMENT LIST - Fixed Error 9 if using a Pin Pad that changes the displayed payment list and the customer has a default payment that was one of the payments that gets hidden.


CONTPRIC - CURRENT CUSTOMER REPORT - The Print button when viewing/editing a customer's Contract Prices now works using the new report engine.

TEMPORARY DEALER ACCESS TOOL - Sensitive fields are now masked. [Shift+F9] can be used to turn of the masking.


- STRUPDTE.EXE - The StrUpdte.exe program was not working due to switch of Store-Link to a stand-alone exe in build 85 (exes\KSStr.exe).

- STR - KSStr.exe was not recognizing the AutoRun= and /NOP command line switches.

10/13/20 - v8.00 Build 85


CNF - MWGENIUS - Changed the location where the IP Address of the Cayan Genius PIN Pad is stored. Previously it was in the Windows System Registry and now it is stored in a data file in the special system folder for "Common Application Data" (same location KeyMail uses to store its settings). The file name is MWGenius.xml. If the file does not exist, the entry in the Windows Registry will be copied to it automatically.

POR - SORT LINE ITEMS MACRO (AO) - Added the macro command "PurchaseEntryCommand: SortLineItems, Field=name" (where name is the field to sort by).

POR - MACROS - Added support for the PurchaseEntryCommand: "TransactionSearch" which can be used to launch the Transaction Search function (works the same as the SalesEntryCommand of the same name).

POR - PARAMETERS - DISPLAY - Added the parameter: "Start Transaction List in Quick View". If this is on, then the transaction list (e.g. Copy function) will display using the Quick View mode by default. In this view, the top of the screen shows the highlighted transaction detail.

TRN/POR - MACROS - TransactionSearch - Added support for %EnterText% when searching by Customer and TransNumber.

TRN/POR - HELP - Added help screens for the Search functions.

TRN - PROCESS RECURRING CHARGES - Changed the display on the screen as it is being run to show Transaction Number, Date, and Customer that is being checked.


- TRN - PAYMENT LIST - Fixed Error 9 if using a Pin Pad that changes the displayed payment list and the customer has a default payment that was towards the bottom of the list. Also if the default payment was below payment types that were not displayed due to the Pin Pad, the wrong payment would sometimes be selected.

- TRN/POR - SERIAL NUMBERS - When a Serial Number needed to be selected, the list of serial numbers included a blank line at the end. Selecting that line would cause problems.

- TRN - BOGO Pricing - If an item with a qty of more than one had to be split into 2 line items in order to adjust the price one the items, the program was not always assigning the new price to the correct item.

- POR - TRANSACTION SEARCH - If Transaction Search was set to search for just Purchase Orders or just Reserved Orders then it was searching for the opposite one.

- POR - QUICK VIEW - Quick View in purchase transaction list boxes was not loading the transaction data to be displayed.

- ON SCREEN SIGNATURE CAPTURE - If the on-screen signature capture window was being moved it was flashing on and off very quickly as it was being dragged around the screen. Also it was sometimes blocked from moving it to another screen.

- SCRNS - Adding a Toggle Field to a screen and then switching back to standard view would display the new field with a width of 88 instead of 1.


KEYMAIL - Added setting for Reply To (Name and Email address). These fields are optional and are labeled as " (opt)". If left blank then Reply To will default to the same as From.

STORE LINK - NEW VERSION - The Store Link module has been changed to a stand-alone program (Exes\KSStr.exe) developed using all .Net technology. It can still be accessed from inside Keystroke POS through the Utilities-Custom menu (or the Extensions section on Navigation Menu). Since this is a stand-alone program, exiting it will close the program window instead of going to the Keystroke Logo screen. Currently, the old BIN\Str.dll can still be used by creating a STR8.CST file in the program directory but it will no longer be updated.

09/03/20 - v8.00 Build 84


- DATABASE - If a Number Field was larger than the field that was being displayed, and the field was not active, then when the record was saved that field's value would be changed to 0 (it was saving the displayed text, but since **** is not a number it would be set to 0).

- MATRIX DATABASE - Matrix records could be lost when attached to Large Stock Numbers. The default Matrix Database Screens were set to display the stock number as only 5 characters. If the stock number was larger than 5 digits (100,000 or greater) than manually editing/saving the matrix item would cause it to be lost due to the stock number on that record being changed to 0. Matrix Database Screens now display the value as up to 9 digits (and the program was fixed to not change the number if it was too large to be displayed).


INVENTORY - VENDOR CATALOGS (AO) - Added support for Photos. The files are stored in "V#\Photos\" directory below the "Catalogs\" data directory (where # is the Vendor Number). As with inventory the filenames are "I" + StockNumber. Press [Ctrl+F2] when on a catalog item to view the photo. If an item is copied from the catalog to a standard Inventory item then its photo file will also be copied (if one exists). The photo file will be assigned a new file name if the stock number changes.

PICTURE VIEWER - Added support for WMV, MPG, and MPE files to be manually displayed by pressing [Ctrl+F2]. These file types (which are videos) will not automatically display the way still images can (this is the same way the PDF files have been treated).

AR - Payment with Auth Code - Changed the internal checks on payments that use auth codes to be the same routine as Sales so now it displays a warning if the auth code is not 5 or 6 characters and to allow a manager to override the warning. The Security Level for this is found under Sales Manager: Allow Invalid Auth Code (SM/AR).

DATE ENTRY - Combining Relative Dates - Multiple relative dates (e.g. -1M) can be used by separating them with the Pipe Character ("|"). So to get the first day of the previous month enter "-1M|1". To go to the prior week of the prior month enter "-1M|-1W". Relative dates are always based on the date currently in the field they are entered in. So entering -1M will set it back one month, going back to that field and entering -1W will then go back 1 week from that date (not the current date). The "|" does the same thing without having to leave the field. If you want to make sure the relative formula is always based on the current date, add "|" to the beginning (e.g. "|-1M"or "|-1M|-1W").

KSR - MATRIX REPORTS - The Don't Print If Empty parameter on Inventory is ignored if the Inventory Item is not a Matrixed Item (since it would always be empty).

KSR - ReportViewer= Startup Switch - Added the values of 4 and 8. 4 tells the program to keep the focus on the program (instead of the report viewer) after printing a Cue. 8 tells the program to not automatically display the minimized report viewer window (when ReportWindowState=1 is used). Note that the settings can be combined by adding the values together (12 for both, or 14 for 2+4+8). Note that the old settings of 1 and 0 have not done anything for a while.

POR - Detailed View (AO) - Added support for Viewing transactions from the Transaction Record Lists. The view is controlled by the file PorSrch.xml in the data directory.

POR - Transaction Search (AO) - Added the Search function the Transaction menu. Works the same as Transaction Search in Sales Manager.

POR - Parameters - Search - Added a function to set the default parameters for the Transaction Search function.

TRN - Apply Customer Credit Balance - Changed the payment that is used is to apply a customer's credit balance from the first "Credit" type payment on the payment list, to the payment that matches the "Credit Payment" parameter in Accounts Receivable. If that parameter is not set or if the payment isn't available then the previous method of using the first credit type payment on the list will be used.


- CNF - Sales Transaction Types - The sample date displayed next to the "Customer History Start Date" was not correct (would usually just show the current date). {From build 56}

- LOGO - LICENSE SERVER - If a license was recently updated the program was not always recognizing the new licensing downloaded from the license server while still in the program. (It would be recognized when the program was restarted after that).

- LOGO - Temporary Dealer Access Tool - Added more messaging and to use to view modules available with the temporary license.

- TRN - Simplified Customer Entry - Clicking the buttons or using the Tab key to change fields was not working {from build 83}.

- RECORD LISTS - DEPARTMENTS/CATEGORIES/LOCATIONS - The function used to find the last record on a list sorted by 8 character fields (e.g. Department Code) was not working correctly. Therefore pressing the [End] key was not finding the last item and would continually search for it until [Esc] was pressed.

- DASHBOARD - Department by Revenue graphs were including Categories and Locations. When sorting by and extended sort, the Analysis engine was sorting in all three databases (Departments and Categories and Location) instead of just the selected one.
- DASHBOARD - Locking File - As the Dashboard program was loading, it was sometimes leaving one of the transaction files locked for read access. This would happen if there was something wrong with the data set (e.g. one of the needed transaction files was missing).


IMPORTER - Skip Blank Lines - The Importer will now automatically skip blank lines in the file being imported as this can cause a blank record to be added. (This was normally due to blank lines accidentally being added to the end of text files.)

IMPORTER - AUTO NUMBER ([Shift+F8]) - The Auto Number function (press [Shift+F8]) to activate) will now set all the fields to 0 if the first field has a number in it. Otherwise it will number all the fields in order (as it always has).

IMPORTER - Photos (Copy From) - Added a new field to the end of the list of importable fields called "Photos (Copy From)". If this is used, the text imported is treated as the name of the file to be copied to the "Photos\" directory below the data directory. The name should be the full path and filename of the image file to be copied (but a path relative to the program directory will work). Also URLs are supported so images can be copied from websites. For example, with the importer fields set as "Description=1, BasePrice=2, Photos=3", then a line from the file being imported could be:
"New Test Item", 3.23, "https://www.keystrokepos.com/images/AdvancedPOS.gif"
and then the image AdvancedPOS.gif would be download and saved to:
"C:\Keystrok\Data\Photos\1.gif" (where 1 would be replaced by the StockNumber).

06/22/20 - v8.00 Build 83


POR - TRANSACTION FORMS - Added support for "&V&" in the port name which will be replaced with the Vendor Number. Also supports "&#&" which is replaced with Transaction Number Only (no sub-letter).

POR/VAR - When entering by StockNumber if a UPC Code is scanned in (i.e. a very large number is entered) then the program will automatically look that item up by Product Code.

POR - Transaction Menu - Inserted a line between the "Clear..." and "Edit/Print" functions on the "Transaction" menu.

TRN - Simplified Customer Entry - Added support for using the Transaction Navigation hotkeys: CtrlPgUp-previous transaction, CtrlPgDn-next transaction, CtrlHome-previous OnHold, and CtrlEnd-clear transaction.

KEYMAIL - Changed the underlying engine used to send emails (see ReadMeKM.txt).

FMTR/KEYMAIL - Added support for CC on emails. On forms the tag is CC= (see EMATTCC.NVC for an example).

FMTR/TRN - Sales Transaction Forms - Added the fields "Email Alt + Alternate Codes" and "Customer Alt Codes as Email".


- AR - Auto Apply Payment - If the payment amount field was automatically entered due to "Default ROA Payments Due (AR)" turned On, then changing the payment amount was not re-running the "Auto Apply Payment" function the first time. Changes made to the amount after that would. This could cause an ROA Payment to be saved as a negative credit memo.

- POR - Recall - If the Recall function was run from the Vendor Entry box then the "Warning Transaction has Changed" message would be displayed after the recall was done. (The message should not have been displayed and should be ignored at that point).

- TRN - CAYAN GENIUS - Refund Payment - If the Invoice Number (plus Sub-Letter) were more than 8 characters long then the refund would be denied (program now truncates what is sent to 8 characters).

- TRN - CAYAN GENIUS - The Customer Order Number field sent to Cayan (called "PoNumber" in the request to them) was not being limited to the maximum of 8 characters that they support. This could cause a transaction request to be rejected.

- DBLISTS - When loading a file, it was always seeing the file as Plain Text even if the file was saved in the default (and more efficient and powerful) binary mode. It now correctly recognizes the binary file and loads without displaying a message. Note that in previous releases the message that popped up asking to open the file as Plain Text should always be answered with "No" or some of the extra data would be lost.

- CONTPRIC - If the list of items was sorted by something other than Number (and Ascending) then the Sales Manager would not be able to find the pricing. Program now always re-sorts the items in the correct order when saving.

- CONTPRIC - Contract Pricing was not always keeping the focus when first being opened from Keystroke nor when closing the Customer's Price List window. Also now displays the "Loading Customer's, Please Wait..." message when reading in the customer list.

05/26/20 - v8.00 Build 82


TRN - CUSTOMER SHOW HISTORY - Changed name of button to just "History..." and added the button "Detailed..." which will show the Customer History Report with Line Items.

MACROS - Added the "PopUp" command "ShowCustHistoryDetailed" which will display the Customer History report with Line Items.

CNF - PRINTERS - PORT - Added support for additional tokens on Printers that are set to output to a file. The Filename (which is stored with the Printer's Port) has previously supported the token "&" (the quotes are not included) to be replaced with an identifying number for the document being printed (usually Transaction Number but can also be Customer Number instead for documents that don't necessarily have a transaction number (e.g. Statements). In addition to just the single ampersand, a letter code between 2 ampersands can now be used to specify additional tokens to be replaced. Only tokens that the document type has defined can be used.

TRN - TRANSACTION FORMS - Added support for "&C&" in the port name which will be replaced with the Customer Number. Also supports "&#&" is replaced with the Transaction Number Only (no sub-letter). A single "&" is still replaced with the full Transaction Number (includes the sub-letter if there is one).

CNF - Sales Transaction Types - Added the parameter "Reload Line Items on Copy" to the Save parameters screen. If On (default is Off) then the "Reload Line Items" function will be run when a transaction is copied FROM from transaction types that have the parameter is set to On. It will still confirm the action with the "Reload each line item?" message so the function can be cancelled in order to keep the original prices.

FORMS - BODYLENGTH - If BodyLength is set to 0 or 9999 (or greater) then it will be ignored and all the line items will print on the same page. This should be used for receipts and when printing to a data file.

STARTUP SWITCH - CAYAN GENIUS - Added the command line switch "GeniusAltIP=" to specify the IP Address of a secondary Genius PIN Pad device that can be switched to while entering sales. Note that the Alternate IP Address must be entered on the command line switch (using GeniusAltIP= ) and is not read from .INI files. Note that it is only used in the Sales Manager when a macro is run. The program will switch back to the primary device automatically when leaving the Sales Manager.

TRN - MACROS - Added the macro "SalesEntryCommand: MWGenius," to switch the Cayan Genius IP address between the standard one and an Alternate one (but only if an Alternate one was specified by the command line switch). The valid values are "ToggleDevice", "UseAltDevice", and "UsePrimaryDevice".


- CNF - CUSTOMER DISPLAY - Fixed the use of [F3] to directly edit the display file. Also stopped asking for changes to be saved after editing a display file if no changes were made.

- POR - Fixed a potential problem with StockNumbers over 32767 when loading a previously saved purchase transaction.

04/30/20 - v8.00 Build 81


- TRN - Signature Capture - Was only working with "On Screen", "iSC250 w/ EMV", and "Generic OPOS" devices. (From Build 80)


CNF - Restore - Changed default button on messages to "Cancel" to reduce chance of being run accidentally. Also added text to Old Restore to show that it uses "PK-Zip - 32 bit only".

- CNF - CUSTOMER DISPLAY - Fixed the use of [F3] to directly edit the display file. Also stopped asking for changes to be saved after editing a display file if no changes were made.

- POR - Fixed a potential problem with StockNumbers over 32767 when loading a previously saved purchase transaction.

RECORD LIST BOX - FILTER - When a Filter is turned on the program will now display a message when searching for matching records if it takes more than 1/2 of a second.


- TRN - Audit Entries - "New Transaction" - The transaction type was not being included in the audit entry.

- KSR - Audit - "New Transaction" audit entries were labeling the Customer Number as "V#" instead of "C#".

04/21/20 - v8.00 Build 80


WORLDPAY(Mercury) - Added support for the Ingenico Lane 7000 (replacement for the iSC250).

INVENTORY - MAX SALE QTY - Added the new field "Max Sale Qty" to the inventory database. This field works the same as the "Max Items Sales Trans" field on the Department/Category/Location databases but is for a single stock number. The field is labeled as "Max Sale Qty:" but will only appear on new data sets. Call your authorized Keystroke dealer or SBS to add it to existing database screens. The field must be changed to a number greater than 0 or it will be ignored.

TRN - MAX SALE QTY - Added support for the new "Max Sale Qty" field. If this field is set to a value greater than 0 then the program will check the total qty of the item (same stock number) being sold on a single sales transaction. If the max qty is exceeded then a message will be displayed stating what the max qty is and that the line item's qty will either be adjusted to meet the max qty restriction or that the line item will be removed if the new qty would be 0 or less.

CNF/TRN - Security Levels - Added the security level: "Sales Transactions - Override Max Sale Qty". The default value is 2. If this is met, then after the warning about the Max Qty being exceeded and that the program will either reduce the qty or remove the line item, another message will appear asking the manager if they would like to override the restriction. This applies to both the new "Max Sale Qty" field on Inventory items as well as the existing "Max Items Sales Trans" field on the Department/Category/Location databases.

DATABASE - ALTERNATE CODES - Expanded maximum length to 100 characters (from 28).

POR/STR (AO) - Multi-Store Setup - Added the field "Include in Sales Trans Search". If this is turned on then the Transaction Search (and Returns) function in the Sales Manager will include transactions from that store as well as the current store's data set.

TRN (AO) - Added support for the "Include in Sales Trans Search" parameter on Multi-Store Setups. If this is in use then both the Transaction Search and Returns functions will look for transactions in the other data sets as well. Transactions from other stores can only be viewed and not edited or printed. However the Returns function can be used on them since it makes a copy of the transaction and will store the new return in the current store's data set. Note that this is an "Advanced Only" feature and will only work on systems licensed as "Keystroke Advanced POS". If an individual store does not have an Advanced license then the parameter is ignored.

TRN (AO) - Multi-Store - Customer History will now include transactions from other store's data sets that have the "Include in Sales Trans Search" parameter turned on.

TRN - SORT BY - Added ability to sort list of transactions by Expected "Ship Date". Only transactions saved after this build will be included. Use the Pack Transactions function in the Configuration Manager to create the index for older transactions.


CNF - QUICK ARCHIVE - Changed the file name of Quick Archives to be lower case characters to make it easier to differentiate the letters from the numbers.

TRN - Price Formulas Time Range (Happy Hour) - Added support for time windows that go through Midnight (e.g. 10:00pm to 2:00am).

TRN - Price Formulas - Price Formulas Time Range (Happy Hour) - The program no longer ignores other price formulas if it matches one with a Time Range. This allows it to work with Mix and Match formulas to calculate the best price for the customer.

TRN - COMPLETE SALE SCREEN - Changed the date fields (e.g. Ship Date) to accept future dates by default.

TRN - RETURNS FUNCTION - Improved checking of Qty being returned (must be same sign as original sale and works with negative qtys).

TRN - RETURNS FUNCTION - Payments - Payments on the original transaction that are a negative amount will not be included in the prompted "use this payment" on returns.

PROCESSED PAYMENTS - TOKEN - The size of the field used to store the reference token received back from the payment processor was increased from a 4 byte to an 8 byte integer (required by Cayan).

TRN - Mercury Direct - If using the P400 Pin Pad the program will delay resetting the PIN Pad's screen (and confirming that the card has been removed) until exiting the Complete Sale screen or when another payment is going to be selected. This is due to that device taking several seconds to complete the command.

TRN - Line Item Details box - Several additional fields from the inventory item were added: Min Qty, Re-Order Qty, Max Qty, Order Interval, Last Counted, Order Multiplier, Total Sold, Parent, and Parent Name (see DOC\DetBox.doc for more details).

TRN - FORMS - The field "PayLoop - Terms" will no longer include the masked expiration date in order to save room (" **/**" is removed from the field before printing).


- TRN - XFor pricing - When applying XFor pricing to a line item when the full qty exceeded the XFor Qty but the new price was not to be applied to the remainder, the program was using the Base Price for the remaining items instead of the customer's current best price based on other price formulas.

- TRN - PROCESSED GIFT CARDS - ON HOLD - Gift Card entries displayed as line items (e.g. Issue or Reload) and entered on a transaction type that creates another transaction type was not loading the Gift Card line item when editing the transaction {from build 77 for Sales Orders). Program now loads Gift Cards on all transaction types except Sales Orders (those that create another transaction type when "Shipped").

- TRN - CAYAN GENIUS - Gift Cards - On the HandHeld device, AddValue was correctly updating the gift card balance with Cayan but was displaying the amount approved as $0.00 (and was then using that as the value on the transaction).

- TRN - Age Verification - Pressing [F10] immediately after manually entering the birthdate was not recalculating the customer's age.

- TRN - Customer Show History report - fixed possible Error 11 if only returns were found. Also pages after the first page were 8 inches instead of 8 1/2 inches wide.

- TRN - PRICE FORMULAS - The "Ignore Base Price" parameter was working the same as "Force Price" where it would use the calculated price even if it was higher than the best price calculated so far. (Work-around for previous builds: Enter the "Ignore Base Price" formula before the other formulas listed in the Price Table. This works since if another formula was calculated after that one, then it would be used if the price was lower.).

02/26/20 - v8.00 Build 79


TRN/POR - STORE NUMBER - If the current transaction was from a different store than the data set being used, then the Store ID for that store number will be displayed in the flag at the bottom of the screen. Note that the ID will only be displayed if found in the multistore setup data file (KSSTORES.DAT) otherwise it will continue to display as "Store: #" (where # is the store number).

TRN/CNF - Age Verification - Security Level - Added the security level "Age Verification - Manually enter Birthdate". If this is not met then the program will not allow the birthdate to be typed in to the Age Verification screen. Note that if the parameter "Support D.L. Scan/Swipe" is not On and the clerk also does not meet the "Age Verification - Over Verification Age" security level then there is no way to enter the customer's age so the Age Check will act as if was press and the program will not allow the item to be sold by the current clerk unless the customer's age is already known (by either another clerk entering it or from the Customer's Database Record).


- LOGO - The informational message: "Keystroke Software Maintenance Service has Expired" was not being displayed on some systems. Note that this fix doesn't affect how the system runs, it just fixes the ability to display the reminder message.

- COPYCLK.EXE - If the two files were not the same size then last clerk(s) in the file were not being updated.

02/10/20 - v8.00 Build 78


KSR/CNF - SECURITY LEVELS - Added Security levels for "Reports - Save Local Settings" and "Reports - Save Shared Settings". If the clerk does not have "Save Local Settings" permission then changing the settings on a local report will not be sticky (not automatically saved to that setting) but the Last Used report setting will still be updated.

POR - SCRIPTS - When creating a new script while in the Purchase Manager the default Use On Transaction Types will now be "All Purchasing Transaction Types" instead of "All Sales Transaction Types".

TRN/POR - Trans Sub Number - The letter that is added to an Order/Invoice whenever an item is shipped or received will now go to two characters once it reaches "Z" (after "Z" the next Sub Number will be "AA" then "AB", etc.).


- KSL - @WRAP function - New format of specifying only the width was not printing anything if the number of characters in the data field to be printed was less than the specified width.

- KSR - Open Order Report - Comments - The "Print Line Item Comments" and "Print Transaction Comments" parameters were always being treated as if they where On (even when turned Off).

- POR - When first entering the Purchase Manager, the Transaction Type was not being set.

- POR - RECEIVING - SECURITY - Receiving function was not checking the View Cost security level if the clerk only had access to the Receiving Function.

- TRN/POR - Line Item Sort by Class was not working.

- TRN - TRANSACTION COPY - If the "Stock Shortage Warning" parameter was On and at least one of the items on the transaction did not have enough QOH to ship the full Qty on the line item but the last line item did, then the transaction would save as an Invoice even though it should have been saved as an Order due to the backordered items. When the Invoice was loaded for editing it would then be switched to an Order.

- TRN - MANUAL SALES TAX ON ORDERS - If the Sales Tax Amount was manually entered on an Order, then the program was leaving the Sales Tax amount at 0.00 when editing the order.

- VAR - Merge items from another open variance was not including items that had a physical qty entered as 0. Also the View Items button from the merge message was printing each item twice.


STR/STRUPDTE - INVENTORY UPDATE - REMOVE DELETED ITEMS - The program will no longer remove Matrix Items from the individual stores. To remove the matrix items, Pack the Matrix Database and select "Remove Orphaned Records".


- STR/STRUPDTE - MATRIX - The "Remove Deleted Items" was not working with Matrix Items and was causing some of them to be erased or the Qty fields on them to be zeroed out. The problem was fixed (but deleting matrix items was then removed anyway).

- TOOLBARS - Older codes for special characters were not working (e.g. "<" was displaying as LT).

01/21/20 - v8.00 Build 77


KSL - @WRAP() - Added another format that does not specify the location within the text to be printed. If used the program starts at the first character and keeps track of where to start when the field is printed again. Syntax: @WRAP(Text, Width). Note that this format can only be used once on a single label.

TOOLBARS - The tokens used for reserved characters were not correct and have been changed to use the published standards. For example the character for the greater than sign ">" was being saved as &GT and is now saved as &gt;. The program also now supports reading in both the old and new tokens.


- DBM - MATRIX - Changing Avg Cost on a matrix item to (or from) Null was displaying the "changes will be lost" message when it should not have been. (same as fix in build 76 but applies to editing a matrix item directly in the Database Manager).

- LOGO - Convert Data from v7.00 - Fixed Error 55 that would appear after the conversion.

- POR - INVOICES FROM NEW ORDERS - If the shipped column on line items was filled out on a new Order (hasn't been saved before) and a print button was used that was set to "Print and Continue", then the Invoice that was created would not be saved. Program now ignores the "Print and Continue" parameter in this case (the invoice is then saved when the "Save" button is selected).

- TRN - PROCESSED GIFT CARDS ON SALES ORDERS - Gift Card entries displayed as line items (e.g. Issue or Reload) and entered on a Sales Order were causing a "Change Made" payment to be added to the new Invoice that was created when the Order was saved. Also, if an Order was used again to create another invoice then the previously saved gift card entries would be added to the new invoice as well.

- TRN - GIFT CARDS ON SALES ORDERS - The Shipped Qty on Gift Card line items on Sales Orders was able to be changed from its default value of 1. But since gift card items cannot be backordered (and so must be shipped when the order is entered), the program no longer allows the shipped field on gift card items to be changed.

- KEYMAIL - Bad email address or server set up errors where not being displayed when sent back from KeyMail to Keystroke. Also, when testing, once an error was received the text message would not be displayed until exiting the send message function.

- MAINTENANCE WILL EXPIRE MESSAGE - If Software Maintenance had recently been renewed, the program would sometimes still show this message before recognizing that it had been renewed.

12/02/19 - v8.00 Build 76


DBM - MATRIX - Changing Avg Cost on a matrix item to or from Null was displaying the "changes will be lost" message when it should not have been.

KSR/KSL - INVENTORY - Price Date - If the blank Price Date (type in 0 to get " / / ") is used then the program will treat that as the current date instead of the 0 date (" / / "). This allows price formulas to be used via cues.

KSR/KSL - INVENTORY - Printed Price - Added the option of "Current Price (with Happy Hour)". The normal "Current Price" selection skips price formulas that have the "Daily Time Window (Happy Hour)" fields filled out. This new option will include these formulas as long as the time window on the formula includes the time that the report is run.

KSR - PURCHASE PAYMENTS - Added fields for "Amount-Payment Card" and "Amount-Gift Card".

TRN - PAYMENT/GIFT CARD ENTRY - Added check to block scanning barcodes into payment amount. The program will not accept an entry that is faster than .1 seconds per key with more than 4 keys and the amount exceeds the payment amount. If this happens it will display the locked warning message and will put the amount back to 0.00.

TRN - MERCURY DIRECT - PIN Pad reset is now tracked so it does not happen an additional time if not needed.

TRN - SCRIPTS - SELECT ITEM FROM LIST - List now includes QOH field in the column before price.


- CLOSEOUT - CASH CALCULATOR - Was not able to print to a PDF file.

- KSR/KSL - MATRIX ITEMS - The Selected Cost and Selected Price fields were showing a value of 0.00 instead of the value from the inventory item when that field was set to Null on the Matrix Item.


CONTRACT PRICING - Added the parameter "Only Items with Contract Prices may be purchased" to the top of the Customer Price List screen. It this is on then the customer can only purchase items that have a current Contract Price entered for them. If an item that does not have a current Contract Price is entered on a sales transaction then a message will appear stating that the item cannot be purchased by this customer and the item will not be added to the transaction.

10/23/19 - v8.00 Build 75


AR/FMTR - STATEMENT - Added the field "Customer Email + Alternate Codes" to those available to be used on Statements.

DASHBOARD - DEPARTMENT SALES - Tiles based on Departments Sales are now much faster as they look only at the Department (or Category or Location) Code saved with the line item instead of using the detailed Inventory Analysis to generate the totals.

DEPARTMENT/CATEGORY/LOCATION DATABASE (AO) - MAX ITEMS SALES TRANS - Added a field on the Department, Category, and Location databases for maximum qty of items in that department (or category/location) that can be sold on a single sales transaction. The field is labeled as "Max Items Sales Trans:" but will only appear on new data sets. Call your authorized Keystroke dealer or SBS to add it to existings database screens. The field must be changed to a number greater than 0 or it will be ignored. If an item has a Max Items entry in more than one database (Department/Category/Location) then the one that causes it to have the lowest Qty allowed to be sold will be used. If a line item exceeds the maximum then a message will appear stating that it has and that the item will either be removed (if Max Qty already met by other items) or that the Qty will be adjusted.

INVENTORY - SERIAL NUMBER LIST - The Serial Number List Box will automatically widen as needed to display long serial numbers.

CNF/TRN - MercuryDirect - Change the name "Vantiv" to "Worldpay".

TRN - Age Verification - Scan/Swipe Only - If the clerk does not meet the "Age Verification - Over Verification Age" security level and the "Support D.L. Scan/Swipe" parameter is on then the birthdate field will not accept a manually entered birthdate.

TRN - MERCURY DIRECT - Changed the max Reset time period from 3 seconds to 5 seconds since some of the newer devices are taking longer to reset. If the reset takes longer than this maximum time then it is assumed the card was still in the reader so the reset will be called again to make sure it was not reinserted.


- TRN - RETURNS - MercuryDirect - If a Debit Card payment was processed as a partial return then the program was displaying the "ERROR - Response Not Recognized!" message. It will now either display a message stating that Debit cards can't be used on returns or that it can't process the payment as a return since processor information is missing.

- POR - Print Purchase Orders - If the print button had "Save Before Printing" turned on then printing a Purchase Order that had items marked as received would print the Purchase Invoice being created instead of the Purchase Order.

- KSR - Audit Report - Overflow Error - Audit Entries for saving a new Variance were being printed using the Sales Transaction format instead of the Variance format. This could cause an Overflow Error since the data saved is different for these two types. Work-around is to not print these entries by turning off the "New Transaction Saved (SM/PM Only)" parameter for the report.


CONTPRIC - New version using .Net compiler. Is now located in the Exes\ subdirectory. There is still a small ContPric.exe in the program's main directory that will automatically load the full program from the Exes\ directory.

INVENTORY - Added the flag "NoStoreUpdate". This field is not included on the default database screens but can be added by an authorized Keystroke dealer. If on, then the Update Inventory function in the Store Link module will skip this item (as will the StrUpdte.exe program which is the same function). When looking at an item from the Master inventory, that item will be skipped for all stores (both Add and Update) if the flag is on. Before updating the record on an individual store, the flag will first be checked and the update will be skipped if the flag is on.

STR - Inventory Update - (same as STRUPDTE.EXE) - Added support for the NoStoreUpdate flag on inventory items.

09/27/19 - v8.00 Build 74


- TRN - MercuryDirect - Returns - If a return was made on the same day as the original payment then it would be processed as a void which would credit back the entire amount of the payment even if only a partial return of the original was requested.

- TRN - Returns - The ability to credit a return back to the original payment does not support Gift Cards but the program was acting as if it did. It now ignores gift cards when checking for payments that can be automatically credited. The refund can still be put on a gift card by reloading the amount to the gift card using the normal gift card functions.


TRN - MercuryDirect - If reset of Pin Pad takes 3 seconds or more then the program will now display a message asking the clerk to confirm the customer has removed the card. Also the max number of seconds will increase by one second each time the program has to loop through and reset the PIN Pad again. This is to guard against machines that are sometimes taking longer than 3 seconds to reset the PIN Pad even when a card is not inserted.


- CLOSEOUT - If the Max Users message was received and then the Navigation Menu was cancelled, the keyboard was not working to select a button or cancel on the new closeout date range box.

- CNF - Payments Types - The program was not allowing a payment with a blank Hot Key to be saved.

- CUSTOMER RECORD LIST BOX - If the clerk did not meet the "View Other Salesperson's customers" security level then they could also not view customer's that had their SalesPerson set to Null.

- TRN - SALES ORDERS WITH GIFT CARDS - If Gift Cards were being Saved As Payments, then when editing a Sales Order the Gift Card was also being set to be shipped again (placed on another new invoice). The program now hides Gift Cards that have already been saved on the Sales Order (and therefore already saved onto an invoice).

- TRN - Apply On Account Credit - If the On Account payment type being used to automatically apply an On Account credit amount was not in the same location on the displayed payment list as it was on the master payment list shown in the configuration manager then an error could occur when adding the On Account credit type payment to the transaction. This error could either be displayed as an actual error or could cause the amount to not be correct. Work-around is to put the payment type farther up the list of payments so that its location as displayed is the same as where it actually is on the master payment list.


LICID.EXE - Added support for the /D switch (already supported DataDir= switch)


- INVLINK (Shift+F5) - was locking up program (stuck in a loop) if used on individual Matrix Items.

- ACCOUNTING LINK (GLLINK.EXE) - If the output was set to a PDF file with a relative path then it would generate an invalid filename error when printing the first time after entering the module.

- TEMPORARY DEALER ACCESS TOOL - When this was used the program was adding in the code for a SaaS License which could cause the system to not save transactions if the maintenance was expired.

06/18/19 - v8.00 Build 73


CLOSEOUT - If the Maximum Number of POS Workstations is in use, then the Closeout cannot exit to the Sales Manager, instead it will bring up the main menu.

CNF - MercuryDirect - Changed timeout from 60 to 80 seconds since newer vx805 can sometimes take over 60 seconds to reset.

DRAWER STATUS - if the drawer status is not received then the program will retry up to 3 times before proceeding.

TRN - MERCURY DIRECT - Once a payment request is made it cannot be canceled from the POS workstation, instead, the red X on the Pin Pad needs to be pressed. However, in case there is a problem with the PIN Pad, Keystroke does allow the clerk to Escape out of waiting for the request by pressing [Esc] key several times. But if this is done, the payment may still be processed by the device and Keystroke will not see it. To guard against this happening, the number of times the [Esc] key must be pressed was increased from 4 to 16. Note that the program does display a message on the screen when the [Esc] key is pressed at this point reminding the clerk to cancel using the PIN Pad instead.

TRN - CHANGE DISPLAY - The on screen pop up "Change" box will now keep displaying the amount in Red even if other windows or messages are displayed (e.g. Drawer Is Open).

STATUS BAR - STARTUP SWITCH - Added support for StatusBarIgnoreClick start up switch. If set to true then clicking the status bar will be ignored. (For use with touch-screens were the status bar may be clicked accidentally).

**The following changes were made to support the new DASHBOARD.EXE utility**

MACROS - RUN/CALL - Added support for the token "%SysInfo%". If used it will be replaced by encrypted info of the current clerk and what Data Directory to use (including any overrides by database). This should only be used when running another Keystroke program (currently Dashboard.exe is the only one that supports it).

UTILITIES MENU - Added the function Dashboard. This will pop up the new Dashboard window. This command runs Dashboard.exe with current command line switches and the active clerk already logged in. (Same as using the macro command Run=Programs\DashBoard.exe %Switches% %SysInfo%)

DASHBOARD - Clerks using Dashboard are ignored by the "One Machine per Clerk" setting (Dashboard also ignores that setting).

MACHINE NUMBERS - (.NET Programs) - When running a stand-alone program (e.g. Dashboard.exe) the program will automatically assign a machine number starting with 1753 (instead of 1) so as not to interfere with manually assigned numbers.



- AR - STATEMENTS - BALANCE FORWARD - If an older ROA payment was used to pay off a current invoice and the ROA Payment was before the Customer's Oldest Open Invoice date then the Balance forward was not including it and the current invoice was not showing that it had been paid by a previous ROA payment.

- CNF - Retrieving list of COM ports was sometimes not showing the names (would be blank on the list).

- CNF - Payments - Hot Key - Added the letter J to the list of hot keys that cannot be used (since it is the same as Ctrl+Enter).

- EDIT DATABASE RECORDS - AltCode - Escaping form the AltCode list could cause the program to get stuck in a loop.

- KSR - INVENTORY ANALYSIS - Analysis data was not being generated when switching from 1st Grouping On to 1st Grouping Off.

- TRN - Error on Large Stand-alone Transaction Files - If a stand-alone transaction file (e.g. KSTRHOLD.DAT for storing On Holds) reached the maximum size as set in the Configuration Manager (usually 40MB) then the program was generating an error when trying to save a new transaction since as it was trying to re-use records marked as deleted.

- TRN - Add new Customer - If a new customer database screen was brought up by the program asking to add a new customer and no changes were made, then the new database record was not being saved.

- TRN - Credit Memo Entry - If using a Mercury Direct processed payment but payments were not mapped on the Authorization Method, the payment would be recorded as Cash.

- TRN - RETURNS - If items were added to the Returns transaction such that the total was no longer negative, the program was still prompting to process a return payment from the original transaction. It now ignores the original payment and asks for a payment to be made the same as any other regular sales transaction (which is what it is since the customer is no longer receiving money back).

- TRN - RETURNS - MERCURY DIRECT - Refunding or Voiding a payment processed through Mercury Direct was retaining the EMV Receipt Print Data from the original payment (in most cases the new payment won't have EMV Receipt Data since it is processed automatically).

- TRN - ON ACCOUNT - SIGNATURE CAPTURE - The program was asking for the customer's signature before checking if the amount exceeded the customer's credit limit.

- TRN - EDITING TRANSACTIONS - The program will now record that the transaction has been changed whenever a processed payment has been entered. It will also check to see if the transaction was changed by something else before entering a new payment.

- TRN - Transfer Payments from Order to Invoice - When transferring payments from an Order to an Invoice on rare occasions some of the payments on the Order would be attached to the invoice along with the correct transfer payments. The program will now clear memory buffers to guard against this.


DELTRANS/PRINTSAL - FILTERS - Added support for a Not Equals operator ("<>").

PRINTSAL - FILTERS - Renamed filter #2 to Transaction Number Only. Added filter #31 for Transaction Number (with letter if there is one) and #32 for Transaction Letter.

04/25/19 - v8.00 Build 72


- GLLINK - QuickBooks - Added the Date column to line items in the output file as is now needed to meet format check requirements on QuickBooks 2019.

- TRN - Select Payment List - Pressing [F10] was selecting the payment. It will now exit the list and be processed by the Complete Sale box.

- KSR/KSL - FILTERS - COST FIELDS - Cost Fields were being treated as text so "is equal" comparisons were not working unless the correct number of decimals were included ("0" was not matching "0.00").


PRINTSAL - FILTERS - Renamed filter #2 to Transaction Number Only. Added filter #32 for Transaction Number (with letter if there is one) and #33 for Transaction Letter.

04/05/19 - v8.00 Build 71


AR/CNF - SECURITY LEVELS - Added security levels for Account Receivable - "Edit ROA Payment" (default is same as "Delete ROA Payment") and View ROA Payment (default is same as "Enter ROA Payment").

CNF/TRN - Sales Payments - Round To - Added a parameter to have the program "Round To" the nearest nickel. Select the "Round To" button then click On "Round to nearest Nickel". Once this is marked On, the Balancing Payment button will appear. This is used to apply another payment to balance out the pennies that were either added or removed from the main payment. This defaults to the same payment type but it may be better to add an additional similar payment type that is not displayed on the Sales Payment list to balance the rounding amount.

HTML HELP - DISABLE - If a file called UseOld.txt exists in the HelpHtml\ directory then the program will not attempt to use the HtmlHelp files and will use the old help screens and viewer instead.

TRN - MAX AMOUNT ON PAYMENT - If the amount entered on a payment exceeds the maximum amount for that payment type then the program will display the message: "Notice: This payment has a maximum limit of $ ##.##"." Selecting "Ok" will continue with the Maximum Amount, "Cancel" will set the amount to 0.00.

WINDOWS PRINTERS - Changed the function used to query and open Windows printers in order to speed it up especially with network printers.


- AR - CAYAN GENIUS - If EBT SNAP was enabled with the Cayan Genius then an Error 91 would be given when trying to process a card through the device from the AR Module.

- CNF - BOGO PRICING - Using the Lookup List from the Get Item ID Field when the ID By was set to "Individual (Stock Number)" would give an error message after an item was selected.

- HELP ABOUT - The program was not checking Auto Log Out time when closing the Help About box.

- KSR - Tax Code Report - Rounding - If a transaction's calculated sales tax ended in half a penny (e.g. 1.135) the program was adding another penny to a tax code amount for Shipping. It now rounds this the same as what is stored on the transaction so the numbers match.

- KSR - MATRIX - Re-Order Only of matrix items was not working correctly.

- TRN - CAYAN EBT SNAP - Remaining Balance was not printing on receipts.

- TRN - PAYMENTS - Pressing a toolbar button twice to create a new payment would sometimes generate two payments. The program now blocks payment macros while another payment macro is still pending.

- TRN - CAYAN GENIUS - PINPADOFF - If the PinPad was set to Cayan Genius and Line Display on the Genius setup was enabled and PINPADOFF startup switch was used, then the program would generate an Error 91 (it was trying to use the Genius Line Display when it had not been initialized due to use of PINPADOFF).

- TRN - TOOLBAR MACRO - If a line item was entered that uses the scale and there were additional macro commands after it, the program was not moving on to the next line item.

02/27/19 - v8.00 Build 70


***NOTE: This feature has been added to Keystroke in preparation for a Genius App Version that has not yet been released. PLEASE DO NOT ATTEMPT to use this feature, without the proper Genius App Version which should be released soon after final testing is completed.***

Added support for EBT SNAP payments (used to be called Food Stamps). In order to use this payment type the Genius device must be updated to App Version or later, and the merchant account set up correctly by Cayan. Also "EBTSNAP" must be mapped to a valid Keystroke Payment type by using the Setup Pin Pad function in the Configuration Manager. The payment that EBTSNAP is mapped to should always include Pay Formulas so that only eligible items can be purchased with this payment type. Once set up, if a transaction has eligible items on it (as defined by the pay formulas on the payment mapped to EBTSNAP) and the customer swipes an EBT Card, then the Genius device will ask if they want to use EBT SNAP or EBT Cash.

CNF - PINPAD - Cayan Genius - EBT SNAP through the Genius device can be Disabled by leaving the payment mapping blank. If it is mapped to a payment, pressing [Del] on the EBTSNAP payment type will remove the mapping.

LOGO - DATA CONVERSION - FORMULAS - Default Price/Tax/Commission formulas from previous releases may be expiring in 2020. To guard against this the program will change the ending date on all formulas that were 12/31/20 to 12/31/30.

POR - LINE ITEM DETAIL BOX - Added the field Order Interval (field #134 - see DOC\DetBox.doc). Also fixed Matrix Items to show info from Matrix Item instead of Inventory item (if set on Matrix Item) for MinQty, MaxQty, and OrderQty.

TRN - CAYAN GENIUS LINE DISPLAY - When editing a transaction the line display will now be initialized when a line item is highlighted or when going into the complete sale screen.

TRN - VANTIV - EMVRETURN - Added ability to retrieve Cardholder Name.


- CARD SWIPE PROTECTION - Program now recognizes if the semi-colon key is being held down and does not use card swipe protection on it.

- MENUS - Added more error checking to try and avoid Error 340 which some machines were sometimes generating.

- POR - MACROS - If a macro was changing modules (leaving purchasing) the program was not first checking and warning if any changes would be lost on the current transaction.

- TRN - MIMIMUM PAYMENT - NEGATIVE TRANSACTION - If a Transaction had a Negative Amount (i.e. a Return) and a Minimum Payment was not set then the program was displaying a Remaining amount even after the negative payment was made.

- TRN - TRANSACTION SEARCH - ITEM ID - The program was searching for the inventory item whenever leaving the Item ID field. This would could cause the selected item to be changed. It now only looks up the item if the text in the field is changed.

- VAR - SERIAL NUMBERS - If the Physical Qty was an odd number (not divisible by 2) then the Serial Number check was being skipped.

- PRINTSAL/DELTRANS - FilterJoin=OR was not working, it would only match if the last filter was a match.

- TOOLBAR BUTTON EDITOR - Selecting a macro function from the lookup list was sometimes inserting the text in the wrong position.

01/28/19 - v8.00 Build 69


AR - APPLY CREDIT MEMOS (AO) - Added the function "Apply Credit Memos" to the Finance Menu. The Apply Credit Memos function can be run in "Individual" mode where a credit memo is selected one at a time. When a credit memo is selected, any outstanding finance charges or invoices will automatically be applied (up to the amount of the credit memo). Saving and updating the Invoices and underlying ROA payment is then done automatically. If the full amount of the credit memo is used then it will be removed from the Credit Memo list. If there are no outstanding balances to apply it to then a message will be displayed stating so. This function can also be applied to "All" credit memos. In this mode the credit memos looked at can be restricted via the "Filter" and by the "Credit Memos Prior To" date. A reminder message will be displayed stating that a backup of the data files should be made before running this function. If problems due arise, the only way to correct them is to edit the ROA payments that the credit memos were from (or restore the backup).

KSR/EXPORT - SALES LINE ITEMS - Added the fields Bogo Buy Item and Bogo Get Item to the list of available fields for printing/exporting/filtering sales line items. The values are 1 or 0.

PASSWORD ENTRY - Changed the symbol that hides the characters being typed to a dot since the box character is not available on newer machines.

TRN - RECEIPTS - The print box now remembers the cash Change amount so that it can be added into the Total Paid and Change fields even if the transaction has already been saved as long as the program has not left the Print Box (either by going forward to a new transaction or escaping backwards). This allows the receipt to show the total amount of cash given to the clerk by the customer and the amount of Change given back.

DRAWER STATUS - Change it so if the status is not received then the program will continue without displaying the Drawer is Open message.


- KSR - Report Headers - Comments - If a comment field was printed in a section other than the one it is from, and the section it was printed in did not have Print Comments turned on, then the Header for the comment field would not print.

- POR - Case/Each - Fixed Error 6 when Case/Each function ([Ctrl+F7]) was run from a blank line.

- TRN - Transaction Search - Comments were only being displayed on the first transaction that was highlighted.

- TRN - Print Buttons - If a transaction was automatically converted to another transaction type and print buttons were restricted to individual transaction types then the print button was not working.

- TRN - BOGO PRICING - If an item was eligible for a Price Formula as well as Bogo Pricing then the Price Formula was taking precedent. The program will now ignore the Price Formulas on an item if it is involved in Bogo Pricing (either used as the Buy item or the Get item).

- TRN - CAYAN GENIUS - If the Cayan Genius was normally used but a machine had it disabled by either setting the IP Address to blank or using PinPadOff switch, then the regular payment list was being shown and payments could be entered without authorizing them. If the IP Address is blank, the program will now display the normal Genius payments list but only "Manually Entered Payment" will work. If PinPadOff is used, the program will now only display the "Manually Entered Payment" choice. Note that having it disabled was also causing the PinPad parameters to not be read which could cause the Auto EMV block to be printed.

- TRN - RETURNS Function - Payment - If a payment was selected by using its hot key or selecting it from a toolbar button (or macro), the program was still using the payment type that was used on the original transaction instead of the one that was selected.

- TRN - RETURNS Function - When going to the Complete Sale box, the program will now ask if the same payment type as was used on the original transaction should be used on the Return.

- TRN - DELI SCALE - If the Parameter "Calc from Base Price" was Off (it should almost always be left On) then the deli scale items were not being marked as being entered that way. This could cause multiple items to be merged together which should not happen.

- VAR - Created and Last Changed dates were not being set when Variance records were saved (Posted).


DELTRANS - Added support for FilterJoin=OR. If this is used then if any of the filter conditions are met the transaction is a match. If not used then the default of FilterJoin=AND is used so if any of the filters are not met then the transaction is not a match.

PRINTSAL - Added the ability to have an unlimited number of filters (the previous limit was 2). Note that the FilterJoin parameter applies to all filters (default is FilterJoin=AND).

12/07/18 - v8.00 Build 68 - Not released. Fixes included in Build 69.


- CNF - BOGO Pricing - If the Get Item ID By parameter was set to "Use Buy Setting" then the program would display it as "Same Item" and it would revert to "Same Item" when the BOGO Pricing was displayed.

- TRN - BOGO Pricing - If the Buy Qty and Get Qty were both 1, the program was not splitting up an item with a qty greater than 1, this was causing the BOGO pricing to not be applied if it was the only item that matched the Get setting.

- DBM - INVENTORY - The shortcut key ([Ctrl+Shift+F9]) for displaying the Serial Numbers (or Selectable Comments) list was not working on the inventory screen. (Clicking on the Serial#s screen flag was also not working).

- KSR - BACK ORDERS REPORT - The Print Trans and Line Item Comment parameters were being ignored and treated as always on.

11/28/18 - v8.00 Build 67


TRN - Sales Orders - When entering a new order and nothing is marked as shipped, if the shipping amount is entered it will be applied to the full order. Then if items are marked as shipped while on still on the new order the shipping for those items will then be calculated as a percentage of the full order.

VAR - MATRIX ITEMS - When entering an Inventory Item that is a Matrixed Item, [F10] from the Select Matrix Item list/grid can now be used to auto-fill in all the active matrix items (only works if in multi-qty mode and no qty has already been entered for any of the matrix items).


- CONFIRM EMAIL - Use of the Confirm Email function was causing an error (from build 66).

- AR - CAYAN GENIUS - If the Cayan Genius was normally used but a machine had it disabled by either setting the IP Address to blank or using PinPadOff switch, then the regular payment list was being shown and payments could be entered without authorizing them. If the IP Address is blank, the program will now display the normal Genius payments list but only "Manually Entered Payment" will work. If PinPadOff is used, the program will now only display the "Manually Entered Payment" choice.

- CNF - SALES TRANSACTION TYPES - Moving payments from the standard transaction files to the transaction type's own file was causing a File Is Locked error.

- CNF - PACK - Alternate Transaction Files - If the Abbreviation for the Transaction Type was less than 3 characters (and/or if the Data Extension was set to 1 character) then the file saved after the pack would have the wrong file extension (it would add " -" to it so "KSTRAP.DAT -" instead of "KSTRAP.DAT". Renaming the file corrects the problem.

- TRN - Sales Orders - Shipping - When editing a Sales Order the original shipping amount was not being displayed.

- TRN/POR - Filter - Transaction Record List Box - If the transaction list box was showing a transaction type other than Invoice then the record list Filter function was not working.

- EXPSUM.EXE - Was not reading the command line switches. Also, Inventory files were not formatted correctly (the carriage return which marks the end of the line was in the wrong place).

- IMPROA - If the ROA payment being imported was applied to a Finance Charge then that amount was not being added to the Amount Applied field on the ROA payment. This could also cause the ROA payment to be incorrectly flagged as a Credit Memo. (The DelUtil program can be used to recalculate the ROA payment if that happened).

10/18/18 - v8.00 Build 66


*** BOGO Pricing (Advanced Only) ***
Note: Setup for this feature is Advanced Only but any license will allow the use of it (all will recognize the PRCBOGO.DAT file). However, if licensed for Express and maintenance has Expired then the file will be ignored.
Changed Price Tables to support BOGO Pricing (Buy One Get One). This type of pricing is separate from Price Formulas and will be displayed in a separate list box on the Price Tables screen.
Each BOGO Pricing can be set for different types of items and different types of pricing structures. Each pricing can have an active Date Range and Time Range as well as set for specific Days Of the Week and/or Month (same as Price Formulas).
The Name field is for internal use to help identify what the pricing is for or does.
The Buy Item box is used to identify which item (or type of item) has to be purchased as well as the Qty needed to get the pricing.
The Get Item area is used to identify which item will then be discounted if it is also purchased, what the discount will be, and for how many of the items for each matched Buy Qty (e.g. Buy 3 items from Office Supplies and get 2 Items from Magazines at 50% off).
Items can be identified either as a specific inventory item or a group of items. Wild cards ("*") can also be used to match any inventory item that matches the specified field. While in the ID fields, the [F2/Ins] key can be used to bring up a lookup list based on what the “ID By” field is set to.
If an item matches both the Buy and Get parameters, then the higher priced one will always be used as the Buy item and then the next higher priced one will receive the "Get" discount. This will repeat until all the items have been checked.
Discounts can be set to "Free" (Buy One Get One Free), "% Off", "$ Off", or "Fixed Amount" where the price will be the specified dollar amount (Buy One Get One for $1.00). The percent and dollar discounts can be From any of the standard price fields.
It is possible for an item to be eligible for more than one BOGO Pricing so the program processes the pricing in the order they are listed on the Price Table. A line item will be used by the first BOGO Pricing that it can be used on and will not be considered for any others. Use Cut [Ctrl+X] (or [Shift+Del]) and Paste [Ctrl+P] (or [Shift+Ins]) to arrange the order of the BOGO Pricing list.
BOGO pricing is not applied while line items are being entered. Instead, it is only done when entering the Complete Sale screen. In order to have the BOGO pricing applied before finishing a sale, [F10] can be used to go to the Complete Sale screen and then [Esc] can be used to go back to view the line items and how the BOGO pricing was applied. This can be done any number of times while entering a sale.
If the BOGO Pricing is set for Buy Qty=1 and Get Qty=1 then any qty purchased as the Buy item will be applied to that qty on the Get item.
BOGO Pricing is not applied to any item entered as a Return (Qty is negative).
If the "Group Together" parameter is turned on, then when BOGO Pricing is applied (entering the Complete Sale box), the program will reorder the line items so the Get items will appear immediately below their Buy items.
The "Message" field is used to enter information that will be added to a line item's comment if that item receives a price change due to the BOGO formula. The item's Normal/Base/List price can be included by using their tokens within the message. Press [F2] or [Ins] to select from a list of the available tokens. Note that the message is applied to the line item's comment when the invoice is either printed or saved.
The Max Uses parameter limits the number of times this formula can be used on a single transaction. Note that when saving Invoices, the BOGO pricing is locked in and the program will no longer reference the BOGO pricing for those item it was already used on. For this reason, when Editing an Invoice, changes to BOGO pricing formulas will not change those locked items. Also, since the BOGO pricing is no longer being reference for those items, they no longer count for the Max Uses parameter.
Note: The line items involved with BOGO Pricing (those use as either a Buy Item or a Get Item) are only locked and have the Message applied to them when printing or saving an Invoice transaction type only. All other transaction types will leave the pricing open so that BOGO pricing can still be applied to all line items if any future changes are made.


Switched Help Screens ([F1]) to use new technology and all new updated content. The help files are now in HTML format and stored online with the KeystrokePOS.com web site. Instead of using the Windows Help Viewer, help is now displayed via your browser (or whatever program your system is set to use with .html files).
An optional setup will be available to store the help files on the local hard disk (in the HelpHtml\ folder). If help files are found there then they will be used instead of the online files. Note that the online files will be continually updated while files stored locally will need to be reinstalled for any updates. If the html help file cannot be found, then the program will switch back the previous help screens.


FOLDERS - Changed the name of the "Programs\" sub-directory to "Exes\".

CNF - PRICE TABLES - The Price Table box now shows more information on the list of price formulas. Now shows Date Range and discount amount.

TRN - CONVERTING TRANS WITH HIDDEN ITEMS - When a transaction is converted from one type to another, the program will now check to see if any of the inventory items have been marked as "Hidden". If they have, a warning message will be displayed stating how many and includes a button to display a list of the line items that are for a hidden inventory item.

TIME CLOCK ENTRY - EDIT DATE/TIME - Changed the security level that determines if the Date and Time fields can be changed when making a time clock entry from "Edit Clerk" to "Edit Time Clock".


- TRN - Vantiv(Mercury) - Gift Cards - Gift Card Triggers based on Payment Numbers were not being recognized when using Vantiv(Mercury).

- TRN - Card On File - When adding a card, a blank message box would appear if the card was saved correctly. It is supposed to not show a message at all. (From build 65).

- TRN - RETURNS - Entering a large number in the Line Item Search field of the Returns function would give an Error 6.


- IMPROA - Log file (ImpRoa.log) was being written to the Program Directory instead of the Data Directory.

- STR/STRUPDTE - Selectable Comments / Serial Numbers - If update "Selectable Comments" was On, then items marked as Serialized were having their Serial Number list erased and was not updating the Selected Comments. Work-around is to turn off the "Selectable Comments" parameter and then turn it back on once this build (or a newer one) is installed.

09/17/18 - v8.00 Build 65


CNF - PRICE TABLES - The Price Table box now shows more information on the list of price formulas.

CNF - AUTH METHOD - Vantiv(Mercury) - Added a flag for "Allow Cash Back on Device" for the "EMV Credit/Debit" and "EBT-Cash Benefits" Card Types. If this is On and the card used allows for cash back then the Pin Pad device will display the Cash Back screen where the customer can select the amount of cash back (if any).

VAR - IMPORT - Added the ability to import comments. If a field #4 is included in the file then it will be used as the Variance Line Comment. Note that in most cases a blank field number 3 will need to be included as that field is currently not used but is reserved for future use. The comment is used to track Serial Numbers. To include serial numbers in the import, make sure each serial number is preceded by the "Serial Number Prefix" (as defined in the Configuration Manager). Multiple serial numbers must be separated by the pipe character ("|") and each must include the Serial Number Prefix.

LOGO - CALCULATOR - When initializing a new data set the Calculator Utility () will be set to default to Calculator Mode. Use [F9] while in it to switch to Adding Machine Mode. Do this while in the Configuration Manager - Parameters screen and then save the parameters to save this setting.


- AR - STATEMENTS - Line Item Comments - If a line item did not have a comment then the last line item comment would be printed.

- CNF - EXPRESS - EDIT SECURITY LEVELS - The list of security levels was not displaying correctly and would sometimes cause an error.

- CNF - PRICE/TAX FORMULAS - Date Range entry was using entry from reports where shortcut syntax would not use future dates (e.g. 12.1 would give 12/01/17 instead of 12/01/18).

- TRN - ON ORDER MODE W/ PRICE FORMULAS - When viewing a transaction in Qty vs Shipped mode (e.g. Sales Order) the program was including price formulas that were based on a minimum qty, when displaying the line item Amount and the SubTotal fields.

- TRN - RETURNS - PAYMENT - If there are multiple payments, the program was always using the first one on the list even if a different one was selected (note that the box to confirm the amount shows the selected payment but the program would still complete the processing using the first payment anyway).

- TRN - Vantiv(Mercury) - If manual entry mode was used with a device that did not have PIN Entry, an On Screen window would pop up. Clicking anything outside of that window would cause it to hide behind the program that was clicked on. Keystroke now monitors the window and keeps it On Top so it does not get lost.

- TRN - SCRIPTING - Deleting a line item that was a Component of another item (from Scripting) would delete all the Component items below it. It now only deletes all the component items if the main item is deleted.

- TRN - Card On File - Instead of getting an error message after trying to process card on file when the Cayan Merchant Information is not set up, the program now displays a warning message before the procedure stating that it needs to be set up in the Configuration Manager.

- TRN - RETURNS - PAYMENTS - CAYAN - If a refund payment was processed through Cayan then the program was not saving the new AuthCode or Token for the new refund payment. This would then block the return payment from being voided in the future.

08/22/18 - v8.00 Build 64


TRN - TRANSACTION SEARCH - CURRENT ITEM - MATRIX - The current item will now search and match on the Inventory Item and Matrix Code if there is one instead of showing all sales for the Matrixed Inventory item.


- TRN - Vantiv(Mercury) - Merchant ID - The Merchant ID would always use the one from the first payment processed even if additional payments were set to use a different merchant ID.

- TRN - Vantiv(Mercury) - Payments that were not part of the EMV series but were below them on the payments list were not using the correct authorization method.

- VAR - If a variance line that had not had its Physical qty entered yet (shows as blank) was highlighted and then the count was imported from a file, the Physical Qty would include the QOH of the item.


SPLITTRN.EXE - Added the ability to split the current file even if another file already exists after it (will change the name of that file(s)).

IMPTRN - Added support for the field "CONTACT LOOKUP NAME" to be imported. Also, if the this field is not imported, then the "CONTACT NAME" field will automatically be copied to it (if it as imported). Note that with this utility Contacts can only be updated using the "CONTACT CODE" field (which is really the "CONTACT ID" field).

REMDUPES - Added the ability to remove payments that were not attached to a master record (e.g. Paid Outs).


- TOOLBARS - EDIT - DROPPING TOOLBAR BUTTONS - If there are more than 100 individual toolbars, saving the toolbars (either from the toolbar or button editors) would cause button information for the toolbars after the 50th one to be dropped if the toolbar was not currently visible.

07/21/18 - v8.00 Build 63


TRN - CUSTOMER ENTRY - When editing a transaction the program will default the Customer Entry box to the Ok button instead of the default customer entry field (since in most cases the customer would not be changed once a transaction is saved).


- TRN - CAYAN - Was not working with P2PE certified devices due to Transport Key being sent as all uppercase.

- TRN - Transaction Search - the list of Trans Types was only including Sales Invoices and Layaways. It should be showing all types that are enabled and the clerk has the security to view.

- TRN - Returns Function - Write-Off - the "DO NOT RESTOCK" line item comment was being added only if the line item had both a return qty and a Write-Off qty.

- TRN - Security Feed - Global Variables (negative field numbers) - The global variables were not being recognized by some of the display messages displayed by the Sales Manager (e.g. [-2,20,L] on the "Line Item" message was not working).

- MACROS - RUN/CALL commands - Were not working if contained a percent character (from build 61).

07/05/18 - v8.00 Build 62


TRN - RETURNS FUNCTION (AO) - Added a new function for accepting returns. The Returns function is used to quickly return items from a previous Sales Invoice. When this function is run, the program will ask for the Trans# to be entered (or scanned). The program will then display the line items for that transaction. If the transaction is not found the function will return to the Trans# entry box. Note that no matter what transaction type is currently being used, this function will always search for and work with Invoices only.

If more than one matching transaction is found, then the Transaction Search function will be used to display the matching transactions so one can be selected.
If a Trans# is not entered, then the Transaction Search function will be used and placed in the search settings screen on the Item ID field as the starting point.
From the Returns Function line items display, the check mark field on the left can be used to quickly mark which items are being returned. Turning On the check mark will set the Re-Stock qty field to match the qty available to be returned from the original invoice. Turning Off the check mark will set the Re-Stock qty to 0. The Re-Stock qty fields can also be changed manually.
The "Write-Off" field can be used to accept a return for an item that is not going to be placed back in stock (QOH will not be updated). Items marked as Write-Off will also have the text "DO NOT RESTOCK" added to the beginning of their line item comment. If both Return and Write-Off fields are not 0, the program will add an additional line item for the Write-Off qty.
Once the Return quantities are entered, select the Save button to load them into a new Invoice and start on the standard transaction entry screen. Additional changes can then be made if needed. The program will automatically prompt to use a payment (e.g. credit card) from the original transaction, or a new payment can be entered. The invoice can then be completed/printed/saved the same as a standard invoice.
While in the Returns function, the return quantities cannot exceed the original qty (including any previously saved Returns for that invoice). Also, Gift Card line items cannot be returned using this function so they will not appear. However, once on the main transaction screen, all standard functions are available (including changing the Qty and working with Gift Cards).
The date used to calculate the sales tax rate is based on the Invoice Transaction Type Save parameter "Rev. Trans - Tax on Orig Date". This determines if the tax rate is based on the Original Date or the Current Date.
When the Returns transaction is saved, it will be saved and update inventory the same as a standard invoice. In addition, it will have a flag set on it to mark it as a Returns Invoice. This flag can be printed and filtered on reports. Write-Off line items will also have the Write-Off flag set so that flag can be printed and used on reports.
The Returns function can be run from the Transactions menu or it can be started from a Macro. The command is "SalesEntryCommand:TransactionReturns". Transaction Search Parameters can also be included but normally will not be. If the toolbars have a Return button that contains the older command "@ToggleFlag(ReturnMode,1)", it will automatically be replaced with the new command. This will only happen the first time the data files are accessed with v8.00 build 61 or later. The button can be edited and set back to older command if desired.
While working on the Line Items in the Returns function, a search field is available to quickly find a line item on the transaction being returned. It can be used by selecting the Search field (click on the field, or press [Alt+E] or [Ins]) or if in the Check Mark column you can simply start entering the item (any character except [Space] will jump to it). After entering the characters to identify the item, press [Enter] to search though line items for a match. This allows a barcode scanner to be used to quickly scan in the items that are being returned. The program will first search by Stock Number if all the search characters are numeric. It will then search by Product Code and then Description (if using Matrixing and searching for a Matrixed item, the search must be Stock Number, Matrix Separator, Matrix Code). The program will search for and handle duplicate matches in the same field but it will only search within the first field it finds the first match in (e.g. if you have a Stock Number 121 and another item with Product Code 121, it will only find the ones that have the same Stock Number). While searching, it will ignore line items that have already met their Avail qty. If the match is on Product Code or Description and more than one item is found, a Which One list box will be displayed so the correct item can be selected.
Once the search finds an item, it will increase its Return qty by 1 and highlight it. If there is an additional qty available to be returned, the search field will keep the characters so [Enter] can be used to increase the Qty by 1 again. Pressing [Tab] will jump to the Re-Stock column on that item so it can be edited by hand. If there are no more search items available to be returned for the current search, the search field will be erased.

GLLINK - RETURNS - WRITE-OFFS - Cost of Write-Off items will not be posted.


TRN - (AO) - Added a "Max Returns Total" field under Parameters - Line Items. If this field is set to anything other than 0.00 then the program will not save a transaction with negative line items that have Amount Total that exceeds this amount. It does not matter if the parameter is set to a positive or negative amount, both will compare the same. There is also a new security level that allows a clerk to ignore this setting. If a manager is needed but not available to complete the return, the transaction can be parked using the Quick Save function (this usually saves it as an On-Hold transaction).

CNF - Security Levels (AO) - Added the Sales Manager security level "Ignore Max Returns Total". If the clerk meets this, the "Max Return Total" parameter will not be checked. Default value is 5.

TRN/POR - Returns SubTotal - The program now saves the Sub Total of all the items that have a negative Amount (Qty * Price). This field is available on reports as "ReturnsSubTotal".

POR - FORMS - Added fields to print Base Price Extension values on purchase forms.

POR - FORMS - Changed Register number field printed on forms to be the register that created the transaction instead of the current register.

TRN - DATAPORT - Added the field "Status=" to the export file. This field will have the value of "NEW" when entering a new transactions or "EDIT" when working with a previously saved transaction.

TRN - DATAPORT PARAMETERS - Added a "Wait Time" parameter for Import. This is the number of seconds before the program will pop up a message stating that it is searching for the import file. The clerk cannot cancel the search until after the message has been displayed. The default is 2 seconds. Entering a negative number will cause the program to wait that number of seconds and then automatically cancel the search. This feature is also available on Scripts. On scripts the name was changed from "Max Wait Time" to just "Wait Time".


- KSR - NAVIGATION MENU - Was not working correctly when used with a mouse (or touchscreen).

- TRN - CAYAN GENIUS - The "Disable Auto EMV Print Block" parameter was not being read if the Pin Pad was disabled (with PinPadOff=1 startup switch).

- TRN - Gift Cards - Vantiv Direct - The Balance Check button was not automatically asking if a manual card entry should be done after the Cancel button was pressed on the pin pad.

- TRN - SCRIPT - DATAPORT - The Max Wait time parameter was not working.

- TRN - ReadAuthFile - Added some more error checking to make sure the file name is valid.

06/07/18 - v8.00 Build 61


- TRN - NOT UPDATING QOH/ALLOCATED - If a transaction was being edited and converted from a type that did not update inventory levels to one that does, going into the Print Box and escaping out of it without selecting a button would cause the program to internally flag the previous transaction as one that did update inventory. This would cause the program to mistakenly reverse out the qty from the inventory item even though it was not included in the first place. This would cause the QOH and Allocated to appear to not be updating or updating incorrectly. Also, this same situation could cause an Error 9 if this was the first transaction being worked on in that session. Work-around is to not escape from the Print box without printing something first (which forces a Save which eliminates the problem).


SECURITY LEVELS - Email - Added the security level "Email - Can Cancel Sending Email" to the "General" category (default value is 10). This controls whether or not a clerk can cancel an email from the Email Address prompt (automatically comes up if the Email To is blank) or from the Confirm Email function (turned on via the Mail Port parameters on the printer setup).


CLOSEOUT - If a payment type is used on a sale (or ROA payment) that is not available when the closeout is run then the program will automatically add the payment to the list of payment types used by the closeout instead of reporting the payment as a Deposits Used.

RECLIST BOX - WINDOWS CLIPBOARD - ADD/EDIT RECORD - If the quick search feature is used and then [F3]-Edit Record is used, the program will no longer copy the contents of the quick search field into the Windows Clipboard (it still does copy it if [F2/Ins]-Add Record is used).

TRN/POR - [F3]-Edit from a line item will now show the item's database record in Query (View Only) Mode instead of displaying the Access Denied message if the Clerk security to "Query Inventory" but not "Edit Inventory".

UTILITIES MENU - Changed hot key on Paid Out function from "P" to "O". Changed hot key on Command Prompt function from "D" to "P"


CNF/TRN/AR - VANTIV - Added support for the ID TECH AUGUSTA EMV reader for processing through Vantiv (Mercury). This device is available on the Touch Dynamic Pulse All-In-One computer as well as other similar machines.

LICID - If there is a problem retrieving the license from the Online License Server then the program will now allow the Serial Number and License Key to be re-entered.


- TIME CLOCK - BIOMETRICS - If the Time Clock - IN function was brought up due to a clerk logging in that was Clocked Out and biometrics were enabled, the program was always requiring a biometrics scan be done or the clerk would not be Clocked In. (This happened because the "Biometrics Scan Not required on Time Clock" security check was always failing no matter what it or the clerk's security was set to.)

- DATABASE - MATRIX - Selecting the Matrix button would cause the record to be marked as changed. It no longer does this since any changes in that function would be to the matrix items and not the inventory item.

- MACROS - RunDoc - Some windows programs won't run from another application due to 32 bit vs. 64 bit redirection. To correct this, the RunDoc command will turn off Wow64Redirection when running a command that contains ".exe". It will then turn the redirection back on. Note that this only happens when running on a 64 bit version of Windows.

- MATRIX - Select via List (instead of Grid) was showing blank column headers which would cause the last row to not be displayed.

- SIGNATURE WINDOWS - Would lose focus if clicked on another part of the Keystroke window. Also the buttons were not always working correctly.

- TRN - Sales Orders - Printing a Sales Order that was being shipped and having the "Save Before Printing" parameter on the print button turned On was causing the letter added to the transaction number to be one more than it should have been ("B" instead of "A").

- TRN - Audit - Form Printed - If a transaction was converted from a different transaction type but not yet saved then when it was printed the "Frm Prnted" audit entry would show the original transaction type instead of the new one.

- TRN - RETURN MODE - USE SCALE - An item entered by weight (due to Use Scale being turned on) was not automatically setting the qty to a negative number when in Return Mode.

- TRN - VX805 - GIFT CARDS - Was not allowing for Manual Entry of gift card numbers.

- TRN - Slow Line Display - If editing a transaction with more than 12 line items on it the lines were sometimes being redisplayed twice when changing from one line to another. This could make it slow to arrow up/down through the line items.


- MAPFILE - Delimiter=4 was not working when using a character enclosed in curly braces. For example: Delimiter=4{124}

- MAPFILE - Was not running if the MapFile parameter was not specified even though it is suppose to be optional. Note that if not specified then the MapFile program is used to change the field delimiter character in the file.

05/01/18 - v8.00 Build 60


KEYMAIL - The Attachment= field now supports multiple files (separated by a semi-colon). A space may follow the semi-colon but is not required.

PRINTER - MAIL - CONFIRM EMAIL - A printer set up in Keystroke to send an Email (port set to "MAIL:") can now use a new Confirm Email entry box before the email is sent. The Confirm Email entry box displays the Email's "To", "Subject", "Attachment", and "Message" fields. Any of these fields can be changed before pressing the "Send" button to proceed with sending the email. Note that any changes made via the Confirm Email function will only affect the email currently being sent, it will not make any changes to Keystroke Data files or parameters. If the "Confirm Email" is Cancelled, then the email is not sent.

CONFIRM EMAIL - The "To" field supports multiple addresses separated by a semi-colon. If this function is used the email addresses are first scrubbed to remove any blank and/or duplicate addresses. The addresses can be edited within the displayed field. Also they can be edited/selected by using the "Email Addresses" list which is brought up by clicking the "To" button or pressing [F3] or [Ins] from that field.

CONFIRM EMAIL - The "Attachment" field supports multiple file names separated by a semi-colon. It can be edited within the displayed field and/or [Ins] or [F3] can be used to bring up the file browser (or the browser button next to it can be selected). If the Attachment field contains a semi-colon, then the file selected by the browser will be added to the attachment field instead of replacing the current one.

CONFIRM EMAIL - The "Message" button can be used to display the entire message as well as make any changes to it.

EMAIL ADDRESS LIST - The [Space] or [Enter] key can be used to toggle Off/On addresses to be sent to. Press [F3] to edit an address. [Ctrl+BackSpace] removes an address line and [Ctrl+Enter] inserts a blank line. Any time a blank line is highlighted the program will automatically switch to edit mode. Press [F10] to save the list (note that any un-checked address will be discarded at that time).

CNF - PRINTERS - MAIL - Added the parameter "Confirm Email". If this is on then the program will bring up the Confirm Email box before sending out the email.

CNF - PRINTERS - Test KeyMail - Email test information is now pre-loaded when the button is used. "Email To" defaults to the company's Email address. The test now uses the new Confirm Email entry box.

POR/TRN - FORMS - EMAIL ADDRESSES - Added a field that can be put on a form that will include the customer's (or vendor's) email address plus all the email addresses found in the customer's (or vendor's) Alternate Codes List (codes that include an @ symbol and a period somewhere after it with characters following the period). Each address will be separated by a semi-colon.

AUDIT - EMAIL - Whenever an email is attempted to be sent the program will now make an audit entry under the Form Printed category.


ALTERNATE CODES - Alternate Codes now accept lower case letters (instead of all uppercase). Also increased the maximum number of characters to 28 (from 20).

CNF - PRINTERS - [F3] can now be used to go directly to editing the "Port" parameters.

STARTUP SWITCH - LEVELSDIR - Added support for LevelsDir= startup switch to specify where the Levels.dat file is stored (to be used in a multi-store environment). Note that if a relative path is entered then a full path will be created based on the ProgDir.


- CNF - EXPORT - CREDIT MEMOS - Exporting Credit Memos was not working, would always generate an empty file.

- TRN/AR - CREDIT MEMOS - Was not saving the Payment Name. This would cause that field to always be blank when printed on reports or exported.

- TRN - Sales Orders Sales Tax - Round on Each Item - If a sales tax formula had the Round On Each Item parameter turned on then a Sales Order would show the Sales Tax for shipped items to be the same as ordered items. This would cause a partially shipped transaction to apply the wrong payment amount to the invoice being created.

- TOOLBARS/MACROS - ChangeModule - Changing modules was being allowed even when the Menus were turned off. This could cause loss of data so now the program ignores the ChangeModule macro command if the menus are not enabled.

04/30/18 - v8.00 Build 59


- DATABASE - EDIT - LOST CHANGES - The Data Collision check to see if any fields on a database record were changed by another process were not working with fields that were not changed by the database edit. This would cause changes made by other processes between the time the database record was displayed on the screen and the time it was saved to be lost.


CNF/TRN - Vantiv(Mercury) - Added a "Disable OK Amount prompt" parameter to the Vantiv(Mercury) Auth Method. If this is on, the PIN Pad will be told to skip the OK Amount screen when starting a sale.

MACROS - RUN/CALL commands - Added support for the token %Switches% which will be replaced by the Command Line Switches used to start Keystroke.


- AUTO LOG OUT - REPORT VIEWER - The auto logout timer was not starting until after Keystroke received the focus back from the report viewer. This could allow someone else to use a clerk's identity if they left the computer while the report viewer was still up or the report was still running. The report viewer now checks the logout timer when the focus is changed from it.

- EXPORT/KSR - Sales Line Items - Price Amount - The price used to calculate "Price Amount" was always being rounded to the "Money" decimal point settings before multiplying it by Qty (it now only rounds if the Tax Formula on it specifies it to do so).

- EMAIL - If the To: line contained separators ("," or ";") for multiple addresses but one or more was empty, then the email would not be sent. The program now checks and removes separators that appear at the end or are next to each other.

- KSR - Analysis Reports - if the version stamp in the KSRE*.dat file was not valid, the program would sometimes print a blank report if the report was run again. Work-around was to leave the Report Manager module and then come back in to run the report a second time.

- LICENSE CHECK - If the system's product ID started with MSG then the program would display an error message instead of accepting the Product ID from the License Server.

- REPORTS - RANGE - If a Range was set from "First" to some other entry and there was no data in the range, then the first available record would still be printed even though it was beyond the End Range value (note that printing "** No Department **" type entries did not change this behavior since they are not actual records).

- TRANSACTION SCREEN - Column Titles were being cut off when the window size caused the font to be small. Also the Change display boxes now work better with small fonts.

- TRN - AUDIT LINE ITEM CHANGE - If a change was made to a line item and then the Down key or Enter key were used to switch to the next line item, two audit entries for the same change were being created.

- TRN - Select Price ([Ins] from price column) was not accepting the keys 1, 2, or 3 to highlight the Level 1, Level 2, or Level 3 price.

- VAR - DEFAULT QTY - If "Deli Scale" support was turned on then the "Default Physical Qty to "1" (Scanning)" parameter was not working.


- PROD - Print Template - The Clerk information was not available to be printed when printing Templates in the Production module.

- FMTR - AUTO SAVE - The prompt to save a changed form when leaving the Forms Editor was not saving the changes made to the currently displayed section.

03/26/18 - v8.00 Build 58


CNF/TRN - Vantiv(Mercury) - Changed references of Mercury Direct to all be Vantiv(Mercury) for clarity (also this is not really a direct interface since it requires additional programs and drivers).

CNF - VANTIV(MERCURY) AUTH METHOD - Added the Parameter "No Automatic Print Button". If no print buttons are defined for the payment type, the program will normally automatically add a print button for the payment (this is required by EMV specifications so that an EMV receipt is always printed). This can now be disabled by turning on the "No Automatic Print Button" parameter. However, the merchant agreement should be checked first to make sure this does not put the store in violation of it.

FILTERS - Added the functions @DateVal and @Date which except standard Keystroke date notation to represent a date based on the current date (e.g. +1M, -5D, 99, etc). @DateVal will return a number that represents the date so it can be used in additional calculations, @Date will return the date in a standard date format so it can be compared to other dates. For example, "CST:ExpDate>0 and CST:ExpDate<@Date(+5)" can be used to include customers that have an Expiration Date that has or will expire in the next 5 days).

GENIUS MINI - Received certification for use of the Genius Mine from Cayan.

TRN - VANTIV(MERCURY) - If there is no print button for the payment and the payment is approved, the "Skip Approved Message" parameter will also cause the Ok button to be skipped (i.e., works the same as if there was an automatic print button with "Print and Continue" turned on).

TRN/FMTR - Transaction Forms - Added support for printing out Customer Web ID and Customer - Online Flag fields.

FILEERRORS - Message will now show what the file is used for (based on the file number).

DBSCRN - The list to select a field to Link From can now be switched between the list of database field names and the special file links by pressing [F9] (used to have just one list or the other depending on which edit mode it was in).


- AR - STATEMENTS - BALANCE FORWARD - The Balance Forward amount was not correct when current ROA payments paid off Finance Charges.

- CNF - Auth Method - VANTIV(MERCURY) - The Test Server button was not working unless the Setup PIN Pad function was used in the same session.

- CARD ON FILE - The Replace Card function was displaying the card had been deleted message but not that the new one was added. It now states that the card has been replaced.

- TRN - Reversing Payments - The program would incorrectly display a message that at least one payment could not be processed if any of the payments had been purged (the payments were still reversed properly).

- TRN - MWGENIUS - LINE ITEM DISPLAY - If the last line item was changed or deleted (or merged into another one) then the program was redisplaying all line items on the Genius device. This would cause the system to slow down as more and more items were added to the transaction.

- TRN - SHIPTOTAL - The ShipTotal amounts (based on Qty being Shipped) were not always correct if some of the line items had their prices manually set.

- EXPRESS - QUERY - CUSTOMERS - The Sort By on the last 3 fields was off by one. Also changed Company Name to Business Name on the sort by list.

- PROD - Error 340 - Entering a main item that had a template with more than 19 items on it would cause and Error 340. Work-around was to select the template from the Template-Select menu instead of entering the item directly.

- IMPTRN - SWITCHES - The value of the following startup switches had to be uppercase: AddNewTrans=, AddNewCust=, UpdateCust=, Confirm=.

02/22/18 - v8.00 Build 57


- TRN - TAXABLE - The Taxable field on the Transaction that is available to be printed on reports (as STH:Taxable) was not being set when saving a transaction (from build 56). The tax was still correct and reports that recalculate these values were correct. Just that one field would be 0.00 (and therefore the Non-Taxable field would hold the full amount). Transactions saved that way can be corrected by loading and resaving them.


TRN - CAYAN Card On File - Now supports refunds.

TRN - DELETE LINE - If a line item is deleted that has a Tag-a-long item then the Tag-a-long item will also be deleted.

MERCDIRECT - Now sends system info as part of the OperatorID field (the clerk number is still sent as the last set of digits in the field).


- TRN - MercDirect - If the payment was PIN based, the program was storing an empty signature record.

- PROD - Reports - Use of fields from Inventory Section was not working when included on the Main Production Item section of the report.

- DBLISTS.EXE - Was not working when run from a UNC path (\\Server\ instead of F:\).

02/01/18 - v8.00 Build 56


CNF - SETUP PINPAD - If the PinPad and the Signature Capture device were set to the same device, then if the PIN Pad is changed then the Signature Capture will be set to the new device type (or erased if the new device does not support signature capture).

CNF/TRN - EXTERNAL AUTH METHOD - Added the "Skip if Amount Under" parameter for Signature Capture on the External Auth Method. If the payment amount is below this value, then a signature will not be requested.

CNF/TRN - Sales Transaction Types - Added the parameter "Disable Customer Display" on the Entry Parameters screen. If this is on, the Customer Display will not be changed by the transaction (nor will the Line Item display on the Cayan Genius device). Note that it does not disable the Security Feed.

TRN - Sales Orders - If in Qty/Ship display mode with nothing being shipped, the program will now display the totals based on the Qty On Order instead of the Total Qty. It will also ignore payments that have been made and transferred to created invoices when displaying the Remaining amount to be tendered.

TRN/FMTR - InvQtyOnOrder field is now available to be printed on sales forms (.NVC).

MESSAGE BAR - Removed borders around fields for a cleaner look. Also the CAPS and NUM fields are off by default (can be turned back in the WS.INI file).


- TRN - Entering only Shipping on an Order that had no line items was not prompting for a payment before creating the invoice.

- TRN - NETePay - Added support for new ServerVersion messaging from NETePay.

- MWGENIUS - If leading zeroes were used in the IP address the Genius Device would not be found. The program now internally strips out the leading zeroes when calling the device (e.g. "" will be called as "")

- POR - RESERVED ORDERS - Looking up Reserved Orders by Vendor Number was not working (this would cause the transaction browse of Reserved Orders by Vendor to also not work since it uses the vendor number).

- POR - MULTISTORE ORDERS - If a line item on a Multistore order was changed and saved, then when updating the Order in each store a new Open Order entry was being created instead of updating the original one. This would cause multiple entries for the same item/order. Note that the DelUtil - Update Open Orders function can be used to clean up the Open Order list.

- INIMERGE - Was displaying the Filter settings and stopping and waiting for a key to be pressed each time it was run.

12/27/17 - v8.00 Build 55


TRN - Credit Payments - If the clerk has the Override Credit Limit security then the default amount Credit Type payments will be the amount left to be tendered even if that exceeds the customer's credit limit (the amount available will still show on the payment list).


- LOGO - Entering KS as part of the serial number was causing it to not be recognized when using the License Key.

- TRN - Credit Payments were always showing the available credit on the payments list (should only show it when it is less than the amount left to be tendered).

- TRN - PAYMENT ENTRY - If a payment is cancelled due to the amount being too much (e.g. exceeds credit limit) and then a different payment type is selected, the default amount would then sometimes be 0.00.

- TRN - MERCURY DIRECT - Added additional error checking when capturing signatures.

- TRN - Shipping - Manually entering shipping on an order that will create a 0.00 invoice was not putting the shipping amount on the invoice.

- TRN/POR - PRICE CHECK MACRO (AO) - Was not checking that the current license was for Advanced.

- IMPROA - The "Display=0" switch was not working so it was always displaying something on the screen.

- FMTR - Fields Can't Overlap was being displayed if the highlighted field had a width of 0 and it was placed right after another field.

11/20/17 - v8.00 Build 54


AR - PARAMETERS (AO) - Added the parameter "Don't Auto Apply New Credit Invoices". If this is on, invoices with a negative amount due will not be automatically applied if their date is after the current closing date. This also applies with [Shift+F8] but is ignored with [Ctrl+F8].

KSR - AUDIT ENTRIES - Added the ability to print what the clerk's security level was at the time the audit entry was made (will be 0 for entries saved prior to this build being installed).

LOGO - ONLINE LICENSE CHECKS - The program will NOT check for license updates by accessing the Keystroke License Server in the Cloud if running an automated process and the display is turned off (Display=Off on the command line).

POR - DETAIL BOX - Added support for Max Qty field from Inventory Item (in Sale Units).

TRN - ON ACCOUNT PAYMENTS - On Account payments (those with type set to Credit) will now display the available balance (Customer's Credit Limit less Amount Due) on the list of payments if it is less than the amount left to be tendered. Also in this case, the default payment amount will be the available balance.

TRN - SORTLINEITEMS [Shift+F2] (AO)- Added support for sorting the line items by the column that the cursor is currently in (instead of just the entry mode). This includes Price, Tax Code, etc.

TRN - SORTLINEITEMS MACRO (AO)- Added the SaleEntryCommand macro "SortLineItems". This can be used to sort the Transaction Line Items by a wide variety of fields including Department, Category, Location, TaxCode, etc.

TRN - TRANSACTION SEARCH MACRO (AO) - Added the ability to search for a transaction based on its Transaction Comment ("TransCommentContains" works the same as "LineCommentContains" but looks at the Transaction Comment instead of the comments on each line item).


- LICID - Entering KS as part of the serial number was causing it to not be recognized when using the License Key.

- KSR - Price Tables - Mix and Match price formulas were not displaying correctly.

- LOGO - LICENSE INFO - If the license files were in the DATA\ directory below the program directory, the program was hiding the "Set license for data..." checkbox.

- POR - DETAIL BOX - if the only field(s) above number 101 that were used were above number 127 then the fields were being left blank.

- TRN - MWGENIUS - GIFT - There was a change in how Cayan was returning the Card Balance so it was not being saved/printed with the payment.

- TRN - RETURN MODE MACRO - This function was not checking the "Enter Returns" security level.

- EDITING MACROS - If PuchaseEntryCommand:EnterPayment was selected it was displaying the list of Sales payment types instead of Purchase payment types.

- TOOLBARSFILE= - Including the path with the ToolBarsFile= switch was causing the file to not load when first entering the program (it would reload properly when switching modules). Work-around is to just specify filename and use ToolBarsDir= switch instead, or use the PreloadToolbars=1 switch.

10/10/17 - v8.00 Build 53

LOGO - Before displaying the payment processing license message, the program will automatically check online for an updated license.

TRN - AGE CHECK - 2D SCANNER - If a 2D scanner is used, pressing Ok on the information screen will automatically click the Ok button on the Age Verification screen.

TRN - MERCURY DIRECT - PARTIAL APPROVAL - If the Skip Approved parameter is turned on then the program will only stop on the partial auth message and then skip the standard Approved message. Otherwise it will flash the Partial Auth message for only 1/2 a second since the same information will be displayed on the Approved message screen. Also, moved the display of the partial approval message to come after the customer signature is collected (if set to do so).

- TRN - MERCURY DIRECT - PARTIAL APPROVAL - If a payment was partially approved (less than the amount requested) and a print button was defined with "Print and Continue" turned on the program would get stuck in a loop trying to reprint the payment over and over again.

- TRN - MWGENIUS - If a the Genius device responded to a payment request with a response that was not recognized (e.g. Bad Gateway) and an earlier transaction had an error response that was recognized, the program was using the payment details recovered from the Cayan server from the earlier payment on the new one as well.

- POR - COMPLETE TRANS - ON ACCOUNT - If Display On Account was turned on, it was showing the total of On Account payments plus the amount left to be tendered. It now only shows the total of On Account type payments entered on the transaction.

- POR - NO PURCHASE TAX - If this parameter was turned on and a previous transaction was pulled up that had a tax that was automatically calculated, then the old tax would be displayed but would be not be used in the Total. It now sets the tax to 0.00 (unless the tax was manually entered).

09/26/17 - v8.00 Build 52


CARD ON FILE (AO) - ADD CARD - The program will check the Sales Payment list to make sure at least one payment is marked as a Card On File payment type. If one is not found a warning message will be displayed.

CNF - CARD ON FILE (AO) - When saving a payment named "Card On File" the program will check to make sure its Payment Type is set to "Card On File".

CNF/TRN/AR - VANTIV - Added support for the ID TECH AUGUSTA EMV reader for processing through Vantiv (Mercury). This device is available on the Touch Dynamic Pulse All-In-One computer.

KSL - PRICE TAGS - Prompt for Qty - When "Labels per Item" is set to Prompt for Qty, the box asking for the Qty now displays the Product Code and Dept Code fields. Also if printing from a transaction, the Trans Line Number is also displayed.

TRN - Line Item Detail Box - Added support for Expected Date from inventory item (field #174).


- CNF - SIGNATURE CAPTURE SETUP - iSC250 w/ EMV - Disabled the port setting since it always uses the one from the PIN Pad setup.

- CNF - TEST PIN PAD - If using the iSC250 EMV pin pad with an IP address and running Test Pin Pad, answering Yes to reset the device would give a com port error (Work-around is to select No).

- KSR - RECEIVABLES AGING DETAILED - Credit Memos Balance Due was printing as a positive number when it should have been a negative number.

- KSR - Sales - Customer Activity - Setting ROA Payments to Summary was causing the column headings for transactions to not be printed.

- POR - DELETE TRANSACTION - Deleting a Purchase Transaction from a previous transaction file was placing the extra transaction that shows the original as deleted in the current transaction file instead of the one it belongs in. This could cause the Purchase Transaction report to get stuck printing the same set of transactions over and over again. (Work-around was to pack the transaction file).

- TRN - CREDIT MEMO - CARD ON FILE - Payment was being limited to the customer's current balance.

- REMDUPES - CLOSEOUTS - RemDupes.exe was not removing duplicate Closeout records.

- STR - "Calc using Price Table" - When transferring back from a store to the master (Store 0) the program was not reversing the change in Cost so the Cost calculated for the Store Transferred To was being used to update the master store. It now inverts the calculation to get the correct cost to apply to store 0.

- STR - "Calc using Price Table" - This function now is only applied when transferring between store 0 and another store (or back to it). It is not applied when transferring between 2 individual stores.

09/06/17 - v8.00 Build 51


CNF - PIN PAD - MERCURY DIRECT - iSC250 - IP Connection - Added support for communicating with the iSC250 on Mercury Direct using an IP address instead of a com port. This allows the device to be connected to the LAN with an ethernet cable instead of directly to the computer (with either a serial or USB cable).

TRN - CUSTOMER - SHOW HISTORY - Added the "Show History..." item to the Customer menu in Sales Manager. Selecting this will bring up a list of all customers that the clerk is allowed to View (even if they can't sell to them). Selecting a customer from the list will display the history report on the screen. The list will default to the customer on the current transaction. However, this function does not change the current customer (or anything else) on the current transaction. Note that it can also run via a macro: RunMenu=Customer-Show History.

TRN - NEGATIVE AMOUNT DUE (AO) - If a Customer has a credit balance the program can now be set to prompt to apply that balance to the current Invoice. In the Transaction-Parameters-Entry screen, turn On the "Prompt to Apply Credit Balance" parameter. Just before entering the first payment, the program will then check if the customer's Amount Due is less than 0.00. If it is, it will display the message "Customer has a credit balance of ($X.XX). Apply it to this transaction?". If [Ok] is selected then an "On Account" payment (the first available Credit type payment) will be applied to the transaction either for the full amount of the transaction or the customer's credit balance amount (whichever is less). Note that if a credit type payment is pre-selected (either from a hotkey or a macro button) then this check will not be done since it is already being set to apply a credit payment.

TRNPMNTS.DAT - Changed the default data file used when creating new data sets to not have Authorization Methods set since the KeyPay auth method is being deprecated.

TOOLBAR BUTTON EDITOR - MACROS - The list of macro functions normally only shows the ones available in the current module. It can now be toggled between that and all functions by pressing the [Tab] key. While in the Configuration Manager module, the program will default the list to show all.


- LOGO - CAYAN PGS - If using Cayan PGS a license warning was sometimes being displayed.

- TRN/AR - CARD VAULT - DISCOVER cards were not being mapped to the correct payment type so would usually be added as a Cash payment.

- TRN - Processed Payment License - The tracking of payment processing when the license has expired was not being reset when the license was renewed. This would cause warning messages to appear as soon as the license expired again.

- TRN - CREDIT MEMO - Card On File - Was not displaying the payment info when the Info button was pressed so could not enter the payment amount.

- RECORD LIST BOXES WITH FILTER ON - If using a filter in a record list box using the down arrow and then up arrow to move through the list would sometimes cause the up arrow to not scroll up or to skip some items.

- PRINTSAL.EXE - The TYPE= switch was being read but not used so it would always print the default transaction type (usually Invoice) no matter what it was set to.

08/21/17 - v8.00 Build 50


Card On File is a new feature that allows a credit card to be saved with each customer record so that it can be used in the future as a payment instead of having to enter the card information in again. Keystroke does not ever see or store any of the sensitive card information when using this feature. The information is entered and stored directly on the Cayan servers using their Web Entry screen and their Cayan Vault service. The customer record only stores a token that allows access to that information when processing a payment through Cayan. Note that you must be licensed to use Cayan as your payment processor (have an Acquiring Merchant Account) in order to use this feature. Please contact SBS or your dealer for more information.

Managing the Card On File for each customer is done by clicking on the screen flag at the bottom center of the screen (will show either "Card On File" if the customer already has a card entered, or "Add Card" if they don't). This flag is only available when viewing a customer's database record and from the Customer Entry and Complete Sale screens in Sales Manager. When this flag is shown, the Card On File management function can also be brought up by pressing [Ctrl+F7].

The Card On File management function is very simple. If the customer does not have a Card On File then it will prompt to add one. If the customer does have a Card On File then it will show the card information and give the option to "Replace Card" or "Delete Card". Note that the information cannot simply be edited, the entire card must be re-entered using the replace function. Cayan does offer a service to automatically update card information if a customer receives a new card from their issuer. Adding/Deleting a Card On File is audited as a Payment Processing entry.

Before a Card On File can be used, a Sales Payment Type must be added to the payments list (from CNF-Tables-Sales Payments Types). When creating the new payment, select "Card On File" as the payment type. Turning on the "Skip Tendered Field" parameter will cause the payment to be processed immediately. Leaving it off will allow the clerk to view the card information (including the amount to be charged) before proceeding to charge the card. Most of the other parameters on this screen will be ignored and Auth Method should be left blank.

When this payment type is used on an invoice, the program will send out a request to Cayan to process the payment using the card information stored in their vault. Cayan will then return a response which will include the type of payment and amount (same as what comes back from the Genius device). Keystroke replace the "Card On File" payment with the actual payment information that was used to process the payment. For this reason, the PIN Pad settings must be set to Cayan Genius and setup properly. However, if not using the Genius Device, once the setting are completed, the PIN Pad can be set back to a different device (or set to None).

Once set up, and if a customer has a Card On File, this payment type can then be used on a sales transaction. Note that recurring sales transactions, selecting this payment type will save the payment as Card On File and won't charge the card until the recurring transaction is copied to an invoice.

The Card On File payment type will only be displayed if a customer is assigned to the transaction. Also, to use a Card On File payment type on a transaction, the system must be licensed to process through Cayan. If the customer does not have a Card On File when it is used, the program will ask if you want to add one (but only with Keystroke Advanced POS, other licenses will state that the Advanced license is required). When this payment type is used, the system will ask Cayan to process the Card that is On File with them. If approved, the program will automatically switch the payment type to match the one for the card that was used (similar to using the Selected By Customer payment with the Genius device).

CNF - PARAMETERS - Added the "Disable Card On File" parameter. Turning this parameter on will cause the program not to display the "Card On File" and "Add Card" screen flags and will cause the Card On File management screen to not come up if [Ctrl+F7] is pressed.

CLOSEOUT - CARD ON FILE PAYMENT - Payment types marked as Card On File will not be displayed in the Closeout module since when used on Invoice they are always converted to another payment type that matches the card that was actually used.

CNF - SECURITY LEVELS - DATABASE - Added the "Card On File (Add/Edit/Remove)" security level (default is same as Edit Customer). If the clerk does not meet this, the "Add Card" screen flag will not be shown. However the "Card On File" flag will so they know they can use it as a payment. But they will receive an Access Denied message if they try use the management function. Note that this does not affect the ability to use the Card On File as a payment (that is controlled by the payment type itself).

KSR - CUSTOMERS - Added new calculated field "HasCardOnFile" this will be 1 if the customer has a Card On File and 0 if not. It can be printed on a report and/or used as a filter.


LOGO - Added support for entering Product IDs that are more than 30 characters long.

CNF/TRN - CAYAN GENIUS - Added the parameter "Disable Auto EMV Print Block". If this is On and no EMV fields have been set on the receipt form, then the program will not automatically add them to the bottom of the receipt (which is normally required by merchant services provider).

DELUTIL - Update Qty Allocated/Layaway/On Order - Added support for Matrix Items.

TRN - MERCURY DIRECT - GIFT CARD PAYMENTS - Enabled the Check Balance button. If used and the balance is less than the default amount, the amount will be changed to match the balance.

STR - PARAMETERS - ENTRY -Added a "Calc using Price Table" parameter for updating cost fields from Line Item Cost when saving a store transfer. If this is set to a price table, then the formulas from that price table that are based on a cost field will be used to calculate the new cost as it is updating the inventory item. Note that this does not apply when updating inventory in Store 0.


- AR - STATEMENTS - BALANCE FORWARD - CREDIT MEMOS - If a credit memo from a previous period was used up in the current period, it was not being included in the balance forward amount.

- AR - STATEMENTS - LINE ITEM COMMENTS - Setting the flag to Comment (Flag=1) on the Line Item Comment field would cause the statement to not print due to an error. (Work-around was to leave the Flags on the field as 0 but then only the first line of the comment would print.)

- CNF - CAYAN GENIUS SETUP - The Print Immediately parameter could not be turned off.

- CAYAN GENIUS - LINE DISPLAY - The following characters cause problems with formatting the Line Item Display on the Genius device and so will be substituted with another character (or space) when being sent to the device: [ ] { } " ^ \ | `. Also if both & and % are in same field then % is changed to P.

- LOGO - MAINTENANCE MESSAGE - The Maintenance Message was not able to be disabled.

- TRN - MERCURY DIRECT - GIFT CARD PAYMENTS - Voiding gift card payments was not working correctly.

- TRN - MERCURY DIRECT - GIFT CARDS - The "Decline Partial Auth" parameter was not being checked when using a gift card as a payment.

- STR - Bulk Items - Store transfers were updating the qty on items marked as "Bulk" which should not have been done since "Bulk" items should be treated the same as "Service" items (just a different way to classify them but get the same result).

07/24/17 - v8.00 Build 49


- TRN - Checking on license info would sometimes show the "KSTRHDR.DAT is in use message" (from build 48).

- TRN - Mercury Direct - Error 10 adding Tip - Adding a tip to a payment could cause an Error 10.

- TRN - MERCURY DIRECT - GRATUITY - When editing a payment to add a gratuity amount to it, leaving the Gratuity or Total field by not pressing [Enter], [F10], or clicking on the [Ok] button would cause the program to not recognize the additional amount when leaving the payment screen so the gratuity would not be processed nor added to the transaction.


TRN/AR - Mercury Direct - The payment print buttons can now be set to use a different print button when the payment is declined. To do this, create a separate print button and include "DECLINED" in the name. Note that "EMV" must also be in the name for payments processed using an EMV auth method. This button can be assigned the same number as the regular print button so that it will be hidden on the payment screen but it will still be used when displaying the processing results. If a payment is declined, the reason for the decline will placed in the payment Terms field when printing a receipt form.

TRN - MERCURY DIRECT - Payment requests must be cancelled on the PIN Pad device. If [Esc] is pressed, the program will now flash a message stating so. Note that if there is a problem with the PIN Pad then pressing [Esc] 4 times will exit out of the payment request but Keystroke will not be able to inform the device to cancel the payment. You must press Cancel on the device or wait for it to timeout.

TRN - SCREEN FLAGS - Adjusted the location of the screen flags (e.g. Comment, ClerkName) to make room for "Card On File".

SCREEN FLAGS - The more common screen flags that can be clicked are now shown with the text underlined.

LIST BOXES - Disabled use of Scroll Lock key to toggle between single and multi-letter quick search mode.

TRN/AR/LOGO - Changed the messages displayed on the screen when using KeyPay to not show as many of the ones that just quickly flash.


- ALTCODES LIST - Hidden - The Alternate Codes Lists were show entries that were attached to hidden database records. It now skips these.

- AR - ROA RECEIPT - PREVIOUS BALANCE - If the receipt was saved before it was printed, the New and Previous Balance fields were not correct (the payment amount was being added to them).

- CUSTOMER LISTS - Pressing [Ctrl+F6] to view a customer's contacts would cause an error.

- KSR - AUTORUN CUES from COMMAND LINE - Running cues from outside of the program (e.g. from the command line) was not showing database records that had a View Security Level assigned to them (since a clerk is never entered in this mode). The program now ignores the ViewSecurityLevel when running in AutoRun mode.

- KSR - Price Tables Reports - The "Current Formulas Only" parameter was not working.

- MWGENIUS - If the Line Display was set to "On w/ Upload" and a non-Genius payment was made, then a message stating "Cannot cancel in Thanks Screen" would be displayed. The program now checks for this screen and does not send the cancel command since the transaction has already be cleared (uploaded in this case).

- TRN - Mercury Direct - Gift Cards - Was not saving the correct reference number from the approval process. This would disable the ability to void gift cards from previous transactions.

- TRN - GIFT CARD - ISSUE/RELOAD - Manual Entry of the gift card number on screen when using the Cayan Genius as the PIN Pad was not working.

- TRN - COPY $ SHIPPING TO INVOICE - The "Copy $ Shipping to Invoice" parameter was not working correctly when the Shipping amount on the original Order was manually entered.

- TRN - Printing Credit Memo - The Customer eMail and eMail(Alt) fields were always printed as blank when printing a Credit Memo receipt from the Sales Manager (an ROA receipt from AR was printing the correct information).

- TRN - CAYAN GENIUS - Manual Card Entry on Web Form, some of the special characters (&, ', ") were not being displayed correctly.

- TRN - Warn if Previous Transaction - If a previous transaction was found and loaded, the Transaction Browse function was not locking on the customer.

- VAR - OPEN VARIANCE - AUTOFILL - MERGE - Sometimes data sets would have items that were marked as not counted yet but that still had a physical count qty on them. If the same item was entered again and then merged together, the hidden physical count qty was being merged together with the new count. The program now sets the physical count field on each line to 0 if it is marked as not counted yet when loading the open variance.

06/05/17 - v8.00 Build 48


- TRN - Error 10 adding Tip - Editing a transaction and Adding a payment that includes an additional payment (e.g. Tip/Gratuity, Discount) would cause an Error 10.


CLERK DATABASE - The Messages flag that appears at the bottom of the screen when a clerk has anything in their messages can now be clicked to bring up the clerk messages box (same as pressing [Ctrl+F9]).

TRN/POR (AO) - PRICE CHECK - Added a new Entry Command Macro to pop up a Price Check box. From there an Item can be entered/scanned/looked up in order to view its price. In Sales the price will be based on the current transaction (customer and items already included). In Purchasing it will show the current price. Note that the Price Check function will not alter the transaction in any way.

TRN - CAYAN GENIUS - The status screen will now show additional information if available from the Genius device. It may now show "Payment Data Captured" and "O.K. to Remove Card".

TRN - MERCURY DIRECT - Changed the program flow to create and destroy all programming memory resources in MercDrct.dll each time a payment is processed instead of re-using a common shared memory object for the dsi*.ocx files.


- KSL - PRICE TAGS BY SALES / PURCHASES - If Prompt for Qty was on, the program would do this before checking the Filter (if there was one). Even if a qty was entered, the filter could still block the item from being printed. It now checks the Filter first and will not Prompt for Qty on those items that will be skipped.

- TRN - CUSTOMER ENTRY BY CONTACT CODE - If the customer was looked up by entering a Contact's Code in the Code field on the Customer Entry box, the program was finding the contact and customer but was then starting with the default contact instead the one who's code was entered.

- TRN - Simplified Customer Entry - The Customer List By parameter was not being used (it was always sorting the customer list based on the current field).

- TRN - The TransHasBeenReversed flag was not being set on the original transaction when a reversing transaction was being saved. Note that this flag is only used on reports. When creating a new Reversing transaction the program always manually searches to see if another one already exists.

- TRN - Line Item Detail - Total w/ Tax - This field was not working correctly when being used to calculate the Qty to be sold (does this when starting Qty is 1). The Line Item Detail screen showed everything correctly but when exiting the Qty on the actual line item on the transaction was not being changed.

- TRN - RESTRICTED PAYMENTS (FOODSTAMPS) - SPLIT TENDER - Once a restricted payment had been applied to an invoice its amount was reducing the amount left that could be applied by 2 times its amount. Also if another regular payment had already been applied, the amount displayed on the list for the restricted payment could exceed the total left to be applied to the invoice. It will now show the actual amount left that can then be applied with the restricted payment.

- POR - UPDATE AVG COST - If the cost of an item that was being received was 0.00 the "Don't Set Last Cost to 0.00" parameter was being checked even though this parameter is only for updating Last Cost. The program will now average in the 0.00 items being received into Avg Cost so that the QOH * Avg Cost correctly reflects the actual cost of the items.

05/08/17 - v8.00 Build 47


CNF/TRN/POR - SECURITY LEVELS - Added security levels under Sales Manager and Purchase Manager for "Allow Ignore of Original Transaction Changed". If the clerk does not meet this level, then the Ignore button will not be displayed on the Original Transaction Changed warning message. The default value is 5.

LBL - LOT QTY - When printing Price Labels for items that include Lot Qtys in the serial number list. the program will now expand the list to include multiple copies of the same serial number to match the lot qty and will no longer print the lot qty amount itself.

TRN - MERGE SAME ITEMS - Will no longer merge items marked as Use Scale.

TRN - ENCRYPTED CARD SWIPE - Added support for the IDTech Secure Mag encrypted card swipe when used in Keyboard wedge mode.


- CNF - AUTH METHOD - If the Test Server button was used but failed, it could not be used again without restarting the program.

- TRN - Deli Scale Items - The flag that marks that a line item was entered using a barcode from a deli scale (back calculates Qty based on Amount embedded in the barcode) was not being set. Note that it was being set if the barcode was a variable qty type which includes the qty.

- TRN - Payment hotkeys were sometimes not working if payments above it were being hidden.

- TRN - CAYAN GENIUS - If Line Item Display is being used but not uploaded then the program would sometimes display a Cannot Cancel Payment message. This function is used to clear the line item display. The program will now wait for the Genius Device to be in idle mode before attempting to cancel the payment to clear the line item display..


- DELUTIL - The /G switch was case sensitive (had to be all upper case).

- STOREMRG/RECMERGE - CREDIT MEMOS - Using the /NOCUST switch was causing the Credit Memos list to not be updated when merging in ROA payments.

04/21/17 - v8.00 Build 46


TRN - CAYAN GENIUS - EBT - Added support for EBT-Cash when using the Cayan Genius device.

TRN - CAYAN GENIUS - GIFT CARDS - MANUAL ENTRY - Added support to Redeem a gift card using Manual Entry on the screen (Manually entering it on the Genius device works fine). In order to do this, a separate payment type that is not associated with the Genius device must be added (it does not need an auth method). Then a Gift Card trigger needs to be attached to that payment in order to bring up the Gift Card Entry box.

TRN - MERCURY DIRECT - If an Error occurred while waiting for a response then the response was being logged as No Response, now it will log the error message.

CNF - CAYAN GENIUS SETUP - Instead of showing a separate warning message for each setting that is missing (Gratuity, Donations, Discounts) the program now displays them all in a single message.

CNF - PINPADOFF - If the PINPadOff command startup switch is On then the PIN Pad setup screen will display a message stating so when entering it. Also the Test button will be disabled.


- TRN - MERCURY DIRECT - If a payment that was mapped to the Mercury Direct authorization method was hidden (due to parameters) then using that payment on the device would cause a different payment type to be saved as the payment that was used.

- MONEY VALUES NOT DISPLAYED - If the Currency Symbol was somehow set to an invalid character, then the fields that used it were not being displayed.

03/28/17 - v8.00 Build 45


- NULL DATES - Birth Day fields that supported the Null character were not allowing the entry to remain null. Also if a field contained a Null Date but was not marked to allow Null Dates, the program would lock into that field until it was changed (entering 0 was usually the best way to proceed). (from build 42).

- TRN - Error 10 adding Tip - Adding a payment that includes an additional payment (e.g. Tip/Gratuity, Discount) would cause an Error 10 if there were already a number of payments on the transaction (usually about 6).


LOGO - ONLINE LICENSE CHECKS - The program will now automatically check for license updates by accessing the Keystroke License Server in the Cloud at least once every 30 days (more often if the maintenance is about to expire). Note that in order for the license check to work the system's License Key must have been entered. This can be done by pressing [Shift+F8] from the main logo screen (either from the Menu or the Enter Clerk box).

DBM - List Sort - This setting will now be used when looking up a record from a database field.

DBM - SEARCH/REPLACE = VALID ENTRIES LISTS - When running the search and replace function the program will no longer check the valid entries list to make sure the new value is valid (since it is assumed that someone using this function will be entering the desired values).

CNF - SIGNATURE CAPTURE - Added line to the list of devices in order to separate the newer ones from the older ones.

FMTR - PRINT SIGNATURE - If the field on a form has its flags marked to "Print as Signature" and its Alignment field contains "NB" then it will not print a box around the signature.


- MACROS - RUNMENU - The RunMenu= macro was not seeing the override security level on individual menu functions (e.g. the Backup function in CNF).

- KSR - EXPRESS - INVENTORY ANALYSIS - Extended Sorting - Selecting one of the Extended sorts was sorting by a different field due to the removal of the options to sort by Manufacturer and ID Number.

- TRN - CAYAN GENIUS - MANUAL WEB - Special Characters in the customer information (e.g. "&", "<", ">", "'", """) were causing the interface not to work correctly. The program now uses escape sequences for these characters (e.g. "&") when making requests for Manual Web Entry (requests to the Genius device still use the standard HTML numeric escape codes).

- TRN - CAYAN GENIUS - MANUAL WEB - Requests and Responses were not being logged when using the Cayan Web Transport interface (for manual entry).


- STR - IMPORT LINE ITEMS - Merge Line Items parameter was not able to be set correctly. Work-around was to use the Default Qty button instead which would set the Merge Line Items parameter. (Note that the Default Qty button should not have been there in the first place).

- PROD - Colors on the main line item screen were not correct.

02/21/17 - v8.00 Build 44


- KEYPAY - CHANGE CRYPTOGRAPHIC KEYS - The Change Cryptographic Keys function makes the data files unreadable if run from KeyPay.exe for Settings Only (Settings=1 command line switch). Running KeyPay in Settings Only mode does not initialize the code to work with the data files (since it normally doesn't need to). However, running the "Change Cryptographic Keys" function would then crash in the middle since it does need full access to the data files. The program will now initialize the code correctly before this function is run even when KeyPay is in Setting Only mode.

- NULL DATES - Date fields that supported the Null character were not allowing the entry to remain null (from build 42).

- GOOD/BAD CHECK LIST - was not working due to the new requirement from build 42 that the auth code be 5 or 6 characters. Fixed by also allowing O.K. which is what the Good/Bad Check list function uses to approve a payment.


TRN - Auto-Fill On Edit - If the "Auto-Fill On Edit" parameter is on and at least one item on an order does not have enough QOH to ship the qty on order, when the transaction is brought up for editing, and the "Stock Shortage Warning" parameter is on, then the program will display the message "One or more items on this transaction cannot be fully shipped". The message will by in a locked dialog box that requires the key to be pressed to close it and continue on.


- AR - CAYAN GENIUS - If the first payment type for Genius had the "Skip Tendered Field" parameter turned off then it was not displaying the window to enter the payment information in. (Actually fixed in Build 43 but was not included in Readme.txt).

- CLOSEOUT - HIDDEN PAYMENT TYPES - If the "Include ROA Payments" parameter was on then all payment types were being displayed even if they were not marked as "Available On Sales" or "Available on ROA Payments".

- CLOSEOUT - Start/End times were always rounding to the nearest minute. The program now retains the seconds (even though not shown) as long as the Date and Time fields are not changed.

- KSR - Payables - Was showing the Include ROA Payments parameters even though this does not apply to Payables.

- TRN - EDIT PAYMENTS - If a transaction is edited and a payment is deleted and then a new payment is added with the same date and a similar time (within 1 minute) and the transaction is saved and then edited again and then the payment's date is changed, the payment would be listed twice on reports and in the closeout (once with the original date and once with the new one). Note that the payments on the invoice itself would be correct.

- POR - Base Price Total and List Price Total field on Forms were not including the Order Multiplier from the line items.

- VAR - Merge Un-Posted - Was not working correctly if there were other Unposted files (VAR#.DAT) that did not have any matching items. Work-around was to rename the other files. Note that the [View Items] button on the merge variance message can be used to see what it is going to do.

- CHGNUMS - If "Change Number Above" was greater than the "Starting New Number" then the program would get stuck on the message stating not to do that.

- PRINTSAL - Was not working with transactions that had Gift Cards on them (would generate an error).

01/31/17 - v8.00 Build 43


- DATES - The program was not accepting the (" / / ") as a valid entry. (From build 42)


- TRN - Auto Quick Save - The "Payment less than total, save as On Hold" (where On Hold is the Quick Save transaction type) was allowing payments to be saved on a transaction even if the Quick Save transaction type was set to not support payments. The program will now block this and display the message "The current settings don't allow Quick Save on a transaction with payments".

01/26/17 - v8.00 Build 42


- TRN - GIFT W/ GENIUS - The change in build 40 that allows the card to be swiped (or manually entered) on the Genius device was making it more difficult to manually enter the card info in Keystroke (and blocking the ability to redeem a gift card by processing it through KeyPay) if the Genius device was also set up. The program will now look at the Authorization Method on the Gift Card Trigger. If it is set to process through KeyPay (or any other method other than "None") and the "Card Reader" on the Authorization Method is set to "None or Wedge" then the program will allow the card info to be entered on screen and will process it through the specified method. With this change, if gift cards are to be always processed through the Genius device (so KeyPay does not have to be used) then the Auth Method on the Gift Card triggers should be set to "None".


TRN - MERCURY DIRECT - MercDrct.dll - Changed the internal communication path to go through the new Programs\MercDrct.dll file instead of directly to the EMV and PDCX .ocx files from Datacap. This allows for better error recovery and better logging of the problems that may occur.

TRN - Error Checking - added a new global error checking routine to capture unhandled errors while still in the sales entry screen so that the current transaction data will not be lost if a major error occurs (usually when a payment processing module fails). This will also allow for better information to be logged in the Errors.log file.

TRN - PAYMENT ENTRY - When entering a new payment that has the Auth Code field displayed, it can now only be saved with an authorization code of 5 or 6 characters.


- CLOSEOUT - REPORTS - The title on each of the different reports was always printed as CASHOUT REPORT.

- CNF - MERCURY DIRECT - Test PIN Pad - Removed test for processing a payment via PDC as it does not work without a test account.

- TRN - GIFT CARDS - When editing a gift card payment the program was matching it up with a gift card trigger even if the payment type number was different.

- TRN - MERCURY DIRECT - $0.00 payments cannot be processed and would return an "Invalid Field, Auth Amount". The program will now display a message that the amount cannot be $0.00 instead of trying to process that amount.

- TRN - MERCURY DIRECT - The internal object that runs the Mercury Direct processing was not always being destroyed when exiting the modules so it was not being re-initialized when entering back in. This would cause the program to not use new settings without exiting the program or running the Test Pin Pad button in Configuration Manager.

- TRN - MERCURY DIRECT - Print Button - If the print button was set to "Print Immediately" and "Print and Continue" and the payment was denied, the program would get stuck in a loop constantly printing the receipt (since it can't continue out of the payment box until it is approved). It will now ignore the Continue parameter if the payment was not approved.

- TRN - DELETE RECURRING PAYMENT - If the payment had been processed through Cayan Genius or Mercury Direct in order to get a Recurring Token, then it was being processed as a return instead of simply removed.

- TRN - CREDIT MEMO - If the PIN Pad was set to Genius, vx805, or iSC250 then changing the payment type when entering a credit memo was not automatically bringing up the Info screen (the Info button needed to be pressed).

- TRN - RESTRICTED PAYMENTS (FOODSTAMPS) - Restricted payments already on the transaction were reducing the amount left that could be applied by twice the amount that had already been tendered.

- TRN - AGE CHECK - Entering an invalid date would sometimes cause the birth date to be 12/31/84 (especially if D.L. Scan was enabled).

- TRN - Global Max Price was not always working correctly if the "Fixed Decimal Point" parameter was on. In which case entering 2499 as the price would compare $2,499.00 to the max price instead of $24.99.

12/20/16 - v8.00 Build 41


- AR - Authorization Required - This message was coming on when editing a payment (or applying a credit memo) if the payment did not have an auth code (which cash and usually checks do not). This was blocking the ability to apply the credit memo or edit previous ROA payments.


CNF - MERCURY DIRECT - Test PIN Pad - Will now ask to Re-Initialize the device. Answering Yes will use the PDCX interface to reset the device (this usually takes about 20 seconds).

LOGO - Decreased the time it takes to recalculate the Tax Percentage on Tax Tables when entering the program.

LOGO - Changed the name of the "Keystroke Product ID screen" to "Set Keystroke License". Also the Product ID field is now hidden until the "Enter Product ID Instead" button is pressed.

TRN - SIGNATURE CAPTURE - Added more messaging as signatures are being processed in case there is a delay (or error) in one of the steps.


- KSR - Transactions - Tax Tables - Districts - This report can take a long time if there are a lot of Tax Tables and Districts. While it was calculating the totals, it was not updating the screen so Windows would change the title bar to: (Not Responding). Added updates to the screen to eliminate this and give the ability to Cancel the report instead of waiting for the calculations to be finished.

- POR - Line Item Base Price and List Price on Forms - Each item's Order Multiplier was not being applied correctly when printing the Base Price, Base Unit Price, List Price and List Unit Price fields on Purchase Forms. (from build 28)

- TRN - RECEIPTS - NonSale - The Mark-down from Base Price and List Price fields were being inflated by NonSales Items (the price of the NonSales items was being added in as part of the Mark-down).

- TRN - Credit Memos - The program was still allowing payments that were marked to show the Auth Field to be saved even if they did not have an Auth Code. The program now displays the Payment Authorization Required message in this case. Also, displaying the Auth Code field was being based on the Parse Reference parameter instead of the Show Auth Field parameter.

- VAR - Menus were staying off if cancel was selected after trying to exit the module and the "changes will be lost" message appeared.

11/30/16 - v8.00 Build 40


TRN - CAYAN GENIUS - GIFT CARDS - Gift Cards can now be Issued and Reloaded (and do a Balance Check) using the Genius Device instead of having a separate input method (manual, barcode, or mag stripe reader). No changes need to be made with the settings. The program will automatically use the Genius device for card input if the "Card #:" field is left blank.

TRN - DISPLAY SIGNATURE - The program will now lock on the signature display window until it is closed. This is to keep it from being hidden behind the main program. Note that you can press any key or click anywhere inside of that window to close it.

TRN - CREDIT MEMO - The program will no longer allow a credit memo for $0.00 to be saved (or printed).


- DATE ENTRY - Using +#M or -#M (where # is a number) was not working correctly if the month you were going to did not have the day that it was suppose to jump to (e.g. from 12/31, -1M would give 12/01 instead of 11/30).

- AR - AUTHORIZED PAYMENTS - If the amount was entered on the ROA payment and then a payment type that required authorization was selected and the payment was declined, the ROA payment could still be saved with that amount. The program no longer allows an ROA payment to be saved if it requires authorization but has not been approved.

- CLOSEOUT - REPORTS - Printing to a PDF file was not working.

- CNF - Payment List - The list of available payments that can be selected for a variety of settings was including payments that had been deleted. (Except the Tables-Payment List itself which was showing just the available payments.) Work-around was to not select a payment that has been deleted (they would always be at the end of the list).

- DBM - Search and Hide/Delete - The message warning that a record is active was showing the record number instead of the action that was being done.

- TRN/AR - GENIUS - When the Cayan Genius payment type "Manually Entered Payment" was selected and the customer had a negative balance, the program was always using the Cayan Web Form instead of the Genius device.

- TRN/AR - CAYAN GENIUS - Manual Entry - If the customer's Address, Zip or Name contained any special characters (like comma or ampersand) then they were not being tokenized (converted to a numeric format) which would cause a No Response error when getting the Transport Key from Cayan when requesting a Manual Entry on the Genius device. From Build 38 when this feature was removed since it doesn't work with their Web Transport interface, now the correct formatting is done based on which Manual Entry method is being used.

- TRN - MERCURY DIRECT - Some of the requests made to the Mercury Direct system were using their own separate control instead of the shared control that most payments are processed with. In order to reduce the amount of resources that are created and released, all Mercury Directory requests now use the same shared control.

- TRN - MERCURY DIRECT - VOID EBT - EBT payments cannot be voided/reversed through the processor and were getting a No Connection to Any Server error when one was attempted. The program now displays a message "Can't Void EBT payments" instead.

- TRN - Gift Cards - Void - If using the Transaction Reverse/Void function the program was trying to void gift transactions and getting a denial error instead of displaying the message that they cannot be voided.

- TRN - GIFT CARDS - Re-saving a sales transaction that had Gift Card items on it where they were saved as payments but were displayed as line items was creating a new payment record in the data file each time the transaction was saved again. This was only really noticeable on the Payments and Closeout reports as the transaction would only show the latest record saved. The earlier duplicate records can be removed manually via the DelUtil.exe module. (From build 37)

- TRN - Edit Payments - If a transaction was saved and then edited and a payment was removed and another one added with a same date and a similar time (within 1 minute) the payment that was removed was not being deleted and the transaction would still be attached to it instead of the new payment(s).

- TRN - SALES ORDERS W/ DELETE FILLED LINE ITEMS - Payments previously made on a Sales Order where items had already been shipped and removed from the order (due to the Delete Filled Line Items parameter being on) were causing the Make Change routine to kick in (since Delete Shipped Line Items causes the Total for the order to be reduced). The program now recognizes this and ignores the previous payments when additional items are being shipped.

- MATRIX SCREENS - The inventory fields on matrix screens were showing the wrong information (the field number on the screen was off by one). The screens will automatically be corrected when entering the program.

- TOOLBARS - ToolBarOnTop - If a toolbar was not marked as visible, the ToolBarOnTop command would sometimes not show the toolbar the first time this command was called.

11/02/16 - v8.00 Build 39


- TRN - MERCURY DIRECT - Fixed Error 20 from build 38 when processing Gift Cards with the Mercury Direct interface. Error would also happen with EBT, Recurring, and Adjustments and some Voids.

10/27/16 - v8.00 Build 38


- MERCURY DIRECT - STUCK IN RESET - The reset command is sent to the PIN Pad device to both clear out any card/payment information as well as to check that a card is not inserted in the chip reader. If the reset takes more than 3 seconds, then it is assumed that the delay is because a card was still inserted in the device. In this case a reset is supposed to be sent again. The problem was that if the system/device was causing the reset to take longer than 3 seconds even if there was no card in it, then it would get stuck constantly resetting the device until it was able to do it in less that 3 seconds. The program no longer makes more than one additional reset request even if the delay is more than 3 seconds.


AR - Amount Applied - Added support for [Ctrl+Space] and Right Click with Mouse to toggle Amount Applied (similar to [Ctrl+Plus] and [Ctrl+Minus]).

CLOSEOUT - Summary Report - Changed the name of "-Order Deposits Made" to "-Other Deposits Made" since they are payments on any transaction type other than Invoice or Layaway.

CNF - PRINTERS - FILE or PDF - Added the parameter "Warn if File Exists" when a printer port is set to File or PDF. If this is on, then before the output is started, the program will check to see if the file already exists. If it does, then the program will stop and display the message that the file already exists and ask if it should Proceed or Cancel.

KSR - PRINTERS - Append Mode - Added support for the "Append Mode" flag on printers when the Port is a file.

POR (AO) - Case/Each - "Each" line items created with this function will update the inventory item's Last Cost field if the line item before it is not its "Case" item. (i.e. If an "Each" line item also has a "Case" line item on the purchase then it will not update the Last Cost field).

POR - Detail Display - Added the ability to display Qty values in Sales Units and also User fields from the inventory record. See Doc\DetBox.doc for more details.

TRN - MERCURY DIRECT - LOG FILES - Added the name of the type of request being made to the header portion of the log entry to make them easier to read.


- AR - ROA Receipt - Credit Memos - Reprinting an ROA Receipt for a Credit Memo was not printing the correct Customer Balance.

- CAYAN GENIUS - Manual Entry - If the customer's Address, Zip or Name contained any special characters (like comma or ampersand) then they were being tokenized (converted to a numeric format) which the Cayan Manual Web entry screen did not understand. The program now just sends these fields as is.

- LOGO - Out of Disk Space - Some drives that were over 2TB where causing the Warning #204 . The program now uses a different method to test for available disk space. (Work-around was to use the /NOD switch to cause the program to not check for disk space).

- POR (AO) - Case/Each - If there is only an "Each" line item then the price shown in the title was not correct.

- POR - CASE/EACH (AO) - A Child Item (one that has a Parent) cannot be used with the Case/Each function. If the Case/Each function was attempted with a Child item the message that it could not be used was confusing (said the reason was the Order Multiplier was 1). Changed the message to say that it is a child item.

- TIMECLOCK - BIOMETRICS SCAN REQUIRED - If the Clock In function was brought up automatically after a clerk had Logged In, the program was not forcing them to have confirmed their identity via the biometrics scanner if their security level requires them to. Also fixed problem from previous versions that it was asking for a clerk's password (or scan) at this point, even if they had scanned in already.

- TRN - Gratuity - When adjusting a payment by adding a gratuity to it, if there was already 2 payments on the transaction adding the 3rd for the gratuity would cause an error and the updated payments would not be saved.

- TRN - CREDIT MEMO - After selecting the payment type the program was not automatically activating the Info Button.

- TRN - MERCURY DIRECT - EMV - The UserTrace field was not being sent (which contains the Version, Serial Number and Machine Number).

- TRN - COMPLETE SALE - SHIPPING - Deleting the amount in the shipping field was not working (not going to 0.00) if there were no parameters set to automatically calculate the shipping amount.

- TRN - OPEN SALES ORDERS - COMPLETE SALE SCREEN - AMOUNT REMAINING - If a Sales Order had already had some items shipped on it but no items were being shipped now, then it was showing Remaining amount based on the original order qty instead of the amount left. Also, if only a Shipping amount was entered without any items being shipped the amount Remaining would be displayed as 0.00.

- TRN - MERCURY DIRECT - GIFT CARDS - The Decline Partial Auth parameter was being used backwards (if On then Partial Auths were allowed).

- STR - INVENTORY UPDATE PARAMETERS - When saving the Inventory Update Parameters some of the settings were not being saved correctly. The setting for "Comments" and "Selectable Comments" were being saved the opposite of what they were set to on the screen. "Avg Cost" was being saved as what "Selectable Comments" was set to on the screen and "Last Cost" was being saved as what "Avg Cost" was set to on the screen.

- PRESSING [Ctrl+Space] was sending the key twice through the program.

09/19/16 - v8.00 Build 37


LICID/LOGO - The Get Product ID screen now supports the retrieval of the license information from the online Keystroke License Server (via the internet). Instead of entering the full Product ID code, the smaller License Key can be entered and then the Retrieve button will retrieve the Product ID from the License Server. Once this is done successfully, the program will remember the License Key so future license updates can be done without entering additional information.

LICID.EXE - Has been moved to the Programs\ sub-directory below the standard program directory. It now supports the use of the online Keystroke License Server to retrieve updated license information via the internet. This program can be run by itself or via the [Shift+F8] key from the Logo module.

LOGO - Online License Update - License File Locked Message - While retrieving the license information from the internet, the KEYSTROK.DAT file is used to mark that this function is in use so another machine does not try to use it at the same time. If this file remains locked, the program will display the message "License File is Locked". Canceling this message will then bring up a message asking to Force the license check, skip the check, or try again.

AUDIT ENTRIES - If creating an Audit Entry causes an Error 52 (usually due to a temporary network problem) the program will no longer display an error message on the screen (which causes the transaction files to remain locked). Instead it will write the error to the Errors.log file and cache the audit entry to be written again at a later time.

POR - Calculate Cost - No longer changes Qty on items marked as No Fractional Qty. If the Amount column is changed on a line item and the Qty is 1 and the item is marked as No Fractional Qty then the item's Cost is just set to the Amount entered instead of back calculating a new Qty.

TRN - AUDIT AGE CHECK - When Confirm Age box is completed, an audit entry will now be recorded using the Payment Processing category (so that it is always on and because the details are not structured for this type). The message will include the birthdate, the Age comment, the transaction number (may not be the final number that the transaction was saved as) and the Inventory Item that brought up the screen. If the "Over Verification Age" function was used then the birthdate will have a "*" in front of it and the words At Least will be included with the age comment. When running the audit report, the Payment Processing entries must be turned on to see these entries. But not that they will be labeled as "Age Entry" instead of "Pymnt Proc".

TRN - CUSTOMER ENTRY - Display Comment - The comment display box usually hangs below the customer entry box and resizes based on how much space is available. Now if the box is moved up a few lines, then it will always display with a height big enough for 6 lines of text to be displayed.

TRN - COUPON ITEM - Added limited support for the new GS1 DataBar coupons (in addition to the older UCC Code 5 coupons). The program will match any item whose Company Prefix matches the Coupon's Company Prefix but the check is only done on the first 5 digits (the Company Prefix is already part of the UPC code which must be recorded on the Product Code field on the inventory items). The coupons must be for a dollar off amount and the minimum required must be based on qty. Coupons with additional requirements or that add different items are not supported.

COMMANDLINE - RUNAS= - Added support for RunAs=ExpressTest which will as a plain Express license (the Mods license field will be ignored). To be used for testing and demonstrating Express when the system has an Advanced license.

COMMANDLINE - MD= - Added support for MD=date (where date is the Maintenance Date). This causes the program to treat the Maintenance Date to be whatever was entered with the switch (as long as that date is prior to the actual date embedded in the license). To be used for testing purposes.


- AR - EDIT ROA PAYMENTS - ROA payment that had been captured were not always being recognized as already processed. This would cause the payment to sometimes get reassigned to a different payment type and/or try to process the payment again when editing the ROA payment.

- KSR - Alternate Codes Filter - The Filter was not being checked when running a Database-Alternate Codes report.

- PRODUCT ID - Updating the License information by entering a Product ID inside of Keystroke was not working (work-around is to run the LicID.exe program instead).

- TRN - MERCURY DIRECT - GIFT REDEEM - The Decline Partial Auth parameter was being used backwards. Having it On would allow partial Auths and having it Off would decline them.

- TRN - PAYMENTS - If a payment was added to an invoice and there was another invoice with the same customer and transaction number that had a payment with a similar time stamp (within 2 minutes of each other), then the program was overwriting the payment record from the other invoice. To avoid this, the program will no longer search for an existing payment when saving a new one.

- TRN - MERCURY DIRECT - While a payment is being processed Keystroke cannot accept input from the keyboard or toolbar buttons. However, pressing a toolbar button could cause its macro to be cached and run after the processing was completed. The program now clears any pending macros when payment processing is completed. (It was already clearing any pending keys that may have been pressed during that time.)

- TRN - RESTRICTED PAYMENTS (PAY FORMULAS) - Once a restricted payment had been used, the program was not displaying the amount left for the payment type (kept displaying the original eligible amount).

- TRN - MERCURY DIRECT AUTH METHOD - If there was more than one Mercury Direct Authorization method in use and restricted payments (Pay Formulas) were also in use, the formulas (or lack there of) from the first payment were being used when setting the default payment amount. Note that using multiple Mercury EMV methods with restricted payments is not recommended since the payment type the customer actually uses on the PIN Pad cannot be controlled.

08/22/16 - v8.00 Build 36


TRN/POR/VAR/STR/PROD - INVENTORY LIST - If the Database Setting "Inventory Lists Remember Position" is Off, then the program will also no longer retain the Filter that was last used on the Inventory List.

CNF - KEYPAY - Test Button - Reduced the number test transactions run from 10 to 4 since some systems seem to be blocking the requests when too many happen in a short period of time.


- CNF - PIN Pad - MWGenius - The Setup button on the PIN Pad settings box for the Cayan Genius device was not recognizing the "MWGenius=" command line switch when saving the updated parameters (it would read from the specified file but then always save to MWGenius.dat). Work-around was to copy MWGENIUS .DAT to *.BAK, make the changes, copy MWGENIUS.DAT to the specified file, copy MWGENIUS.BAK to MWGENIUS.DAT.

- CNF - KEYSTROKE POS - Database Parameters - The Enable Matrix parameter was being displayed even though POS does not support it.

- DBM - Search - If the parameter to display dates in text format was On, then the database Find-Search function was not working on date fields.

- FORMS (NOT ADVANCED) - Only the Keystroke Advanced POS license allows forms to be printed to the screen. However the program was not always checking the license when printing the form. This would allow it to go to the screen if it had been set that way using a different license. It now checks the license when printing and disables the ability to print to the screen if the system is not an Advanced license. The Form Setup screen will show this by now displaying the setting if it is on by labeling it as "(not available)".

- KSR - REPORT EDITOR - REPORT VARIABLES - Using the minus sign ("-") was not always working correctly while editing a report and running test prints.

- POR - VENDOR CATALOGS - When copying an item from the Vendor Catalog the fields linked to Stock Number were not being set to the new Stock Number (e.g. AltID#).

- POR - MULTISTORE ORDERS - Inserting a line item ([Ctrl+Enter]) was not moving the Allocated Qtys down along with the other line items. This would cause the Allocated Qtys for all the line items below the inserted line to be with the item above the one they were for.

- SHOW SUMMARY - The last few records (i.e. up to the 15 largest stock numbers) in the file created by the Summary.exe program were not being displayed.

- TRN - MACROS (and Toolbar Buttons) - Entering multiple items via the SalesEntryCommand:EnterItem was not working. Also note that an Enter key must be sent between each item (SendKeys={Enter}).

- TRN - GIFT CARDS as LINE ITEMS on SALES ORDERS - If a processed gift card was a Line Item on a Sales Order, the program was not allowing the item to be marked as shipped.

- TRN/POR/VAR/STR - AltID# - If Entry Mode was set to AltID# and the text entered could not be converted to a number, the program was finding the first item with an AltID# of 0.

- TRN - SIGNATURE CAPTURE - When capturing a non-captured payment if the signature was not entered it was always displaying the "Please Try Again" message instead of displaying the "Proceed without Signature" message.

- BUTTON EDITOR - If the Button Text was blank, then selecting the Font button would change the size to default font size.

- PRINTSAL.EXE - Command line switches were case sensitive (had to use =ON not =on). Also fixed the sample in the PrintSal.doc document that was showing older switch styles that are no longer supported.

- STR - MANUFACTURER - Entry of a line item by the Manufacturer field was not working.

07/19/16 - v8.00 Build 35


- TRN - MERCURY DIRECT w/ iSC250 - CHIP and PIN - The program was only asking for a signature when an EMV (chip) card was used. (from build 33).


AR - If trying to load an invalid ROA payment, the program will now display a message stating it is corrupted and then start on a new payment.

TRN - CAYAN GENIUS - Added tests and messaging when resetting the device (does this when first entering the module) and starting the line item display (if enabled). If the device is not responding the program will display the message that it could not connect to the device and will then abandon the current operation.

ERRORS.LOG File - On startup the program will now check the size of the ERRORS.LOG file and will trim it if it is over 4MB. It is trimmed by copying it to ERRORS.TMP and then the last 512KB are copied back to ERRORS.LOG.

TRIMMING LOG FILES - If the .TMP file already exists, the program will first copy it to the .TM2 extension before overwriting it with the new log file.


- TRN - MERCURY DIRECT - If a payment had been processed but not approved and then a payment print button was selected, the program was erasing any processing data and starting over. It will now retain the declined data until one of the fields is changed (e.g. amount) or the Manual entry button is pressed.

- TRN - MERCURY DIRECT - RECURRING - If a recurring invoice was copied to a Sales Invoice and its payment processed through Mercury Direct before any other payments were processed, an Error 13 would result.

- TRN - MERCURY DIRECT - RECURRING - If a single recurring invoice was copied to an invoice, the program was not displaying the approved message after the payment was processed.

- TRN - MERCURY DIRECT - RECURRING - Recurring Payments processed through Mercury Direct were not being flagged as captured or having been processed by Mercury Direct (even though they were). This would just affect reports and the ability to delete the payment or transaction, the payments were still being captured and the invoice and payment could still be saved.

- TRN - CREDIT MEMO - If using a PIN Pad that supported Payment Selected by Customer (e.g. Cayan Genius) then selecting a payment type that followed the Select by Customer payment type was not working correctly.

- POR - Complete Purchase - Store Number lookup list - The list of stores was including the header record from the file (shows as VERSION). Also the list was not highlighting the current store.

- POR - MULTISTORE ORDERS - RESERVED - MultiStore Orders marked as RESERVED were not saving the qty allotments for the individual stores.

06/29/16 - v8.00 Build 34


- TRN/AR - CAYAN GENIUS - When creating a new payment, if there was an error getting a new payment ID from Cayan (the "TransportKey") then the program would use the one from the previous payment. This could then cause Keystroke to retrieve the previous payment information from Cayan and use it as the new payment (i.e. a single payment with Cayan could be applied to more than one transaction in Keystroke). (from build 23). Also the program will now write the error to the MW*.LOG file (as well as the Errors.log file).

- TRN - Which One? Customer - The Which One? list for Customers was not being removed from the screen.


TRN/FMTR - RECEIPTS - PAYMENT LOOP - Added the ability to print the Signature for each payment using the "Payment Loop - Signature" field.

SIGNATURE CAPTURE - iSC250 w/ EMV - Added a message on screen, "Waiting for Customer's Signature..." while the PIN Pad is on the signature screen.


- CANCEL BUTTON - In some places clicking the Cancel button was first validating the information in the current field before recognizing that Cancel was being pressed. Changed to convert clicking the Cancel button to be the same as pressing the [Esc] key.

- TRN - CAYAN GENIUS - If the Genius device was not responding the program was constantly sending requests to check the Status, it now limits the status checks from causing additional status checks.

- TRN - CAYAN GENIUS - The line item display on the Genius device will no longer be used when a saved transaction is first loaded (adding a line item to the transaction will turn it back on).

- WHICH ONE? - Photos - Using [Ctrl+F2] to display the photo was sometimes showing the wrong one.

06/23/16 - v8.00 Build 33


- AR - MERCURY DIRECT - Was not allowing ROA Payments processed using Mercury Direct to be deleted.

- CNF - MERCURY DIRECT AUTHORIZATION METHOD - The parameters for signature were not being saved correctly. This would cause the iSC250 to not prompt for a signature on credit card payments. Work-around is to edit the .AUT file with a text editor and set line 14 to 1. (The signature threshold is on line 16).

- TRN - In-House Auth Methods - In-House Authorization Methods (Bad/Good Check Lists) were not working, they would display a file error with a blank file name.

- TRN - Cayan Genius - Card Balance - Was not recognizing the RemainingCardBalance field sent back by the Genius device.

- TRN - GENIUS - CREDIT MEMOS - If the first payment type used for the Cayan Genius did not have the "Skip Tendered" parameter On, then the Credit Memo function in the Sales Manager was not able to use it.

- TRN - MERCURY DIRECT w/ iSC250 - CHIP and PIN - The program was asking for a signature even if a PIN based card was used.

- TRN - MERCURY DIRECT - iSC250 - Program was not pausing until an EMV card was removed. Proceeding while it was still in can cause problems.

- TRN - MERCURY DIRECT - VOICE AUTHORIZATION - The amount for voice authorizations was always being sent as 0.00 which would cause them to not be processed. Note that a voice authorization is done by filling in the Auth Code field on the Mercury Direct Payment Entry screen.


TRN - Parameters - Line Entry (AO) - Added a "Prescription Item" parameter to support barcodes printed on subscriptions from a pharmacy (which contain the Prescription ID and the Price but no actual item information). If this field is set and the line item code entered is not found on an inventory item then if the scanned code is at least 18 characters long and begins with "RX" then the program will use the "Prescription Item" setting as the inventory item being added to the transaction. The product code will be set to the scanned code and all the Cost and Price fields will be set to the value embedded in the barcode.

TRN - AGE CHECK - 2D BARCODE SCAN - When scanning driver's licenses the program will now except scans that are all lower case characters.

WHICH ONE? - Photos - Added support for showing photos of the highlighted record for Inventory and Customers. (Same as what standard Record List Boxes already did).


- CNF - Sales Transaction Parameters - The text next to the Customer History Start Date field was always showing current date instead of the date the settings would result in based on the current date.

- CNF - HARDWARE - SIGNATURE CAPTURE - When the device was set to "iSC250 w/ EMV" then the list from the "Port" button was not working correctly. Work around is to select File from the list and then enter the port name (as shown under PIN Pad). Default is "COM9".

- SUMMARY - The first few records in the file created by the Summary.exe program were not being saved correctly. This would cause the Show Summary function to not display them.

- REPORTS - DELIMITED - Heading Fields - Heading fields were not being created if the track and/or width of the field was set to 0. The program will now create the heading with those fields if the report is being exported.

- REPORTS - Formulas/Filters - The "Is Blank" ("~") operator was not working with Matrix Price/Cost fields that were set to Null.

- TRN - Parameters - Line Entry - The label on the "Selectable Comments" button was being set to the current status of the "Coupon Item" field (which was showing an "*" instead of the actual status). This is a display problem only, the button still changed the Selectable Comments parameter.

06/01/16 - v8.00 Build 32


CNF - CASH DRAWERS - If a drawer's settings are edited then the cash drawer list will automatically be saved when exiting the function even if [Esc] is used.

TRN - Payments - Setting the Minimum Amount to 0.00 on a standard (not processed) payment type will cause the program to not allow that type to be used if the amount left to be tendered is negative (e.g. a Return/Refund). Instead the program will beep, and then stop on the list of payments. From there [Esc] can be pressed to proceed to the Print box where the refund amount will be displayed as "Change".

CNF/TRN - MERCURY DIRECT - Added support for the Ingenico iSC250 with EMV under the Mercury Direct interface ("Vantiv(Mercury) iSC250 w/ EMV"). This requires that the device is running the new RBA 17 software from Ingenico (devices running the older RBA 5 and RBA 12 software must be upgraded). Also note that the RBA 17 devices are not fully compatible with the previous Keystroke interface that uses KeyPay.

CNF/TRN - Signature Capture - Added support for using "iSC250 w/ EMV" (those with RBA 17 and running through Mercury Direct) as a stand-alone signature capture device.


- TRN - Scripts + Tag-along - If an item was added as a component item via a script and that item had a tagalong item attached to it, then the main scripted item would have its price set to 0.00.

- TRN - PAYMENTS ON QUOTES - If the current transaction type does not support payments (payments field turned off) then payments should not be allowed to be entered. However, if a payment hotkey was pressed (or a macro was run to add a payment) while on the Complete Sale screen, the program was still bringing up the enter payment box. It will now just make the Bad Key sound and not do anything.

05/18/16 - v8.00 Build 31


AR - STATEMENTS - Added a message box that appears in the background to show the customer currently being printed.

CNF - Sales Payment Types - Added support for pressing [F3] to bring up the Auth Method list to select from (same as selecting the Auth Method button but stays on current field).

CNF/TRN - Mercury Direct - Added the ability to turn on the "Decline Partial Auth" parameter on all payment types (was just Gift Cards). However, it is mandated by the Card Brands that this parameter be left off for most types of stores (i.e. you must Allow Partial Auths).

TRN/CNF - Mercury Direct - If there is an error initializing the Server the program will now display the IP Address and Port Number it was trying to use. If there was an error checking the PIN Pad device, it will display the Port Name that it was trying to use.

STR - Update Inventory - Added the ability to update the Selectable Comments list. This is controlled by the new update parameter "Selectable Comments". This parameter is Off on existing data sets but will default to "On" on new data sets. Note that the Selectable Comments are stored in the same field as Serial Numbers. If the item has the "Serialized" flag turned on then the field is Serial Numbers and will not be copied. If the flag is Off then the field is Selectable Comments and will be copied if the parameter is On.


- LOGO - Conversion to V8 Toolbars - Switching back to the old toolbars was leaving the toolbar file name as TB.DAT which would cause no toolbars to be displayed when going into a module if the original toolbar file was not TB.DAT. (Once the program was exited and restarted the original toolbars would be loaded correctly.)

- KSR - ANALYSIS REPORTS - When switching back and forth between Purchase and Sales Analysis reports, but not changing the parameters on them, the report would sometimes print as showing no matching transactions.

- TRN - Age Verification - 2D Scanner - Some scanners were not putting the correct character between the fields which made the data not readable (they were sending {Ctrl+LF} instead of {LF}). The program now checks for this and changes the characters to {LF}.

- TRN - If the Start On transaction type was not set to a valid type (or one that has been disabled), then the program would possibly not create one or more of the transaction indexes: Transaction Date (if layaway disabled), Customer Number (if Sales Order disabled), or Customer Name (if Quote disabled), and Customer Order Number (always skipped in this case). The program now checks for an invalid Start On setting and correctly sets it to Invoice. Before this fix it would appear as an Invoice but was not fully initialized.

- TRN - The No Fractional Qty parameter was not being checked when entering the qty at the same time as the item (Qty*Code). Also changed the no fractional qty message to show the description of the item in the title bar and to require that the [Esc] key be pressed (or Cancel "X" button to be clicked) before proceeding.

- TRN - Mercury Direct - Recurring - Since the amount authorized is 0.00 when storing a card for a Recurring transaction type, the payment was also being saved as 0.00 when it should be for the amount entered (since it isn't charged at this time but that amount will be charged when the Recurring transaction is copied to an Invoice). Also when processing recurring charges, a message stating that the PIN Pad was not set up was being displayed when it should not have been.

- TRN - SCRIPTS - Adding a Gift Card Trigger item from a script was not running the Gift Card entry routine.

04/27/16 - v8.00 Build 30


ROUND PRICE MASK - "Q" - Note that if the amount is less than 1.00 then the "Q" mask will not round to the nearest Quarter since the rounding function is limited to not changing the most significant digit (except when rounding up is a small change (e.g. 0.96 to 1.00).

CNF - SECURITY LEVELS - EDIT TOOLBARS - Added a new separate security level for "Edit Toolbars and Toolbar Buttons". Previously this was controlled by the "Change Parameters" security level (initially it will automatically be set to that same value).

CNF - SECURITY CHECK - The Table - Security Levels function now requires both "Access CNF" and "CM: Edit Security Levels Table".

CNF - SECURITY CHECK - Most of the functions in the Configuration Manager were controlled by the "Access CNF" security level. They now require both "Access CNF" and the "Change Parameters" security level (except for those functions that already had their own security level (e.g. Backup).

TRN - PROMPT FOR CLERK - If the "Prompt For Clerk" parameter causes the Clerk Login Screen to pop up while in the Sales Manager, then the program will not send the "Lane Close" command to the PIN Pad (and/or Signature Capture device). It will also show the Login title as "Login - Lane OPEN". Note that the only change here is with the messaging and the function still works the same (i.e. even though it says OPEN, the program is still locked). Pressing [F4] at this point will send the "Lane Closed" command and change the title to just "Login".

TRN - MERCURY DIRECT - Once a request has been made of the PIN Pad device it can only be cancelled by the device. Changed the messages displayed to include "(Press Cancel on Device to Stop". Also these messages will no longer include the Cancel button ("X") in the title bar.

TRN - LINE ITEM WHICH ONE? LIST - Added a QOH column to the Which One? list. Also made the list box taller so more items can be seen at one time (but not if the "Hot Keys in Which One List" parameter is turned on and then it is still limited to 10). The width of the columns is now adjusted automatically depending on the information being displayed.


- KSR - Print Comments setting not showing - The "Print Comments" setting was sometimes being hidden when it should not have been. If the previous section had its Detail set to Summary but then that section was set "None" (don't group/print that section), the program was still hiding the "Print Comments" setting on the section after it.

- TRN - CAYAN GENIUS - If the payment was started by using a hotkey or selecting it from a toolbar button then the program was telling Cayan to not check if the request was a duplicate (called Force Duplicate by Cayan).

04/13/16 - v8.00 Build 29


- ROUND PRICE MASK - If "Q" is used in the Price Pattern and the price is 0 (or an invalid number which is treated as 0) then an Error 5 would be given.

- POR - BLANK LINES - Inserting blank lines between line items [Ctrl+Enter] would cause an Error 9 when saving the transaction.

- PRICE FORMULAS - ROUNDING - Using "Q" was not working with numbers from .76 to .91.


TRN - LINE ENTRY PARAMETERS - Added a separate "Confirm Shipped Qty" parameter in addition to the "Confirm Qty" parameter. If this is On (and the Shipped column is being displayed) the program will automatically go to the shipped column while entering a line item (the Confirm Qty parameter use to control this).

TRN - MERCURY DIRECT - MANUALLY ENTERED CARD - The program will now display the CVV and AVS result returned by the processor if the payment was approved. If the result is that they did not match, then the payment should probably be deleted and different information or payment used.


- KSR - Range Lookup - Looking up the entry for the Start/End Range field from a list was not working on most reports (Inventory worked on the parameters for some reports).

- TRN - No Fractional Qty - The "No Fractional Qty" flag on an inventory item was not being checked when changing the line item Amount value (which back calculates the Qty).

- TRN - GRATUITY - Payments processed through KeyPay were not using the Gratuity payment type when the gratuity was added in after the payment was first processed (known as an Adjustment). This would cause the gratuity amount to be recorded on the invoice as a "Change Made" payment.


EXTRACT/STOREMRG - CLERK PASSWORDS - Program now extracts and merges all password information for the clerk (old passwords and PW Expires date).


- STOREMRG - Was rounding the PWChanged field to the nearest midnight which would cause it to either not merge or set the PWChanged to the nearest midnight.

03/31/16 - v8.00 Build 28


POR - Item Prices - Changed all prices to be based on the Each unit (price item is sold for in Sales Manager) instead of the Order Unit (price times Order Multiplier). Costs are still shown based on Order Unit (item cost times Order Multiplier).

PRICE FORMULAS - ROUNDING - Added support using the "Q" character in the Price Pattern field on formulas to round to the nearest Quarter. If this is used then that portion of the Round Up From mask will be used to offset from the quarter that the price would round to. So if set to round up at 10 cents, it would actually round up from .10 (base on .00), .35 (based on .25), .60, (based on .50) and .85 (based on .75). For example, with a Price Pattern of X.QX and a Round Up From of X.10, the prices would round as follows:
$1.00=$1.00, $1.09=$1.09, $1.10=$1.25, $1.34=$1.25, $1.35=$1.50, $1.84=$1.75, $1.85=$2.00. To always round up, use .01 in the Round Up From field (then $1.26=$1.50).

OLD STYLE FILTERS - (used by UDPRICE.EXE, etc.) - Added support for an "Ends With" token (put "*" at the beginning of the filter value). For example, when using UDPrice.exe on items that have a PriceLevel1 that ends in digits between .25 and .50, enter the command line switch as:v Filter=48">*.2500 AND <*.5000"
(Note that with numeric values you must include all 4 decimal points). See DOC\Filters.doc for list of field numbers to use.


CNF - MERCURY DIRECT - Changed name to Vantiv(Mercury) Direct. Also change PIN Pad name from "Mercury VX805" to "Vantiv(Mercury) - VX805".


- DATABASE - If the only change to a record was to change one or more numeric fields from Null to 0, then the program was not recognizing that the record had been changed and would not save it.

- TRN - CAYAN GENIUS - Returns (negative amounts) cannot have the card info manually entered on the Genius device. If Manual entry is selected and the amount is negative, then the program will automatically use the Web Transport interface (even if the "Manual Entry on Web Form" parameter is turned Off).

- TRN - Sales Orders - Editing a Sales Order that was fully paid but already had some items shipped on it was showing the Remaining Amount as the amount already shipped instead of $0.00.

- TRN - Mercury Direct - The Card Holder Name was not being retrieved.

- TRN - Editing - Scripted Items - When editing a transaction, pressing [F3] on an item could cause the qty on the items attached to it by scripting to be changed even when no changes were made to the main item.

- CLERK PASSWORD - The Change Password Function was always setting the Password Changed Date/Time to be the Midnight before the password was changed.

- EXTRACT - Extracting Passwords - Using the INCLUDE=~ was not working correctly which could cause StoreMrg to set the clerk's password to an invalid value.

- POR - New Price Screen Modes - The calculations for the MarkUp and Profit columns were being based on the Case Cost (Order Unit) instead of the Unit Cost (Each).

03/09/16 - v8.00 Build 27


- TRN - MERCURY DIRECT - PRINT BUTTON - The Print Immediately flag on the payment print button for Mercury Direct EMV payments was not being checked.

- TRN - MERCURY DIRECT - RETURNS - If the "Fixed Decimal Point" parameter was on and a return was processed for a whole dollar amount then the program would set the payment amount to 1/100th of the amount.

- TRN - GIFT CARDS - Editing a transaction with a processed gift card that was sometimes trying to void the gift card transaction from the processor.


AR - PARAMETERS (AO) - Added the "Aging Report message before Billing Period" parameter (default is Off). If this is On, then before the Change Billing Period screen appears, a reminder message to print and review the Receivables Aging Report will displayed.

POR - INVENTORY - The LastQtyReceived field is now updated in Order Units (number of cases) instead of Sale Units (each). (LastQtyOrdered was already in Order Units).

POR - CASE EACH - When saving the purchase transaction, the LastQtyOrdered and LastQtyReceived values are now updated by adding the Case and Each line items together (in Order Units).

TRN - LOG FILES - If the log file being used by the Cayan Genius or Mercury vx805 PIN Pads is larger then 4mb, the program will rename it to a .TMP file extension and then copy back just the last 512K bytes.


CNF - CAYAN GENIUS - Test Pin Pad will now show the App Version and OS Version from the Genius device.

TRN - Potential Number - When the first line item is added to a new transaction the potential transaction number will be updated to make it easier to read audit entries.


- CNF - STANDARD RESTORE - The browse button was not returning file name (just the folder) so the program was always trying to restore from the file KeyBack.zip.

- POR - Case/Each - If the Qty on an "Each" item was not 0 and the Qty on the case item was 0, the Case Line Item was not being removed from the transaction (would be there but with a qty of 0).

- POR - INVENTORY - The LastQtyOrdered field was not being updated when a new Purchase Order was saved and items were being received at the same time.

- TRN - Deli Scale item for Negative Amount - If the Sale Qty on an inventory item was set to -1, the function to back calculate qty (or price) from the total amount was setting the price to a negative number which would make the line item total be a positive number. Now If the qty of the line item is -1, the program will calculate the price to be a positive number so the total will then be negative. This is for items such as Bottle Deposit Return receipts which will show the amount to be given to the customer as a positive number (which needs to then be shown as a return item (negative total) on the invoice).

- TRN - AUDIT ENTRIES - NumLines was sometimes being recorded as 1 more than the actual number of line items on the transaction.


STR - Update Inventory - add parameters for "Not Discountable" flag and "Order Multiplier" field (default is On for both).

03/01/16 - v8.00 Build 26


AR - STATEMENTS - GIFT CARDS - When printing statements, amounts for selling Gift Cards that are stored as Payments are now always added back into the transaction total and sub-total fields that can be printed on the statement. (This used to be only done when the "Invoice Details" statement parameter was turned On.)

AR - PARAMETERS - If there were any changes made to the current ROA Payment, then the program will now warn that the changes will be lost before going into the parameter functions.

CNF - STANDARD RESTORE - Changed the default path to be blank (instead of "A:") and added the ability to select a .ZIP file from the Browse button.

POR - PARAMETERS - DISPLAY - Added the "1st Column" button to select what is displayed in the first column of the line items (same as in Sales). However, the data in this column can only be changed if "1st Column" is set to Vendor Part#.

SHOW SUMMARY - INVENTORY - The title of the Show Summary ([Ctrl+F5]) function can be controlled through an INI file. The program will read the setting "InvTitle=" from the file "ShowSum.ini" located in the program directory. If found, then it will be used to set the title on the window. Tokens can be placed in the title that will then be replaced by that field from the inventory item being displayed. The supported tokens are: %Description%, %Code%, %Class%, %Manufacturer%, %LongDescription%, and %BasePrice%. For example, to add Manufacturer to the default title create a text file called C:\KEYSTROK\ShowSum.ini that contains:
InvTitle= Transaction Summary - %Description% - %Manufacturer%.

TRN - iSC250 PIN PAD - Added tests for when device responses are out of sync and then send codes to correct it.


- DBM - EDIT TIME CLOCK - The Prev File and Next File buttons were not displaying correctly.

- POR - INSERT LINE ITEM - Inserting a line item (between existing items, [Ctrl+Enter]) was also adding an additional blank line to the end of the list of line items.

- TRN - MERCURY DIRECT - The default EMV print button was always being displayed instead of first checking if any other payment buttons had been defined.

- TRN - MERCURY DIRECT - DEBIT - Trying to void a Debit payment was displaying a processing error. Now it just displays a message that Debit payments can't be voided.

02/17/16 - v8.00 Build 25


TRN/AR - MERCURY DIRECT - RECEIPTS - The program will no longer automatically print payment receipts. Print Buttons can be set up to do this. Also, the payment receipt can always be printed by selecting the payment and then pressing the print button.

ALTERNATE CODES (AO) - RECORD LIST BOXES - While in the Record List Box for Inventory, Customers, or Vendors, the program will now display an "Alt Codes" button. If clicked (or [Alt+A] is pressed) then the list of Alternate Codes for that database will be displayed. Selecting an item from that list will then work the same as selecting from the main inventory item list. The Alternate Code list can also be edited from there as well (if the clerk has the security to do so).

DATABASE - INVENTORY - INDEXES - The program will now track in an internal index a list of the Parent field on inventory items. This allows some of the Parent/Child functions to run much faster. This is a hidden index and won't actually appear as an option on sort by lists. The information is automatically updated by the system.

TRN - CAYAN GENIUS - CONFIRM TOTAL - If the main Sales Payment type used for the Genius device has the "Skip Tendered Field" turned OFF, then the program will now bring up the Confirm Amount screen when "Selected By Customer" is used. Turning the "Skip Tendered Field" parameter ON will cause this screen to be bypassed so "Selected by Customer" will go directly to asking for the payment to be entered for the full amount on the Genius device.

TRN - CAYAN GENIUS - Added support for receiving multiple discounts (up to 2). Also added inclusion of the type and reason for the discount (if posted to a payment, Type will be placed in the Payment Name and reason in the Reference, if posted to a line item, the Type will placed in the Product Code and the reason in the Description).

TRN - CAYAN GENIUS - Added TerminalID field sent in payment request which is required by MasterCard. The format is Machine Number then 3 zeros then Register Number (e.g. "40002").

TRN - PARTIAL AUTH - When the Partial Authorization message is displayed, the program will first play the warning beep sound and clear the keyboard buffer to help make sure the clerk sees the message.

TRN - When the "Payment less than Total, save as On Hold" message comes up, the program will first play the warning beep sound and clear the keyboard buffer to help make sure the clerk sees the message.

SUMMARIZE HISTORY (SUMMARY.EXE) - Added the parameter "Roll Up Inventory Child Items". If this is turned ON, then after the Summary file is created the program will go back through and roll the information from items that have a parent up into the parent (adjusting the values with the item's Multiplier). For example, with Case/6pack/Single and the Inventory shows QOH of 3/2/1, turning on this parameter will cause the Show Summary function to display the qtys as: Case=3.542 (3 + 2/4 + 1/24), 6pack=2.167 (2 + 1/6). It will do the same with all the other fields as well (except Avg Cost). The command line switch for this parameter is "RollUp=".


- AR - MERCURY DIRECT - Payment Receipts - Not all the EMV data was being saved with the ROA payment so printing the payment receipt later on did not include the EMV info (all other needed payment info was still available).

- AR - STATEMENTS - Invoice Detail - Invoice Line Items were not printing when the field "Invoice/Payment Detail" was used on the statement form. (From build 22). Details were printing correctly if the field "Invoice(extended amount)/Payment Detail" was used or if the Sub-Body fields for line items were used.)

- TRN - CAYAN GENIUS - GRATUITY - If Gratuity was set to go to Payment and a Tip was entered on the Genius device, then the main payment was being overwritten by the balancing entry for the Gratuity. Work-around is to set Gratuity to be added as a line item.

- TRN - CAYAN GENIUS - Manual Entry on Web Form - If this was used, the program was not switching back to using the Genius device for getting the payment information after the approval, this would cause the next approved payment to not be added to the transaction. (From Build 23. Work-around is to exit the Sales Manager after each time the Manual Web Form was used. Note that it is recommended to leave the "Manual Entry on Web Form" parameter OFF and enter all payment information on the Genius device).

- TRN - MERCURY DIRECT - Partial Auth payments were not displaying the extra Partial Auth message screen (everything was working correctly, it just wasn't calling out the partial auth which is there to make sure the clerk recognizes what happened).

- TRN - MERCURY DIRECT - Payment types that did not use the EMV method (e.g. Gift, EBT) were still using the sales payment type settings from the primary EMV payment. (The payments were going through, but parameters like Skip Tendered were coming from the EMV payment instead of the selected payment type).

- TRN - iSC250 - Gift Cards - Entering the gift card as a payment was not flagging the saved payment correctly as a Redeemed gift card. This would cause the Transaction Void function to not recognize that the payment needed to be processed like other credit card payments.

02/08/16 - v8.00 Build 24


CNF - Mercury Direct Auth Method - Changed the name of the Paylist Prefix field to "Name on Select Pay List" and moved some of the fields around. If filled out, this field's text will appear the Sales Payment Types list instead of the name of the first payment that uses this auth method. The "&" character can be used to include the actual payment name if needed.

CNF/TRN - GIFT CARD TRIGGERS - If the current PIN Pad is set to a Mercury Direct device, then a Receipt button will be displayed that can be used to set the parameters to print a short payment receipt from the message box that shows the results of processing a gift card trigger through Mercury Direct.

CAYAN GENIUS - Added more information to Log Files to make them easier to read.

CAYAN GENIUS - The extra call to retrieve Payment Details from the Cayan server is no longer being done except when necessary. (This change was made because that interface has become slow since the introduction of EMV.)

CNF - PARAMETERS - Num Spaces - This field is used to line up the decimal points on amount field where the trailing zeros are not being displayed (when Max Dec Points is greater than Min Dec Points). It should always be left at 2 but is available in case the font being used requires a different number of spaces (in most fonts, the space character is half the size of the number characters). The program will now display a warning message if this number is changed to something other than 2.


- TRN/POR - Original Transaction Changed (from build 23) - If a transaction is printed (which will cause it to be saved) and then converted to another transaction type (due to Save parameters or Delete Filled Orders being on) then the data collision detection message was popping up saying that the record had been changed by another process. The program now knows when this happens and will not display the message. Work-around was to select the "Ignore" button from the Transaction Changed message box.


- CNF - Cayan Genius - Test PIN Pad - Near the beginning of the test the program was stating that it received an invalid response from a status check even though the response was valid. Workaround is to just click Ok to continue with the test anyway.

- CLOSEOUT - The "Don't update Drawer" parameter was always being turned on when entering the Closeout Parameters screen. It was being saved correctly so turning it Off before pressing [Ok] would make the parameter be Off. (From build 20.)

- DATABASE - INVENTORY - The Minimum and Order Qty fields were not saving fractional values.

- TRN - Mercury Direct - Pressing [Esc] (or clicking the X-Close button) while "Checking PIN Pad..." was being displayed was then allowing the clerk to "Cancel the Payment" even if it had already been approved. It now only cancel from this message when the check is being done before the payment has been processed.

- TRN - EXPRESS ONLY - Age Check Parameters - When the Age Check Parameters screen is brought up, it was setting the "Don't check Expiration Date" field to the opposite of what the setting actually was. When the setting on this screen as saved ([Ok] pressed) it is saving the setting correctly based on what is being shown (turning the field On, will save the parameter as On).

01/28/16 - v8.00 Build 23


TRN - Line Item Parameters - Added the parameter "Round XFor Prices (when possible)". If this is On then line items with fractional prices (decimal values past one cent) created for XFor (or Mix and Match) pricing, then the program will try to round the prices on those items to the nearest penny by adjusting some up and others down. For example if an item has a "3 for $1" price and the item is listed on 3 separate lines, all with a qty of 1, then instead of each price being $0.3333, the program will set the first two items to $0.33 and the last one to $0.34. This allows all the numbers on the receipts and reports to match. When this is OFF the items will have a price of $0.3333 (which is displayed as $0.33) and the receipt will show three items at $0.33 and the Sub-Total of $1.00 (even though 3 @ $0.33 is $0.99). Another example: For "3 for $5" the screen/receipt will show:
ON = $1.67, $1.67, $1.66 = $5.00
OFF = $1.67, $1.67, $1.67 = $5.00
The "(when possible)" applies to line items with a qty that is not 1. In which case the program may need to use the fractional prices in order to make the totals work correctly (e.g. if there is only a single line item with a qty of 3, then the program must use the fractional price to have the total be an even amount). Also, if one of these line items has a Qty of 1 then it will be used to make up any amount lost with the rounding. In most cases, this will only be plus or minus a penny. But if there are items with large qtys on them, then this adjustment can a lot more.

LOGO - New Data Sets - The new "Round XFor Prices" parameter is marked as ON when creating new data sets (it will be left OFF on existing data sets). Note that it can always be changed under Sales Manager - Transactions - Parameters - Line Item Entry.

CNF - Cayan Genius - Setup - Added the setting for Line Item Display. If this is set to "On", then Keystroke will update the Genius device with the line items from the sale as it is entered. If set to "On w/ Upload" then the Genius device will upload the line item data to the Cayan servers. Note that the upload interface only supports quantities from -99 to 999 and no fractions. If a line item does not meet this requirement it will be uploaded with a Qty of 1 and the price set to the total amount for that item (Qty*Price). Also, due to restrictions on the length of the fields, the Description will often be truncated down to as little as 9 characters.

TRN - Cayan Genius - Line Item Display - Added support for using the Genius device as an additional line item display. Note that this interface can slow things down especially if there are a lot of line items and previous ones are deleted or a new line is inserted between them. If set to "On w/ Upload", then the information on the line item display will be uploaded when a Genius payment type is selected. If the Genius device is not used for a payment, then the information will be uploaded when the transaction is saved (but only if it is being saved as an Invoice). Due to speed issues with the interface, the program will not always update all items on the display when there are a lot of line items on the transaction. The device itself is limited to a maximum of 200 items, after that, new items will not be displayed. When loading a previously saved transaction, only the last 40 items will be sent to the device.


- CLOSEOUT - Department Report - If a line item was priced with XFor (or Mix and Match) pricing, then the department totals could be different than the actual subtotals on the invoices. This was due to the rounding of the fractional prices used by XFor pricing. The program now recognizes the items with the XFor pricing and will retain the fractional amounts when adding up the department totals.

- KSR - Analysis Report - If a line item was priced with XFor (or Mix and Match) pricing, then the item/department totals could be different than the actual subtotals on the invoices. This was due to the rounding of the fractional prices used by XFor pricing. The program no recognizes the items with the XFor pricing and will retain the fractional amounts when adding up the line item totals.


DATABASE (AO) - Duplicate Checking - If a duplicate record is found and that record is marked as hidden, the program will now ask if the clerk would like to Un-Hide it instead of adding/editing the record currently being used. If the clerk selects "Yes", the program will Un-Hide the existing record and display a message asking to "Load" the record that was activated or "Continue" with the current record. Note that if Load is selected then all changes that were entered on the record that generated the message will be lost. The clerk must have the security level to both "Edit Inventory" records and "Hide/Show" records in order to be given this option (otherwise the standard duplicate message will be displayed). If the clerk selects "No", then the standard "override duplicate" message will be displayed (if the clerk has the security for it). Otherwise the field will be restored back to its original value.

POR (AO) - Case/Each - "Each" line items created with this function will no longer update the inventory item's Last Cost field.

POR (AO) - Case/Each - Added fields to show the sale unit cost for the case and each items (and the average of the two). Also changed the item description to show in the title bar (and fixed the each price that it displays).

SUMMARIZE HISTORY - PURCHASES - The qty purchased now includes the Order Multiplier so that the qty shown is base on the "Sale" Unit instead of the "Order" Unit.

COMMUNICATION MESSAGES - (KeyPay and other IP Messaging) - removed use of "&" tokens when formatting text to be used in network messaging (all reserved characters are now converted to "%" tokens).

TRN/POR - Original Transaction Changed - If the transaction data record that holds the transaction currently being edited has been converted or deleted by another process the program will now display a slightly different message then if it was just changed. It will now state that the record has been "converted (or deleted)" and will default to the Clear button (the Reload button is not available when this happens).

TRN - MERCURY DIRECT - GIFT CARD BALANCE - If the request for a Balance check is denied the program will now display DENIED on the screen and the reason why. Most common reason will be "Card Not Issued".


- EXPRESS - LOGO - Reformatted the Main Menu to better match the Express theme. Note that when using Express, the Main Menu in the Logo module has a security level of 0 assigned to it, all other clerks will be taken directly to the Sales Manager.

- TRN - Mercury Direct - Adding a Gratuity after the payment has been approved (an adjustment) was not using the Gratuity setting on the payment type to create the offsetting payment so it was always being saved as Cash-Change Made.

01/14/16 - v8.00 Build 22


DBM - SEARCH/REPLACE - The Replace function now supports changing fields on any of the screens. Since the screens are independent, if a field appears on more than one screen, the change will only appear on the screen it was entered on. It is possible to enter a change for the same database field on more than one screen but then the last one entered will win out since it will then be the last change made.

POR (AO) - Case/Each - Added a new function to enter an item that is Ordered by the case (Order Multiplier is not 1). Pressing [Ctrl+F7] while on a line item will load the function where it will display the Qty and Cost of using both the "Case" (with its Order Multiplier) and the "Each" (based on the Sale Unit with an Order Multiplier of 1) for the item. When the "Ok" button is selected, the line items on the purchase transaction are adjusted based on the entries. There will then be either a single "Case" line item, or a single "Each" line item, or two line items (one for the "Case" and one for the "Each"). Note that this function does not work with items that have a parent (nor is it able to use the Child items as the each items). Items with a parent/child relationship should always order the parent item and then add an additional line item for the child if any single items are being ordered/ received.

POR (AO) - Case/Each - The Entry Mode can be changed by pressing the [Shift+F9] key combination to switch between Order Only, OnOrdr/Recvd, and TotOrd/TotRcvd modes (as long as the transaction type and clerk security support them.)

POR (AO) - Macros - CaseEach - Added a new PurchaseEntryCommand for macros to launch the CaseEach function (same as pressing [Ctrl+F7] but can then be assigned a different hotkey, attached to a Toolbar Button, and/or added to a script).


TRN - Cayan Genius - Before and after each payment request with the Cayan Genius, the program will check to make sure the Remove Card screen is not being displayed. If it is, the message box will be displayed stating that it is waiting for the Chip Card to be Removed.

CNF - Cayan Genius - Added a security level for Manual Entry (of card number). If the clerk does not meet this level then they won't be able to use the Manual Card entry feature (either on the device or through the web site). The default is blank (Null) which means the security level is not checked so all clerks can use it. (Note that this setting only changes the payment list in Keystroke, it does not change selections available on the Genius device itself. Changes to the device must be done through Cayan.)

- TRN - CAYAN GENIUS - PARTIAL AUTH - If a card was only partially authorized (amount less than the amount requested) Cayan was not returning the amount approved correctly so Keystroke was reading the response as being approved for the full amount. It now recognizes when this happens and gets the actual amount approved from a different part of the response.

01/08/16 - v8.00 Build 22


CNF - Mercury Direct Auth Method - Added the parameter "Capture Signature on Other Device". This allows another device (other than the PIN Pad) to be used to capture the signature.

CNF - Mercury Direct - Removed "Card Type" selection of "Credit" since EMV should be used instead.

TRN - Mercury Direct - Added support for EBT-Food and EBT-Cash transactions.

- TRN - Mercury Direct - Gratuity - When editing a payment with an open gratuity amount the Authorization Code was not being loaded so the payment could not be adjusted.

- TRN - Mercury Direct - Returns (negative amounts) were not working correctly.

- TRN - Merc Direct EMV - Returns (negative amount) - Requesting to Manually enter the card number was not working.


AR - PARAMETERS - Added the parameter "Default ROA Payment to Search By Invoice Amount". The default is On. If this parameter is turned Off, then when the customer is found by entering the invoice number in the customer entry box, the ROA Payment amount will NOT be set to match the amount due on the invoice.

AR - Statements - Invoice Details - Gift Cards - If gift cards are saved as Payments (and they usually are) then Invoice Details (and Invoice Total) fields were not including them when printing statements. The program will now add the gift cards to the line items and totals printed on statements if the "Invoice Details" statement parameter is turned on and the gift card was set to save as payment but display as line item.

POR - Amount Column - When in OnOrd/Rcvd mode and all quantities in the Rcvd column are 0, the program will now show the Amount column as the totals based on the OnOrd column instead of just 0.00. Once a Rcvd qty is entered, then it will switch back to showing the Amount column based on the Rcvd quantities. Note that if the "Always Display Order Totals" parameter is On, then it will always display the Amount column based on the OnOrd column even if Rcvd quantities have been entered.


- AR - ROA Payments applied to Invoices - If the new "[Ctrl]+[+]" feature was used to set the Applied amount on an invoice (or if the new feature to automatically apply the ROA amount to the invoice used with the Find Customer by Invoice Number feature was used) then the payments added to the invoice were using a time of midnight instead of the time the entry was made. Since the time on the ROA balancing entry is about 2 minutes before the posted payment, it would then appear to be made on the day before.

- AR - INVOICE SEARCH IN LIST - When in the invoice number column on the list of invoices on the ROA entry screen, accessing the menu ([Alt] key) was not always working.

- DRAWER - If an error was displayed that the Port for the cash drawer was not valid, the program was still trying to open the drawer which would give an error 52.

- MATRIX ITEMS - Lost Changes - If a field was edited on and existing matrix item, the program was showing that a change had already been made and that the new value would be lost.

- TRN/POR - Routines that inserted line items were not always adding to the total number of line items. This could potentially cause the last ones to disappear or could cause memory problems.

12/18/15 - v8.00 Build 21

TRN - MERCURY DIRECT - RECURRING CHARGES - Added support for processing recurring charges created using the Mercury Direct authorization method. Note: If switching authorization methods from KeyPay, any recurring charges that were previously set up using KeyPay will need to be reentered on the recurring transaction (delete the original payment and enter a new one). Also, the payment information (Token) saved with the recurring transaction is changed each time it is used. Restoring a backup after recurring charges have been processed will cause the payment to fail from then on (payments will need to be deleted and reentered).

KEYPAY - See ReadMeKP.txt.

- CLOSEOUT - Parameters - All the settings in the second half of the screen were not working correctly.

- DBM/VAR - SEARCH - Selecting one of the linked list buttons on the Search, Replace, or AutoFill screen would cause the program to lock up (since the buttons are not supported by those functions). The buttons are now removed when the database screen is displayed by any of those search functions.

- TRN - GRATUITY ON VX805 - Payment information was being lost if a gratuity amount was entered on the VX805 PIN Pad and the balancing entry for the gratuity was not the Cash payment type.

- TRN - Mercury Direct Audit - All audit entries from processing with the Mercury Direct Auth method where marked as "FAILED". (Display issue only with audit entry, processing was working correctly.)

--From v7.15 build 79--
- KSR - Inventory Analysis - Error 6 - If in item had both Total Qty Sold of 0 for the report period but that did have sales (and returns to end up back at 0) a rounding error could result in an Error 6 - Overflow.

- KSR - Headings - The heading on a field would sometimes get cut off if the next field was set to print on the next line.

- KSL/KSR - BARCODES - TOP MARGIN - When printing to a Windows Printer, the Top Margin setting in the .WPD file was not being used with Barcodes (it was being used with printed text). Note that the Top Margin from the form being printed is added to the top margin from the .WPD file so it is normally not necessary to use both.

12/01/15 - v8.00 Build 20

CLOSEOUT (AO) - Added the parameter "Date Range Buttons". If turned On, then the entry box for the closeout date range will include the fixed date buttons that are available on reports (e.g. "Yesterday", "Last Month", etc.).

GIFT CARDS - MERCURY DIRECT - Received certification from Mercury for use of PrePaid (Gift) cards with Mercury Direct authorization methods.

TRN - CAYAN GENIUS - When retrieving the payment details from the Cayan server, if the final response is "FAILED" with an error message that contains "transaction not yet completed." then an entry will be made in the errors.log file instead of displaying the message on the screen.

11/19/15 - v8.00 Build 19

Synced with v7.15 - Applied changes up through v7.15 build 78.


CNF/TRN - MERCURY DIRECT - Added support for Gift Cards when using the Mercury Direct authorization method set to Gift Card.

CNF - TEST PIN PAD - If the PIN Pad is set to Mercury VX805, the Test PIN Pad button will first search for the Sales Payments List for a payment with an Auth Method set to use Mercury Direct with a PIN Pad and will then use the parameters from it to perform the test. (Otherwise it will use the default parameters where the payment server is on the local machine.)

CNF - TABLES - GIFT CARDS - After editing the Default Gift Card Trigger, if the Authorization Method was changed the program will ask if you want to make the same change to the other matching triggers (those that had the same auth method).

CNF/TRN - SECURITY LEVELS - SALES TRANSACTIONS - Added the security level: "Payment - Edit/Delete New" and changed the name of the existing level: "Edit/Delete Payment" to "Payment - Edit/Delete Saved". The default value is 6 (or the value that "Payment - Edit/Delete Saved" was set to if using a previous data set).

CNF - SECURITY LEVELS - Changed the names of all the levels that had to do with payments to show the word "Payment" first so they would all be grouped together on the list (e.g. "Override Minimum Payment" to "Payment - Override Minimum".

DATABASE - Percent Profit Calculator - Now restricts the amount entered to be less than 100% (profit only, when in Mark Up mode the restriction is not used).

TRN - CAYAN GENIUS - When retrieving the payment details from the Cayan server, if there is an error or unknown response the request will be made again (up to 5 times). Also, if the final response is still unknown, an entry will be made in the errors.log file instead of displaying the message on the screen (since the required information can be retrieved from the Genius device so getting the details from the server is not completely necessary).

--From v7.15 build 79--
COMMAND LINE - MWGENIUS - The command line switch "MWGenius=" can be used to specify which data file should be used to load the settings for the Cayan Genius PIN Pad (default is MWGenius.dat)


- KSR - Inventory Analysis - 2nd Grouping - The subtotals for Section 2 (may be used when 2nd Grouping is set, e.g. By Department) were always printing out as 0. This would then affect the subtotals for the sections above it (e.g. By Vendor).

10/29/15 - v8.00 Build 18


DATE FIELDS - Pressing [Ctrl+Space] will convert the current text to the full date text (same as leaving the field but stays in the field). For example, entering 1.2 and then pressing [Ctrl+Space] will change the field to 01/02/15.

CNF/TRN - MERCURY DIRECT - The program will now check the version of NETePay that is running to make sure it is supported. (Must be the one for Mercury).

LOGO - DATA CONVERSION - The clerk database file will be copied to KSCLK.v7 before it is converted. This file (KSCLK.v7) should be deleted once the v8 install has been tested.

PRINTSAL - Filters - Added the ability to filter on FirstPaymentNumber and FirstPaymentType (see Filters.doc for more info).


- DATABASE - EDIT RECORD - If changes were made to one screen and then the screen was switched to another one, and then the Edit function was cancelled ([Esc]), the program was saving the changes without asking if it should.

- LOGO - DATA CONVERSION - Data files from v6.30 (or older) were skipping the v8 conversion of clerk passwords.v
- TRN - Line Item Screen - Totals - Restricted Payment - If the Restricted Payment Type Name was more than 9 characters, it was being cut off. Now the program will first remove all the spaces in the name and then make the font smaller if necessary (but won't shrink it too much so long names may still be cut off).

- POR - Editing an Invoice created by a Purchase Order - The Last Recvd Qty on the inventory item was being updated to the difference of the original Qty and the New Qty instead of being set to the New Qty. Also, it was updating the Last Order Qty on the inventory item (it now only updates it when saving an Order or an Invoice that was entered directly).

- IMPTRN - UPDATE CUSTOMERS/CONTACTS - If updating an existing Customer or Contact record whose Tax Table was set to "*", the program was changing the database record to having a tax table set to be the same as the Company Default Tax Table (from the Defaults in Configuration Manager).

10/15/15 - v8.00 Build 17


DATABASE - CLERK - When changing the Security Level field on a clerk record to an Administrator Level, the program will no longer check the Password field immediately, it will wait until the password field is changed or until the record is attempted to be saved.

Gift Card Numbers - The masking used to show Gift Card Numbers now works the same as Credit Cards (First 2 and Last 4 numbers are shown).

TRN/AR - Mercury Direct - The "Enter Gratuity on Device" parameter will be ignored when entering an ROA payment (or Credit Memo).

10/05/15 - v8.00 Build 16


CNF - SALES PAYMENTS (AO) - Added a new "Discount/Surcharge" button which can be used to enter parameters for adding a Discount or Surcharge to a Sales Transaction when the payment type is used. Note that these settings are not use when entering ROA payments. Once in the Payment Discount/Surcharge parameters screen, the first button is used to toggle between "Discount" and "Surcharge". (Both work the same except "Surcharge" will add the amount to the transaction total and "Discount" will subtract it.) The Amount is either a Dollar ("$") amount or Percentage ("%") amount depending on what the button after it is set to. The "Record As" button allows the amount to be accounted for on the transaction as either a "Line Item" or a "Payment" (Payment is recommended, if Line Item is used it must not be taxable and must have a blank Price Code). The "Payment" (or "Line Item") button is used to select which payment type (or inventory item) to add to the transaction to record the discount/surcharge amount. Note that various laws and merchant agreements may restrict how discounts/surcharges based on payments may be used. This feature simply calculates the discount/surcharge amount based on the transaction total (or fraction thereof paid for) and does NOT take any outside restrictions into account.

CNF - PAYMENT DISCOUNT/SURCHARGE (AO) - This property is disabled by most processed payments (those that use a MICR Reader, KeyPay, Genius, or Mercury Direct authorization methods).

TRN - PAYMENT DISCOUNT/SURCHARGE (AO) - Added support for the new Discount/ Surcharge feature available on payments. Note that the additional amount is applied as the payment is first entered, any additional changes (or removing the payment) will not change the amount that was added. The best procedure is to remove both the amount added and the payment and then re-enter the payment.


TRN - MAX QTY (A0) - Added a Line Entry Parameter to set the Maximum Qty that can be used on any line item on a sale. This is to help guard against accidentally scanning a barcode into the qty field (note that there was already a 9 character limit on this field).

TRN - DRAWER COMPULSION - If the drawer is opened by a payment type and the sales receipt will then automatically be printed, the program will now delay the check to see if the drawer is open until after the receipt has been printed. (Note that this happens when the payment pays off the invoice and the Print Immediately parameter is set to On).

POR - Print New Invoice - If this parameter is turned On, then the program will automatically print the Purchase Invoice using the same button number that was used to print the Purchase Order. (To disable this but still load the new invoice so it can be printed manually, use different print button numbers on the Purchase Order and Purchase Invoice transaction types.)

LOGO - EXPRESS - If the clerk entered has a security level of 0 (or less) then the program will stop on the Main Menu instead of going directly to the Sales Manager. This gives the clerk access to the information buttons in the new toolbars. (The /GTRN command line switch can still be used to go directly to the Sales Manager).

TRN - CAYAN GENIUS - Changed the title on the Approved message screen from "Payment Authorization" to "Payment APPROVED". Also, it no longer shows the Balance field if the amount is 0.00 and the Cancel button is disabled since Ok (or [F10]) must be used to proceed.

TRN - CAYAN GENIUS - While waiting for the customer to enter the payment information, the program will now run Status Checks on the Genius device and update the display to show which screen it is displaying every 2 seconds.

CNF - CAYAN GENIUS - The parameter "Limit Status Checks" is now available. If on, the program will only do the automatic status checks every 10 seconds (instead of every 2 seconds).

AR - Mercury Direct - Added support for payments processed through Mercury Direct.

TRN - Credit Memos - Mercury Direct - Added support for payments processed through Mercury Direct.


CNF - Print Buttons - When creating a new print button the "Save Before Printing" parameter will default to On.

LOGO - Sales Payments - On new data sets, the "Food Stamps" payment type has been replaced with "EBT Cash Benefits" and "EBT Food Stamps" was added.

TRN - GeniusIP= startup switch - added support for putting this switch in the WS#.INI file.

STARTUP SWITCH - INIFILENAME= - No longer requires that the full path be entered or that the file already exists.


- AR - CAYAN GENIUS - Was not working correctly.

- TRN - CAYAN GENIUS - The Display Signature parameter was not being checked (set with the Hardware - Signature Capture function in the Configuration Manager).

- TRN/POR - Print Buttons - The Print Immediately flag is ignored if the current transaction type does not support the specified print button number (it was automatically printing the next button number that was available).

09/23/15 - v8.00 Build 15


CNF/LOGO - Changed the default Border Style to be Colored Flat (same as Express).

TRN - CAYAN GENIUS - Manual Entry on Device - While waiting for the customer to start the payment entry process on the Genius device the List key ([Insert], [F2], press the List toolbar button) and the program will instruct the Genius device to switch to Manual Entry Mode.

TRN - CAYAN GENIUS - "Manually Entered Payment" payment selection will now prompt for the credit card payment information to be entered on the Genius device (instead of via a web form which is not as secure).

CNF - PINPAD - MW GENIUS - Added the parameter "Manual Entry on Web Form". If this is on, then selecting "Manually Entered Payment" from the payment list will launch Cayan's Web based Payment Entry window instead of prompting for the card information to be entered on the payment device. Note that while the entry of payment info may be easier using the web form and a computer keyboard, the computer keyboard is not a secure device and can be the instrument of a data breach. It is therefore recommended that this parameter be left off.

TRN - CAYAN GENIUS - If communication is lost with the Genius device and the clerk has used [Esc] several times and then selected "Yes" to proceed without the payment information, the program will now try to retrieve the results from the Cayan server instead of assuming the payment was not processed. If an approval message is returned by the Cayan Server, the program will continue using the payment information that is available from the server.

- TRN - CAYAN GENIUS - Audit entries when connecting to Genius device failed where not showing the what was happening or what the transaction number was.

v The ability to handle EMV payments when processing through Mercury is handled by a separate set of programs provided by Mercury and Datacap that Keystroke communicates with directly. When Keystroke is installed, the controls dsiEMVX.ocx and dsiPDCX.ocx will be placed in the WINDOWS\DatacapControls\ directory. In order to process payments with EMV through Mercury, the driver for the PIN Pad to be used and the NETePay for Mercury program must also be installed (see the Keystroke Update Installer). When processing a payment, the program/data path is as follows:
1) Keystroke makes a payment request to the dsiEMVX.ocx control (or dsiPDCX.ocx in some cases).
2) The control then uses the PIN Pad Driver to communicate with it and gather the payment information.
3) The control communicates with the NETePay for Mercury program to process the payment (similar to how Keystroke/KeyPay work).
4) The control returns the response to Keystroke.
5) Keystroke displays the response info, prints receipts, and then saves the information it needs for future use and reports.
At no time does Keystroke have access to the actual card/account information.

After installing the necessary driver and NETePay for Mercury program, use the Configuration Manager - Hardware - PIN Pad function to select the Mercury pad to be used (VX805 is the only choice at this time). The Port will default to COM9 (which is the default for the USB version). The Test PIN Pad button can then be used to test the communications (NETePay must be running on the same machine for this test).

Download EMV Parameters - When installing a new device and from time to time on an existing device, the EMV Parameters will need to be updated. This will be done automatically when EMV payments are processed but may need to be done manually (especially when installing a new device). To manually force the download of the EMV parameters, use the Test PIN Pad button and answer "Yes" when asked to "Download EMV Parameters to Device".

Once the device is working correctly, use the Tables - Sales Payment Types function to set the authorization to one for Mercury Direct with a card type of "EMV Credit/Debit".

The Authorization Method for Mercury Direct includes a "Payment Mapping" button. Any payments included in this mapping will not be shown on the Select Payment list in the Sales Manager. But the payment will be assigned to them based on the response from Mercury (this allows separate payments (e.g. VISA, MasterCard, Amex, etc.) to automatically be selected based on the card used instead of the clerk selecting it before hand. If the payment mapping does not match the card, the selected payment will be used.

**Other Mercury EMV Notes***

AUTH METHOD - If "Enter Gratuity on Device" is On and Show Gratuity on the payment is On, then the Gratuity can either be entered by the Clerk before processing the card or by the customer during the process. However, since the customer is asked for the tip amount, the gratuity cannot be added on after the payment is first processed. (Leaving Prompt for Gratuity Off on the Auth Method will allow the clerk to enter the Gratuity either before or after the card has been processed).

PRINT BUTTONS - Mercury - EMV Payments must have payment only receipts printed as soon as they have been processed (or declined or voided). The program will search for a print button assigned to the payment that includes "EMV" in the button name and will use that one automatically. If no button is found, then it will use default settings of: Form=MERCEMV, Printer=3 (Receipt), Copies=1. the form will be printed twice (once for "Customer Copy" and again for "Merchant Copy"). If an EMV print button is set up, make sure it includes both copies.

TRN - TRANSACTION RECEIPTS - Since EMV payments processed with Mercury are required to have individual payment receipts printed with them, the transaction receipts will not have the EMV info automatically printed on them as they do with payments processed with Cayan Genius. (The EMV info can still be printed if that field is added to the form.)

-- Build Numbers 13-14 were skipped.

09/15/15 - v8.00 Build 12

Synced with v7.15 - Applied changes up through v7.15 build 77.


AR - [Ctrl+F8] - While on the list of Open Invoices, [Ctrl+F8] will auto apply the payment's balance to the currently selected invoice and all those below it (it will not change the Applied amounts on the invoices above the current one).

AR - [Ctrl+Plus] - Hotkey to apply payment to currently selected invoice. [Ctrl+Minus] to set Applied to 0.00. These can be added to a toolbar button to allow the distribution of how the ROA payment is to be applied by using the mouse to select the invoice and then click an Apply button.

AR - SEARCH BY INVOICE - If a customer is found by entering the Invoice Number, then the program will default the ROA payment be for the amount due on that invoice and will apply that amount to it.

CNF - PAYMENTS - SECURITY LEVELS - Added the "Add Gratuity" security level which will allow the Gratuity (Tip) field on a payment that is set to show it but has not had it set yet to be edited by a clerk even if the clerk does not meet the payments "Edit Payment" security level. The default value is the same as the payment's "Edit Payment" security level.

DBM - INVENTORY/MATRIX - Added the ability to show the Percent Profit for the Web Price field. However, the standard screens do not include it. It can be added using the Database Screens Editor (Dealer Only Tool).v
TRN - AUDIT - Payment Edit/Delete warning - If the clerk chooses to ignore the warning stating that an existing payment should not be changed/deleted then an audit entry under the Process Payment audit type will be created. Note that in some cases, even if the warning is ignored, no actual changes end up being saved.

TRN/POR - Original Transaction Changed - Every time a Sales or Purchase transaction is saved (new or updated) a counter is altered on its data record to show that it was updated. While editing/viewing a previously saved transaction, the program will check the data record it was loaded from for changes to this counter. If the counter is changed, then the "Original Transaction Changed" message will appear. From this message, the clerk can then choose to "Reload" the transaction (which will bring up the version currently stored in the data file), "Clear" (start on a new transaction), "Ignore" (keep viewing/editing the transaction even though the original may have been changed by another process). "Cancel" (go back to the proceeding function, transaction will stay on screen).

TRN/POR - Original Transaction Changed - If "Ignore" is selected, the program will display another message ("Are You Sure..."). If "Yes" is selected, an audit entry under the Process Payment audit type will be created and the program will suppress the display of the "Original Transaction Changed" message (at least until another transaction is loaded or if the data record is changed again by another process).

TRN/POR - "Transaction No Longer Valid" message as been removed (the "Original Transaction Changed" message replaces it).

TRN - CHANGE CUSTOMER ON TRANSACTION - If the current transaction has an ROA payment applied to it, then the ability to change the customer will be disabled (the contact can still be changed). If the customer must be changed, then the ROA payments must first be removed using the Accounts Receivable module.

TOOLBARS - The program now loads toolbars faster by skipping the step to create the disabled graphic until the button is shown and disabled.


- TRN - RoundUpForCharity - Was not working correctly if a payment had already been added to the transaction.

- CNF - Pack Alternate Transaction File - If the warning that "At least one record Stored..." came up, the program was doing the opposite of what was selected: Yes was treated as No, Anything else was treated as Yes. Also, the function that was then called to move the transactions was not working.

- CNF - Pack Alternate Transaction File - If there was bad data in the file, it was possible for the program to get stuck on the "Analyzing Deleted records" portion.

09/0/15 - v8.00 Build 11


CNF - Auth Methods List - Pressing [Ctrl+F3] will copy the currently selected Auth Method. The program will first ask for the name of the new file and then copy the original file to the new file.

TRN - OVERRIDE CREDIT LIMIT - If the current clerk does not have the security to override a customer's credit limit (and it is needed) then the program will display a Change Clerk button in the Exceeds Credit Limit message. If the clerk is changed, then the program will automatically bring up the clerk Login box again so the previous clerk can log back in before the transaction proceeds. (As always [F4] can be used to change clerks until it is pressed again). Note that this is after the amount has been entered on the payment, the program will still default the payment amount to not exceed the credit limit when first selecting the payment type no matter what the clerk's security level is.

MACROS - RUNDOC= - Added the command RunDoc= to have a program run in a new window and show the specified file. The program that is run will be determined by Windows based on the extension of the file name. (e.g. RunDoc=ReadMe.txt will start up NotePad.exe with the ReadMe.txt file in it, RunDoc=WhatsNew.pdf will start up Acrobat Reader with WhatsNew.pdf in it). Website pages can also be specified.


- CNF - BACKUP/RESTORE - Fixed being able run these commands when Keystroke is run from a UNC path instead of using a drive letter (\\SERVER\KEYSTROK instead of F:\KEYSTROK). This was done by adding the PUSHD and POPD commands to the batch file that is created and run. Note that these commands only work if Window's Command Extensions are enabled (they usually are).

- DISPLAY - When displaying settings, a field with a lot of information in it would sometimes wrap so it was hard to read. The program will now cut off the number of characters displayed so this does not happen. (Display issue only).

08/18/15 - v8.00 Build 10

LOGO - COLORS - When a new KSCNF file is initialized, it will copy in the colors from the Default Appearance Theme based on the current license (e.g. "Default-Advanced", "Default-POS", "Default-Express").

LOGO - V8 Conversion - COLORS - (Not Express) - When data is converted to v8, the program will first back up the current color settings to the Themes.xml file under the name "V7 DATA Backup" (where DATA is the last part of the path to the data directory being used). It will then copy in the default v8 colors.

LOGO - V8 Conversion - TOOLBARS - (Not Express) - When data is converted to v8, the program will copy a new V8 toolbar file to TOOLBARS\TB.DAT below the data directory and will switch the system over to using that file. If that file already existed, it will be backed up to TB.V7.

LOGO - V8 Conversion - After the new colors and toolbars are loaded, the program will display a message stating so and then give the option to immediately revert back to the old settings. However, please explore the new settings as the program will also display another message each time it is restarted that will allow you to revert back at a later time.

LOGO - V8 Conversion - Every time the program is started, it will check a hidden parameter in the configuration data file. If this parameter shows that the system is using colors and toolbars that were switched by the V8 conversion, then the program will display a message stating so. You can then select to:
1) Continue Testing the new settings (the message will appear again next time the program is started).
2) Keep the new settings (and stop displaying the message).
3) Revert back to the old settings (the previous colors will be restored from the backup in the Themes.xml file and the previous toolbar file will then be used).
Note that the Appearances function in the Configuration Manager can be used to set Toolbars and Colors at any time.

CLOSEOUT - EDIT PAIDOUT - Added support for the Paid Out print buttons.

CNF - APPEARANCE - THEMES - Pressing [Ins] from the list of themes will save the current colors to a new theme (saved to THEMES.XML in the program directory).

DBM - Inventory - Parent - The program will now remember the last selected parent and will highlight that record when the Select Parent inventory list is brought back up (as long as you stay in the same module).

PAYMENT PROCESSING - All Old Authorization Methods Removed - All code that could be used to support older (and unsecured) payment processing methods has been completely removed. This includes the old MercuryPay and PCCharge (direct, not through KeyPay).

PAYMENT FORMS - Added the field 'DUPLICATE' which will print the word DUPLICATE if the payment has already been printed using a Print button.

07/30/15 - v8.00 Build 09

Synced with v7.15 - Applied changes up through v7.15 build 76.


CNF - CASH DRAWERS - TEST BUTTONS - Added a "Test Printer on Port" and a "Test Drawer" button. The "Test Printer on Port" is designed for use with cash drawers that are hooked up to printers. It will send a line of text ("123") to the current Port settings (which should point to a printer) to make sure that the port is set up correctly. The "Test Drawer" button will run the open the drawer function with the settings currently being displayed (without having to save them first).

CNF - CASH DRAWERS - Added the "Select from List..." button in the Open Codes area. Selecting this will display a list of known Open Codes for a variety of printers and cash drawers. Selecting one of the items on the list will change the Open Codes fields to match the selection.

TRN - AUDIT - Manager overrides during payment entry will now create an audit entry under the Process Payment audit type. The audits include Manager Override of Credit Limit, Min Payment, failed In-House check list, and using a Credit Type payment on a transaction type that does not support them. Also, Removing a processed payment where the void could not be processed will also created an audit message.


- LOGO - NEW CLERK DATABASE - The Password Expiration Date on the default clerk was not being set.

- AR - Edit ROA w/ Finance Charges - When editing an ROA payment that had already been applied to finance charges in the current billing period but more charges were still due, the program was listing separate line for the previously applied charges and the ones still due. It now combines them on a single line the same way invoices are treated. (Note that if the charges are from a different billing period, then they are not combined).

- AR - Pay Finance Charge - If an ROA payment was edited (or a Credit Memo was being applied) and additional Finance Charges were being paid for (in addition to ones that the payment had already been applied to), then the program was not updating the Finance charges correctly. (It was assuming that only one set of Finance Charges would be applied on a single payment.) The program no longer combines separate finance charge payments for different dates together.

- AR - Apply Credit Memo - When updating an ROA payment by applying a credit memo, if there were multiple outstanding invoices with the same number but different dates, the program would sometimes add another entry to the applied list instead of updating the correct amount for the invoice.

- CNF - CASH DRAWERS - The Test Drawer Status functions would give an Error 55 if the Keep Port Open parameter was turned on with some of the Port types.

07/07/15 - v8.00 Build 08


DATABASE - EDIT - LOST CHANGES - When a database record is saved after being edited, the program will now check for data collisions with other updates that may have been done to the record by other processes. It does this by first only updating the fields that were changed (e.g. If the QOH was not edited, then it will not be saved). This guards against overwriting an update made by another user ringing up a transaction. In addition, any fields that were changed by both the edit function and by another process will also not be saved. However, when this happens, the program will display a message stating which changes had the conflict and that the changes will be lost. This message has a "View Report" button that will print this information to an On Screen report so that it can be viewed (or sent to a printer) while going back and making any necessary updates to the record.

VAR (AO) - Parameters - Added the parameter "Check Open Variances on Post". If this is set (to anything except "Never") then when the Post button is selected, the program will first go out and check for other Open Variances (VAR#.DAT files). If any are found, it will display a message stating so and give the opportunity to print a list of the matched items from the other variances.

VAR (AO) - Check Open Variances on Post - Before checking the contents of other open variances, the program will first to check if any of them are currently in use (displayed in the Variance Module by another instance of Keystroke). If any of the VAR#.LCK files are locked, then the program will display a warning that other open variances are currently in use and default to not proceeding with the posting process. It does this since the program cannot tell what items exist on a currently active variance (and cannot merge from those files). Note that if any of the same items do end up on another currently active variance, the QOH for those items may not be updated correctly.

VAR (AO) - Check Open Variances on Post - If set to "Merge Same Items", a "Merge" button will be available on the "Merge Variance Warning" message screen. Selecting this button (which is what should usually be done) will cause the program to remove the matched items from the other open variances and add the Physical Qtys to those items on the current variance (i.e. merging the items together). Once the merge process is completed, the program will return to the main variance screen so the changes can be checked (and possibly a new report printed) before running the Post.

VAR (AO) - Check Open Variances on Post - Note that while there is not a maximum number of open variances that can exist, both the warning message and the report for the Check Open Variances on Post function will not display correctly if there are more than 9.

CAYAN GENIUS - Received certification that we are properly handling the use of EMV payment cards (when used with the this release or later, see new features below).

TRN/FMTR - EMV - Added the ability to print the EMV Information Block for payments that were processed using EMV. If used, this field should be marked as a comment since it can be several lines long. The information in this field is what is required to be printed for EMV payments.

TRN - CAYAN GENIUS - EMV - If the payment card was processed using EMV, the EMV information will automatically be added to the end of the printed forms (receipts, etc.) unless the form already has the information printed somewhere else.

CNF - PIN PADS - Cayan Genius Setup - Added a "Declined Receipt" button and "Print Immediately" flag. This can be used to define how to print a payment receipt for an EMV payment that was declined. It is required that when an EMV payment is declined that a printout of the decline be given to the customer. If this button is not set up, the program will automatically use the DECLINED.PAY form and send it to printer #3 (Receipt) and Print Immediately will be treated as "On."

TRN - CAYAN GENIUS - EMV - PRINT DECLINE - When an EMV payment is declined, the Declined message now includes a Print button that can be used to print the payment receipt for the customer that includes the required EMV information. Once the receipt has been printed, the message will be displayed again so the receipt can be re-printed if necessary. Note that once the Cancel button (or Esc) is used to leave this message box, all the payment information is discarded and the receipt will no longer be able to be printed.

IMPTRN - Added support for ShipOnDate, NotBeforeDate, and NotAfterDate fields. Also supports names with out "Date" on end (NotBefore) and names with spaces (Not Before Date).

IMPPOR - Added support for ExpectedDate, NotBeforeDate, and NotAfterDate fields. Also supports names with out "Date" on end (NotBefore) and names with spaces (Not Before Date).


- CNF - Pack - Comments on ROA payments and Variances were being discarded when a transaction file was packed.

06/15/15 - v8.00 Build 07

Synced with v7.15 - Applied changes up through v7.15 build 74.


TRN - MAX PRICE (A0) - Added Line Entry Parameters to set the Maximum Price that can be entered when manually overriding the price of an item by editing the field in the Price Column. The first parameter "Global Max Price" is used on all line items. If the number entered in the field is higher than the "Global Max Price", then the "Invalid Number" message will appear. This is designed to guard against accidentally scanning a barcode in the price field. The second parameter "Max Price Field" is used to tell the program which field on the inventory item record is being used for the Max Price of the item. (This is similar to the High Amount Lock Out ("HALO") available on some cash register systems.) If the price is higher than the amount from the item's database record (and the max amount is not 0.00) then a message will be displayed (similar to the minimum price message). If the clerk has the Override Minimum Price security level, then they can also override the item's maximum price.

05/21/15 - v8.00 Build 06

Synced with v7.15 - Applied changes up through v7.15 build 73.

04/30/15 - v8.00 Build 05


NON PROCESSING MODE - If running a copy of Keystroke using the Evaluation license with the Sample data (data directory is set to TUTOR\), then the the program will run in Non Processing Mode and the evaluation mode message will include notice that payment processing will be disabled.

CNF - NON PROCESSING MODE - The following changes were made when running in Non Processing Mode:
PIN Pad function will not allow changes to be saved.
Authorization Methods function is disabled.
Auth Method button on payment types is disabled.

TRN - NON PROCESSING MODE - The following changes were made when running in Non Processing Mode:
The PIN Pad is disabled (same as running with the PINPad=Off switch).
Authorization Methods with the potential for processing credit/debit cards will be ignored.
Card data from a swipe will be ignored (erased from memory).

CNF - IGNORE PCI REQUIREMENTS - The parameter has been removed (and will be ignored if it was previously turned on). It is still available if running in Non Processing Mode since payment information is then not used and PCI requirements are not applicable.

CNF - IGNORE PCI REQUIREMENTS - A different license is available that does allow the use of the Ignore PCI Requirements parameter. This is available for stores that will not be entering sensitive payment card data into the program. Please contact your dealer or SBS for more information.


- LOGO - Data Conversion - Passwords - The Clerk Passwords were not being converted correctly if the Passwords-Case Sensitive parameter was turned Off.

04/19/15 - v8.00 Build 04

Synced with v7.15 - Applied changes up through v7.15 build 72.

03/05/15 - v8.00 Build 03


WhatsNew - Changed the WhatsNew document to a pdf file (WhatsNew.pdf).


- PASSWORDS - The last 4 characters of a password were being ignored. (From build 01).

01/09/15 - v8.00 Build 02


LOGO - NEW DATA SET - The program no longer allows the option to skip entering a new strong password for the default clerk when a new data set is being created.


- LOGO - Fixed entering the first password for the default clerk (was giving message that old password must match even though there wasn't one).

- PCI - The PA-DSSImplementationGuideForKeystrokePOS.pdf file was not the latest version.

12/18/14 - v8.00 Build 01


Minimum Operating System Requirement is now: Windows XP SP3.

PASSWORDS - Are now stored using updated hashes. Existing passwords will be automatically converted as the data files are converted from v7 to v8 (this is the only actual data file change between the two versions).

CNF - PIN PADS - Removed the following PIN Pads: Ingenico en-Crypt 2100 and en-Touch 1000, IDTech SecurePIN, MagTek IntelliPIN, Verifone PINpad 2000, Verifone Everest.

CNF - PASSWORDS - Changing the "Case Sensitive" parameter for passwords can cause problems using existing passwords. If the parameter is changed to OFF, any clerks with lower case characters in their passwords will be locked out. If it is turned ON, all existing passwords must be entered in all upper case.


COMMAND LINE - MWGENIUS - The command line switch "MWGenius=" can be used to specify which data file is used to load the settings for the Cayan Genius PIN Pad (default is MWGenius.dat)


- CNF - Pack Alternate Transaction File - If the warning that "At least one record Stored..." came up, the program was doing the opposite of what was selected: Yes was treated as No, Anything else was treated as Yes. Also, the function that was called to move the transactions was not working.

- DBM/VAR - SEARCH - Selecting one of the linked list buttons on the Search, Replace, (or AutoFill) screen would cause the program to lock up (since the buttons are not supported by those functions). It now just ignores the selection.

- KSR - Inventory Analysis - Error 6 - If in item had both Total Qty Sold of 0 for the report period but that did have sales (and returns to end up back at 0) a rounding error could result in an Error 6 - Overflow.

- KSR - Inventory Analysis - 2nd Grouping - The SubTotals for the Section 2 (may be used when 2nd Grouping is set, e.g. By Department) were always printing out as 0. This would then affect the subtotals for the sections above it (e.g. By Vendor).

- KSL/KSR - BARCODES - TOP MARGIN - When printing to a Windows Printer, the Top Margin setting in the .WPD file was not being used with Barcodes (it was being used with printed text). Note that the Top Margin from the form being printed is added to the top margin from the .WPD file so it is not normally necessary to use both.

- KSR - Headings - The heading on a field would sometimes get cut off if the next field was set to print on the next line.

********************* END OF VERSION CHANGES/FEATURES ********************

** Program changes made prior to v8.00 **
** Changes prior to 12/18/14 - 8.00 build 01 are in the file README75.TXT **
** Changes prior to 03/12/13 - 7.15 build 20 are in the file README71.TXT **
** Changes prior to 09/21/11 - 7.10 build 10 are in the file README7.TXT **
** Changes prior to 03/05/08 - 6.50 build 10 are in the file README63.TXT **
** Changes prior to 02/02/09 - 6.30 build 10 are in the file README62.TXT **
** Changes prior to 01/26/07 - 6.20 build 10 are in the file README61.TXT **
** Changes prior to 03/28/06 - 6.10 build 10 are in the file README6.TXT **
** Changes prior to 05/03/05 - 5.20 build 21 are in the file README52.TXT **
** Changes prior to 05/10/04 - 5.10 build 10 are in the file README51.TXT **
** Changes prior to 01/03/03 - 5.00 build 20 are in the file README5.TXT **

MODULES: (Description of Codes used in this document)




Logo Screen



Sales Manager



Database Manager



Variance Module



Purchase Manager



Report Manager



Report Manager - .Net



Label Manager



Account Receivable



Configuration Manager



Closeout Manager




TouchScreen Editor



v4.2 Report Manager



v4.2 Label Manager



Store Link



General Ledger Link












Forms Editor




Keystroke Payment Module



Keystroke Mail Module



Keystroke POS software is owned by Specialized Business Solutions ("SBS") of Long Beach, CA and is protected by United States and international copyright laws (Copyright (c) 1987-2016. All rights reserved).

For more information about Keystroke POS or other products published by Specialized Business Solutions, call (800)275-4727 or (970)262-1720 or visit our web site at www.KeystrokePOS.com

******* The most recent changes are listed near the top of this file *******

Keystroke POS Point of Sale Software

Home | Products | Support | Dealers | Downloads | Search | Contact | Questions?
Tech Support | F.A.Q.