NetSuite ERP Implementation: The Complete Step-by-Step Guide
On this page A NetSuite ERP implementation is one of the highest-stakes technology projects a…
The UAE Ministry of Finance published version 1.0 of its mandatory fields specification in February 2026. It defines exactly 51 fields that must appear in every electronic tax invoice submitted through the national e-invoicing network. If your NetSuite implementation is being scoped or retrofitted for compliance, this document is your primary reference. Read the UAE e-invoicing integration guide for NetSuite for the broader architecture picture, but this post focuses entirely on the fields: what each one is, where it comes from in NetSuite, and where NetSuite falls short natively.

A common mistake in e-invoicing projects is treating the XML schema as something the integration layer “figures out at runtime.” That works until the first field that NetSuite does not store. The UAE specification includes several such fields. Discovering them during UAT rather than during design adds weeks to a project and often requires a second deployment of custom fields to production.
The better approach is to map all 51 fields to their NetSuite source before writing a single line of integration code. This lets you identify custom field requirements, data quality gaps, and hardcoded values up front. Check the UAE e-invoicing compliance deadlines for NetSuite businesses to understand how much runway you have to complete this work.
The specification organises the 51 fields into six groups: Invoice Details, Seller Details, Buyer Details, Document Totals, Tax Breakdown, and Invoice Line fields. The line-level group applies per line, so an invoice with ten lines carries the Invoice Details fields once and the line fields ten times.
| # | Field | NetSuite Source | Notes |
|---|---|---|---|
| 1 | Invoice number | Invoice > Tran ID | Must be unique per invoice |
| 2 | Invoice date | Invoice > Date | Standard field |
| 3 | Invoice type code | Derived / hardcoded | Functional type code specific to electronic invoicing; value set by integration |
| 4 | Invoice currency code | Invoice > Currency | Applies to all amounts except total tax in accounting currency |
| 5 | Invoice transaction type code | CUSTOM FIELD | 8-character binary flag string; no native NetSuite field (see section below) |
| 6 | Payment due date | Invoice > Due Date | Standard field |
| 7 | Business process type | HARDCODED | Always “urn:peppol:bis:billing”; set in integration, not stored in NetSuite |
| 8 | Specification identifier | HARDCODED | Always “urn:peppol:pint:billing-1@ae-1”; hardcoded in integration |
| 9 | Payment means type code | Invoice > Payment Method (custom or mapped) | How payment is settled; map NetSuite payment methods to PINT-AE codes |
Field 5 is the first significant gap. NetSuite has no native field for an 8-bit binary string representing transaction type flags. The eight flags correspond to: Free Trade Zone, Deemed Supply, Margin Scheme, Summary Invoice, Continuous Supply, Disclosed Agent Billing, Supply through e-commerce, and Exports. Each flag is “1” if applicable and “0” if not. You need a custom field on the Invoice transaction record, populated either by the user or by scripted logic based on customer and item attributes.

| # | Field | NetSuite Source | Notes |
|---|---|---|---|
| 10 | Seller name | Subsidiary > Legal Name | Full formal registered name |
| 11 | Seller electronic address (TIN) | CUSTOM FIELD on Subsidiary | First 10 digits of the TRN; store as TIN on the company entity |
| 12 | Seller electronic identifier | HARDCODED | Always “0235” for UAE businesses; hardcoded in integration |
| 13 | Seller legal registration identifier | CUSTOM FIELD on Subsidiary | Trade license number or other official registration ID |
| 14 | Seller legal registration identifier type | CUSTOM FIELD on Subsidiary | One of: TL (Trade License), EID, PAS, CD |
| 15 | Seller tax identifier (TRN) | Subsidiary > Tax Registration Number | Available in NetSuite if tax registration is configured |
| 16 | Seller tax scheme code | HARDCODED | Always “VAT” |
| 17 | Seller address line 1 | Subsidiary > Address > Address 1 | Standard address field |
| 18 | Seller city | Subsidiary > Address > City | Standard field |
| 19 | Seller country subdivision (emirate) | Subsidiary > Address > State/Province | Must match the emirate; verify state values are set correctly |
| 20 | Seller country code | Subsidiary > Address > Country | Must be “AE” |
| # | Field | NetSuite Source | Notes |
|---|---|---|---|
| 21 | Buyer name | Customer > Company Name | Standard field |
| 22 | Buyer electronic address (TIN) | CUSTOM FIELD on Customer | Buyer’s TIN; no native NetSuite field for this |
| 23 | Buyer electronic identifier | HARDCODED | “0235” for UAE buyers; hardcoded |
| 24 | Buyer tax identifier (TRN) | Customer > Tax Registration Number | Available if customer tax registration is entered |
| 25 | Buyer tax scheme code | HARDCODED | Always “VAT” |
| 26 | Buyer address line 1 | Customer > Billing Address > Address 1 | Pull from billing address on the invoice |
| 27 | Buyer city | Customer > Billing Address > City | Standard field |
| 28 | Buyer country subdivision | Customer > Billing Address > State/Province | Emirate or state for non-UAE buyers |
| 29 | Buyer country code | Customer > Billing Address > Country | Standard field |
| # | Field | NetSuite Source |
|---|---|---|
| 30 | Sum of invoice line net amount | Invoice > Subtotal (sum of line amounts before tax) |
| 31 | Invoice total amount without tax | Invoice > Subtotal |
| 32 | Invoice total tax amount | Invoice > Tax Total |
| 33 | Invoice total amount with tax | Invoice > Total (including tax) |
| 34 | Amount due for payment | Invoice > Amount Due |
| 35 | Tax category taxable amount | Tax Detail > Net Amount per tax category |
| 36 | Tax category tax amount | Tax Detail > Tax Amount per tax category |
| 37 | Tax category code | Tax Code mapped to PINT-AE category codes |
| 38 | Tax category rate | Tax Code > Rate (%) |
Tax category code (field 37) requires a mapping table. NetSuite tax codes need to be mapped to one of the six PINT-AE categories: Standard Rate, Exempt, Out of Scope, Reverse Charge, Zero Rated, or Margin Scheme. This mapping should be maintained as a custom list in NetSuite or a lookup table in the integration layer.
| # | Field | NetSuite Source | Notes |
|---|---|---|---|
| 39 | Invoice line identifier | Line number (auto-generated) | Sequential number per line |
| 40 | Invoiced quantity | Invoice Line > Quantity | Standard field |
| 41 | Unit of measure code | Invoice Line > Units | Must use UN/ECE Recommendation 20 codes (EA, HUR, KGM, etc.) |
| 42 | Invoice line net amount | Invoice Line > Amount (after discount, before tax) | Standard field |
| 43 | Item net price | Invoice Line > Unit Price (after discount) | Exclusive of tax |
| 44 | Item gross price | Invoice Line > Unit Price (before discount) | Price before any line discount |
| 45 | Item price base quantity | Derived (typically 1) | The quantity the unit price applies to |
| 46 | Invoiced item tax category code | Invoice Line > Tax Code (mapped to PINT-AE) | Same mapping table as field 37 |
| 47 | Invoiced item tax rate | Invoice Line > Tax Code > Rate | Standard field |
| 48 | VAT line amount in AED | CALCULATED | Tax amount for this line in AED regardless of invoice currency; requires conversion |
| 49 | Invoice line amount in AED | CALCULATED | Total payable for this line in AED regardless of invoice currency; requires conversion |
| 50 | Item name | Invoice Line > Item > Display Name | Standard field |
| 51 | Item description | Invoice Line > Description | Standard field |
Before building the integration, create the following custom fields in NetSuite. Without them, the integration layer has no source record to read from:
Fields 48 and 49 are the most technically awkward requirement in the specification. The VAT line amount and total line amount must be expressed in AED on every invoice line, regardless of the invoice currency. If you invoice a customer in USD or EUR, the integration must convert each line’s amounts to AED at the exchange rate on the invoice date.
NetSuite stores the exchange rate on every foreign currency transaction. The integration layer should pull the exchange rate from the Invoice record and apply it to each line’s tax amount and net amount to produce the AED equivalents. Do not try to store these as persistent NetSuite fields on each line; calculate them at extraction time based on the invoice’s exchange rate.
This also means your integration needs to know the functional currency of the subsidiary is AED, so it knows which direction to convert. For subsidiaries whose base currency is already AED, no conversion is needed.
The UAE e-invoicing network uses the Peppol framework for addressing. Every participant (seller and buyer) is identified by a Peppol Participant ID in the format: 0235:TIN.
The TIN is the first 10 digits of the 15-digit TRN. For example, if the TRN is 100000000000003, the TIN is 1000000000, and the Peppol endpoint ID is 0235:1000000000. The scheme code “0235” is the UAE-specific Peppol issuing agency code and is always hardcoded.
In NetSuite terms: store the TIN (10 digits) as a custom field on the Subsidiary record (for your company) and on the Customer record (for buyers). The integration layer then concatenates “0235:” + TIN to form the Peppol Participant ID for the XML. Never store the full Peppol ID as a field; the “0235:” prefix is always a constant.
For guidance on how the full submission process works, see how to integrate NetSuite with a UAE e-invoicing service provider, which covers the ASP connection, submission flow, and error handling.
Several values in the specification are always fixed. Rather than adding NetSuite custom fields for them, hardcode them directly in the XML generation code and document that decision clearly:
urn:peppol:pint:billing-1@ae-1urn:peppol:bis:billing02350235VATVATThese six values never vary by transaction or customer. Keeping them as code constants rather than database fields eliminates an entire class of data quality issues where someone accidentally blanks out the field or enters the wrong value.
For the unit of measure codes (field 41), maintain a mapping table between NetSuite unit types and UN/ECE Recommendation 20 codes. NetSuite’s default unit names (“Each”, “Hour”, “Kilogram”) will not match the required codes (“EA”, “HUR”, “KGM”). A lookup table in the integration is the cleanest approach.
Use the UAE e-invoicing go-live checklist for NetSuite to verify all custom fields are created, populated, and tested before your compliance date.
Need help mapping UAE e-invoicing fields to your NetSuite setup? Aaxonix works with UAE businesses to design and implement compliant integrations from field mapping through to go-live.
Book a free consultationGetting the field mapping right at the design stage is the difference between a smooth go-live and an expensive rework cycle. The 51 mandatory fields in the UAE specification are clearly defined; what matters is knowing which ones NetSuite covers natively, which require custom fields, and which should be hardcoded constants in your integration. Build that inventory first, then write the code. For a complete view of your implementation scope, see NetSuite implementation and integration services from Aaxonix.
Our team builds systems that actually work. No fluff, just honest architecture and clean implementation.