Skip to main content

Generated page. Written from IdaMilk/NetSuite_Custom_Forms at commit ef44688 on 2026-07-28. No README; inferred from the two files present.

NetSuite Custom Forms

What is it?

Two NetSuite Advanced PDF/HTML templates under source control — the Invoice and Purchase Order transaction forms.

FileSizeForm
Invoice.xml9 KBCustomer invoice
Purchase_Order.xml15 KBPurchase order

Purpose

Advanced PDF templates control what a customer or supplier actually receives. They are edited in the NetSuite UI by default, which means no history, no review, and no way to tell what changed when a document suddenly renders wrong.

Keeping the XML in git gives those documents the same treatment as code.

How it Works

NetSuite's Advanced PDF templates are BFO (Big Faceless Report) XML with FreeMarker templating. The structure is:

  • A <head> declaring fonts, with locale-conditional blocks that swap in CJK and Thai font families for zh_CN, zh_TW, ja_JP, ko_KR and th_TH
  • A <macrolist> defining nlheader and nlfooter macros, which NetSuite calls on every rendered page
  • A <body> laying out line items and totals as HTML-like tables

FreeMarker expressions pull from the record and from company settings — companyInformation.logoUrl, .locale, and the transaction's own fields.

Editing these

The round trip is manual in both directions:

  1. Customise the form in NetSuite (Customization → Forms → Advanced PDF/HTML Templates)
  2. Export the template XML
  3. Commit it here

Nothing enforces that the committed file matches what is deployed. As with SuiteScripts, this repository is a record, not the source of truth — a form edited in the UI and not re-exported leaves git silently stale. Suntado SDF is the managed alternative; custom forms can be deployed as SDF objects.

A note on the committed templates

Invoice.xml embeds the company logo as an absolute NetSuite File Cabinet URL containing the account id and a media access hash. That hash is a bearer token — anyone holding the URL can fetch the file without authenticating. It is only a logo, so the exposure is minor, but the pattern is worth knowing about before it is copied into a template referencing something more sensitive.

The URL is deliberately not reproduced on this page, per the wiki's redaction policy.

Repository

RepositoryIdaMilk/NetSuite_Custom_Forms
Primary languageXML (BFO / FreeMarker)
Files2
Last activity2026-07-22
StatusActive
READMENone — a short note on the export/import round trip would prevent the "is this current?" question

Only two of the many transaction forms in the account are captured here. Bill of Lading and Certificate of Analysis templates live with their Suitelets in SuiteScripts instead.