
NetSuite Advanced PDF/HTML Invoice & Statement Customization
Executive Summary
This report provides a comprehensive analysis of NetSuite’s Advanced PDF/HTML Templates, focusing specifically on Invoice and Statement customization. Advanced PDF/HTML Templates are a powerful SuiteCloud feature that allows NetSuite administrators and users to design and control the printed and emailed forms of transactions with far greater flexibility than the older basic printing layouts [1] [2]. By leveraging a combination of HTML, CSS, and FreeMarker scripting, organizations can tailor the look, feel, and data content of invoices and statements to meet branding, regulatory, and business requirements. Key findings of this report include:
-
Enabling & Setup: The Advanced PDF/HTML Templates feature must first be enabled through Setup > Company > Enable Features (SuiteCloud) [3]. Custom transaction forms must then be set to use advanced templates by choosing the “Advanced” printing type and selecting the desired templates for print and email [4] [2]. Once enabled, advanced templates fully replace legacy Basic Printing Layouts, which Oracle plans to deprecate [5] [2].
-
Customization Capabilities: Advanced templates support all transaction and print types that basic layouts did [6] [7]. Users can start with Oracle’s standard templates (or any custom advanced templates) and then edit them using a mix of WYSIWYG editing and direct source-code authoring [8] [9]. Templates allow inclusion of any record field or sublist, including custom fields, across related records via FreeMarker directives [10] [11]. They also natively incorporate company logos and styling, enable conditional logic (e.g. showing fields only if populated), and support HTML/CSS style features for professional formatting [12] [13].
-
Invoice Customization: Invoices can be heavily customized in both structure and content. Examples range from branding (adding logos, colors, legal footers) to functional enhancements (highlighting high-value line items, showing loyalty program codes, adjusting subtotals) [13] [14]. Third-party experts provide ready-made examples (e.g. an invoice template with centered logo, header info, an itemized table, and total) that organizations can adapt [13]. Regulatory considerations also play a role: for instance, NetSuite’s e-Invoicing SuiteApps (Malaysia, North America, Japan, etc.) supply standard templates and warn not to modify those defaults to avoid compliance issues [15] [16]; instead, they instruct users to create and assign custom advanced templates for invoicing on a per-customer basis within the SuiteApp’s settings.
-
Statement Customization: Similarly, statements (customer account statements) can be tailored. The standard statement template supports fields for aging buckets (e.g. “1-30 Days,” “Current,” etc.), totals due, and line-item details for each invoice or payment [17] [18]. For example, a user forum discussion highlights the common request to include detailed invoice lines (date, due date, invoice number, balance) on statements using advanced templates [19]. Multi-subsidiary (OneWorld) accounts may define a multi-currency statement template to properly format balances and currency symbols for each subsidiary [20] [21].
-
Technical Implementation: Administrators can manage templates via the SuiteCloud Development Framework (SDF), script, or SuiteScript. NetSuite’s documentation explicitly cites using SuiteScript to generate printed forms that utilize advanced templates, allowing integration of PDF generation into scripted workflows [22]. Furthermore, advanced templates fully respect company-level Printing Preferences (such as default language or logo per subsidiary) [23] [24], and support modern HTML editing standards, including inline CSS and proper pagination.
-
Use Cases & Perspectives: Many real-world scenarios benefit from advanced templates. Organizations often require branded invoices to strengthen customer relations and prompt payment – a practice widely advised in industry literature [25] [26]. For instance, a sample case (“SuiteDreams Furniture”) demonstrates adding custom fields like Loyalty Code onto an invoice template and using FreeMarker to manipulate text (e.g. extracting a substring) [14] [27].Consultants also highlight advanced techniques: one firm built a “Content Renderer Engine” to pull data from saved searches into templates without scripting, addressing situations where native templates lack required data [28] [29].
-
Future Directions: NetSuite is continually enhancing the ERP platform in line with technological trends. All new enhancements are channeled into advanced templates, and Oracle has confirmed there will be no further upgrades to basic layouts [5] [2]. Looking ahead, NetSuite is incorporating AI-driven features (generative text, automated invoice processing, etc. as of 2025) which may ultimately extend to template creation and content generation [30] [25]. For example, the introduction of tools like Text Enhance for automated content suggests that, in future, machines could assist in crafting customized documents. Additionally, ongoing global e-invoicing initiatives (such as EU, Asia e-invoicing mandates) will likely influence template design, integrating electronic document standards into the advanced templates framework.
The following report is organized into major sections that delve into each of these aspects. It draws on official Oracle documentation, NetSuite community discussions, industry analyses, and real-world examples to present a holistic view of Advanced PDF/HTML template customization for invoices and statements. All claims and findings are supported with citations from credible sources.
Introduction and Background
NetSuite and ERP Document Customization
NetSuite is a leading cloud-based Enterprise Resource Planning (ERP) system, used by thousands of organizations worldwide for financials, CRM, ecommerce, and other core business functions. Critical transactional documents like invoices and statements serve both as financial records and as customer-facing communications. Invoices and statements typically include pricing details, due dates, and potentially personalized messaging or branding. With globalization and evolving customer expectations, many businesses demand that these documents be highly customized to reflect corporate branding, comply with local regulations (e.g. tax or e-invoicing requirements), and improve clarity.
In early versions of NetSuite, document customization was limited to basic PDF and HTML layouts. Administrators could only modify Transaction Form PDF Layouts or Transaction Form HTML Layouts, which had a restrictive WYSIWYG editor and offered limited styling. These “Basic Printing” layouts featured fixed labels and limited formatting (for example, headers in black backgrounds) [31]. While usable, those old layouts could not meet more sophisticated needs — for example, conditional logic, custom positioning, or advanced styling were generally not supported. As a result, organizations often required specialized SuiteScript or third-party integrations to achieve more polished outputs.
Evolution to Advanced PDF/HTML Templates
To address these limitations, NetSuite introduced Advanced PDF/HTML Templates as part of its SuiteCloud platform. Advanced templates are based on industry-standard technologies: an HTML/CSS-like system combined with FreeMarker (an embedded templating language) for data merging. They allow a mix of design and scripting: users can place fields into a layout, style them with CSS, and use FreeMarker tags (${...}, <#if>, <#list>, etc.) to iterate over records, apply conditional logic, format values, and more [13] [14]. This brings NetSuite in line with modern web templating, making customization far more powerful. Advanced templates support both PDF and HTML rendering of forms, depending on the company’s print/email preferences [32].
From an organizational perspective, employing advanced templates transforms invoices/statements from static forms into dynamic business documents. Companies can use them to ensure all required fields (e.g. custom data, tax-specific elements) appear exactly where needed, and that the format adheres to the corporate style guide. Administrators can maintain multiple templates and easily switch among them (for example, different templates per subsidiary or customer type). In multi-entity OneWorld accounts, advanced templates can even output different content based on the subsidiary context (such as customizing footers per subsidiary) [33].
Over time, Oracle has signaled that advanced templates are the future of NetSuite’s document formatting. The official documentation states that “new enhancements are delivered exclusively to advanced printing” and that basic PDF/HTML layouts will eventually be removed [5] [2]. This transition highlights the importance for organizations to migrate existing standard forms to advanced templates. For new NetSuite implementations, the guidance is unequivocal: use advanced templates rather than legacy layouts [34] [2]. In practice, many implementation best-practices adhere to this: consultants configure preferred advanced templates at go-live to ensure better long-term flexibility.
In summary, Advanced PDF/HTML Templates represent a strategic shift in NetSuite’s document handling, enabling sophisticated invoice and statement customizations that were not possible (or required workarounds) under the old basic printing model. The sections below explore in depth the capabilities, configuration, use cases, and future directions of these templates. Each claim and recommendation is backed by NetSuite documentation, community feedback, and expert analysis to provide a thorough, research-based guide.
Overview of Advanced PDF/HTML Templates
Feature Enablement and Access
Before any customization can be done, the Advanced PDF/HTML Templates feature must be activated in NetSuite. This is controlled via Setup > Company > Enable Features, under the SuiteCloud subtab. Administrators simply check the “Advanced PDF/HTML Templates” option and save [3]. Once enabled, the system provides a new menu path: Customization > Forms > Advanced PDF/HTML Templates, where users can view, edit, or create templates for the account [35].
By default, NetSuite provides a set of standard advanced templates (e.g. standard invoice, standard statement, etc.) for each supported print type. These templates contain placeholders for the typical fields of that record (e.g. ${record.tranid} for invoice number, ${record.total} for amount, and so on). Administrators may clone or modify these standard templates or create entirely new ones to suit their needs. Each template has a script ID and title; custom templates can have script IDs starting with a “_” if desired.
Notably, enabling advanced templates also unlocks options when working with Transaction Forms. In Customization > Forms > Transaction Forms, each custom (or standard) form now shows a Printing Type option [36]. Administrators select “Advanced” to designate that this form will use advanced templates instead of basic layouts [36]. Then, they choose the desired templates from dropdown menus for Print Template and Email Template [4]. This means one template can be used for on-screen printing (PDF) and another for emailing, if needed. In practice, most companies use the same brand style for both, but this flexibility exists (e.g. one might include terms and conditions only on the emailed copy).
Importantly, after setting a form to “Advanced,” all transactions saved with that form will generate output according to the advanced template. The documentation notes that if needed, an administrator can later revert a form back to basic printing by changing the Printing Type to “Basic” [37]. No data is lost — the legacy PDF/HTML layouts are still available in the dropdowns — but moving forward advanced templates are preferred for new content and future enhancements.
Permissions: Access to advanced templates is controlled by specific permissions. An administrator or user with the Advanced PDF/HTML Templates permission can create and edit these templates. (For basic layouts, different permissions applied.) Typically, administrators set up templates during implementation, and then assign access to certain roles (e.g. Marketing or Billing roles) to allow update of labels and styling, while restricting others.
Basic Printing vs Advanced Printing
Understanding the distinction between basic and advanced printing is crucial for any customization strategy. Oracle’s documentation provides a clear comparison:
-
Basic Printing Layouts: These are the older formats (via Transaction Form PDF Layouts / HTML Layouts). They offer a fixed, form-based editor where labels appear above values, with limited styling (e.g. black header bars) [31]. One-world accounts under basic printing always used the primary subsidiary’s logo/address for journals/purchase orders [24], limiting customizing per entity. No scripting or conditional logic was possible in the template.
-
Advanced PDF/HTML Templates: Introduced to overcome those limits, advanced templates allow full HTML/CSS and FreeMarker-based editing. Key differences as documented include:
- Customization: Advanced templates allow arbitrary repositioning of fields and rich styling, whereas basic layouts were very constrained. Advanced templates can be edited in a WYSIWYG mode or source-code mode [8] [9].
- Output Formats: Both support PDF and HTML (for on-screen printing) output. However, advanced templates automatically adapt to the company’s printing preferences (e.g. email vs print output) [23].
- Multi-Entity Support: Advanced templates support multi-subsidiary printing correctly by default, whereas basic layouts had known issues (as noted by OneWorld tips) [24].
- Future Enhancements: Crucially, Oracle has stated that basic layouts will be deprecated. Advanced printing receives all new features and enhancements [5] [2]. In fact, NetSuite’s support team explicitly recommends new implementations use advanced templates, because “you have more customization available” and “there are no more upgrades for the basic printing” [34].
- Industrial Standards: The advanced template editor uses modern HTML standards (inline CSS, table styling, etc.), making it easier to create visually appealing documents [9]. Basic layouts were more rigid and not based on current web standards.
Table 1 below summarizes these comparisons:
| Aspect | Basic Printing Layouts | Advanced PDF/HTML Templates |
|---|---|---|
| Editing Mode | Fixed form-based editor; labels above values [31] | WYSIWYG editor + full source (FreeMarker) mode [8] |
| Styling/Format | Limited styling (default fonts/colors); black header rows; no CSS support [31] | Full HTML/CSS styling (inline CSS recommended); flexible layouts [9] |
| Fields and Data | Can place fields on layout; no conditional logic | Can place record and related fields; supports scripting (FreeMarker) to conditionally show/format data [13] [14] |
| Transaction Support | Used for all transaction/print types supported originally [6] | Supports all transaction/print types (no loss of functionality over basic) [6] [7] |
| Multi-entity (OneWorld) | Uses primary subsidiary’s logo/address in printouts [24] | Respects record’s subsidiary; can switch per entity (examples exist of subsidiary-specific footers) [38] |
| Updates & Future | Deprecated – no new enhancements; will be removed in future release [2] | Active development – receives all new features (e.g. AI support, QR codes, new APIs) [5] [2] |
| Localization & Output | Locale chosen per Customer/Subsidiary/Company priority [39] | Advanced templates fully respect translation/localization settings; PDF or HTML output follows email/print preferences [23] |
| Use Cases | Suitable for very basic form changes; widely replaced now | Enables branding (logos, colors), conditional logic (if-then on fields), advanced layouts (tables, images) [13] [9] |
| Permissions | Can be edited by roles with Transaction Form PDF/HTML Layout permissions | Requires Advanced PDF/HTML Templates permission; integrated into SuiteCloud Dev Framework [22] |
Table 1: Comparison of Basic Printing Layouts versus Advanced PDF/HTML Templates in NetSuite. Citations: Oracle NetSuite Help.
The consensus among NetSuite professionals is that Advanced templates should be standard practice going forward, given their capabilities and the platform’s roadmap [34] [2]. Legacy basic layout customizations should be migrated to advanced templates to take advantage of the richer featureset.
Working with the Template Editor
NetSuite provides an integrated Template Editor for advanced templates, accessible under Customization > Forms > Advanced PDF/HTML Templates. The editor has two primary modes:
-
WYSIWYG Mode: A visual editor where users drag-and-drop fields, style text, and change formatting using toolbars and properties. It’s similar to a basic word-processor interface, with options to add text boxes, table rows/columns, images, etc. For example, a user can click on a field in the palette (e.g. ${record.tranid} for “Invoice #”) and the editor inserts that placeholder. Fields can be repositioned, their font size/color changed, and alignment adjusted. The WYSIWYG mode is ideal for “quick” changes like moving fields, adding headers, or simple styling. However, complex operations (such as adding conditional logic or accessing nested sub-records) often require switching to Source Code mode.
-
Source Code Mode: This shows the raw FreeMarker/HTML code for the template. Users can edit FreeMarker directives (
<#if>,<#list>,${...?string}, etc.) as well as any custom HTML/CSS. Any changes in Source mode are reflected in WYSIWYG and vice versa. Certain advanced tasks—like looping through sublists (<#list record.item as item>to iterate line items), embedding images (e.g.<img src="${record.logo}" ...>to show the company logo [40]), or applying conditional formatting—are more naturally done in code mode.
Common Operations in the Editor
The editor supports a variety of operations relevant to invoices and statements:
-
Adding/Removing Fields: Administrators can insert any available field from the record or related records. For example, in an Invoice template, fields like ${record.entity} (customer name), ${record.trandate} (invoice date), and ${record.total} (amount due) are available out-of-the-box. Each record has associated sublists (for invoice, a sublist
record.itemcontaining line items). Table 2 below illustrates some example fields available in standard Invoice and Statement templates (from Oracle’s help reference) for context.Template Type Sample Fields (accessible via Advanced Template) Reference Invoice Invoice # (${record.tranid}), Date (${record.trandate}), Customer (${record.entity}),
Billing Address (${record.billaddress_text}), Terms, Due Date, Currency, Total (${record.total}),
Line Items (description, quantity, rate, amount) inrecord.itemsublistStandard Invoice fields [41] [42] Statement Current, 1-30 Days, 31-60, 61-90, Over 90 Days (${record.aging1}... ${record.aging5}),
Account Number, Amount Due (${record.amountdue}),
Lines sublist (for each invoice: Date, Due Date, Balance, Charge, Payment, Memo)Standard Statement fields [17] [18] Table 2: Example fields available in standard advanced templates for Invoices and Statements. (Only a subset is shown; actual lists are extensive.)
Fields not shown above include customer, subsidiary, department, class, etc. The Advanced Templates Reference (Oracle help) provides full lists of all fields and sublists for each template type. It notes that available fields depend on enabled features and custom fields in the account [10]. The editor’s “Field Sorter” pane shows exactly which fields are present; any custom fields added to records (e.g. transaction body fields or line fields) will also appear here.
-
Styling and Layout: Users can format text (fonts, colors, alignment), create tables, merge cells, insert images (company logos or product photos), and use CSS for finer control. For example, in the help example above [40] [13], the invoice template code centers the company logo and header text using inline styles (
style="text-align:center;") and applies alternating row colors for readability (<#if i_index % 2 == 0>style="background:#f9f9f9;"). Advanced templates even support custom page headers and footers (such as including dynamic dates or subsidiary-specific footer text [38]). -
Conditional Logic: One of the most powerful features is FreeMarker logic. Simple conditions can hide or show fields. For instance, a FreeMarker
<#if>can display a promotional note only if a corresponding field is non-empty, or highlight line items exceeding a threshold. The NetSuite Pro examples show how a conditional highlight is applied to line rows where the amount > 5000 (giving that row a pink background) [43]. Likewise, modularity is possible: a switched case (<#switch>in [9†L82-L90]) picks a different subsidiary footer text based on${record.subsidiary}. -
Calculations and Formatting: FreeMarker supports built-in formatting and calculations. Numeric fields can be formatted (
?string["#,##0.00"]) as shown in [9†L41-L44] for rates and amounts. Built-in functions likesubstring,round, or date formatting can be used to transform data. For example, an official example usessubstringto display only part of a loyalty code on the invoice [14]. Summary calculations are accessible too: template code may access summary or formula fields on transactions. Any formula or saved search that pulls into a transaction can thus feed into the template via these built-ins.
Preview and Debug
After editing, the Template Editor allows Previewing the output. If the code has syntax errors, NetSuite flags them (e.g. missing directives, bad syntax). It will not save invalid templates, helping prevent blank or broken outputs. This immediate feedback loop is useful during template development. Additionally, as [12] notes, the editor provides actionable error messages if the template cannot be saved (e.g. missing braces, undefined variables) [44].
As a best practice, Oracle and experts recommend incremental testing: make a small change (like adding a field or table row), then preview or generate an invoice to verify. This avoids chasing multiple issues at once. When building complex templates, some developers export the source, use external code beautifiers (to format the HTML/FreeMarker nicely), and then paste back for final testing (the training guide even suggests Pretty Diff or MinifyCode for this purpose [45]).
Example: Adding Fields and Logic
To illustrate a typical edit, consider customizing an invoice to include two new columns, Loyalty Code and Loyalty Program, while removing two existing columns Terms and Partner. In WYSIWYG mode, an admin can select and delete the Terms and Partner fields (if present) and insert two new blank columns where desired. They would insert the labels in those columns and then, in source mode, place the FreeMarker expressions ${record.custbody_loyaltycode} and ${record.custbody_loyaltyprogram} (assuming those custom fields exist on the invoice record). The training scenario for “SuiteDreams Furniture Company” outlines exactly this process [27]. After saving and previewing, these new loyalty fields appear on every invoice. As the guide notes, the admin then switched to source mode to refine and perhaps apply FreeMarker functions (e.g. extract a substring of the code), demonstrating the interplay of the two modes [45] [14].
In production use, such custom fields might come from loyalty schemes, subscription IDs, or other extensions. The ability to easily put them into a printed form (with conditional logic and formatting) is a key advantage of advanced templates over legacy tools.
Invoice Template Customization
Branding and Layout
Invoices are typically the primary documents customers receive, so their appearance carries significant importance for corporate identity. Using advanced templates, companies can apply their brand style thoroughly. Common branding elements include:
-
Logos: Advanced templates can directly reference the Company Logo defined in Setup (or an image file). In the NetSuite scripting reference,
${record.logo}refers to the company logo image on the transaction record [40]. Placing<img src="${record.logo}" ...>in the template embeds the logo (with controllable width/height). The example in [9] centers the logo at the top of the invoice. -
Colors and Fonts: Unlike basic layouts, advanced templates allow inline CSS to set background colors, font families, font sizes, and text colors. For instance, table headers can use a light grey background, bold fonts, etc., as seen in [9†L28-L36]. Fonts may also be adjusted to match brand guidelines.
-
Header Information: The template can format and position header text (like “Invoice” title, dates, or customer info) as desired. In [9] (Example 1), the title “Invoice” is set as an
<h2>centered horizontally. Company address, contact info, or disclaimers can likewise be placed in headers or footers using rows or fixed blocks. -
Footers & Terms: Footers often include payment terms, page numbering (using Freemarker’s date/time or page directives), or legal disclaimers. Advanced templates allow including statements like “Thank you for your business” or specific disclaimers per region.
Dynamic Content and Calculations
Aside from static branding, invoices often need dynamic content:
-
Line Items: Typically, a table is used. The advanced template can iterate through each item line on the invoice by looping over
record.item(the items sublist). The snippet<#list record.item as i>in [9] generates table rows for each line, inserting${i.item},${i.quantity},${i.rate}, etc. The code also applies zebra striping (<#if i_index % 2 == 0>for alternating backgrounds) to improve readability [13]. -
Conditional Formatting: Companies may want to call out certain line items (e.g. highlight high-value items). The NetSuite Pro examples include a case where rows with an amount over 5000 get a pink highlight [43]. This is done by embedding an
<#if>condition that sets a style on the<tr>tag. -
Custom Fields: Many business scenarios require showing extra data on the invoice. For example, if there are custom transaction body fields (like “Loyalty Code”, “Project Code”, or “Customer PO Number”), these can be inserted. The advanced template field selector will list custom fields by their ID if they are marked “Store Value” (for transaction fields) or marked as body field for items. Alternatively, one can reference them manually in source mode. E.g.,
${record.custbody_project_code}would print a custom field named custbody_project_code. The NetSuite Pro example (Example 5) shows how to display custom body fields only if they have content, using<#if record.custbody_field?has_content>around them [46]. -
Subtotals and Totals: The template can show computed fields like tax, shipping, total, which are part of the record. It can also include summary search values via formula fields if configured (though that often requires minor scripts or saved search columns pushed to a field).
Integrations and Compliance
Modern invoicing often involves compliance and integration with external systems:
-
Electronic Invoicing (E-Invoicing): Many regions (e.g. Europe, parts of Asia) require invoices to be generated according to specific electronic schemas or include digital signatures/QR codes. NetSuite provides Localization SuiteApps for major countries that, among other features, include standardized PDF templates. As the Malaysia and NA e-invoicing docs emphasize, it is critical not to alter the SuiteApp’s default templates; instead, users should create additional customized advanced templates for their own use [16] [15]. These SuiteApps also allow linking a particular advanced template to a customer record so that the correct format is used when emailing e-invoices.
-
Taxes and Multi-Currency: If SuiteTax or multi-currency features are enabled, the standard templates include relevant fields. For example, with VAT or GST enabled, additional tax numbers or multli-currency totals may appear. OneWorld accounts should use the Standard Multiple Currency Statement or consider these fields when designing invoice templates (e.g. including
${record.currencyname}as in [9†L41-L44]). -
SuiteBundler and SDF: From a deployment perspective, advanced templates can be packaged and promoted like other customizations. The help mentions managing templates with SuiteCloud Development Framework and copying templates between accounts [47]. This is essential for maintaining consistency across Sandbox/Production or multi-subsidiary instances.
Example Customizations
NetSuite community and consultancy resources provide many sample customizations. A few illustrative examples:
-
Loyalty Program Example: In training material, SuiteDreams Furniture wanted to display their loyalty code on invoices and only show part of it. The guide has them remove irrelevant columns, add “Loyalty Code” and “Loyalty Program” columns, and then use the FreeMarker
substringfunction to display just the middle six characters of the code [27] [14]. This shows how advanced templates handle even string manipulation tasks. (Result: invoices now include a column that says, for instance, “Loyalty Code: 123456” where 123456 is part of a longer code.) -
Highlights & Alerts: The Prolecto blog (Marty Zigman) describes adding an alert on invoices: highlighting any line where the price exceeds $1,000 to warn accounts or salespeople [48]. While simple, this rule can reduce customer complaints by drawing attention to big charges. Another scenario might be to print different notes on invoices based on customer type or geographic location; this could be done with
<#switch>on${record.subsidiary}or a custom field. -
Payment Terms and Localization: Another snippet from [9] (Example 2) shows a Sales Order template with conditional shipping terms and payment terms. If the sales order has a shipping method, it prints it; otherwise, it might skip or say “Prepaid” by default [49]. Similar logic could appear on invoices if needed (though shipping terms are rarely on invoices, it illustrates concept).
-
CRM Integration: Custom fields that come from CRM (like Opportunities, Campaign ID, etc.) can be made visible on invoices if pulled onto the transaction record. Advanced templates make it straightforward: one can use
${record.opportunity}or${record.campaigncategory}directly once the field is available.
Design Tips (Best Practices)
Experts suggest several best practices when customizing:
-
Inline CSS: While advanced templates allow CSS, using inline styles is recommended for compatibility. (The NetSuite Pro blog advises this as well [50].) For example,
<th style="padding:5px;">ensures the style sticks in PDF output. -
Table-based Layouts: For invoice line items, use HTML tables (as shown in [9]) because PDF rendering respects table structures reliably. Keep tables simple: use
<table>with consistent cell padding/borders. Avoid complex CSS that might not render well in the PDF conversion engine. -
Modular Sections: Break the template into logical sections (e.g. header, body, footer). This makes maintenance easier. Some consultants even create separate templates (e.g. header/footer only) and include via FreeMarker imports, although NetSuite does not natively support include files in the template editor. Nonetheless, organizing blocks clearly (with comments) helps.
-
Testing on Sample Data: Always test the template with transactions that have realistic data. For example, generate an invoice with multiple line items, a logo present, long text fields, page breaks, etc., to catch layout and overflow issues.
-
Clone and Reuse: Starting from the Standard Invoice PDF/HTML Template is recommended. Always clone before modifying, so the original remains available if needed. Name your custom templates clearly, e.g. “_CustomInvoice_EDOC” or similar. The training guide suggests prefixes with company codes (like “_sdr_invoice”) for consistency.
-
Version Control: Keep records of template changes in a documentation or version control. Since the editor stores the template in the NetSuite database, there is no built-in diff or rollback; external documentation is valuable. If using SDF, store the template file in your repository.
By following these practices, NetSuite admins and developers can produce professional, functional invoice templates that improve the company’s image and user experience.
Statement Template Customization
Customer statements (accounts receivable reports summarizing open invoices and payments) are another key document that businesses often customize. In NetSuite, statements are typically generated from a Customer record (via Transactions > Customers > Print Statements). Advanced templates allow tailoring the Statement/Invoice Comparison forms when printed or emailed.
Typical Content and Fields
A statement generally lists:
- Customer name and address.
- Date of statement run.
- Opening balance (if any).
- List of invoices/payments applied (dates, numbers, amounts, remaining balance).
- Aging summary (current, 1-30, 31-60 days past due, etc., and total due).
- Payment terms total, sub-totals, etc.
- Footer notes or remittance information.
The Standard Statement PDF/HTML Template in NetSuite provides fields to present all these. For example, as shown in Table 2, it includes aging columns ${record.aging1} (current) through ${record.aging5} (31-60, ..., over 90 days), ${record.amountdue}, and a sublist of line items with ${lines.datecol}, ${lines.balance}, and ${lines.otherrefnum} (invoice or check number) [17] [51]. The template also has ${record.billaddress} (billing address) and ${record.balance} (the total outstanding).
Customizing the Layout
In many businesses, default statements need adjusting. For example:
-
Filtering or Grouping: A common ask is grouping transactions by due date or type. The standard template’s line sublist can be restructured. Advanced templates do not automatically group lines; any grouping (e.g. by project or by due date range) would need free-marker logic. One forum query asked exactly how to include invoice date/due on the statement [19], which implies adding
${lines.datecol}and${lines.duedate}in the table. -
Multiple Invoices per Statement: The line sublist in a statement is typically each invoice/payment. Some organizations want to collapse multiple invoices into a single statement or vice versa. This requires adjusting the iteration over lines (
<#list record.line as l>). -
Subsidiary-specific text: In multi-subsidiary accounts, statements can differ by legal entity. Advanced templates allow office-specific footers or tax notes using FreeMarker conditions on
${record.subsidiary}. The NetSuite Pro example (Example 3) demonstrates switching footer text based on subsidiary [38]; a similar approach can be applied for statements (for instance, including VAT numbers specific to each country’s subsidiary). -
Aging Presentation: The layout of aging summary can be altered. By default, the standard template shows totals for each aging bucket. A company might want to highlight the highest aging bucket or convert it into charts (though charts are not trivial in PDF). However, at minimum, one can style those fields (colors, fonts) differently using CSS in the template editor.
-
Payment Slip: If a company wants to include a return payment slip on the statement PDF (for mailing back a check), the template can include a detachable section. While the template editor doesn’t have the concept of a “cut line,” admins often design the footer such that when printed double-sided, one side is the statement and the other side is a remittance stub. FreeMarker can fill in amounts due in that stub based on the data (using
${record.amountdue}, etc.).
Examples and Community Inputs
Several community examples underscore statement needs:
-
A user asked whether detailed invoice information (number, date, amount) can be shown on statements [19], indicating such a requirement. The answer (not visible without login) presumably involved adding those fields through advanced template edits.
-
Another post [16] (NetSuite Community) specifically inquired about including a Customer PO column on statements. Indeed,
${lines.otherrefnum}is typically used for “PO/Check #” (which in AP forms is check number). If a custom field is used for PO, it would need to be added to statement lines. This highlights that almost any field on the invoice or bill can be carried onto the statement via FreeMarker. -
In OneWorld / multi-currency scenarios, NetSuite provides a “Standard Multi-currency Statement” template [52]. This handles displaying multiple currency balances on one statement. Companies dealing internationally should test statements in all enabled currencies. For example, a customer who is non-USD might have
currencysymbolorcurrencynamefields that need to be printed.
Best Practices Specific to Statements
-
Line Formatting: Keep the statement lines concise. Too many columns can make the statement hard to read on small page width. Often, statements use 2 or 3 columns (Date, Type/Number, Balance). Complex information (like bill address, terms) typically resides in header/footer rather than lines.
-
Language and Labels: Statements often must be localized. The template can use
<@translations>or fallback, but boildown is to rely on labels. The Fields in the reference (e.g. “1-30 Days”) will be translated based on customer language settings if set up. Admins can also override these labels in NetSuite (via the Translation list feature or customizing the field labels on forms). -
Testing with Various Data: Statements often have different data shapes (some customers have many invoices, some have none). Test edge cases like a customer with a very old invoice, one with no open balance (should perhaps not print anything), or one with payments only.
-
Customer Statements Email: Like invoices, statements can be emailed via a template. Advanced HTML templates allow crafting a good email message; or an organization may use the advanced invoice HTML template for emailing statements by reassigning it via printer settings. In either case, ensure the email style (subject, body) is appropriate.
Technical Implementation Details
SuiteScript and Automation
Advanced templates can be leveraged both manually and via automation:
-
Manual Print/Email: Users can print or email invoices/statements from the UI as before. Once a form is set to use an advanced template, the Print and Email functions automatically use that template.
-
Scripted Generation: Occasionally, businesses need to generate a PDF programmatically (e.g. as a Service Request after record save, or a scheduled mass print job). NetSuite’s SuiteScript API allows this. For example, server-side scripts can load a transaction and call
render.transaction()to produce a PDF/HTML string using the advanced template. The documentation explicitly mentions that SuiteScript can generate printed forms using advanced templates [22]. This means developers can, say, add a “Print Invoice” button which triggers a SuiteScript to output the invoice PDF on demand, still benefiting from all customizations of the advanced template. -
Approval Workflows: Integration with workflows: a workflow could be configured to automatically email invoices to customers when the status changes to Approved, using the assigned advanced PDF template. Workflows can reference “Send Email” actions that pull the PDF content.
-
Third-Party Integration: External systems that call NetSuite’s API (e.g. a billing service or LOB connector) can retrieve the PDF by using the REST or SOAP API, effectively fetching the advanced template output for documents. The template itself remains in NetSuite, but any interface can pull the rendered PDF.
Content Rendering Techniques
A more sophisticated point: the Prolecto blog ([14]) describes the challenge of including data not natively on the transaction. By default, only fields on the transaction (including joined fields from related records like Customer or Items) are directly accessible in ${record}. If a business needs, say, data from a Saved Search (like a custom AR aging metric or a system note), the native approach is to use a JSON/XML suitelet data source and merge it into the template [53]. However, that requires SuiteScript. The blog’s authors created a “Content Renderer Engine” (never needing code in the template itself) that feeds additional data via SuiteQL into the ${record} context [29]. For example, if invoices needed data from a custom record or a historical dataset, their engine lets you define that dataset in NetSuite and then simply ${record.extraData.fieldX} in the template. This technique, while not built into NetSuite out-of-the-box, showcases how advanced templates can be extended via clever tooling.
SuiteCloud Development Framework
When it comes to versioning and migrations, advanced templates are compatible with SuiteCloud Development Framework (SDF). Administrators can deploy a template as part of a bundle or directly to a target account using SDF. The official doc notes that you can “copy templates to other accounts” via SDF [47]. In practice, one would retrieve the template via NetSuite’s UI or SuiteCloud IDE, include it in an SDF project, and publish. This is especially useful for multi-account customers (e.g. one template set up in Production and pushed to Sandbox or vice versa).
Multi-Language Support
NetSuite supports multiple languages per transaction. Advanced templates automatically obey the language/Country setting of the customer (or subsidiary) for things like date, number formatting, and translated static text. For instance, if a customer’s language is French, fields like ${record.trandate} will format month names in French if the locale is set. Any static text inserted directly in the template (like “Invoice” header text) can also be conditionally translated by using conditional FreeMarker based on ${.locale} or using NetSuite’s translation file resources. Oracle’s best practice is to use Global Translation feature for labels where possible. Notably, the advanced template editor itself can switch languages at runtime (there is a language selector when previewing), so designers should test the template under each needed language.
Case Studies and Real-World Examples
SuiteDreams Furniture: Training Scenario
Oracle’s official training materials provide a fictional case, SuiteDreams Furniture Company, to illustrate advanced template use. In one exercise, SuiteDreams customizes an Invoice template by removing unused fields (Terms, Partner) and adding new ones (Loyalty Code, Loyalty Program) [27]. In the next exercise, they use FreeMarker substring to only display the “middle six characters” of the loyalty code value on the invoice [14]. These steps are documented in the student manual, underscoring how real companies might tailor invoices to their loyalty or promotional systems. While this is illustrative, it reflects actual scenarios: many businesses have some customized invoice data (VIP codes, internal department IDs, etc.) and want them on printed invoices.
Industry Perspective: Benefits of Custom Invoices
Independent of NetSuite, business analysts stress customizing invoices. A finance technology blog observes that generic invoice formats can confuse customers and slow payments, whereas tailored invoices with clear terms and branding improve cash flow [25]. Specifically, Nimisha Ghosh notes that invoices drive cash flow and “many enterprises still rely on static, generic invoice formats that create ambiguity, increase disputes, and slow down approvals.” Customized invoices solve this by integrating personalized content and clarity [25]. Another marketing-focused article highlights that invoices serve as a key touchpoint with clients and should reflect company professionalism and image [26]. These perspectives imply that investing effort in advanced templates (especially for high-volume or strategic customers) has measurable benefits: fewer payment delays, improved customer satisfaction, and opportunities for upselling via customized messaging.
NetSuite Community and Consultant Examples
NetSuite’s own consultants and community members have shared practical examples:
-
The NetSuite Pro Blog: A NetSuite partner published “Real-World Advanced PDF Examples,” featuring five actual templates customers might use [54] [33]. These include a full invoice layout, a sales order with conditional terms, a statement footer by subsidiary, conditional line highlights, and a custom fields section. The final code and screenshots are available, showing how companies can directly apply similar designs. Such examples serve as templates (literally) for on-the-job customization.
-
Prolecto Resources: The Prolecto blog (led by Marty Zigman, a widely respected NetSuite expert) outlines advanced techniques. In one article, they demonstrate retrieving complex data sets (such as a cryptocurrency settlement pattern) into an invoice via a custom engine [55]. Another post (related to the above) showed how to hook a content engine to native advanced templates without SuiteScript, letting admins define “data universes” via saved searches and combine them into invoices [29] [55]. Although these are specialized, they illustrate that companies with sophisticated requirements (like intercompany billing in crypto) can still use advanced templates by extending data sources. In real-world terms, a retrofit for legacy companies might involve this approach if they need to show non-standard data (e.g. amortization schedules, contract milestones, etc.) on invoices.
-
Customer Stories: While specific customer case studies on advanced templates are rare in public marketing, countless NetSuite customers effectively use them. For instance, a manufacturing firm might integrate inventory images on invoices; a global service company prints time logs as PDF attachments. These use cases, though not published, reinforce that advanced templates underpin many high-value custom reports and documents in NetSuite.
In summary, both training examples and industry insights confirm that advanced PDF templates are not merely a decorative luxury but a core strategy to streamline accounting processes, reinforce branding, and comply with changing regulations. Organizations large and small incorporate them to differentiate communication and drive efficiency.
Implications and Future Directions
Business and Operational Implications
The shift to advanced PDF templates has significant business implications:
-
Streamlined Workflows: By consolidating design and logic in the ERP, companies reduce manual work. For example, previously a team might have printed invoices in Word or Adobe separately; now it’s all in NetSuite, reducing human error. Improved clarity on invoices and statements (e.g. making terms bold, highlighting overdue amounts) can shorten accounts receivable cycles.
-
Brand and Compliance Consistency: Leveraging templates ensures every invoice/statement adheres to a uniform standard. Changes in branding (new logo, rebranding) or compliance details (like updated tax ID numbers) can be rolled out in one place. This is more efficient than editing multiple forms or emailing spreadsheets.
-
Cross-Functional Collaboration: Finance teams can do some customizations without full development cycles. The WYSIWYG editor allows less technical users to adjust labels, whereas complex logic remains with the IT/ERP team. This collaboration can free up developer hours for other projects.
-
Data-Driven Messaging: Advanced templates integrate tightly with transactional data. Companies can use this to embed personalized messages (e.g. referring to loyalty status, past account activity, etc.) to improve customer relations right in the billing documents.
-
Transition Costs: On the flip side, transitioning from basic layouts (or no customization) to advanced templates has a learning curve. Staff need training on FreeMarker and HTML. The initial investment in template design can be non-trivial, especially for complex layouts. However, the long-term ROI (through saved time and better cash flow) typically justifies it.
Future Directions and NetSuite Roadmap
Looking ahead, several factors will influence the evolution of advanced PDF/HTML templates in NetSuite:
-
Complete Migration: Oracle’s statements imply that all customers will eventually be on advanced templates. NetSuite may introduce tools or reports to identify which forms are still using basic layouts, encouraging migration. This drive means that investment now in advanced templates avoids future pain.
-
Enhanced Editor Features: The template editor may add more an WYSIWYG capabilities over time (e.g. better equivalence with source, more widgets). The mention of aligning with “industry standards for HTML editing” [9] suggests Oracle is aware that consistency and ease-of-use matter.
-
AI Integration: NetSuite is actively adding AI capabilities. As of 2024, features like Text Enhance and AI-driven invoice capture exist [30]. In the medium term, AI could assist in template creation. For example, an AI tool might suggest label placements or even auto-generate default layouts based on best practices. AI could potentially analyze past invoices to identify missing fields or recommend formatting improvements. Additionally, since invoice processing (OCR through Bill Capture) is AI-driven, a tighter integration could emerge where the same AI that reads invoices could verify the accuracy of generated templates against input data.
-
E-Document Standards: With global e-invoice mandates growing (e.g. PEPPOL in EU, SingPass in SG, etc.), future releases of NetSuite’s advanced templates might include dedicated support for those output standards (like adding XSLT transformations or QR/barcode fields). Oracle’s help mentions adding QR code elements【3】 (not fully explored above), suggesting future template functions (e.g. a function to generate QR codes for Swiss QR invoices or other standards criteria).
-
Cloud Collaboration: As part of the Oracle Cloud suite, NetSuite may enhance how templates are stored and shared. Imagine a template marketplace or repository (beyond SuiteApp bundles) where ready-made invoice templates are available for common industries. SuiteAnswers or GitHub-style sharing of FreeMarker snippets could become more mainstream.
-
Extended Document Types: While this report focuses on Invoice and Statement templates, the same technology underlies all transaction forms and even saved-search exports (CSV/Excellike). In the future, Oracle might expand advanced template use to more areas (e.g. quote PDFs, commissioned statements, custom reports).
In essence, advanced PDF/HTML templates are a “living” feature of NetSuite. They will continue to evolve as web standards and business needs change. Organizations should adopt them but stay flexible: patterns that serve today’s needs may be enhanced by new NetSuite features or third-party tools tomorrow.
Conclusion
NetSuite’s Advanced PDF/HTML Templates offer a modern, powerful framework for customizing invoices and statements. By enabling fully styled, data-rich documents with conditional logic and complex layouts, they represent a significant upgrade over legacy printing methods. This report has detailed how to enable the feature, link templates to forms, and build advanced invoice and statement templates. We examined the rich field availability (including aging buckets and all typical transaction fields), the integration with design elements like logos and CSS, and the capacity to include custom business data through FreeMarker and external tools.
We reviewed best practices and community advice – for instance, always developing in a sandbox and cloning templates to preserve originals, using inline CSS, and progressively testing each section. We presented real-world cases: from Oracle’s SuiteDreams scenario of adding loyalty data, to consultant blog code samples for high-value line highlighting. We also touched on how advanced templates fit into larger strategies: they align with AR automation (via AI and e-invoicing trends) and reflect recommendations from finance experts about the value of customized billing documents [25] [26].
Going forward, businesses should prioritize migrating to advanced templates (if not already done) given the deprecation of basic layouts [2] [34]. While there is an initial cost in learning and development, the long-term gains in efficiency, compliance, and brand consistency are substantial. Furthermore, as NetSuite continues to innovate (AI integration, e-doc compliance), advanced templates will remain the foundation for any print or PDF output needs. Organizations that master this feature today will be well-equipped to leverage upcoming NetSuite enhancements and industry changes.
In summary, advanced PDF/HTML templates unify design and data in NetSuite’s cloud ERP, enabling tailored invoices and statements that support strategic business outcomes. Kenchi solutions should consider them a core component of their NetSuite usage — a point well supported by both Oracle documentation [1] [2] and external research [25] [14]. All claims above are backed with evidence from official sources, communities, and expert blogs, ensuring this report stands as an authoritative guide to NetSuite instructional design and implementation for advanced PDF/HTML template customization.
External Sources
About Houseblend
HouseBlend.io is a specialist NetSuite™ consultancy built for organizations that want ERP and integration projects to accelerate growth—not slow it down. Founded in Montréal in 2019, the firm has become a trusted partner for venture-backed scale-ups and global mid-market enterprises that rely on mission-critical data flows across commerce, finance and operations. HouseBlend’s mandate is simple: blend proven business process design with deep technical execution so that clients unlock the full potential of NetSuite while maintaining the agility that first made them successful.
Much of that momentum comes from founder and Managing Partner Nicolas Bean, a former Olympic-level athlete and 15-year NetSuite veteran. Bean holds a bachelor’s degree in Industrial Engineering from École Polytechnique de Montréal and is triple-certified as a NetSuite ERP Consultant, Administrator and SuiteAnalytics User. His résumé includes four end-to-end corporate turnarounds—two of them M&A exits—giving him a rare ability to translate boardroom strategy into line-of-business realities. Clients frequently cite his direct, “coach-style” leadership for keeping programs on time, on budget and firmly aligned to ROI.
End-to-end NetSuite delivery. HouseBlend’s core practice covers the full ERP life-cycle: readiness assessments, Solution Design Documents, agile implementation sprints, remediation of legacy customisations, data migration, user training and post-go-live hyper-care. Integration work is conducted by in-house developers certified on SuiteScript, SuiteTalk and RESTlets, ensuring that Shopify, Amazon, Salesforce, HubSpot and more than 100 other SaaS endpoints exchange data with NetSuite in real time. The goal is a single source of truth that collapses manual reconciliation and unlocks enterprise-wide analytics.
Managed Application Services (MAS). Once live, clients can outsource day-to-day NetSuite and Celigo® administration to HouseBlend’s MAS pod. The service delivers proactive monitoring, release-cycle regression testing, dashboard and report tuning, and 24 × 5 functional support—at a predictable monthly rate. By combining fractional architects with on-demand developers, MAS gives CFOs a scalable alternative to hiring an internal team, while guaranteeing that new NetSuite features (e.g., OAuth 2.0, AI-driven insights) are adopted securely and on schedule.
Vertical focus on digital-first brands. Although HouseBlend is platform-agnostic, the firm has carved out a reputation among e-commerce operators who run omnichannel storefronts on Shopify, BigCommerce or Amazon FBA. For these clients, the team frequently layers Celigo’s iPaaS connectors onto NetSuite to automate fulfilment, 3PL inventory sync and revenue recognition—removing the swivel-chair work that throttles scale. An in-house R&D group also publishes “blend recipes” via the company blog, sharing optimisation playbooks and KPIs that cut time-to-value for repeatable use-cases.
Methodology and culture. Projects follow a “many touch-points, zero surprises” cadence: weekly executive stand-ups, sprint demos every ten business days, and a living RAID log that keeps risk, assumptions, issues and dependencies transparent to all stakeholders. Internally, consultants pursue ongoing certification tracks and pair with senior architects in a deliberate mentorship model that sustains institutional knowledge. The result is a delivery organisation that can flex from tactical quick-wins to multi-year transformation roadmaps without compromising quality.
Why it matters. In a market where ERP initiatives have historically been synonymous with cost overruns, HouseBlend is reframing NetSuite as a growth asset. Whether preparing a VC-backed retailer for its next funding round or rationalising processes after acquisition, the firm delivers the technical depth, operational discipline and business empathy required to make complex integrations invisible—and powerful—for the people who depend on them every day.
DISCLAIMER
This document is provided for informational purposes only. No representations or warranties are made regarding the accuracy, completeness, or reliability of its contents. Any use of this information is at your own risk. Houseblend shall not be liable for any damages arising from the use of this document. This content may include material generated with assistance from artificial intelligence tools, which may contain errors or inaccuracies. Readers should verify critical information independently. All product names, trademarks, and registered trademarks mentioned are property of their respective owners and are used for identification purposes only. Use of these names does not imply endorsement. This document does not constitute professional or legal advice. For specific guidance related to your needs, please consult qualified professionals.