Advanced Check Printing
Eliminate pre-printed check stock with the most advanced check printing engine ever built for NetSuite
This feature is included within SquareWorks' Automate AP Automation Suite.
Installation
The Advanced Check Printing feature is available as a NetSuite Bundle that can be downloaded and installed in your NetSuite environment after a license has been purchased.
Log into your NetSuite account with the Administrator role
Navigate to Customization > SuiteBundler > Search & Install Bundles
Search for the keyword 288859
Click on the bundle name (SQW Automate: Advanced Check Printing)
Press Install
On the Preview Bundle Install screen, press Install Bundle
You will be redirected to a list of installed bundles in your account. Wait for the bundle to install. Once installed, you will see a green check mark in the status column.
Security
All check printing configuration settings (see Configuration Overview section) are restricted to the Administrator role. No security changes are necessary.
By default, all roles will have access to print checks. To limit who can print checks, find and edit the “customdeploy_sw_chk_print_checks” script deployment. In the Audience tab, uncheck Roles and then select the Roles or Employees who should have access to check printing.
Configuration
The SquareWorks Check Printing Bundle has 5 configuration areas that need to be reviewed and configured before can begin printing checks:
Check Templates: Check Templates are configurable PDF or PCL5 Templates that define the exact layout and positioning of all check elements.
Check Images: Check Images are digital signatures, company logos, etc. that appear on the check and must be uploaded into NetSuite. These will be encrypted for maximum security and will only be accessible to your NetSuite Administrators. If using PCL5 templates, this is not required. SquareWorks’ PCL5 templates can print digital signatures stored in your printer.
MICR Font: The bundle comes pre-configured with a E13B MICR font that allows for printing checks on blank check stock. However, if you need to use a specific MICR font (TrueType format) for the MICR line, you can upload a MICR Font that is compliant with your bank’s specifications. For more information about MICR Fonts, you can contact a SquareWorks representative. If using PCL5 templates, this is not required. SquareWorks’ PCL5 templates can take advantage of MICR fonts stored directly in your printer.
Check Format: A Check Format is a collection of settings (A check template, check images, a MICR Font, etc.) that are associated with a Bank Account in NetSuite. When printing checks using the SquareWorks Check Printing Bundle, you will be selecting a Check Format.
Custom Template Field: Allows you to include additional fields in your check template. Supports reading fields from Vendor Bills, Vendor Payments, Checks and Entities.
Setting Up Check Templates
Navigate to Setup > Check Printing > Check Template > New.
Enter a Name for your template. Choose a Template Format (PDF or PCL5 depending on the type of template you’re creating) and Configuration Mode (Standard or Advanced). The PDF format in Standard mode comes pre-configured with an ANSI compliant check layout.
Once you have completed the Check Template, click Save.
Uploading Check Images (Signatures/Logos)
Follow the steps below to add a check image to NetSuite. This is only required if using PDF templates and if you want to include a printed signature or other image on your check.
Navigate to Check Printing > Check Image > New
Fill out the Check Image Form:
Check Image Name: Enter the name of the Signature. Inactive: You can inactivate a Check Image if you’d like to. Leave blank if you’d like to use this Check Image. Check Image: Upload a supported image format of the signature/logo you’d like to use on the checks. Supported formats are JPEG, GIF, PNG and BMP.
Click Save.
Setting Up Check Formats
Navigate to Setup > Check Printing > Check Format > New.
Complete the following fields:
Name – Provide a name for your Check Format.
Inactive – You can inactivate Check Format so it can’t be selected when printing checks. Leave it blank if you’d like to use this Check Format.
Account – Select the Bank Account that you’d like to associate with this Check Format.
Check Template – Select the Check Template that you’d like to associate with this Check Format. (For more information, see “Setting Up Check Templates”)
Check Template Stub – Select the Check Template Stub that you’d like to associate with this Check Format. If defined, this will cause the bundle to open two tabs when printing checks. The first tab will be the PDF generated from the Check Template. The second tab will be the PDF generated from the Check Template Sub. This is typically used when you want overflow stub lines to be printed on a separate PDF so they can be sent to a different printer. (For more information, see “Setting Up Check Templates”)
Company Header – Add the header that will show on the top left section of the check.
Bank Header – Add the header that will show up on the top middle section of the check. This is typically the Bank Name and Address.
Check MICR Font – Optionally select the MICR Font that you’d like to associate with this Check Format. For instructions on how to upload MICR Fonts, see “Uploading a MICR Font”. If not selected, the default E13B MICR font will be used.
Bank Account Number – Enter your Bank Account Number without any spaces.
Bank Routing Number – Enter your Bank Routing Number as provided by your Bank. Ensure that this is a Check Routing Number (different from a Wire Routing Number).
Fractional Routing Number Line 1 and Line 2 – Enter your Bank’s Fractional Routing Number in these two fields.
Check Signature – Select the Check Image you’d like to use as a Digital Signature with this Check Format. For instructions on how to upload Check Images, see “Adding Check Images”. Only required for PDF templates.
Include Second Signature Line – Check this box if you require checks to be manually signed if over a certain amount.
Second Signature Min Amount – Enter the threshold amount that will be validated by the SquareWorks Check Printing Bundle to determine if a second signature is required for the check.
Second Check Signature – Select the Check Image you’d like to use as a Second Digital Signature with this Check Format.For instructions on how to upload Check Images, see “Adding Check Images”. Only required for PDF templates.
Check Images – Select the Check Images you’d like to use as Company Logos (or other non-Digital Signature images) with this Check Format. For instructions on how to upload Check Images, see “Adding Check Images”. Only required for PDF templates.
MICR Check Number Min Length – Defines the min length of the check number that appears in the MICR line when using the Standard PDF template. The check number will be zero-filled to meet this requirement. (v1.5.0+)
MICR On Us Symbol Position – Defines the position of the On Us symbol for the account number in the MICR line. Only used by the PDF Standard template. (v1.5.0+)
MICR Account Number Min Length – Defines the min length of the account number that appears in the MICR line when using the Standard PDF template. The account number will be zero-filled to meet this requirement. (v1.5.0+)
Check Alignment Fields – These settings control the layout when using the PDF Standard template. Please contact SquareWorks for assistance if you need to change any of these values.
Save File Copy – Check this box to have a copy of the check and stub (if used) automatically saved to the File Cabinet when printing checks. The copies will automatically add a watermark to the PDF(s) to void the check. (v1.5.6+, Standard Template Only)
File Copy Folder – Enter the internal ID of a File Cabinet folder to store check and stub file copies. This will only be used if the Save File Copy checkbox is checked. (v1.5.6+, Standard Template Only)
Click Save to save the Check Format.
Adding Custom Template Fields
Navigate to Setup > Check Printing > Custom Template Field > New.
Complete the following fields:
Inactive – You can inactivate the Custom Template Field if you’d like to. Leave blank if you’d like to use this Custom Template Field.
Record Type – Choose the record type.
Search Field Id – Enter the search column id (see NetSuite’s schema browser) to lookup. This field supports the use of saved search formulas starting in v1.6.0 for any newly added Custom Template Field.
Template Field Id – Enter the template field id. Enter a unique value that will be referenced in your template. Note: all field ids will be prefixed with “customfield”.
Field Data Type – Enter the type of data referenced by the Search Field Id. This will impact how the data is formatted when supplied to the Check Template.
Use the custom template field in your template. For example, if you setup a Custom Template Field for Record Type “Payment Transaction”, Search Field Id “status” and Template Field Id “_sw_status”, you would use the following to access it in your template: ${check.customfield_sw_status}. See Template Customization section for more details.
Advanced Configuration
Navigate to Setup > Check Printing > Settings.
Check Print Order – Defines the order checks are printed.
Enable Vendor Credit Lines – When enabled, vendor credits will be shown as separate lines on the check stub (added to the template apply list). By default this should be enabled.
Only Show Entity Name – When enabled, only the entity name will appear on the print checks screen (to work around NetSuite performance issues). By default this should be disabled.
Use Approval Workflow Automation – When enabled, approval is required before payments appear in the print queue. Requires a license for Approval Workflow Automation.
Print Mode – Defines how checks will be printed. Browser should be selected by default (which means a PDF will be opened on the screen and manually sent to your local printer). If using OCP Server, One Click Print (Server) should be selected.
Print Across Accounts by Default – When enabled, checks can be printed across multiple accounts in a single batch by default.
Enable Test Mode – When enabled, PDFs can be printed multiple times by refreshing the PDF opened on the screen. Changes to the Check Template will be taken into account when refreshing the PDF. This is useful when testing changes to your Check Template.
Memo Line Wrapping Enabled – When enabled, the memo line on the remittance (if added to the template) can wrap across multiple lines in the remittance table instead of being truncated (if wider than the memo column).
Memo Max Characters per Line – Maximum number of characters allowed per line in the remittance memo column when line wrapping is enabled.
Memo Line Break Pattern – Advanced Regular Expression that defines when a line break should be added to the remittance memo column when line wrapping is enabled.
Disabled First Check Number Override – When enabled, employees will not be allowed to manually change the starting check number.
Allow Printing Across Bank Accounts – When enabled, the employee printing checks will be allowed to print batches of checks across bank accounts.
Remittance Line Sort Order (Level 1) – Defines the order in which lines are sorted on the remittance table.
Custom Remittance Sort Field Id (Level 1) – If "Custom Field" is used as the Remittance Line Sort Order, this field id will be used to determine the order of remittance lines. Available options are populated from the CPB Custom Template Field records defined in the account.
Remittance Line Sort Order (Level 2) – Defines the order in which lines are sorted on the remittance table.
Custom Remittance Sort Field Id (Level 2) – If "Custom Field" is used as the Remittance Line Sort Order, this field id will be used to determine the order of remittance lines. Available options are populated from the CPB Custom Template Field records defined in the account.
Custom Line Data Source Field - Optionally specify a field on the payment transaction which contains JSON data to use as a custom data source for remittance lines apply list. The JSON must be structured as an array of objects. This will override the applied transaction lines that are normally shown on the remittance table apply list.
Include Payee Name in Address - When enabled, the payee's name will be included as the first line in the address.
Don't Use Vendor Legal Name For Payee - When enabled, a vendor's legal name (usually found on the financial tab on the vendor record) will not be used when determining the payee's name on the check.
Restrict Checks by Segment - When enabled, role segment restrictions will be applied. This will limit the checks available to print based on the current employee's and role's location, department and/or class restrictions.
Restrict Checks by Owner - When enabled, checks can only be selected to be printed if the employee created the payment transaction.
Restrict Batches by Owner - When enabled, batches of checks can only be printed and seen in the status page based on the batch's owner.
Employees Allowed to See All Owners - If checks or batches are restricted by owner, select the employee(s) allow to see and print for all owners.
Template Customization
This bundle supports both PDF and PCL5 templates for printing checks. SquareWorks offers pre-configured Templates examples, found in the bundle’s file cabinet directory (SuiteBundles > Bundle 204439 > Templates) but you can customize any templates at your convenience. If you are unsure about how to customize a template, please contact SquareWorks for assistance.
Template Test Mode
Test Mode is a feature on Check Templates that makes formatting and testing easier by allowing you to repeatedly print the same test transaction and avoid going through the process of creating new test transactions or editing and marking older ones as ready to print. Test mode can be enabled by editing the desired Check Template and clicking the Test Mode checkbox.
Template Variables
Both PDF and PCL5 templates use the same template engine used by NetSuite’s Advanced PDF Templates: FreeMarker (http://freemarker.apache.org/). Below is an example of using FreeMarker in your template:
${format.bankAccountNumber?left_pad(12, "0")}
The above code would be replaced by your bank account number left-padded with 0’s to 12 digits. The text in blue is the variable name, and the text in green is a FreeMarker built-in string function (http://freemarker.apache.org/docs/ref_builtins_string.html)
Below is a list of all supported variable names:
format.checkSignatureImage
format.secondCheckSignatureImage
format.checkMicrFont
format.companyHeader
format.bankHeader
format.bankAccountNumber
format.bankRoutingNumber
format.includeSecondSignature
format.secondSignatureMinAmount
format. fractionalRoutingNumberLine1
format. fractionalRoutingNumberLine2
format. fractionalRoutingNumber (v1.5.0+)
format.checkImage0, format.checkImage1, format.checkImage2, ... (format.checkImage0 is the alphabetically first image selected from the Check Images multiselect field of Check Format)
format.dateFormat (v1.4.6+)
format.timeFormat (v1.4.6+)
format.datetimeFormat (v1.4.6+)
format.timeZone (v1.4.6+)
format.isFileCopy (v1.5.6+)
records[].trandate
records[].checknumber
records[].totalwords
records[].total
records[].total_value
records[].address
records[].memo
records[].entity
records[].entityid
records[].entityType (“Vendor”,”Customer”,”Employee”,”Other Name”) (v1.4.5+)
records[].payTo (v1.4.5+)
records[].apply[].applydate
records[].apply[].refnum
records[].apply[].appliedto
records[].apply[].total
records[].apply[].due
records[].apply[].disc
records[].apply[].amount
records[].expense[].account
records[].expense[].memo
records[].expense[].amount
records[].item[].item
records[].item[].description
records[].item[].amount
PDF Template
The format for the PDF template uses the same format used by Advanced PDF Templates in NetSuite: Big Faceless Organization. You can find more information in NetSuite’s help documentation or by viewing the BFO user guide here: http://bfo.com/products/report/docs/userguide.pdf
PCL5 Template
This is an advanced topic. We recommend working with SquareWorks to create your first PCL5 template.
An example template and overlay can be found in your NetSuite bundle in your file cabinet: SuiteBundles > Bundle 204439 > Templates > PCL5. The format for the PCL5 template uses a proprietary format build by SquareWorks. There are two parts to the PCL5 template: A PCL Overlay and a Template.
PCL Overlay - Defines the static content printed on every page (e.g. check stub table, lines / boxes on your check)
Template - Defines the layout of the dynamic content on check (e.g. check amount, addresses)
The PCL Overlay combined with the Template result in a printable check document:
Creating your own PCL Overlay
This is an advanced topic. We recommend working with SquareWorks to create your first PCL5 template.
Design your overlay using an editor of choice (SquareWorks recommends Microsoft Word)
Install your PCL5 printer on your computer.
Print your document "to file" using your printer. Save as a prn file: (e.g. overlay.prn).
Upload the saved prn file to your check template:
Creating your own PCL5 Template
This is an advanced topic. We recommend working with SquareWorks to create your first PCL5 template.
The template uses a proprietary format developed by SquareWorks. The purpose of the template is to allow you to position dynamic text on the printed page.
See SuiteBundles > Bundle 204439 > Templates > PCL5 for an example template. See below for descriptions of the template elements:
version: This should always be set to 1. If we make enhancements to the template language, this version will increase.
pages: This is an array of page objects. Each page object represents a single printed page. Pages will be printed in the order they are defined in the array.
pages>margins: These set the PCL margins. Recommend leaving the margins as defined in the example template.
pages>fonts: This is an array of font objects. textBoxes and textTable's rows refer to fonts by name. PCL is the PCL command to select the font. Height specifies distance between rows of text. The height is specified in PCL units (300 PCL Units = 1 Inch by default)
pages>textTables: This is an array of textTable objects. A textTable is a table layout for text (similar to a spreadsheet with no visual column / row borders).
pages>textTables>x/y: These specify the position of the table's upper left corner on the page in PCL units. A position of 0x,0y would put the table in the upper left of the page.
pages>textTables>height: Specifies the height of the table in PCL units. Only used if the table's overflow is set to hidden (see below)
pages>textTables>overflow: This can either be "hidden" or "wrap". If hidden, any table rows that overflow beyond the table's height will be hidden. If wrap, rows are allowed to continue past the table's height.
pages>textTables>rows: This is an array of table rows. Each row object specifies a minimum height in PCL units. If the row's contents extends beyond the row's height, the row height will be expanded (next row drawn moves down).
pages>textTables>rows>columns: These are objects that specify each column's value in the row. Width is the width in PCL units of the column.
pages>textTables>rows>columns>maxChars: The maximum number of characters before text optionally wraps/hides.
pages>textTables>rows>columns>overflow: Action the text takes if it extends beyond the maxChars. Wrap will move down to the next line (distance moved defined by font's height). Hidden will hide all remaining characters.
pages>textBoxes: These allow you to place text anywhere on the page at a specific position. The position is defined in PCL units. Alignment will either write the text to the left or right of the specified position.
Standard Pay To Logic (v1.4.5+)
When using the records[].payTo template variable, the following logic is used in order to determine the pay to value.
Depending on the type of entity related to the transaction (e.g. Vendor), the pay to value is taken from different fields. Each entity type has multiple possible fields to determine the pay to value. They’re listed below in priority order – highest priority first (e.g. If a vendor has printoncheckas defined, that will always take priority over legalname*)
Entity Type: Vendor
printoncheckas
legalname (*Not considered by default for all new installs of Advanced Check Printing as of 2024.1.11. This can optionally be enabled via check printing settings.)
companyname
firstname + middlename + lastname (“Individual” Vendors Only)
Entity Type: Customer
companyname
firstname + middlename + lastname (“Individual” Customers Only)
Entity Type: Employee
firstname + middlename + lastname
Entity Type: Other Name
companyname
entityid
One-Click Print Server Installation (Deprecated)
One-click printing (OCP) is an optional feature which allows you to print directly from NetSuite to your local printer(s). This is useful for printing PCL5 templates and sending PDFs directly to your printer (if your printer supports direct-PDF printing). This feature is only available for the Advanced Edition or if purchased as an addon to the Standard Edition.
Complete the following steps once for each NetSuite environment:
Log into NetSuite with the Administrator role
Create a new Integration (Setup > Integration > Manage Integrations > New) Name: Enter a unique name (e.g. SquareWorks OCP) Token-Based Authentication: Checked TBA: Authorization Flow: Unchecked TBA: Issue Token Endpoint: Unchecked Authorization Code Grant: Unchecked User Credentials: Unchecked
Copy and save the Client Credentials after saving the Integration (these will be used when installing OCP).
Create an Access Token for an employee (Setup > User/Roles > Access Tokens), selecting the integration created in step #3. We recommend using an employee that’s used only for integration purposes. Note: The role selected must be granted the following Custom Record permissions: CPB Check Format: View CPB Check MICR Font: View CPB Check Print Job: Edit CPB Check Print Job Data: View CPB Check Image: View CPB Check Template: View CPB Log: Edit CPB Printer: Edit
Retain a copy of the generated Access Tokens for the employee (these will be used when installing OCP)
Navigate to Setup > Check Printing > Setup. Change Print Mode to “One Click Print (Server)” and save.
Navigate to Customization > Scripting > Script Deployments. Expand the Filters section and filter by the script CPB Print Checks API (RL). Click view on the deployment found:
On the script deployment screen, retain a copy of the External URL. This will be used when installing OCP.
Complete the following steps on a dedicated local server (Windows or Linux) that has access to your check printer(s) and the check printers have been installed.
All printers must be installed using a PCL5 print driver. The server will only poll NetSuite for checks to be printed. No inbound ports need to be opened in your firewall for the OCP server to function.
Install a Java JRE 8+ (e.g. https://www.oracle.com/java/technologies/javase-jre8-downloads.html or https://openjdk.java.net/install/)
Download the latest release of OCP Server from the zip file attached above.
Extract the OCP release zip file to a permanent local directory.
Edit application.properties, setting the following properties: netsuite.account: Set this to your NetSuite account ID netsuite.api: Set this to the External URL found in step #8 above. netsuite.tokenId: Set this to the Employee’s Access Token’s Token ID netsuite.tokenSecret: Set this to the Employee’s Access Token’s Token Secret netsuite.consumerKey: Set this to the Integration’s Consumer Key netsuite.consumerSecret: Set this to the Integrations Consumer Secret serverId: Set this to a unique identifier for your server (e.g. <NetSuite Account ID>-Prod) Here’s an example of a configuration file:
Configure your server to execute the <project root>/bin/sw-cpb-cli shell script or the Windows <project root>/bin/sw-cpb-cli.bat script on server startup. The script must run as a system user that has access to your installed check printers. The -s switch must be provided to start up the application.
Reboot your server or manually start up the OCP server configured in step #5.
Log into NetSuite and go to Setup > Check Printing > Check Printers. Edit the Check Printer(s) you would like to allow to print checks. Check Printer Enabled and save the record.
When users are printing checks from NetSuite, they will be required to select one of the enabled printers before printing. The OCP print server will automatically send the checks to the check printer once the checks have completed processing. You can view check printing activity by going to Setup > Check Printing > Logs or by viewing the log files on your OCP server (<project root>/log).
Last updated
Was this helpful?