What’s New in Artisan POS 4.6

Welcome to the next generation of Artisan: 4.6.

Discover all of the major updates from version 4.5. Contact us today to upgrade!

To see a breakdown of all the maintenance updates and fixes, head over to our Change Log.


Key Features


1. Quick-Discount Buttons

Easily add discounts to your sales by adding Quick-Discount Buttons (found under “Program Options -> “Miscellaneous Program Options” -> “Sales Screen Options” -> “Quick-Discount Buttons.”)

Add up to six discount buttons. The buttons can discount a single item or the entire sale.

In this example, we discounted one line item for 20% by selecting that item and clicking the 20% button, then we discounted the next line item for 15% by selecting that item and clicking on the 15% button.

Discount entire sale (Additional):

Discount entire sale (Take Best):

Note that single-item discount buttons are yellow; entire-sale discount buttons are green.

2. Percentages Include Decimal Fractions

All percentages can include decimal fractions, such as discounts, markdowns, sale percent, cost percent, consignment splits, etc.

3. Discount Entire Sale by Specific Monetary Amounts or Percentages

You can now discount an entire sale (Sales Screen – > “Operations” – > “Discount” – > “Discount Entire Sale“) by specific monetary amounts or percentages.

Input a decimal to switch from percentage to monetary amount. Input a percentage sign to switch to a percentage.


Monetary Amount:


4. Add Retail Price Note from Customer Type

If you sell to dealers or other resellers, you may want to let them know the retail price to sell your product(s) at. With this feature, you can easily display this price on the sale’s screen and invoices, as a note line below the regular sale line with the reseller’s price on it. This can be configured based on each Customer Type. To edit this setting, head to the “Customer Types” section and edit an existing customer type (or add a new one). 

From the “Show Markdown As” dropdown, select “Price plus Retail Price“. This means the markdown amount will be applied as a reduced price (rather than as a discount), plus a separate line with the Retail Price. 

The sale screen should now show the retail price as a note line. This line will be included on invoices but not on packing slips.


5. Automatic Billing

Artisan 4.6 supports automatic billing. This feature is basically the same from 3.5 and is perfect if you have recurring transactions that you process on a regular, consistent basis. It supports monthly, semi-annual, annual, or any monthly intervals (ex. every other month or every third month). Automatic billing will process credit cards and enter accounts receivable.

Date ranges in Power Searches for Customer Records and Purchase Activity (including Automatic Billing Templates and Recalled Sales) now default to “Since ‘Forever'” (where ‘Forever’ is used when the date is blank) instead of “In the Last 999 Years,” so that future dates are still included by default.  A new built-in search type called “Slip # (Pending Only)” excludes future dates on Automatic Billing Templates.

In order to use a credit card with automatic billing, you must first put the card on file (using “F7 Cards On File” from either the Customer Record or the Sale Screen), then select that card as payment. The card will not be charged until billing is processed.

Note that ABTs (Automatic Billing Templates) that use a credit card that was put on file through a different Payment Processing Provider than is later used to processing automatic billing (as indicated by the “Token Scope” in the Card-On-File record), will be skipped.

Make sure “Automatic Billing” is set to “Yes” in your “Optional Features” section.

From the “Main Menu,” head to the “Accounting” section and click on “Automatic Billing.”

From this screen, you can process automatic billing, edit billing templates, and create automatic billing reports. Expiring credit card reports are not implemented yet.

6. Internet Store Interface Enhancements

6a. New “In-Store Reserve” Quantity

There is a new field in the Item Record called “In-Store Reserve,” located in the “Internet Store” tab. This helps the Internet Store Interface determine the Available Quantity to upload to your Internet Store. Enter the amount you want to keep on reserve and not available on your Internet Store. (Ex. We have 14 available of this product and want to save 5 on reserve, so only 9 will be available online). 

You can change In-Store Reserve for multiple items at once by using Bulk Change Internet Store Fields (From Item Records screen, “Bulk Changes” and “Bulk Change Internet Store Fields“).

6b. Optimize High-Volume Internet Store Uploads

To prevent high-volume quantity changes from overwhelming your Internet Store server or your upload bandwidth, the Internet Store Interface was enhanced in 4.5 to recognize quantity-only changes (such as sales and receiving, the two most frequent operations on Item Records) and avoid uploading all of the other details from the Item Record. In 4.6, we go a step further, and detect Items that typically have high quantities and skips uploads for smaller changes (unless the available quantity is very low, or 8 hours have passed since that Item was last uploaded).

6c. Internet Store “Guest” Order Improvements

When customers place orders on your store without logging in, the Internet Store Interface will use this information to find or create a corresponding customer record in Artisan. If the billing information for the order includes at least a Last Name, Company, Email, or Phone Number, Artisan will find that matching information.

If none of those billing fields are available, Artisan will find or create a generic customer record, using the Sale Source Name from the download task (which defaults to “Internet”) as the Customer ID, and appends “Customer” (e.g., “Internet Customer“) as the Last Name.

Note: If customers do log in to the online store, Artisan will instead find or create a specific customer record, using a Customer ID constructed from the online store’s ID for this customer, prefixed by the Customer & Order ID Prefix from the download task (zero-padding the online store ID if it’s numeric and less than 8 digits).

6d. Allow Internet Store Uploads to Exclude Categories

If you only want to upload some of your online store enabled items, you can provide a filter string to include or exclude certain categories. (Previously, you could only include categories.) You might want to do this to force certain items to upload immediately (by also using the “Upload ALL Records (Once)” setting), or to split items between multiple online stores, one per task.

In the Internet Store Interface, navigate to the “Categories to Include (‘!’ = Exclude)” field. Type an exclamation mark before whatever field(s) you want to exclude (with multiple categories separated by a comma). To exclude all fields, use a single exclamation mark at the beginning.

6e. Download Older Internet Store Orders

If you missed some older orders from your Internet Store, you can download them by changing the “Download Orders Since” date. This date defaults to start after the last successful download.

7. Confirm ID Requirement for Loyalty Clubs

When requiring IDs for a loyalty club, a pop-up will re-confirm this decision. With this set, customers will only get points if their Customer Record is explicitly selected by scanning or swiping a Customer ID or Loyalty Card.

8. Customer Type Authorization Levels

To control which users can select each Customer Type in Customer Records and as an override in the Sale Screen, change the “Required Authorization Level” setting in the “Customer Type” record, by selecting an option from the dropdown.

9. View/Edit Purchase Orders from Vendor Record Screen 

View a list of purchase orders for vendors from their vendor record screen, using the new F4 Activity button. 

Open the vendor record and click on “Activity Tab,” then “F4 Activity Reports.”

This screen will show any POs this vendor has. 

10. Support for “Other Addresses” for Customers & Purchase Orders

You can now keep track of additional shipping addresses for customers and for purchase orders, pulling them up again later for repeat shipping.

Edit a customer record and head to the “Shipping Tab.” Click on “Other Addresses.”

Add a new record.

Fill out the information.

The new address will be located here.

To add a new address for a Purchase Order, click on “Shipping,” then “Other Addresses.” Repeat the above steps to create and save the new address.

11. Per-Site Vendor Account Numbers & PO Terms

You can specify account numbers and PO terms per-site. “Multi-Site Inventory Tracking” must be turned on in your “Optional Features.” You can have your sites use the main account numbers and PO terms or set their own from this screen.


12. Add Memo & Vendor Order # to PO

Add two new fields to Purchase Orders, under a new Alt-4 Misc Info tab on the PO Screen: Memo (multi-line) and Vendor Order Number (so you can record the Vendor’s number for your order, if it differs from your PO number). Add a new built-in search scheme for the PO by Vendor Order Number.

13. Enhanced Card on File Security

Now, you have more control over card on file security. The Card On File security task was split into two: “Manage Cards On File” and “Use Cards On File on a Sale”. When using cards on file, the regular authorization check for the (Credit Card) Payment Type is bypassed and the “Use Cards On File on a Sale” setting is used instead.

If you want to force clerks to use F7 Cards On File (so all credit cards can be reused), you can set the individual CC payment types to Not Allowed (or a high level, if you want to allow a supervisor/manager/owner to override), with the appropriate clerk level for “Use Cards On File”.

Changes to Cards on File are also now included in the Audit Log, and can be viewed via F4 Activity.

14. Add Sales & Receiving Summaries to Category & Vendor Activity Tabs

Category and Vendor record screens F4 Activity tabs now show sales and receiving summary fields (for both Year To Date, “YTD”, and grand totals). For categories, this includes items directly in each category; it does not include subcategories. For vendors, this includes items with the vendor as the manufacturer/artist or preferred vendor.

Category Record:

Vendor Record:

15. Packing Slips & Order Fulfillment Worksheets

Packing Slips & Order Fulfillment Worksheet forms are now available. These are special Sales Slip forms for use with shipped orders. Packing Slips list the items purchased, but without any prices or payment information. All sale lines with the same Item Code and Description are combined into a single line. Blank lines, note lines, coupons, and payment lines are hidden. For Items with Extended Descriptions, you can separately control whether they appear on packing slips, by using the “Packing Slips?” checkbox under the Extended Description in the “Notes & Descriptions” tab of the Item Record Screen:

You can also control whether kit components are visible on packing slips. When any component of a kit is shown, the main kit line is not shown on the packing slip.

The Order Fulfillment Worksheet form is a special version of he packing slip form intended for in-house use in putting the order together. It contains additional (blank) columns that you can use to (manually) keep track of the state of each item as it goes through the stages of ordering, picking, and packing:

Put “Stock” (or “STK” if you prefer) in the “PO #” column when filling from stock on hand; otherwise fill in the PO # and Date Ordered once you’ve ordered the item.

Once the item has been received (or taken from stock), packed, and shipped to the customer, note the shipping date in the Date Shipped column. You can also keep track of which box the item is in, if you wish.

If an item is back-ordered to be shipped later, you can fill in Qty B/O to keep track of it, and then later when the back order is shipped, fill in B/O Shipped (and Box #).

Note that the standard packing slip form also has some blank columns where you can (manually) make notes about back orders (for the customer to see):

16. Recalculate all (Item & Customer) Activity Summaries

Recalculate all (Item and Customer) Activity summaries by checking the button in the “Reset YTD” sales screen (Click on “Accounting, “Manage Sales, “Reset YTD Sales“).

You can also do this by heading to “Tools,” “Database Maintenance,” and “Advanced Database Maintenance.” Click on “Recalculate Activity Summaries” and you’ll see the “Reset YTD” screen with Recalculate Summary Totals” automatically selected.

17. Support PartnerTech Direct Cash Drawer

Artisan 4.6 supports direct-connected cash drawers (cash drawers that do not require a receipt printer) for PartnerTech all-in-one units, including the A5-A and A5-K. This is for 64-bit Windows only. To add this cash drawer to Artisan, open up “Cash Drawer” in your “Device Configuration” section and enter the appropriate port name, as indicated in the note below the “Cash Drawer Port” field.

18. Out of Stock Warning 

If configured, the Out of Stock warning will appear, even for Sales Orders and Special Orders, when the item is available at another site.

19. Improved Identification of Open Screens

It’s now easier to determine which open screen is which. The full screen title (displayed at the top of each screen) is often more detailed than the short name displayed in the “Open Screens” list. You can now see the full title simply by hovering over the screen’s name in the list; if the title is different than the short name, it will be displayed in a tooltip.

20. Report Engine Enhancements

New or improved functions for use in report formulas from the Report Designer:

  • New “~” (tilde) “Matches” operator, for regular-expression matches: “string ~ pattern”. This is by default a case-insensitive unanchored (“contains”) match.
  • New function, “now()”, returns the current date/time.
  • The “date_diff()” function now returns negative values when date1 is earlier than date2.
  • All date functions now accept the most common date & date/time formats.
  • The “date_part()” function, when returning months, now uses 1=January (rather than 0), for Sample Data as well as for Real Data. (Note, though, that when returning seconds or milliseconds, Real Data will include fractions of a second, whereas Sample Data will not; for consistency in the report output, format the field to round to whole numbers.)
  • Two new Special Fields for identifying the database server type: “Database System Name” and “Database System Version.” One use for Database System Name (in conjunction with the new “~” operator) is to put conditional SQL into reports when Derby syntax is different than PostgreSQL.

Change Log

Last updated: 1/24/2022


  • Fix two Pole Display issues:
    1. Return to Idle/Welcome Message after each sale, even when set to log out after each sale.
    2. Keep display content for each sale screen separate, and switch display content when switching screens.
  • When importing orders for Internet Sales (or exports from other Artisan systems), use the price and discount as imported, even if blank/zero. Previously, items w/o explicit discounts would still be subject to default discounts and quantity breaks (including BOGO formulas), which would (incorrectly) change the net sale price from how it was charged on the website.


  • After upgrading one station (at each remote node), the upgrade installer is automatically made available to other stations of the same type (Windows vs MacOS, 64-bit vs 32-bit, etc.). When Artisan starts up on the other stations, it now asks if you want to install the upgrade. (This applies to Real Data only, not Sample Data).


  • Fix the field picker for inserting database fields to not show the Sale/Order field, “Order?”, as just “)”. (This happened because it had a parenthetical note that ended with a period, and the period was being incorrectly interpreted as the separator between a table name and a column name.)
  • POS-13916: Fix so common cases of changing past costs via Receiving Log update the Average Cost in the Item Record. (Changes to units that have already been removed from inventory are not included).
  • Fix auto-detection of Server Setup: The first time you use Artisan with a particular database server, you must go through the Server Setup dialog. You can manually select the Server Setup button, but Artisan is supposed to do it automatically if it detects that it hasn’t been done, or something is misconfigured. Fix this process to detect additional cases.


  • POS-13912: When prompting for users by password (rather than by menu, followed by a password prompt), a number of the security checks done in menu mode were unintentionally skipped. Fix to do the same checks in both modes. Also fix the check for number of inactive days (for strong users only) to operate correctly in both modes, setting the user as inactive in addition to giving a message. (So an administrator can change the User Record back to “active”, resetting the 90-day clock.) Clarify the password prompt when you select Tools -> Change My Password to say “Enter Current Password”. (This is then followed by a screen to enter the new password.)
  • POS-13909: Fix overlapping elements in SAL-121, Daily Sales Summary Report, which were causing the XLS export to fail.
  • POS-13917: Fix null pointer deleting a Card on File.
  • Fix performance of processing scans in Scan Mode from the Inventory Counting screen with Inventory Location-Tracking and large data.
  • Allow the PIN Pad (Terminal Device) address for NETePay to be specified as a MAC Address (as well as an IP Address or COM Port), so you don’t need to configure the device or router to use a static IP address.
  • Fix so a Batch Report is printed (if so configured) after every Automatic Billing run or Internet Store Order Download, even if no receipts were printed, as long as there was at least one transaction in the batch.
  • In Record Table Searches, fix the match type, “In The Last” (number of days/weeks/etc.), to match only up until the time of the search, and not include future dates.
  • Improve the distribution of discounts to kit components when a bundle kit includes coupon items. Fix a corresponding fatal error in migration (upgrades from 3.5) when such an item has zero discount (due to the entire kit being discounted below the price w/o the coupon).
  • Fix migration to handle duplicate Customer IDs Handle duplicate additional Customer IDs when migrating (upgrading from 3.5).
  • Fix rare case where the 4.5.65 upgrade step could fail due to duplicate Shipping Method names after it strips disallowed punctuation. It now leaves the original name unmodified (including disallowed punctuation) if it would be a duplicate.
  • Fix crash (DataWorker required) recalling a sale with no tenders.
  • Fix recording of the Payment Log (“CC Log”) for follow-on transactions (like voids and returns) that time out or have errors and thus do not provide an Approval Code (“Auth Code”) or AVS/CVV Responses to leave those blank instead of using the original values from the base transaction (from the Tender record).


  • POS-12695: Fix finance charge sale line description to use “currency” format. Fix kit component multiplier prefix to allow up to 4 fractional digits instead of just one.
  • POS-13892: Use a heuristic based on amount of change, time since last change, and other factors, to reduce the frequency of Internet Store uploads for high-volume items.
  • POS-13911: Fix some cases where Store Credit and possibly A/R account lines were incorrectly placed into a Deposit transaction instead of the main Daily Sales transaction, causing both of them to be out of balance, when exporting sales data to External Accounting (i.e. QuickBooks), if set to *not* generate Individual A/R Transactions.
  • POS-13879 Add Order Fulfillment Worksheet (SLIP-OFW)
  • POS-11924 Implement Packing Slips (SLIP-PACK)
  • Improve formatting and width of quantity fields on sheet printer sales-slip forms SLIP-S, SLIP-8X7 & SLIP-RTV-S, to be able to show all 4 digits of fractional quantities. (Receipt printer forms, SLIP-T & SLIP-GIFT-T, only have enough room for a single fractional digit, but change them to use the full format for consistency.)
  • POS-12925: Improve formatting and width of quantity fields on PO forms and Vendor Invoices. Hide all columns except Description on note lines. Fix PO-102 to show note lines.
  • POS-13903: External Accounting: Disallow using the same account for Inventory Adjustment Expense and Inventory Asset. Clarify that “you can’t use the Inventory Asset account as an Inventory Adjustment account. Inventory Adjustments (Shrinkage, Breakage, etc.) must be expense accounts (either as part of Cost Of Goods Sold, or as separate accounts, depending on whether you want them to be reflected in Gross Profit). They represent the cost of inventory that was previously paid for, but is *not* going to be sold, and are used to balance out any change to Inventory Asset that is not due to either Receiving or Sales.
  • (POS-13858) Refine parameters of keyboard emulation scan detection to reduce instances of false positives (actual typing interpreted as scans), including echoing up to 10 characters rather than 5, and, especially, only doing the progress pop-up if at least 25 characters have been accumulated, so the pop-up doesn’t interfere with typing. Fix so scans done at the end of text fields don’t remove newlines or other trailing white space.  When using a scanned or swiped driver’s license to fill in a Customer Record, clear the Title and Company, which aren’t provided by the DL.
  • POS-13854: Fix Sales Slip Forms (SLIP-S, SLIP-T, SLIP-8X7) to show the Display Amount field (DISPAMT) instead of Line Amount (AMOUNT) in the “Amount” column. This ensures the right amount is shown in light of special cases like entire-sale additional discounts.
  • POS-13636: When looking for PostgreSQL utility programs for backup/restore, use the same (or closest higher) version number as the version of the actual database server being used, in case later versions are installed as well. This avoids the problem of producing backup files that can’t be restored onto the same database server version.
  • Fix inconsistencies in reporting Remaining Balance on sales slips when redeeming Store Credit. (In particular, now report both Credit Issued and Remaining Balance as positive numbers, not negative.)
  • Fix so standard State/Province abbreviations forced to upper case, even when imported.
  • Update to Shopify API version 2021-10 (no changes). Include email address in Shopify & WooCommerce downloads of customer records.
  • POS-12965: Include Cards on File in Audit Log. Add an F4 Activity tab, with Audit Summary fields, to the Card On File Record screen. Improve performance of Card On File (by adding an index on Customer). Fix Payment Log entries for Get Token (put card on file) and Delete Token to not record Tender ID, since the Tender Records for these are temporary structures not saved to the database. Note: Upgrades to 4.6 require Remote Operation to be turned off.
  • Tighten up screen switching behavior for login and authorization screens.
  • Don’t use Driver’s License Expiration Date (from Customer Record) as default for *Credit Card* Expiration Date when prompting for credit cards using non-EMV gateway-based processing methods. (Instead, default to blank.)
  • POS-10963: Add an editable Notes field to the Card-on-File record, and a R/O record of the “Token Scope” so we can (eventually) be more specific and proactive about reusability of on-file tokens when switching Processing Methods (some of which have the same Token Scope).
  • POS-12742: Improve performance of this operation. Also recalculate all summaries during migrations from 3.X and during the upgrade to 4.6. Round out the set of YTD Summary fields for Customer Records to match the Total fields. Category and Vendor Record Screen Activity Tabs now check for “Inventory Activity” task authorization, like the Item Record Screen does. Improve audit logging of “bulk updates” by substituting parameter values.
  • Remote Operation: Fix 4.6 upgrade step, which under rare circumstances failed to upgrade some change packets.
  • Internet Store: Trim whitespace around uploaded values. In particular, this fixes an upload failure in “metafield” when a Brief Description (or Detailed Description, if Brief is empty) has only newlines and/or blanks but isn’t completely empty.