<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
  <title>SuiteHeroes Insights</title>
  <link>https://suiteheroes.com/insights/</link>
  <atom:link href="https://suiteheroes.com/insights/feed.xml" rel="self" type="application/rss+xml"/>
  <description>Practical NetSuite write-ups from Raja Saqib, NetSuite Consultant, SuiteHeroes.com.</description>
  <language>en-gb</language>
  <copyright>© SuiteHeroes.com Ltd</copyright>
  <image>
    <url>https://suiteheroes.com/apple-touch-icon.png</url>
    <title>SuiteHeroes Insights</title>
    <link>https://suiteheroes.com/insights/</link>
  </image>
  <lastBuildDate>Fri, 13 Nov 2026 09:00:00 +0000</lastBuildDate>
  <item>
    <title>NetSuite SuiteScript 2.1 upgrade: how to plan it and what to rewrite first</title>
    <link>https://suiteheroes.com/insights/suitescript-2-1-upgrade-plan/</link>
    <guid isPermaLink="true">https://suiteheroes.com/insights/suitescript-2-1-upgrade-plan/</guid>
    <pubDate>Fri, 13 Nov 2026 09:00:00 +0000</pubDate>
    <dc:creator>Raja Saqib</dc:creator>
    <category>Customisation</category>
    <description>How to plan a SuiteScript 2.1 upgrade in NetSuite before 2028.2: find your 1.0 and 2.0 scripts, decide what to retire, and rewrite the risky ones first.</description>
    <content:encoded><![CDATA[<p><img src="https://suiteheroes.com/og/insights/suitescript-2-1-upgrade-plan.png" alt="" width="1200" height="630"></p>
<p>A <b>SuiteScript 2.1 upgrade</b> is no longer optional. Oracle's guide to <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_7161922360.html" target="_blank" rel="noopener">transitioning to SuiteScript 2.1</a> says support for SuiteScript 1.0, SuiteScript 2.0, and scripts annotated <code>@NApiVersion 2.0</code> or <code>@NApiVersion 2.x</code>, is expected to be removed in NetSuite 2028.2. Before that, from 2027.1, SuiteScript 1.0 support covers critical issues only.</p>
<p>The short answer to "what do I rewrite first?" is this: find every legacy script, delete the ones nobody uses, then rewrite your SuiteScript 1.0 scripts in order of business risk. Scheduled scripts that yield, RESTlets used by integrations, and scripts that touch postings or approvals go to the top. Most SuiteScript 2.0 scripts are a smaller job and can come later.</p>
<p>I write all new NetSuite customisation in SuiteScript 2.1, and I maintain and upgrade older 1.0 code for clients. This is the plan I follow.</p>
<h2>The SuiteScript 2.1 timeline Oracle has published</h2>
<p>Oracle's transition guide sets out four releases:</p>
<ul><li><b>2026.2:</b> SuiteScript 2.1 becomes the standard scripting model for new and existing scripts.</li><li><b>2027.1:</b> SuiteScript 1.0 enters end-of-life support, covering critical issues only. For other problems, Oracle will ask you to convert the script to 2.1 first.</li><li><b>2028.1:</b> SuiteScript 1.0 scripts can no longer be deployed in new accounts. They remain deployable in existing accounts. SuiteScript 2.0 and 2.x scripts run as 2.1 by default.</li><li><b>2028.2:</b> all new and existing scripts must use SuiteScript 2.1.</li></ul>
<p>Release plans can move, so check Oracle's page before you fix dates in a project plan. The practical point is that 2027.1 matters more than 2028.2. After 2027.1, a SuiteScript 1.0 script that breaks in a way Oracle doesn't class as critical may have to be converted before anyone will look at it. That is a poor time to start a rewrite.</p>
<p>The same releases bring the authentication changes I covered in <a href="https://suiteheroes.com/insights/netsuite-tba-oauth-2-soap-rest/">NetSuite TBA to OAuth 2.0 and SOAP to REST</a>. If you have RESTlets or integrations to rework anyway, plan both changes as one project.</p>
<h2>Step 1: Build an inventory of legacy scripts</h2>
<p>Oracle's guide suggests <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_0827101556.html" target="_blank" rel="noopener">three ways to find scripts not on 2.1</a>. The quickest is the script list:</p>
<ol><li>Go to <i>Customization &gt; Scripting &gt; Scripts</i>.</li><li>Use the <b>API Version</b> filter to show 1.0, then 2.0, then 2.x.</li></ol>
<p>For something you can share and sort, create a saved search on script records with the criterion <b>API Version is not 2.1</b>, and show Name, ID, Script Type, API Version, Owner and Description. A SuiteAnalytics workbook grouped by API Version or Script Type works too.</p>
<p>Then add the columns that drive the plan. For each script, note:</p>
<ul><li><b>What it does</b>, in one line a finance user would understand.</li><li><b>Whether it still runs.</b> Check its deployments and execution logs. A script with no recent activity is a candidate for retirement, not conversion.</li><li><b>Who owns it.</b> Some scripts belong to a SuiteApp or a third-party bundle. Those are the vendor's job to upgrade, so ask each vendor for their plan and date.</li><li><b>What it touches:</b> transactions, approvals, tax, payments, integrations or just a UI field.</li><li><b>Dependencies:</b> libraries it loads, other scripts on the same record, workflows that call it.</li></ul>
<h2>Step 2: Retire before you rewrite</h2>
<p>Most accounts that have been live for several years carry scripts nobody remembers writing. Oracle's guidance is to evaluate inactive or obsolete scripts for retirement instead of migration. Every script you remove is one less to convert, test and support.</p>
<p>Be careful with the word "inactive". A script that runs once a year at year-end, or only when a particular subsidiary posts an intercompany journal, can look unused. Confirm with the process owner before you undeploy anything, and keep a copy of the file.</p>
<h2>Step 3: Decide what to rewrite first</h2>
<p>Oracle recommends starting with scripts that support critical business processes, high-usage scripts, integrations and scripts with complex dependencies. Within that, this is the order I use.</p>
<h3>1. Scheduled scripts that yield or set recovery points</h3>
<p>SuiteScript 2.1 scheduled scripts have no equivalent of <code>nlapiYieldScript()</code> or <code>nlapiSetRecoveryPoint()</code>. Oracle's <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_51112557168.html" target="_blank" rel="noopener">script type differences</a> say 2.1 scheduled scripts don't support manual yielding, and a restarted script begins again from the start. For work that needs yielding, Oracle points you to a Map/Reduce script.</p>
<p>That means these scripts aren't a line-by-line conversion. They are a redesign: split the work into stages, make each record safe to process twice, and decide how errors are reported. They take longest, so start them first.</p>
<h3>2. RESTlets and integration scripts</h3>
<p>RESTlets sit between NetSuite and other systems, so a failure stops data moving. If the integration also uses TBA or NLAuth, the authentication needs to change too. I built the Cape.io integration between NetSuite and Fortnox in native SuiteScript 2.1, and the lesson carries over: <a href="https://suiteheroes.com/services/netsuite-integration/">integration code</a> needs proper logging, retries and a test plan agreed with finance. See the <a href="https://suiteheroes.com/case-studies/cape-io/">Cape.io case study</a> for how that looked across eight subsidiaries.</p>
<h3>3. Finance-critical user event and workflow action scripts</h3>
<p>Next come scripts on transactions: GL impact, approval routing, vendor bank detail controls, tax fields, intercompany logic. A subtle change here may not throw an error. It may just post a different amount.</p>
<h3>4. Client scripts, Suitelets and portlets</h3>
<p>These affect what users see. Errors are usually obvious and quick to spot in testing, so they can follow the server-side work.</p>
<h3>5. SuiteScript 2.0 and 2.x scripts</h3>
<p>These come last because there is a shortcut for many of them. Under <i>Setup &gt; Company &gt; Preferences &gt; General Preferences</i>, Oracle provides two <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_157960966997.html" target="_blank" rel="noopener">account-level preferences</a>: <b>Execute SuiteScript 2.0 Server Scripts as 2.1</b> and <b>Execute SuiteScript 2.x Server Scripts as 2.1</b>. They run server scripts on the 2.1 runtime without changing the file, and you can switch them back at any time. Use them in sandbox to see which scripts work unchanged, then update the annotation.</p>
<p>Two limits apply. The preferences cover server scripts only, and there is no equivalent for SuiteScript 1.0. And SuiteScript 2.1 runs on a different engine, so some behaviour changes. Oracle lists <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_158755248128.html" target="_blank" rel="noopener">differences between 2.0 and 2.1</a> including error object properties, <code>parseInt</code>, date formatting, strict mode and RESTlet return types.</p>
<h2>What changes when you convert SuiteScript 1.0</h2>
<p>A SuiteScript 1.0 script can't be fixed by changing a tag. NetSuite doesn't support calling SuiteScript 1.0 APIs from a 2.x script, so every <code>nlapi</code> function and <code>nlobj</code> object has to be replaced with the matching N/ module. Oracle's <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_4752722762.html" target="_blank" rel="noopener">SuiteScript 1.0 to 2.1 API map</a> is the reference. Expect these changes:</p>
<ul><li><b>Structure.</b> Global functions become an AMD module with <code>define</code>, and each entry point receives a single context object.</li><li><b>Arguments.</b> 2.1 methods take one options object, and parameter names sometimes differ.</li><li><b>Subrecords.</b> Addresses and other subrecords work differently. You don't save them separately; NetSuite saves them with the parent record.</li><li><b>APIs with no direct equivalent.</b> Oracle lists some, such as the date-time value functions (use N/format) and <code>nlapiAddDays</code> (use standard JavaScript dates).</li><li><b>Reserved names.</b> <code>log</code> and <code>util</code> are reserved in 2.1. Oracle notes that a 1.0 variable with either name causes an error if 1.0 and 2.1 scripts run on the same record. That matters during a phased upgrade, when old and new scripts sit side by side.</li></ul>
<h2>Using AI to convert scripts, safely</h2>
<p>Oracle now publishes a <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_0818030029.html" target="_blank" rel="noopener">SuiteScript upgrade agent skill</a>, <code>netsuite-suitescript-upgrade</code>, that can analyse, convert, explain and validate legacy scripts. It's a useful first draft and a good way to size the work.</p>
<p>Oracle's own warnings are worth repeating. Validation is a static check, not a substitute for functional testing. Review entry points, dependencies, script IDs and deployment behaviour, and don't change production behaviour just because a conversion completed without errors. Oracle flags date, time zone, subrecord, search, error handling and sublist indexing as areas to check by hand.</p>
<h2>Test and release in batches</h2>
<p>For each converted script, run it in sandbox against the same records as the original and compare the results: field values, GL lines, emails sent, records created. Then release a few scripts at a time, outside month-end, and watch the execution logs before the next batch. Oracle recommends the same phased approach.</p>
<p>After go-live, make sure each release is tested too. A <a href="https://suiteheroes.com/offers/netsuite-release-readiness/">release readiness check</a> runs your scripts against the release preview before each upgrade, which matters more as 2028 approaches.</p>
<p>If you would rather hand over the inventory and rewrite, my <a href="https://suiteheroes.com/services/netsuite-customisation/">NetSuite customisation and SuiteScript development</a> service covers it, or you can <a href="https://suiteheroes.com/contact/">book a call</a> to talk it through.</p>

<div class="ins-key"><h3>Key takeaways</h3><ul><li>Oracle expects to remove support for SuiteScript 1.0, SuiteScript 2.0 and scripts annotated 2.0 or 2.x in NetSuite 2028.2. From 2027.1, SuiteScript 1.0 support covers critical issues only.</li><li>Start with an inventory. Filter Customization &gt; Scripting &gt; Scripts by API Version, then retire anything inactive before you convert a line of code.</li><li>Rewrite SuiteScript 1.0 first, starting with scheduled scripts that yield, RESTlets and finance-critical scripts. SuiteScript 2.0 server scripts can often be tested on the 2.1 runtime with an account preference.</li><li>Treat AI conversion tools as a first draft. Test every converted script in sandbox against the original behaviour and release in small batches.</li></ul></div>
<p style="margin-top:28px;">Want a ranked list of your legacy scripts and a fixed price to upgrade them? The <a href="https://suiteheroes.com/offers/suitescript-oauth-upgrade/">SuiteScript 2.1 and OAuth 2.0 Upgrade</a> starts with a free inventory.</p>
<p>Originally published at <a href="https://suiteheroes.com/insights/suitescript-2-1-upgrade-plan/">suiteheroes.com</a>.</p>]]></content:encoded>
    <media:content url="https://suiteheroes.com/og/insights/suitescript-2-1-upgrade-plan.png" type="image/png" medium="image" width="1200" height="630"/>
    <media:thumbnail url="https://suiteheroes.com/og/insights/suitescript-2-1-upgrade-plan.png" width="1200" height="630"/>
    <enclosure url="https://suiteheroes.com/og/insights/suitescript-2-1-upgrade-plan.png" type="image/png" length="66739"/>
  </item>
  <item>
    <title>NetSuite support after go-live: what good L2/L3 support looks like</title>
    <link>https://suiteheroes.com/insights/netsuite-support-after-go-live/</link>
    <guid isPermaLink="true">https://suiteheroes.com/insights/netsuite-support-after-go-live/</guid>
    <pubDate>Wed, 11 Nov 2026 09:00:00 +0000</pubDate>
    <dc:creator>Raja Saqib</dc:creator>
    <category>Support</category>
    <description>What good NetSuite support looks like after go-live: who handles L1, L2 and L3, when to raise a case with Oracle, and how to stop the same tickets returning.</description>
    <content:encoded><![CDATA[<p><img src="https://suiteheroes.com/og/insights/netsuite-support-after-go-live.png" alt="" width="1200" height="630"></p>
<p>Good <b>NetSuite support</b> after go-live is not a help desk that closes tickets. It is a clear split of who answers what, a quick route to a fix when something breaks, and someone who finds out why it broke so it doesn't happen again. Most businesses handle simple questions in-house. What they lack is the second and third levels: someone senior who can read a script log, trace a failed integration record, or work out why a journal posted to the wrong period.</p>
<p>I've provided L2/L3 support and administration to NetSuite customers for years. Most of them came to me after going live with someone else. This is what I think good support looks like, and how to tell whether you have it.</p>
<h2>What L1, L2 and L3 NetSuite support mean</h2>
<p>Oracle doesn't define these levels for you. They are a common way to divide the work, and this is how I use them:</p>
<ul><li><b>L1: how-to and access.</b> Password resets, "where do I find this report", a user who can't see a field. Usually handled by a key user or your NetSuite administrator.</li><li><b>L2: diagnosis and configuration.</b> Something is wrong and needs investigating. A saved search returns the wrong totals, an approval workflow stalls, a tax code posts to the wrong account, a CSV import fails. L2 fixes configuration, roles, forms, searches and data.</li><li><b>L3: technical and design.</b> The cause sits in SuiteScript, a workflow, an integration or the way the account was designed. L3 reads code and logs, fixes or rewrites scripts, and changes the design where it's wrong.</li></ul>
<p>The test of a good set-up is that each request reaches the right level quickly. An L3 problem that sits with L1 for two weeks costs more than the fix.</p>
<h2>Where Oracle NetSuite Customer Support fits</h2>
<p>Oracle's own support is part of the picture, but it covers the product, not your configuration. The defects it tracks are cases "when a feature doesn't work as intended" (<a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N338747.html" target="_blank" rel="noopener">Oracle: NetSuite issue resolution</a>). Your custom scripts, workflows, saved searches and third-party integrations are yours to support, or your partner's.</p>
<p>What you can do through Oracle depends on your support level. Oracle's help on <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_1205115443.html" target="_blank" rel="noopener">creating support cases</a> says:</p>
<ul><li>On <b>Basic Support</b>, you go to the Support tab, select Go to SuiteAnswers, then Contact Support. You start with the Virtual Support Assistant, and you can submit only critical problems that affect business operations. Other questions go to the NetSuite Support Community.</li><li>On <b>Premium Support</b>, you go to Contact Support &gt; Create Support Case, choose a case type and set a severity. For a C1 case you tick the 24 x 7 availability box.</li></ul>
<p>Only authorised support contacts can report problems and manage cases with Oracle on your behalf. The limit is two contacts on Basic Support and four on Premium. You manage them from the Support tab, in NetSuite 360 &gt; Authorized Support Contacts (<a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_80140211562.html" target="_blank" rel="noopener">Oracle: adding authorised support contacts</a>). When an administrator leaves, check this list straight away, so you aren't left without a valid contact when you need to raise an urgent case.</p>
<p>A good L2/L3 partner knows when an issue is a genuine product defect and writes the case for you: steps to reproduce, the record IDs, the role used, screenshots and the business impact. Oracle says the more case questions you answer, the faster the response. If you have access to NetSuite 360, you can follow defects linked to your cases under See Support Issues.</p>
<h2>What good L2/L3 NetSuite support looks like</h2>
<h3>1. A clear way in, and agreed response times</h3>
<p>One channel for requests, whether that's email, Teams or Slack, and a written response time. Everyone should know what counts as urgent. A blocked payment run or failed month-end close is urgent. A new column on a report is not.</p>
<h3>2. Triage that starts with evidence</h3>
<p>Good support asks for the record, the user, the role and the time, and then looks at the evidence NetSuite already keeps:</p>
<ul><li><b>System notes</b> on the record show who changed what and when, with the old and new values (<a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_160225379741.html" target="_blank" rel="noopener">Oracle: system notes</a>).</li><li><b>Script execution logs</b>, at Customization &gt; Scripting &gt; Script Execution Logs, show script errors across all scripts. Oracle purges user-generated logs after 30 days and system error logs after 60 days, and the log subtab on a script can lose entries sooner when log volume is high (<a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N3352137.html" target="_blank" rel="noopener">Oracle: governance on script logging</a>). If an error happened six weeks ago, the log may be gone, so act on errors promptly.</li><li><b>Application Performance Management (APM)</b>, a SuiteApp from Oracle, shows which scripts and workflows slow down pages and processes (<a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_160319247019.html" target="_blank" rel="noopener">Oracle: APM for the SuiteCloud platform</a>).</li><li><b>Integration error queues</b> in Celigo, Boomi or your own logs.</li></ul>
<p>This is the difference between L2 and guesswork. Many "NetSuite is broken" reports come down to a changed role, an edited form or a closed period, and the system notes show that quickly.</p>
<h3>3. Fix the cause, not the symptom</h3>
<p>Re-running a failed integration record clears today's error. Fixing the missing mapping stops tomorrow's. When the same ticket comes back each month, treat it as a design problem, not a support problem. On the Jockey Club's Coupa integration, finance and support see every flow's health and every error, with a suggested fix, in a control centre built inside NetSuite (<a href="https://suiteheroes.com/case-studies/the-jockey-club/">case study</a>).</p>
<h3>4. Changes made safely</h3>
<p>Even small changes should be made in a sandbox first, where you have one, then moved to production with a note of what changed and why. Script and workflow changes need a quick regression test of the process they touch. This is where many support arrangements fall down: a quick fix in production that breaks a scheduled script nobody remembered.</p>
<h3>5. A log of every request</h3>
<p>Each request should be recorded: what was asked, what was found, what was done and how long it took. The log is how you spot patterns, such as one integration that causes half the tickets. It also means the next person who supports your account doesn't start from nothing.</p>
<h3>6. Release readiness twice a year</h3>
<p>NetSuite is upgraded twice a year. Before each release, you can request a Release Preview account, which lets you test your daily business processes against the new version (<a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/subsect_1121105228.html" target="_blank" rel="noopener">Oracle: the Release Preview account</a>). Good support uses that window to test scripts, workflows, integrations and key reports, and fixes problems before they reach production. I cover this as part of support, or as a fixed <a href="https://suiteheroes.com/offers/netsuite-release-readiness/">NetSuite Release Readiness check</a>.</p>
<h3>7. Steady improvement</h3>
<p>Support should leave the account better each month: a saved search tidied up, a manual step automated, a role tightened, a user trained. If your support provider only ever reacts, you are paying for the same problems twice.</p>
<h2>Warning signs your NetSuite support isn't working</h2>
<ul><li>The same errors appear every month-end.</li><li>Nobody can say which scripts or integrations run in your account, or who owns them.</li><li>Small changes wait weeks because the implementation partner is busy or expensive.</li><li>Fixes are made directly in production with no record.</li><li>Your only NetSuite expert has left, and the authorised support contact list still has their name on it.</li></ul>
<p>If several of these sound familiar, start with a review of the account. My <a href="https://suiteheroes.com/insights/netsuite-health-check-checklist/">NetSuite health check checklist</a> covers the areas I look at first.</p>
<h2>In-house, partner or independent support</h2>
<p>There's no single right model. A strong in-house administrator handles L1 and much of L2, and brings in senior help for L3 and design questions. Smaller teams often have no administrator at all, and need someone to cover all three levels for a set number of hours a month. Either way, the person helping should know your account before something breaks, not learn it during an outage.</p>
<p>My <a href="https://suiteheroes.com/services/netsuite-support/">NetSuite support and administration service</a> covers L2/L3 support, administration, performance tuning and release reviews, for accounts I implemented and accounts set up by other partners. If you want a set number of hours each month with agreed response times, a support log and a monthly summary, see the <a href="https://suiteheroes.com/offers/netsuite-support-retainer/">NetSuite Support Retainer</a>. If your integrations generate most of your tickets, read how I <a href="https://suiteheroes.com/insights/netsuite-integration-project-plan/">plan and test NetSuite integration projects</a> so errors are designed out from the start.</p>

<div class="ins-key"><h3>Key takeaways</h3><ul><li>Split NetSuite support into three levels. L1 answers how-to questions in-house, L2 diagnoses and fixes configuration and data, and L3 fixes scripts, integrations and design.</li><li>Oracle NetSuite Customer Support handles product defects, not your own scripts, workflows or integrations. Someone has to own those.</li><li>Good L2/L3 support fixes the cause, logs every request, and checks scripts and integrations in Release Preview before each upgrade.</li><li>Keep your authorised support contacts current. On Basic Support you can have two, on Premium Support four.</li></ul></div>
<p style="margin-top:28px;">Need senior NetSuite support after go-live, or a second pair of hands for your administrator? <a href="https://suiteheroes.com/contact/">Book a call</a> and we can talk through what you need.</p>
<p>Originally published at <a href="https://suiteheroes.com/insights/netsuite-support-after-go-live/">suiteheroes.com</a>.</p>]]></content:encoded>
    <media:content url="https://suiteheroes.com/og/insights/netsuite-support-after-go-live.png" type="image/png" medium="image" width="1200" height="630"/>
    <media:thumbnail url="https://suiteheroes.com/og/insights/netsuite-support-after-go-live.png" width="1200" height="630"/>
    <enclosure url="https://suiteheroes.com/og/insights/netsuite-support-after-go-live.png" type="image/png" length="65235"/>
  </item>
  <item>
    <title>Running a NetSuite integration project: scoping, mapping, error handling and sign-off</title>
    <link>https://suiteheroes.com/insights/netsuite-integration-project-plan/</link>
    <guid isPermaLink="true">https://suiteheroes.com/insights/netsuite-integration-project-plan/</guid>
    <pubDate>Tue, 10 Nov 2026 09:00:00 +0000</pubDate>
    <dc:creator>Raja Saqib</dc:creator>
    <category>Integration</category>
    <description>How to run a NetSuite integration project: scope each flow, map fields and IDs, design error handling and retries, then test and sign off with finance.</description>
    <content:encoded><![CDATA[<p><img src="https://suiteheroes.com/og/insights/netsuite-integration-project-plan.png" alt="" width="1200" height="630"></p>
<p>A <b>NetSuite integration</b> rarely fails because the API call didn't work. It fails because nobody agreed which system owns the customer record, a field was mapped by guesswork, or an error sat unnoticed in a log until month-end. Those are project problems, not coding problems. They are solved by four pieces of work: scoping, mapping, error handling and sign-off.</p>
<p>I've led integrations on Celigo, Dell Boomi and native SuiteScript 2.1, with Coupa, Salesforce, HubSpot, Shopify, Stripe, Fortnox and others. This is the plan I follow, whichever tool carries the data. If you're still choosing the tool, I've covered that separately in <a href="https://suiteheroes.com/insights/native-suitescript-vs-ipaas/">native SuiteScript vs iPaaS</a>.</p>
<h2>Step 1: Scope the NetSuite integration flow by flow</h2>
<p>"Integrate Salesforce with NetSuite" is not a scope. It is a dozen separate flows, each with its own rules. Break the integration into flows and write a short specification for each one. For every flow, answer these questions:</p>
<ul><li><b>Which records?</b> For example, customers, sales orders, invoices, payments or vendor bills.</li><li><b>Which system is the source of truth?</b> One system owns each record type, or even each field. If both systems can edit the same field, decide which wins.</li><li><b>Which direction?</b> One way, or both. Two-way sync needs protection against echo loops, where an update in one system triggers an update back, and so on forever.</li><li><b>What triggers it?</b> Real time on save, a schedule, or a manual run.</li><li><b>How many, and how often?</b> Daily and peak volumes, and the busiest day of the month.</li><li><b>What happens to history?</b> Whether open or historical records are loaded at go-live, and how.</li><li><b>Who owns errors?</b> A named person or team, not "IT".</li></ul>
<p>Two NetSuite limits belong in scope. First, every account has a concurrency limit on web services and RESTlet requests, which depends on your service tier and SuiteCloud Plus licences. Oracle documents that requests over the limit are rejected, and you can reserve part of the limit for a single integration at Setup &gt; Integration &gt; Integration Management &gt; Integration Governance (<a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/bridgehead_156224824287.html" target="_blank" rel="noopener">Oracle: concurrency limit per integration</a>). If three integrations all run at 2am, they compete for the same pool.</p>
<p>Second, give each application its own integration record. In Oracle's model each application can have its own record, listed at Setup &gt; Integration &gt; Manage Integrations. That lets you see each application's own execution log and block one application without touching the others (<a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_4389727047.html" target="_blank" rel="noopener">Oracle: integration record overview</a>). Pair it with a dedicated integration role that has only the permissions the flow needs.</p>
<p>Then write down what is out of scope. Exclusions agreed early are far cheaper than exclusions argued about in UAT.</p>
<h2>Step 2: Map identifiers first, then fields</h2>
<p>Before you map a single amount, decide how each system will recognise a record it has seen before.</p>
<p>In NetSuite the usual answer is the external ID. You store the other system's ID on the NetSuite record, and the integration looks records up by it. NetSuite's REST web services support an upsert operation that uses it: a PUT request with the external ID in the URL creates the record if it doesn't exist and updates it if it does (<a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_156335203191.html" target="_blank" rel="noopener">Oracle: using the upsert operation</a>). That is what makes a retry safe. Without it, a timeout followed by a retry gives you two invoices.</p>
<p>Write the other system's reference back as well, so a user in either system can trace a record to its partner. On the Cape.io Fortnox integration, the Fortnox document number was stamped back on every NetSuite transaction for exactly that reason.</p>
<p>Then map fields, and be explicit about the awkward ones:</p>
<ul><li><b>Subsidiary, currency and tax code.</b> In OneWorld, a record in the wrong subsidiary is a consolidation problem, not a typo.</li><li><b>GL accounts, departments, classes and locations.</b> Map each value. Don't let an unmapped value fall back to a default account. In the Cape.io build, unmapped accounts fail loudly by design, so the statutory accounts still reconcile line by line.</li><li><b>Items.</b> Decide what happens when a line has no matching item. On the Jockey Club's Coupa integration, a line with no item match posts as an expense line coded from the billing string, rather than stopping the whole invoice.</li><li><b>Dates, rounding and line order.</b> Small differences here cause most reconciliation breaks.</li></ul>
<p>Keep crosswalks, such as entity to subsidiary or tax code to tax code, as data the business can maintain, in a custom record or a lookup table. Hard-coded lists in scripts become a change request every time finance adds a code.</p>
<h2>Step 3: Design NetSuite integration error handling before you build</h2>
<p>Every integration will fail sometimes: an inactive supplier, a closed period, a blank mandatory field. What matters is what happens next. Agree these rules in design, not after the first bad month-end:</p>
<ol><li><b>Classify errors.</b> Separate temporary errors (timeouts, concurrency rejections, an unavailable endpoint) from data errors (a missing vendor, a closed period). Temporary errors can retry automatically with a growing delay between attempts. Data errors need a person, and retrying them only fills the log.</li><li><b>Make every write safe to repeat.</b> Use upserts or a lookup on the external ID, and decide the order of writes. On the Jockey Club build, NetSuite IDs are written back to Coupa first and the exported flag second, because Coupa locks exported invoices.</li><li><b>Log in one place, with context.</b> Each error should record the flow, the source record, the message and a suggested fix. On that project, finance and support see every flow's health and every error in an integration control centre built as a Suitelet inside NetSuite, without logging in to Celigo.</li><li><b>Alert the owner.</b> Send failures to the named owner from Step 1, and alert on silence too. A flow that hasn't run for a day is often a bigger problem than one that failed once.</li><li><b>Guard against bad runs.</b> Before a large run, check a known record first. The Jockey Club chart-of-accounts flow checks a "golden record" combination before it starts, so a change to the segment order stops the run before it can do damage.</li><li><b>Write the runbook.</b> For each common error: what it means, who fixes it, and how to re-run.</li></ol>
<h2>Step 4: Test like finance will use it</h2>
<p>Build and test in a sandbox, and plan for refreshes. Oracle notes that a sandbox refresh deletes the token key and token secret, so they have to be regenerated, and it recommends separate integration records in each account so sandbox changes can't break production (<a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_1515141510.html" target="_blank" rel="noopener">Oracle: TBA credentials and accounts</a>). If your integration still uses token-based authentication, read my note on the <a href="https://suiteheroes.com/insights/netsuite-tba-oauth-2-soap-rest/">move from TBA to OAuth 2.0</a> before you build.</p>
<p>Test in three layers:</p>
<ul><li><b>Unit tests</b> of each mapping, run by the developer.</li><li><b>System integration tests (SIT)</b> end to end across both systems, with scripted cases for creates, updates, cancellations, credits, partial payments and each error you designed for in Step 3.</li><li><b>User acceptance tests (UAT)</b> run by the people who will live with it, using real scenarios from a recent month.</li></ul>
<p>Test volume, too. Run a realistic month-end batch, not ten records. And if you're loading history, load it through the same flows and rules as live data. On the Jockey Club project, a 777-invoice backlog was re-imported through the live rules, and every remaining error was traced to a named data fix.</p>
<h2>Step 5: Sign off against evidence</h2>
<p>Sign-off is where projects either end cleanly or drift. Agree the criteria at the start, and make them measurable:</p>
<ul><li>Every SIT and UAT script passed, or has an agreed workaround and an owner.</li><li>A reconciliation report that ties the count and value of records in both systems for a test period, by subsidiary.</li><li>The runbook, mapping document and support contacts handed over.</li><li>Alerts tested, by forcing a failure and checking the right person was told.</li><li>A go-live plan: cut-off times, who switches each flow on, and how to roll back.</li></ul>
<p>Signatures should come from the finance owner and the business owner of each flow, not just the developer. The first two or three month-ends after go-live are the real test, so agree who is on hand for them. Ongoing <a href="https://suiteheroes.com/services/netsuite-support/">NetSuite support</a> after that can be in-house or a retainer, but someone must own the error queue.</p>
<h2>When an integration is already live and failing</h2>
<p>If an existing NetSuite integration keeps breaking, work the same steps in reverse: list the flows, rebuild the mapping from what the integration actually does, then add the missing error handling. My fixed-price <a href="https://suiteheroes.com/offers/integration-rescue-sprint/">NetSuite Integration Rescue Sprint</a> does that for Celigo, Boomi and SuiteScript integrations.</p>
<p>For a new project, my <a href="https://suiteheroes.com/services/netsuite-integration/">NetSuite integration services</a> cover scoping, mapping, build, testing and sign-off. You can see how a 24-flow, nine-entity build came together in <a href="https://suiteheroes.com/case-studies/the-jockey-club/">the Jockey Club case study</a>.</p>

<div class="ins-key"><h3>Key takeaways</h3><ul><li>Scope a NetSuite integration flow by flow. For each one, write down the source of truth, the direction, the trigger, the volume and who owns errors.</li><li>Map identifiers before fields. An external ID on every integrated record is what lets a retry update a record instead of duplicating it.</li><li>Design error handling as part of the build. Every failure should be logged, visible to the person who can fix it, and safe to retry.</li><li>Sign off against agreed test scripts and reconciliation reports, signed by finance and the business owner, not just the developer.</li></ul></div>
<p style="margin-top:28px;">Planning a NetSuite integration, or living with one that keeps failing? <a href="https://suiteheroes.com/contact/">Book a call</a> and I'll walk through your flows with you.</p>
<p>Originally published at <a href="https://suiteheroes.com/insights/netsuite-integration-project-plan/">suiteheroes.com</a>.</p>]]></content:encoded>
    <media:content url="https://suiteheroes.com/og/insights/netsuite-integration-project-plan.png" type="image/png" medium="image" width="1200" height="630"/>
    <media:thumbnail url="https://suiteheroes.com/og/insights/netsuite-integration-project-plan.png" width="1200" height="630"/>
    <enclosure url="https://suiteheroes.com/og/insights/netsuite-integration-project-plan.png" type="image/png" length="72542"/>
  </item>
  <item>
    <title>How to choose a NetSuite consultant in the UK: 10 questions to ask before you sign</title>
    <link>https://suiteheroes.com/insights/choose-netsuite-consultant-uk/</link>
    <guid isPermaLink="true">https://suiteheroes.com/insights/choose-netsuite-consultant-uk/</guid>
    <pubDate>Mon, 09 Nov 2026 14:00:00 +0000</pubDate>
    <dc:creator>Raja Saqib</dc:creator>
    <category>Implementation</category>
    <description>Choosing a NetSuite consultant in the UK? Ten questions to ask before you sign, from who does the work and references to certifications, scope and support.</description>
    <content:encoded><![CDATA[<p><img src="https://suiteheroes.com/og/insights/choose-netsuite-consultant-uk.png" alt="" width="1200" height="630"></p>
<p>If you're looking for a <b>NetSuite consultant in the UK</b>, the hard part isn't finding one. It's telling apart the consultant who will deliver your project from the one who will learn on it. The quickest way to do that is to ask the same ten questions of everyone on your shortlist, and listen to how specific the answers are.</p>
<p>I've seen this from both sides. I was a Senior NetSuite Consultant at RSM US, a NetSuite partner, and I now run SuiteHeroes, an independent NetSuite consultancy in London. I've also been brought in to rescue stalled implementations, and most of them went wrong in ways these questions would have exposed before anyone signed.</p>
<h2>10 questions to ask a NetSuite consultant in the UK</h2>
<h3>1. Who will actually do the work?</h3>
<p>This matters more than anything else on the list. The person who runs the sales meeting is not always the person who configures your account. Ask for the names of the people who will lead design, build any scripts and run data migration, and ask to meet them.</p>
<p>Then ask how much of their time you get. A consultant spread across six clients will be slow to answer when your month-end breaks. A good answer names people and gives a realistic commitment, such as days per week during build.</p>
<h3>2. Have you done projects like ours?</h3>
<p>"Yes, we've done lots of NetSuite implementations" isn't an answer. Ask about projects with the same shape as yours: the same number of entities, the same modules, the same systems to integrate, the same source system you're leaving.</p>
<p>If you're a UK group with overseas subsidiaries, ask about OneWorld, multi-currency and intercompany. If you're moving from Xero or Sage, ask how they handled opening balances and history. If you sell subscriptions, ask about revenue recognition. Then ask for a reference you can call, not just a logo. A short conversation with a finance director who has been through it tells you more than any proposal.</p>
<h3>3. Can you verify your NetSuite certifications?</h3>
<p>Oracle runs NetSuite certifications, including SuiteFoundation and the ERP Consultant exam. You don't have to take a badge on a website at face value. Oracle's certification portal, CertView, lets a candidate publish their credentials to a third party: you receive a link and a password by email, and they're only valid for a limited time (<a href="https://docs.oracle.com/en/education/customer-success/digital-learning-kit/ml-cert-faq/topics/OracleCertViewRelated.html" target="_blank" rel="noopener">Oracle CertView FAQ</a>). Oracle says it won't verify a certification for an employer without the candidate starting the request, so ask them to send it.</p>
<p>Treat certification as a floor, not proof. It shows someone has passed an exam. Questions 1 and 2 tell you whether they've delivered.</p>
<h3>4. Do you understand our finance processes, or just the system?</h3>
<p>NetSuite is an accounting system first. A consultant who knows every setting but not why a controller locks a period, how VAT is reported, or what IFRS 15 asks of revenue recognition will build something that works on screen and fails at month-end.</p>
<p>Ask them to walk you through how they would set up your close, or your approval for supplier bank detail changes. This is where my CIMA qualification earns its keep: on one project I helped take a monthly close from 12 days to 2.5 days, and the work was as much finance process as system configuration.</p>
<h3>5. How do you build, test and document customisation?</h3>
<p>Scripts and workflows are where long-term cost hides. Ask:</p>
<ul><li>Do you write new scripts in SuiteScript 2.1?</li><li>Where is the code kept, and do we get a copy?</li><li>What documentation do we receive at the end?</li><li>How do you test before NetSuite's twice-yearly upgrades?</li></ul>
<p>On the last point, Oracle provides a Release Preview account before each release so you can <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_4471776042.html" target="_blank" rel="noopener">check that your existing business processes still work</a>. A consultant who has never mentioned it is unlikely to plan for it. The same goes for integrations: ask how errors are logged, who is alerted and how failed records are retried. I've written about the choice of tool in <a href="https://suiteheroes.com/insights/native-suitescript-vs-ipaas/">native SuiteScript vs iPaaS</a>.</p>
<h3>6. How did you arrive at this estimate, and what's excluded?</h3>
<p>A credible estimate shows days by workstream (design, configuration, data migration, integrations, testing, training and go-live support), with assumptions and exclusions written down. A single total with no breakdown can't be compared with anything.</p>
<p>Look hardest at the exclusions. A low fixed price with a long list of them is often how a cheap project becomes an expensive one. I cover what drives the number in <a href="https://suiteheroes.com/insights/netsuite-implementation-cost-uk/">NetSuite implementation cost in the UK</a>.</p>
<h3>7. How do you handle change and open decisions?</h3>
<p>Scope will change. That's normal. What you want to know is how: who raises a change request, how it's priced, and who signs it off. Ask also how they keep design decisions from sitting open. In my experience, many troubled projects didn't fail on technology. They ran over because decisions waited weeks for an answer.</p>
<h3>8. How will you access our NetSuite account?</h3>
<p>Each consultant should have their own named login, with a role that gives them what they need and no more, and two-factor authentication. Shared logins wreck the audit trail and make it impossible to remove one person's access cleanly. Ask also what happens at the end: who removes their access, and how integration credentials are handed over.</p>
<h3>9. What happens after go-live?</h3>
<p>The first two or three month-ends usually need hands-on help. After that, someone has to fix issues, make small changes and test each release. Ask whether the consultant offers support, how fast they respond, and whether the person answering will know your account. A <a href="https://suiteheroes.com/offers/netsuite-support-retainer/">NetSuite support retainer</a> is one option. Training an internal NetSuite administrator is another. Either way, agree it before go-live, not after the first problem.</p>
<h3>10. Are the contract basics in place?</h3>
<p>These are dull questions, but they protect you:</p>
<ul><li><b>The company.</b> Check the business on <a href="https://find-and-update.company-information.service.gov.uk/" target="_blank" rel="noopener">Companies House</a>. Know who you're contracting with.</li><li><b>Insurance.</b> Ask whether they hold professional indemnity insurance, and for what cover.</li><li><b>Data protection.</b> Your consultant will see customer, supplier and employee data. Expect clear data processing terms in the contract.</li><li><b>IR35.</b> If you're a medium or large business and you hire an individual who works through their own limited company, the off-payroll working rules make you responsible for deciding their employment status. HMRC's guidance says this has applied to private sector clients <a href="https://www.gov.uk/hmrc-internal-manuals/employment-status-manual/esm10011" target="_blank" rel="noopener">since 6 April 2021</a>. Whether the rules apply to your engagement depends on the facts, so check with your accountant or tax adviser.</li></ul>
<h2>Red flags to watch for</h2>
<ul><li>They propose a solution before asking about your processes.</li><li>They can't name the people who'll do the work.</li><li>Every requirement gets "yes, NetSuite does that", with no trade-offs.</li><li>They have no references from a project of similar size and shape.</li><li>They want to customise heavily where standard NetSuite would do.</li><li>There's no plan for testing, training or support after go-live.</li></ul>
<h2>Partner, independent or both?</h2>
<p>You can choose a NetSuite partner, an independent NetSuite consultancy, or a mix, such as a partner for licences and an independent consultant for design and delivery. Each has strengths. A larger firm offers more people and cover. An independent consultant usually means the senior person you met is the one doing the work. Ask all ten questions either way.</p>
<p>If you're planning a new project, my <a href="https://suiteheroes.com/services/netsuite-implementation/">NetSuite implementation services</a> cover requirements and design through to data migration, integrations and go-live. You can see how a multi-entity integration project ran in <a href="https://suiteheroes.com/case-studies/the-jockey-club/">the Jockey Club case study</a>. If you already have NetSuite and want an independent view of how well it's set up, a <a href="https://suiteheroes.com/offers/netsuite-health-check/">NetSuite health check</a> is a sensible place to start.</p>

<div class="ins-key"><h3>Key takeaways</h3><ul><li>Ask who will actually do the work, and meet them before you sign. The sales conversation and the delivery team are often different people.</li><li>Ask for references from projects like yours, and check certifications through Oracle CertView rather than a logo on a website.</li><li>A good estimate shows days by workstream, assumptions and exclusions. A good consultant also explains how change requests and open decisions are handled.</li><li>Settle access, documentation, support after go-live and the contract basics, including IR35 where it applies, before work starts.</li></ul></div>
<p style="margin-top:28px;">Shortlisting NetSuite consultants? <a href="https://suiteheroes.com/contact/">Book a call</a> and put these ten questions to me. I'll answer them straight, including when I'm not the right fit.</p>
<p>Originally published at <a href="https://suiteheroes.com/insights/choose-netsuite-consultant-uk/">suiteheroes.com</a>.</p>]]></content:encoded>
    <media:content url="https://suiteheroes.com/og/insights/choose-netsuite-consultant-uk.png" type="image/png" medium="image" width="1200" height="630"/>
    <media:thumbnail url="https://suiteheroes.com/og/insights/choose-netsuite-consultant-uk.png" width="1200" height="630"/>
    <enclosure url="https://suiteheroes.com/og/insights/choose-netsuite-consultant-uk.png" type="image/png" length="72092"/>
  </item>
  <item>
    <title>NetSuite e-invoicing: prebuilt add-ons or a custom native localisation?</title>
    <link>https://suiteheroes.com/insights/netsuite-e-invoicing-custom-localisation/</link>
    <guid isPermaLink="true">https://suiteheroes.com/insights/netsuite-e-invoicing-custom-localisation/</guid>
    <pubDate>Mon, 09 Nov 2026 11:00:00 +0000</pubDate>
    <dc:creator>Raja Saqib</dc:creator>
    <category>Localisation</category>
    <description>NetSuite e-invoicing deadlines start on 1 January 2027. When a prebuilt add-on is enough, and when a custom native build gives you control as you grow.</description>
    <content:encoded><![CDATA[<p><img src="https://suiteheroes.com/og/insights/netsuite-e-invoicing-custom-localisation.png" alt="" width="1200" height="630"></p>
<p>E-invoicing is no longer something a few countries do. On 1 January 2027 new <b>NetSuite e-invoicing</b> obligations start in Germany, the UAE, Norway and Croatia, with France, Spain and the rest of the UAE following during 2027. For many NetSuite customers the question isn't whether to comply, but how: switch on a prebuilt add-on, or build a native localisation inside NetSuite that you control.</p>
<p>There's no single right answer. This article sets out the deadlines, where prebuilt add-ons work well, where they start to hold a growing business back, and what a custom native solution gives you in return.</p>
<h2>The NetSuite e-invoicing deadlines to plan for</h2>
<p>These are the dates that affect most of the groups we work with. Each was checked against tax authority or official sources in November 2026:</p>
<ul><li><b>31 December 2026, Philippines:</b> structured e-invoicing under the EOPT Act for large taxpayers, e-commerce sellers and businesses using computerised accounting systems.</li><li><b>1 January 2027, Germany:</b> issuing structured e-invoices becomes mandatory where prior-year turnover was above €800,000. Everyone else follows on 1 January 2028.</li><li><b>1 January 2027, UAE:</b> businesses with revenue of AED 50m or more go live through an Accredited Service Provider, under <a href="https://mof.gov.ae/wp-content/uploads/2025/09/Ministerial-Decision-No.-244-of-2025-on-the-Implementation-of-the-Electronic-Invoicing-System.pdf" target="_blank" rel="noopener">Ministerial Decision 244 of 2025</a>. Smaller businesses follow on 1 July 2027.</li><li><b>1 January 2027, Norway:</b> businesses must send EHF or Peppol e-invoices to other businesses.</li><li><b>1 September 2027, France:</b> SMEs and micro-businesses must issue e-invoices and e-report through an approved platform, a year after large companies (<a href="https://entreprendre.service-public.gouv.fr/actualites/A15683?lang=en" target="_blank" rel="noopener">official timetable</a>).</li><li><b>6 October 2027, Spain:</b> B2B e-invoicing for businesses above €8m, including reporting payment status.</li></ul>
<p>Our <a href="https://suiteheroes.com/services/netsuite-e-invoicing-compliance/">country-by-country guide</a> covers 38 countries, including the statutory reports that sit alongside each mandate.</p>
<h2>What NetSuite gives you out of the box</h2>
<p>Oracle's starting point is the <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_4536869579.html" target="_blank" rel="noopener">Electronic Invoicing SuiteApp</a>. It's a framework for creating, sending and receiving XML or JSON e-documents. Oracle's documentation says it's free for one country and needs a licence for more. On top of it, Oracle offers country SuiteApps for places such as Belgium, France, Germany and Spain (Veri*Factu), as well as Brazil, Mexico, Chile, India, Saudi Arabia, the UAE, Israel and Malaysia. Several of these route documents through Oracle Business Network and Avalara.</p>
<p>Third-party add-ons fill many of the gaps, from Italian SDI connectors to Argentine localisations. For a single subsidiary with a standard sales process, one of these is often the quickest way to comply. We recommend them where they fit.</p>
<h2>Where prebuilt add-ons start to hurt as the business changes</h2>
<p>The trouble usually starts a year or two after go-live, when the business no longer looks like it did on the day the add-on was installed. These are the issues we see most often.</p>
<h3>You depend on someone else's roadmap</h3>
<p>Mandates change often. Germany's tax ministry issued new guidance in October 2026, Malaysia changed its exemption threshold in August 2026, and Spain has announced but not yet enacted a delay to Veri*Factu. When a rule changes, you wait for the vendor's next release. If that release lands after your deadline, or doesn't cover your edge case, you have no way to fix it yourself.</p>
<h3>Locked records, fields and scripts</h3>
<p>Most add-ons ship as locked bundles. You can't change their custom records, add a field the authority now wants, or alter the script logic. When your process needs something slightly different, such as a self-billing flow, a marketplace channel or a new document type, you end up building workarounds around a black box.</p>
<h3>Costs and coverage that grow with every country</h3>
<p>Each new subsidiary can mean another licence, another vendor or another connector. A group in five countries can easily end up with three different e-invoicing products, three support contracts and three ways of handling rejections. Finance teams then have to learn a different process for each entity.</p>
<h3>Your data leaves NetSuite for someone else's cloud</h3>
<p>Many connectors copy invoice data to the vendor's platform before it reaches the authority. Sometimes the law requires an intermediary anyway, such as approved platforms in France, Accredited Service Providers in the UAE, PACs in Mexico and Peppol access points elsewhere. But adding a second, optional copy outside NetSuite means more contracts to review and more places where data is kept.</p>
<h3>Reporting that doesn't reconcile</h3>
<p>When e-invoices live in one product and VAT returns, SAF-T files and ledgers are built somewhere else, the figures drift apart. The authority then sees invoice data that doesn't match the return you filed.</p>
<h2>What a custom native localisation gives you</h2>
<p>A native build lives entirely inside your NetSuite account, written in SuiteScript 2.1 and using records you own:</p>
<ul><li><b>Records and fields:</b> custom records for each e-document, its status history, the country profile and your code mappings, with fields on the transaction that your team can see, report on and change.</li><li><b>Scripts:</b> one engine that builds XML (UBL, CII, FatturaPA, CFDI) or JSON, checks it against the official schema, signs it with your certificate and sends it. Adding a country means adding a format, not a new product.</li><li><b>Workflows:</b> approvals, blocks on editing cleared invoices and rejection handling that match how your finance team actually works.</li><li><b>Security:</b> credentials in NetSuite API Secrets, documents sent from NetSuite straight to the authority wherever its API allows, and no copy held by us or by middleware. The legal archive stays in your account.</li><li><b>Reporting:</b> VAT returns, SAF-T files and reconciliations built from the same data as the e-invoices, so they agree.</li></ul>
<p>The trade-off is ownership. With a custom build you're responsible for keeping up with rule changes, testing each NetSuite release and keeping the code documented. That's manageable with good tests and a <a href="https://suiteheroes.com/offers/netsuite-support-retainer/">support retainer</a>, but it's a real commitment, and it's one reason we compare options honestly before recommending a build.</p>
<h2>Prebuilt, custom or both?</h2>
<p>A simple way to decide, entity by entity:</p>
<ol><li><b>One country, a standard process and an Oracle SuiteApp that covers it:</b> start with the SuiteApp.</li><li><b>Several countries, non-standard flows or a fast-changing regime:</b> build on Oracle's Electronic Invoicing framework with your own templates and sending plug-ins, or go fully custom.</li><li><b>No Oracle SuiteApp, or a requirement that no data leaves NetSuite except to the authority:</b> build natively.</li></ol>
<p>Many groups end up with a mix: Oracle's SuiteApp for Belgium or Germany, and a custom engine for the countries where nothing fits. What matters is one data model, one way of handling rejections and reporting that reconciles across every subsidiary.</p>
<h2>Start with the deadlines you can't move</h2>
<p>If you have subsidiaries in Germany, the UAE, Norway or Croatia, 1 January 2027 is close. Map each entity to its obligation now, decide the route per country, and leave time to test with the authority's sandbox. Our consultants have delivered NetSuite localisation, e-invoicing and statutory reporting across 38 countries. Our <a href="https://suiteheroes.com/services/netsuite-e-invoicing-compliance/">NetSuite e-invoicing and tax reporting service</a> sets out how we get each entity ready.</p>
<p>For a German example in more depth, read <a href="https://suiteheroes.com/insights/german-e-invoicing-netsuite/">German §14 UStG e-invoicing in NetSuite</a>. For the wider build-or-buy question, see <a href="https://suiteheroes.com/insights/native-suitescript-vs-ipaas/">native SuiteScript vs third-party iPaaS</a>.</p>

<div class="ins-key"><h3>Key takeaways</h3><ul><li>E-invoicing mandates start on 1 January 2027 in Germany, the UAE, Norway, Croatia and New Zealand B2G, with France, Spain and the rest of the UAE following during 2027.</li><li>Prebuilt add-ons are quick to switch on, but you depend on someone else's roadmap, data model and licensing as you add countries and processes.</li><li>A custom native build keeps the records, fields, scripts, workflows and audit trail in your own NetSuite account, under your control.</li><li>The best answer is often a mix: Oracle's SuiteApp where it fits, and custom templates or connectors where it doesn't.</li></ul></div>
<p style="margin-top:28px;">Not sure which route fits your entities and deadlines? <a href="https://suiteheroes.com/contact/">Book a call</a> and we'll map each subsidiary to its obligations and the simplest compliant way to meet them.</p>
<p>Originally published at <a href="https://suiteheroes.com/insights/netsuite-e-invoicing-custom-localisation/">suiteheroes.com</a>.</p>]]></content:encoded>
    <media:content url="https://suiteheroes.com/og/insights/netsuite-e-invoicing-custom-localisation.png" type="image/png" medium="image" width="1200" height="630"/>
    <media:thumbnail url="https://suiteheroes.com/og/insights/netsuite-e-invoicing-custom-localisation.png" width="1200" height="630"/>
    <enclosure url="https://suiteheroes.com/og/insights/netsuite-e-invoicing-custom-localisation.png" type="image/png" length="63713"/>
  </item>
  <item>
    <title>How much does a NetSuite implementation cost in the UK? What drives the price</title>
    <link>https://suiteheroes.com/insights/netsuite-implementation-cost-uk/</link>
    <guid isPermaLink="true">https://suiteheroes.com/insights/netsuite-implementation-cost-uk/</guid>
    <pubDate>Sun, 08 Nov 2026 10:00:00 +0000</pubDate>
    <dc:creator>Raja Saqib</dc:creator>
    <category>Implementation</category>
    <description>What drives NetSuite implementation cost in the UK: licences, scope, data migration, integrations and support, and how to get a quote you can trust.</description>
    <content:encoded><![CDATA[<p><img src="https://suiteheroes.com/og/insights/netsuite-implementation-cost-uk.png" alt="" width="1200" height="630"></p>
<p>The honest answer to "how much does a NetSuite implementation cost in the UK?" is that it depends on scope, and anyone who quotes a single number before understanding yours is guessing. What I can do is show you where the money goes and which decisions move the price, so you can build a realistic budget and test the quotes you receive.</p>
<p>I've worked on NetSuite for more than 15 years, as a Senior NetSuite Consultant at RSM US, a NetSuite partner, and now as an independent NetSuite consultancy in London. The same few factors decide the cost of almost every project.</p>
<h2>The two bills: subscription and implementation</h2>
<p>A NetSuite budget has two separate parts, and it's worth keeping them apart from the start.</p>
<p><b>The subscription</b> is what you pay Oracle (or a reseller) to use NetSuite. It's normally made up of a base licence, user licences and any add-on modules, such as OneWorld, Advanced Revenue Management, Fixed Assets or Advanced Inventory. Extra sandbox accounts are also licensed separately; Oracle's help says you <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/subsect_1121105332.html" target="_blank" rel="noopener">buy a sandbox through your NetSuite account manager</a>. Oracle doesn't publish a price list, so the only reliable figure is a written quote for your configuration.</p>
<p><b>The implementation</b> is the work of designing, configuring, migrating, integrating, testing and training. Whether you use Oracle's own services team, a NetSuite partner or an independent consultant, this is priced in consultant days, either as time and materials or as a fixed fee built from an estimate of days.</p>
<p>Published guides on NetSuite implementation cost are mostly written by US partners, priced in dollars, and disagree with each other by a wide margin. That's not because some are wrong. It's because "a NetSuite implementation" can mean anything from one UK company on core financials to a multi-country group with a dozen integrations.</p>
<h2>What drives NetSuite implementation cost in the UK</h2>
<p>These are the factors I look at first when I estimate a project. Users matter less than most people expect. Adding ten users adds licences and a little training, but adding one subsidiary or one integration can add weeks.</p>
<h3>1. Number of entities and countries</h3>
<p>A single UK company is the simplest case. A group with subsidiaries needs <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_N266468.html" target="_blank" rel="noopener">NetSuite OneWorld</a>, and each subsidiary brings its own base currency, tax set-up, intercompany rules and consolidation. Oracle's help notes that you can't change a subsidiary's base currency once the record is saved, so the hierarchy has to be designed properly up front.</p>
<p>Each overseas country also adds local tax and reporting. Cape.io, for example, runs a OneWorld account with eight subsidiaries across eight countries, and the Fortnox integration I built had to reconcile VAT line by line for Swedish statutory reporting (<a href="https://suiteheroes.com/case-studies/cape-io/">read the Cape.io case study</a>).</p>
<h3>2. Modules and processes in scope</h3>
<p>Core financials, order to cash and procure to pay are the base. Each module beyond that, such as revenue recognition, SuiteBilling, projects, inventory, manufacturing or planning and budgeting, needs its own design workshops, configuration and testing. Revenue recognition under IFRS 15 is a common example where the set-up looks small on a feature list but takes careful design.</p>
<h3>3. Data migration</h3>
<p>Moving from Xero, Sage or QuickBooks is a different job from moving off SAP or a bespoke system. The cost depends on how many years of history you bring across, whether you migrate open transactions only or full detail, and how clean the source data is. Duplicate customers, inconsistent item codes and unreconciled balances all have to be fixed somewhere, and it's cheaper to fix them before the load than after go-live.</p>
<h3>4. Integrations</h3>
<p>Every system that talks to NetSuite, such as a CRM, e-commerce platform, payment provider, payroll or a hotel PMS, needs mapping, build, error handling and testing. On a Coupa to NetSuite source-to-pay integration I led for The Jockey Club, the build ran to 24 flows across nine entities on Celigo (<a href="https://suiteheroes.com/case-studies/the-jockey-club/">the Jockey Club case study</a>). That's at the larger end, but it shows how integration scope multiplies.</p>
<p>The tool matters too. An iPaaS such as Celigo or Boomi has its own subscription; native SuiteScript has no extra licence but needs a developer. I've compared the two in <a href="https://suiteheroes.com/insights/native-suitescript-vs-ipaas/">native SuiteScript vs iPaaS for NetSuite integrations</a>.</p>
<h3>5. Customisation</h3>
<p>Every custom field, form and saved search is cheap on its own. Custom workflows and SuiteScript cost more, and they keep costing after go-live, because each one has to be tested before every NetSuite release. The cheapest projects are the ones that adapt the process to standard NetSuite where the business can live with it, and customise only where there's a real reason.</p>
<h3>6. UK tax and compliance</h3>
<p>UK VAT and Making Tax Digital are well supported. Oracle's <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_157235633810.html" target="_blank" rel="noopener">UK Localization SuiteApp</a> provides templates for the VAT100 return, EC Sales List and Intrastat, and supports digital submission to HMRC. It still needs installing, configuring and testing against your tax codes, and that time belongs in the estimate. If you have VAT complications such as partial exemption, check the treatment with your tax adviser before design starts.</p>
<h3>7. Your own team's time</h3>
<p>This is the cost most budgets leave out. Your finance team will spend time in workshops, cleaning data, writing and running user acceptance tests, and learning the system, usually while doing their day jobs. If they can't give that time, the project slows down, and a slower project costs more in consultant days. Some companies backfill roles or bring in temporary help for the busiest months.</p>
<h2>Costs that turn up after the quote</h2>
<p>A few items are often missing from the first budget:</p>
<ul><li><b>Support after go-live.</b> The first two or three month-ends usually need hands-on help. After that you need someone for fixes, small changes and release testing, whether that's an internal administrator or a <a href="https://suiteheroes.com/offers/netsuite-support-retainer/">NetSuite support retainer</a>.</li><li><b>Third-party subscriptions.</b> iPaaS tools, tax engines, banking connectors and some SuiteApps carry their own fees.</li><li><b>Change requests.</b> Anything not in the signed scope will be charged extra. That's fair, but it's where budgets drift.</li><li><b>Rework.</b> A project that goes live with poor data or untested processes costs more to fix afterwards than it would have cost to do properly.</li></ul>
<h2>How to get a quote you can trust</h2>
<p>You can't compare quotes unless they describe the same project. Before you ask for one, write down:</p>
<ol><li>your entities, countries and currencies</li><li>the processes and modules in scope, and those out of scope</li><li>every system that will integrate with NetSuite, with rough volumes</li><li>what data you'll migrate and how many years of history</li><li>your target go-live date and any fixed deadlines, such as a year-end.</li></ol>
<p>Then ask each NetSuite partner or consultant to show days by workstream (design, configuration, migration, integrations, testing, training, go-live support), their assumptions and their exclusions. The total cost is simply the days multiplied by the day rate. As an illustration only: if two quotes use similar day rates but one has half the days for data migration, ask what they've left out.</p>
<p>Be wary of a low fixed price with a long list of exclusions. It's often how a project that looks cheap at signing becomes expensive by go-live.</p>
<h2>Keeping the cost down without cutting corners</h2>
<ul><li><b>Phase the scope.</b> Go live on core financials first and add modules or integrations in a second phase, once the team is using the system.</li><li><b>Clean data before migration</b>, not during it.</li><li><b>Stay close to standard NetSuite</b> and customise only where it pays back.</li><li><b>Decide quickly.</b> Many of the stalled implementations I've been asked to rescue didn't fail on technology. They ran over because design decisions sat open for weeks.</li></ul>
<p>If your project is already over budget or behind, the <a href="https://suiteheroes.com/offers/implementation-rescue-sprint/">Implementation Rescue Sprint</a> is a fixed-scope way to find out why and get go-live back on track. For a new project, my <a href="https://suiteheroes.com/services/netsuite-implementation/">NetSuite implementation services</a> cover everything from requirements and design through to data migration, integrations and go-live support.</p>

<div class="ins-key"><h3>Key takeaways</h3><ul><li>There's no list price for a NetSuite implementation. The cost is consultant days, and the days come from scope.</li><li>Budget separately for the Oracle subscription, the implementation, integrations, data migration, your own team's time and support after go-live.</li><li>Subsidiaries, integrations, data migration and customisation move the price more than user numbers do.</li><li>A useful quote lists assumptions, exclusions and days by workstream, so you can compare like with like.</li></ul></div>
<p style="margin-top:28px;">Planning a NetSuite project, or worried one is running over? <a href="https://suiteheroes.com/contact/">Book a call</a> and I'll give you an honest view of scope and effort before you commit.</p>
<p>Originally published at <a href="https://suiteheroes.com/insights/netsuite-implementation-cost-uk/">suiteheroes.com</a>.</p>]]></content:encoded>
    <media:content url="https://suiteheroes.com/og/insights/netsuite-implementation-cost-uk.png" type="image/png" medium="image" width="1200" height="630"/>
    <media:thumbnail url="https://suiteheroes.com/og/insights/netsuite-implementation-cost-uk.png" width="1200" height="630"/>
    <enclosure url="https://suiteheroes.com/og/insights/netsuite-implementation-cost-uk.png" type="image/png" length="75163"/>
  </item>
  <item>
    <title>NetSuite health check checklist: 12 areas to review in your own account</title>
    <link>https://suiteheroes.com/insights/netsuite-health-check-checklist/</link>
    <guid isPermaLink="true">https://suiteheroes.com/insights/netsuite-health-check-checklist/</guid>
    <pubDate>Sun, 08 Nov 2026 09:00:00 +0000</pubDate>
    <dc:creator>Raja Saqib</dc:creator>
    <category>Optimisation</category>
    <description>A practical NetSuite health check checklist: 12 areas to review in your own account, from accounting preferences and roles to scripts and integrations.</description>
    <content:encoded><![CDATA[<p><img src="https://suiteheroes.com/og-health-check.png" alt="" width="1200" height="630"></p>
<p>A NetSuite account rarely breaks in one go. It drifts. A preference is changed to get a transaction through at month-end. A leaver keeps access. A script is deployed for a one-off fix and never switched off. Each change is small, but after a few years the account is slower, harder to close and harder to trust.</p>
<p>A health check is a structured look at that drift. You don't need a consultant to start one. This checklist covers 12 areas you can review in your own account, with the menu paths to find each one and what to look for when you get there. You'll need the Administrator role, or a role with view access to setup, for most of it.</p>
<p>Menu paths can vary with your edition, enabled features and role, so treat them as a guide and check <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/" target="_blank" rel="noopener">Oracle's NetSuite help</a> if something isn't where you expect.</p>
<h2>Controls and set-up</h2>
<h3>1. Enabled features</h3>
<p>Go to <i>Setup &gt; Company &gt; Enable Features</i> and work through each subtab. You're looking for two things: features that are switched on but not used, and features you're paying for, or that would solve a known problem, that are switched off.</p>
<p>Features that are on but unused add fields, forms and confusion. Before switching anything off, check with the people who use that area, as some features can't easily be turned off once there's data behind them.</p>
<h3>2. Accounting preferences</h3>
<p>Go to <i>Setup &gt; Accounting &gt; Accounting Preferences</i>. On the General subtab, check <b>Allow Transaction Date Outside of Posting Period</b>. It has three options: Disallow, Warn and Allow. Allow lets users post outside the period with no warning at all, which is rarely what a finance team wants.</p>
<p>On the same subtab, check whether <b>Require Approvals on Journal Entries</b> is set, unless journal approval runs through a workflow instead. On the Items/Transactions subtab, look at <b>Duplicate Number Warnings</b>.</p>
<p>The Audit Trail under the More menu on this page shows who changed each preference, when, and the values before and after. It's worth a look if a setting surprises you.</p>
<h3>3. Accounting periods and locks</h3>
<p>Go to <i>Setup &gt; Accounting &gt; Manage G/L &gt; Manage Accounting Periods</i>. Look at how far back periods are open. Old periods left open invite back-dated postings that change figures you've already reported.</p>
<p>The page also shows locks for A/R, A/P, payroll (if used) and all G/L transactions. Oracle's help describes how to <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N1451780.html" target="_blank" rel="noopener">lock and unlock periods</a> through the Period Close Checklist. If periods are closed months late, or never locked between month-end and close, that's a finding in itself.</p>
<h3>4. Chart of accounts and segments</h3>
<p>Review the chart of accounts for duplicate or near-duplicate accounts, accounts with the wrong type, and old accounts that should be inactive. Then look at departments, classes, locations and any custom segments. Ask two questions: is each one used consistently, and is it mandatory where your reporting depends on it? A segment that's optional on half your transactions won't give you a reliable report.</p>
<h2>Security and access</h2>
<h3>5. Roles and permissions</h3>
<p>Review who has the Administrator role and how many custom roles carry wide permissions. Look for roles that combine duties that should be separate, such as creating vendors and approving payments to them.</p>
<p>NetSuite <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_1532968056.html" target="_blank" rel="noopener">requires two-factor authentication</a> for the Administrator and other highly privileged roles, and this can't be removed. Use the Two-Factor Authentication Roles page to see which other roles are flagged, and decide whether any more sensitive roles, such as those that approve payments, should require it too.</p>
<h3>6. User access and leavers</h3>
<p>Go to <i>Setup &gt; Users/Roles &gt; View Login Audit Trail</i>. It shows login activity by user, role, date and IP address. Compare it with your list of current staff. Anyone who has left should not have access, and anyone with access who hasn't logged in for months may not need it.</p>
<p>This is also a good point to compare active users with the number of licences you pay for.</p>
<h2>Data and finance</h2>
<h3>7. Duplicate customers and vendors</h3>
<p>Duplicate records split history, confuse credit control and can hide payment errors. If Duplicate Detection is enabled, its settings are under <i>Setup &gt; Company &gt; Duplicate Detection</i>, and an administrator can review flagged records in bulk at <i>Lists &gt; Mass Update &gt; Entity Duplicate Resolution</i>. Oracle's help on <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N490932.html" target="_blank" rel="noopener">duplicate record detection</a> explains the matching rules and the limits on merging.</p>
<p>For vendors, also check who can change bank details and whether those changes are approved.</p>
<h3>8. Bank reconciliation</h3>
<p>Check that every bank and credit card account is reconciled up to the last month-end, and how old the oldest unmatched items are.</p>
<p>Oracle now uses the Match Bank Data and Reconcile Account Statement pages (<i>Transactions &gt; Bank &gt; Reconcile Account Statement</i>). The older Reconcile Bank Statement and Reconcile Credit Card Statement pages still work but are no longer supported, according to Oracle's <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_4842302228.html" target="_blank" rel="noopener">bank data matching and reconciliation</a> help. If your team still uses the old pages, plan the move.</p>
<h3>9. Open subledger balances</h3>
<p>Run your A/R and A/P ageing reports and look past the totals. Common findings are:</p>
<ul><li>customer payments and deposits left unapplied</li><li>vendor credits never applied to bills</li><li>sales orders fulfilled but never billed</li><li>purchase orders received but never billed, with no accrual.</li></ul>
<p>Each one means the ledger and the subledger tell slightly different stories. Agree the subledger totals to the balance sheet control accounts as part of the check.</p>
<h2>Technical layer</h2>
<h3>10. Scripts and workflows</h3>
<p>Go to <i>Customization &gt; Scripting &gt; Script Deployments</i>. For each deployment, ask whether it's still needed, who owns it and whether it's documented. Clearing the <b>Deployed</b> box stops a deployment running without deleting it, which is a safer first step than removing a script.</p>
<p>Check log levels too. Oracle recommends Debug only while testing, and Audit, Error or Emergency in production. Deployments left on Debug fill the execution log and add overhead. Apply the same questions to workflows: which are active, which still matter and which overlap with scripts on the same record.</p>
<h3>11. Integrations</h3>
<p>Go to <i>Setup &gt; Integration &gt; Manage Integrations</i>. Tick <b>Show Inactives</b> so you also see blocked records. List each integration, what it does, who owns it and how it authenticates.</p>
<p>This matters now. From 2027.1, Oracle won't allow new integrations that use token-based authentication, and SOAP web services are planned for removal in 2028.2. I've covered the dates and a plan in <a href="https://suiteheroes.com/insights/netsuite-tba-oauth-2-soap-rest/">NetSuite TBA to OAuth 2.0 and SOAP to REST</a>. The Web Services Usage Log (<i>Setup &gt; Integration &gt; Web Services Usage Log</i>) shows which integrations still call SOAP.</p>
<h3>12. Performance</h3>
<p>Users often say "NetSuite is slow" without being able to say where. Oracle's <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_4283522055.html" target="_blank" rel="noopener">Application Performance Management (APM)</a> SuiteApp gives you the evidence. It tracks record page performance, splits response time between client, server and network, and monitors user event scripts, workflows, RESTlets, scheduled scripts and Suitelets.</p>
<p>Install it from the SuiteApp Marketplace. Oracle notes that older versions installed from the Search &amp; Install Bundles page stopped working on 7 March 2023, so if you have an old bundle, replace it. Then look at your busiest record pages and the slowest scripts and saved searches behind them.</p>
<h2>Turning findings into a plan</h2>
<p>A checklist produces a list of findings. To be useful, each one needs an owner, a rating for impact and effort, and a date. I sort findings into three groups:</p>
<ul><li><b>Quick wins:</b> settings and access fixes that take hours, such as tightening a preference or removing a leaver.</li><li><b>Next 90 days:</b> clean-ups that need some testing, such as merging duplicates or retiring unused scripts.</li><li><b>Roadmap:</b> larger changes, such as rebuilding an integration or redesigning segments.</li></ul>
<p>Make changes in a sandbox first where you can, and avoid month-end. Keep a short record of what you changed and why, so the next review has a starting point.</p>
<p>Run the check once a year, and again before a large change such as a new subsidiary, module or integration. Each NetSuite upgrade is also a good prompt; a <a href="https://suiteheroes.com/offers/netsuite-release-readiness/">release readiness check</a> tests your scripts and integrations before each release lands.</p>
<p>If you'd rather have someone independent do it, the <a href="https://suiteheroes.com/offers/netsuite-health-check/">NetSuite Health Check</a> covers these areas and more, read-only, with a written report and a prioritised plan. Or <a href="https://suiteheroes.com/contact/">book a call</a> to talk it through.</p>

<div class="ins-key"><h3>Key takeaways</h3><ul><li>Most NetSuite problems start as small settings, access or data issues that nobody revisits after go-live.</li><li>Start with the controls: accounting preferences, period locks, roles and two-factor authentication.</li><li>Then look at data quality, bank reconciliation and open subledger balances.</li><li>Finish with the technical layer: scripts, integrations and performance data from the APM SuiteApp.</li></ul></div>
<p style="margin-top:28px;">Want an independent view? The fixed-price <a href="https://suiteheroes.com/offers/netsuite-health-check/">NetSuite Health Check</a> reviews your account read-only and gives you a findings register and a prioritised plan.</p>
<p>Originally published at <a href="https://suiteheroes.com/insights/netsuite-health-check-checklist/">suiteheroes.com</a>.</p>]]></content:encoded>
    <media:content url="https://suiteheroes.com/og-health-check.png" type="image/png" medium="image" width="1200" height="630"/>
    <media:thumbnail url="https://suiteheroes.com/og-health-check.png" width="1200" height="630"/>
    <enclosure url="https://suiteheroes.com/og-health-check.png" type="image/png" length="59432"/>
  </item>
  <item>
    <title>NetSuite TBA to OAuth 2.0: what the 2027.1 and 2028.2 changes mean</title>
    <link>https://suiteheroes.com/insights/netsuite-tba-oauth-2-soap-rest/</link>
    <guid isPermaLink="true">https://suiteheroes.com/insights/netsuite-tba-oauth-2-soap-rest/</guid>
    <pubDate>Sun, 08 Nov 2026 08:00:00 +0000</pubDate>
    <dc:creator>Raja Saqib</dc:creator>
    <category>Integration</category>
    <description>What Oracle's 2027.1 and 2028.2 changes mean for NetSuite integrations that use TBA or SOAP, and a practical six-step plan to move to OAuth 2.0.</description>
    <content:encoded><![CDATA[<p><img src="https://suiteheroes.com/og-tba-oauth.png" alt="" width="1200" height="630"></p>
<p>Two changes to NetSuite integrations are now on Oracle's published roadmap. From release 2027.1, you can't create new integrations that use token-based authentication (TBA). Then, in 2028.2, Oracle plans to remove SOAP web services completely.</p>
<p>If your NetSuite account talks to a bank, an e-commerce platform, a payroll system, a 3PL or an iPaaS such as Celigo or Dell Boomi, at least one of those connections is probably affected. This article sets out what's changing, why 2027.1 is the date that matters most, and a practical plan to move in good time.</p>
<h2>What's changing, and when</h2>
<p>These are the dates Oracle has published so far:</p>
<ul><li><b>2025.2:</b> the last planned SOAP web services endpoint.</li><li><b>2026.1:</b> no new SOAP endpoints. OAuth 2.0 with REST is the recommended route for new integrations.</li><li><b>2027.1:</b> no new integrations using TBA, whether for SOAP, REST web services or RESTlets. New integrations using the OAuth 2.0 authorisation code grant must also send PKCE parameters, and NLAuth authentication for RESTlets is switched off, with limited exceptions.</li><li><b>2027.2:</b> the 2025.2 endpoint is the only SOAP endpoint still supported. Older endpoints keep running, but without fixes or support.</li><li><b>2028.2:</b> SOAP web services are removed, and existing SOAP integrations stop working. Oracle has tentatively given the same release as the end of support for existing TBA integrations.</li></ul>
<p>Release plans can change, so check Oracle's <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_158921905537.html" target="_blank" rel="noopener">authentication release notes</a> and <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_2104046421.html" target="_blank" rel="noopener">SOAP removal FAQ</a> before you finalise a plan.</p>
<h2>Why 2027.1 is the date that matters</h2>
<p>It's tempting to look at 2028.2 and decide there's plenty of time. Existing TBA integrations do keep working after 2027.1. But from that release, anything new has to use OAuth 2.0: a new integration record, a new connector, a new subsidiary or a new environment that needs fresh TBA credentials.</p>
<p>That catches more than people expect. Developers have pointed out that a refreshed sandbox may not be able to issue new TBA tokens, which would make testing old integrations after a refresh difficult. If you test in sandbox before every release, plan to have OAuth 2.0 working before 2027.1.</p>
<h2>SOAP integrations need two changes, not one</h2>
<p>OAuth 2.0 can't be used with SOAP web services. It works with REST web services, RESTlets and SuiteAnalytics Connect. That splits your integrations into two groups:</p>
<ul><li><b>Integrations on REST or RESTlets with TBA</b> have the smaller job. The endpoints stay the same, and only the authentication changes.</li><li><b>Integrations on SOAP</b> need a new transport as well, usually REST web services and SuiteQL, or a RESTlet where REST doesn't cover what's needed. Payloads, field mappings and error handling all change, so treat these as small rebuilds and test them properly.</li></ul>
<p>Until a SOAP integration is moved, switching it to the 2025.2 endpoint gives it the longest support window.</p>
<h2>Which OAuth 2.0 flow to use</h2>
<p>NetSuite offers two OAuth 2.0 flows, and the right one depends on how the integration runs:</p>
<ul><li><b>Client credentials (machine to machine):</b> for server-to-server integrations with no user involved, such as nightly syncs, payment files and warehouse feeds. Authentication uses a certificate rather than a user signing in. You set it up under <i>Setup &gt; Integration &gt; Manage Authentication &gt; OAuth 2.0 Client Credentials (M2M) Setup</i>.</li><li><b>Authorisation code grant:</b> for applications where a user signs in and approves access. From 2027.1, new integrations using this flow must use PKCE.</li></ul>
<p>Most back-office finance integrations suit client credentials. Whichever you choose, give each integration its own role with only the permissions it needs.</p>
<h2>A practical six-step plan</h2>
<ol><li><b>Take an inventory.</b> List every integration record (<i>Setup &gt; Integration &gt; Manage Integrations</i>) and access token (<i>Setup &gt; Users/Roles &gt; Access Tokens</i>). The web services usage log (<i>Setup &gt; Integration &gt; Web Services Usage Log</i>) shows which integrations still call SOAP.</li><li><b>Rank by risk.</b> Note what each integration does, who owns it and what breaks if it stops. Anything touching cash, payroll, tax or customer orders goes to the top.</li><li><b>Move SOAP integrations first.</b> They need the most work, so start them early. Move any still on old endpoints to 2025.2 in the meantime.</li><li><b>Build OAuth 2.0 in sandbox.</b> Create the new integration records and certificates, update the code or connector settings, and test end to end, including errors and retries.</li><li><b>Switch over in batches.</b> Release a few integrations at a time, outside month-end, and keep the old credentials until each one is proven in production.</li><li><b>Retire what's left.</b> Revoke old tokens, deactivate unused integration records and remove scripts nobody uses.</li></ol>
<p>Third-party connectors need the same care. Ask each vendor, including your iPaaS, when their NetSuite connector supports OAuth 2.0 and what you need to do to switch.</p>
<h2>A good moment to tidy up</h2>
<p>An authentication project touches every integration, so it's a good time to deal with other technical debt at the same time: SuiteScript 1.0 RESTlets rewritten in SuiteScript 2.1, hard-coded IDs replaced with parameters, proper logging added and code moved into source control. Doing it in one planned project costs less than doing it twice.</p>
<p>It's also worth checking each release before it lands. A <a href="https://suiteheroes.com/offers/netsuite-release-readiness/">release readiness check</a> tests your scripts and integrations in the release preview account before each upgrade, so 2027.1 doesn't come as a surprise.</p>

<div class="ins-key"><h3>Key takeaways</h3><ul><li>From NetSuite 2027.1, new integrations can't use token-based authentication (TBA).</li><li>Oracle plans to remove SOAP web services in 2028.2, and expects support for existing TBA integrations to end then too.</li><li>OAuth 2.0 doesn't work with SOAP, so SOAP integrations need a new transport as well as new authentication.</li><li>Start with an inventory, move SOAP integrations first, and have OAuth 2.0 tested in sandbox before 2027.1.</li></ul></div>
<p style="margin-top:28px;">Need help planning the move? The fixed-price <a href="https://suiteheroes.com/offers/suitescript-oauth-upgrade/">SuiteScript 2.1 and OAuth 2.0 Upgrade</a> starts with a free inventory of your scripts and integrations.</p>
<p>Originally published at <a href="https://suiteheroes.com/insights/netsuite-tba-oauth-2-soap-rest/">suiteheroes.com</a>.</p>]]></content:encoded>
    <media:content url="https://suiteheroes.com/og-tba-oauth.png" type="image/png" medium="image" width="1200" height="630"/>
    <media:thumbnail url="https://suiteheroes.com/og-tba-oauth.png" width="1200" height="630"/>
    <enclosure url="https://suiteheroes.com/og-tba-oauth.png" type="image/png" length="67692"/>
  </item>
  <item>
    <title>Native SuiteScript vs third-party iPaaS for NetSuite integrations</title>
    <link>https://suiteheroes.com/insights/native-suitescript-vs-ipaas/</link>
    <guid isPermaLink="true">https://suiteheroes.com/insights/native-suitescript-vs-ipaas/</guid>
    <pubDate>Sat, 20 Jun 2026 08:00:00 +0000</pubDate>
    <dc:creator>Raja Saqib</dc:creator>
    <category>Integration</category>
    <description>When a third-party iPaaS earns its place in your NetSuite integrations, and when a native SuiteScript build is cheaper, clearer and under your control.</description>
    <content:encoded><![CDATA[<p><img src="https://suiteheroes.com/og/insights/native-suitescript-vs-ipaas.png" alt="" width="1200" height="630"></p>
<p>For most NetSuite integrations, the first instinct is to reach for a third-party integration platform &mdash; Celigo, Dell Boomi, Workato, Make. They're capable tools, and for some jobs they're the right call. But the reflex to default to an iPaaS deserves more scrutiny than it usually gets, because the licence is rarely the real cost.</p>
<h2>The hidden costs of an iPaaS</h2>
<p>An iPaaS adds a permanent third party to your finance architecture. That brings recurring costs that compound over the life of the integration:</p>
<ul>
<li><b>Licence creep.</b> Pricing scales with connections, flows or message volume &mdash; exactly the things that grow as your business grows.</li>
<li><b>Opaque error handling.</b> When a sync fails at month-end, you're debugging someone else's black box, often through a support queue.</li>
<li><b>Limited control over mapping.</b> Audit-grade requirements &mdash; line-by-line VAT reconciliation, explicit chart-of-accounts mapping &mdash; can be awkward or impossible to express cleanly.</li>
<li><b>A data-residency question.</b> Your transactions transit a third party's infrastructure, which procurement and compliance will (rightly) ask about.</li>
</ul>
<h2>Where native SuiteScript wins</h2>
<p>Building the integration natively in SuiteScript 2.1 &mdash; using the right entry point for each job (Map/Reduce for bulk, Scheduled for pollers, User Event for triggers, RESTlet for inbound webhooks, Suitelet for an admin console) &mdash; keeps everything inside NetSuite's own governance and audit trail. You own every mapping, every retry policy, and every log line. There's no monthly fee, no extra vendor in the data path, and no translation layer between what finance needs and what the connector can express.</p>
<p>For integrations that touch the general ledger, tax, and statutory reporting, that control is not a nice-to-have. It's the difference between an integration finance can defend in an audit and one they have to apologise for.</p>
<h2>Where an iPaaS still earns its keep</h2>
<p>This isn't a religious position. An iPaaS is a sensible choice when you're connecting many SaaS systems that already have strong pre-built connectors, when you have no in-house scripting capability to maintain a native build, or when time-to-live matters more than long-run control and the data is low-stakes (marketing events, for instance, rather than the GL). The honest test is whether the connector is doing real, ongoing work that justifies its seat in your architecture.</p>
<h2>A simple way to decide</h2>
<p>Ask three questions. Does this integration touch the ledger, tax or anything an auditor will examine? Will its volume &mdash; and therefore its licence &mdash; grow with the business? Do you have, or can you retain, the capability to maintain a native build? The more &ldquo;yes&rdquo; answers, the stronger the case for native SuiteScript.</p>
<h2>The bottom line</h2>
<p>An iPaaS is a tool, not a default. For finance-critical NetSuite integrations, a well-built native SuiteScript solution is usually cheaper over its life, more transparent when it matters, and fully inside your control. Reach for the platform when it genuinely earns its place &mdash; not by reflex.</p>

<div class="ins-key"><h3>Key takeaways</h3><ul><li>iPaaS licence is rarely the real cost — error handling, mapping control and data residency are.</li><li>Native SuiteScript keeps finance-critical integrations inside NetSuite's own audit trail.</li><li>An iPaaS still suits many-system SaaS connectivity or teams without scripting capability.</li><li>Decide on three axes: ledger/audit exposure, volume growth, in-house capability.</li></ul></div>
<p style="margin-top:28px;">Working on something similar? <a href="https://suiteheroes.com/contact/">Book a free call</a> and we'll talk it through &mdash; no obligation.</p>
<p>If an existing integration is already failing, the <a href="https://suiteheroes.com/offers/integration-rescue-sprint/">NetSuite Integration Rescue Sprint</a> fixes the root causes and adds monitoring at a fixed price.</p>
<p>Originally published at <a href="https://suiteheroes.com/insights/native-suitescript-vs-ipaas/">suiteheroes.com</a>.</p>]]></content:encoded>
    <media:content url="https://suiteheroes.com/og/insights/native-suitescript-vs-ipaas.png" type="image/png" medium="image" width="1200" height="630"/>
    <media:thumbnail url="https://suiteheroes.com/og/insights/native-suitescript-vs-ipaas.png" width="1200" height="630"/>
    <enclosure url="https://suiteheroes.com/og/insights/native-suitescript-vs-ipaas.png" type="image/png" length="74853"/>
  </item>
  <item>
    <title>NetSuite for independent-school and nursery groups</title>
    <link>https://suiteheroes.com/insights/netsuite-for-schools-and-nurseries/</link>
    <guid isPermaLink="true">https://suiteheroes.com/insights/netsuite-for-schools-and-nurseries/</guid>
    <pubDate>Sun, 14 Jun 2026 08:00:00 +0000</pubDate>
    <dc:creator>Raja Saqib</dc:creator>
    <category>Education</category>
    <description>Why multi-setting education groups outgrow setting-level billing, and how iSAMS and Famly feed NetSuite as a billing sub-ledger with revenue checks.</description>
    <content:encoded><![CDATA[<p><img src="https://suiteheroes.com/og/insights/netsuite-for-schools-and-nurseries.png" alt="" width="1200" height="630"></p>
<p>Independent schools and nursery groups reach a point where the billing system that got them started &mdash; iSAMS, Famly, or a patchwork of spreadsheets &mdash; can no longer answer the questions the board is asking. How much are we actually owed across all settings? Where is revenue leaking? Are funded hours being billed completely? That's usually the moment NetSuite enters the conversation.</p>
<h2>Why education groups outgrow their billing system</h2>
<p>iSAMS and Famly are excellent at what they do: managing pupils and children, fees, registers and parent communication at the setting level. What they're not built for is consolidated, multi-entity finance &mdash; a group P&amp;L, intercompany positions, debtor-day analysis across every school and nursery, and audit-ready statutory reporting. As a group acquires settings, the gap widens.</p>
<h2>What NetSuite brings</h2>
<p>NetSuite OneWorld gives a multi-academy or nursery group one general ledger across every entity, with consolidation, intercompany handling and a single view of receivables. Crucially, the framing stays commercial &mdash; profit and loss, fee debtors, debtor days &mdash; rather than being forced into charity-specific vocabulary that doesn't fit a commercially run group.</p>
<h2>The integration question</h2>
<p>The right architecture keeps iSAMS and Famly as the billing sub-ledger &mdash; that's where fees are raised and parents are managed &mdash; and treats NetSuite as the group general ledger. A native, bidirectional integration moves invoices, credit notes, payments and bill-payer records into NetSuite, and writes external identifiers back so every transaction is reconcilable end-to-end. There's no need to re-platform what the settings already do well; you connect it.</p>
<h2>Funded hours and revenue leakage</h2>
<p>Two numbers tend to surprise education groups when they finally get a consolidated view. The first is <b>revenue leakage</b> &mdash; sessions delivered but never billed, discounts applied inconsistently, or credits that quietly erode fee income. The second is <b>funded-hours reconciliation</b>: government-funded entitlement hours that have to be tracked against what's actually claimed and delivered. A finance dashboard that pulls occupancy and billing together makes both visible &mdash; often for the first time.</p>
<h2>Getting started</h2>
<p>You don't need a big-bang migration. A sensible first phase connects one or two settings, proves the billing-to-GL flow and the reconciliation reporting, then rolls out across the group. The goal is a finance function that can answer the board's questions on demand &mdash; with the settings still running the tools they know.</p>

<div class="ins-key"><h3>Key takeaways</h3><ul><li>Keep iSAMS/Famly as the billing sub-ledger; make NetSuite the group general ledger.</li><li>A native bidirectional integration writes identifiers back for end-to-end reconciliation.</li><li>Consolidated view exposes revenue leakage and funded-hours gaps — often for the first time.</li><li>Frame everything commercially (P&amp;L, fee debtors, debtor days), not in charity vocabulary.</li><li>Roll out setting-by-setting; no big-bang migration required.</li></ul></div>
<p style="margin-top:28px;">Working on something similar? <a href="https://suiteheroes.com/contact/">Book a free call</a> and we'll talk it through &mdash; no obligation.</p>
<p>Originally published at <a href="https://suiteheroes.com/insights/netsuite-for-schools-and-nurseries/">suiteheroes.com</a>.</p>]]></content:encoded>
    <media:content url="https://suiteheroes.com/og/insights/netsuite-for-schools-and-nurseries.png" type="image/png" medium="image" width="1200" height="630"/>
    <media:thumbnail url="https://suiteheroes.com/og/insights/netsuite-for-schools-and-nurseries.png" width="1200" height="630"/>
    <enclosure url="https://suiteheroes.com/og/insights/netsuite-for-schools-and-nurseries.png" type="image/png" length="69435"/>
  </item>
  <item>
    <title>German §14 UStG e-invoicing in NetSuite: what changes and how to prepare</title>
    <link>https://suiteheroes.com/insights/german-e-invoicing-netsuite/</link>
    <guid isPermaLink="true">https://suiteheroes.com/insights/german-e-invoicing-netsuite/</guid>
    <pubDate>Sat, 06 Jun 2026 08:00:00 +0000</pubDate>
    <dc:creator>Raja Saqib</dc:creator>
    <category>Localisation</category>
    <description>What Germany's B2B e-invoicing mandate means for a NetSuite German entity: XRechnung, ZUGFeRD, EN 16931 validation, SuiteTax, DATEV and GoBD.</description>
    <content:encoded><![CDATA[<p><img src="https://suiteheroes.com/og/insights/german-e-invoicing-netsuite.png" alt="" width="1200" height="630"></p>
<p>Germany's move to mandatory business-to-business e-invoicing is one of the larger compliance shifts NetSuite users with a German entity will face this decade. The headline date has passed &mdash; from 1 January 2025 every German business must be able to <i>receive</i> a structured electronic invoice &mdash; but the phased issuing obligations are still rolling in. If you run a German subsidiary on NetSuite, here's what actually matters.</p>
<h2>What is changing, and when</h2>
<p>Under the reform of &sect;14 UStG, a compliant e-invoice in Germany is a structured electronic format, not a PDF. The receive capability became mandatory for all domestic B2B from 1 January 2025. Issuing obligations phase in afterwards by company size and turnover over the following years, so the practical priority for most groups right now is being able to receive and process structured invoices correctly.</p>
<h2>The formats: XRechnung and ZUGFeRD</h2>
<p>Two formats dominate. <b>XRechnung</b> is a pure-XML structured invoice (the standard for public-sector B2G). <b>ZUGFeRD 2.x</b> is a hybrid &mdash; a human-readable PDF/A with the structured XML embedded inside it. Both conform to the European semantic standard <b>EN 16931</b>, which is the thing your validation should actually check against.</p>
<h2>What it means for NetSuite</h2>
<p>NetSuite doesn't do all of this out of the box for Germany, so the work is in configuration and a structured-data pipeline:</p>
<ul>
<li><b>Receiving.</b> Extract the XML from inbound XRechnung and ZUGFeRD 2.x invoices, validate against EN 16931, and map cleanly onto NetSuite vendor bills &mdash; rejecting non-conformant documents loudly rather than silently.</li>
<li><b>Issuing.</b> Generate structured output for the formats your counterparties require, with gapless invoice numbering as required under &sect;14 UStG and &sect;146 AO.</li>
<li><b>Tax.</b> SuiteTax codes covering 19% / 7%, EU intra-community supplies and &sect;13b reverse charge, posting to the correct control accounts.</li>
<li><b>Hand-off and archive.</b> DATEV-format export for the external Steuerberater, and GoBD-conformant archiving of every issued and received e-invoice for the full ten-year retention period.</li>
</ul>
<h2>A practical preparation checklist</h2>
<p>Confirm your German entity can receive and parse XRechnung and ZUGFeRD 2.x today. Check your chart of accounts (SKR03 or SKR04) and SuiteTax mapping are clean. Make sure invoice numbering is gapless. Agree the DATEV export format with your Steuerberater. And confirm archiving meets GoBD before, not after, an audit asks.</p>
<h2>The bottom line</h2>
<p>German e-invoicing is a data-quality and configuration exercise as much as a compliance one. Get the receive pipeline, tax mapping and archiving right, and the issuing obligations become a straightforward extension rather than a scramble.</p>

<div class="ins-key"><h3>Key takeaways</h3><ul><li>From 1 Jan 2025 every German B2B must be able to receive a structured e-invoice.</li><li>A compliant e-invoice is structured XML (XRechnung) or hybrid (ZUGFeRD 2.x), not a PDF.</li><li>Validate against EN 16931; map onto NetSuite vendor bills with loud rejection of non-conformant docs.</li><li>Get SuiteTax, gapless numbering, DATEV export and GoBD archiving right before issuing obligations bite.</li></ul></div>
<p style="margin-top:28px;">Working on something similar? <a href="https://suiteheroes.com/contact/">Book a free call</a> and we'll talk it through &mdash; no obligation.</p>
<p>Originally published at <a href="https://suiteheroes.com/insights/german-e-invoicing-netsuite/">suiteheroes.com</a>.</p>]]></content:encoded>
    <media:content url="https://suiteheroes.com/og/insights/german-e-invoicing-netsuite.png" type="image/png" medium="image" width="1200" height="630"/>
    <media:thumbnail url="https://suiteheroes.com/og/insights/german-e-invoicing-netsuite.png" width="1200" height="630"/>
    <enclosure url="https://suiteheroes.com/og/insights/german-e-invoicing-netsuite.png" type="image/png" length="73457"/>
  </item>
  <item>
    <title>Integrating NetSuite with Fortnox: a native, audit-grade approach</title>
    <link>https://suiteheroes.com/insights/netsuite-fortnox-integration/</link>
    <guid isPermaLink="true">https://suiteheroes.com/insights/netsuite-fortnox-integration/</guid>
    <pubDate>Sat, 30 May 2026 08:00:00 +0000</pubDate>
    <dc:creator>Raja Saqib</dc:creator>
    <category>Integration</category>
    <description>How to integrate NetSuite OneWorld with Fortnox for a Swedish subsidiary: bidirectional sync, audit-grade COA and VAT mapping, and echo-loop protection.</description>
    <content:encoded><![CDATA[<p><img src="https://suiteheroes.com/og/insights/netsuite-fortnox-integration.png" alt="" width="1200" height="630"></p>
<p>If your group runs NetSuite OneWorld but a Swedish subsidiary keeps its books in Fortnox &mdash; Sweden's leading SME accounting platform &mdash; you have a classic two-ledger problem. The Swedish entity needs Fortnox for local e-invoicing and Skatteverket reporting; the group needs everything in NetSuite. The answer is a disciplined, bidirectional integration. Here's how to approach it well.</p>
<h2>Why this pairing comes up</h2>
<p>Fortnox is deeply embedded in Swedish accounting practice and handles local e-invoicing and statutory requirements that a Swedish finance team relies on. Rather than fight that, the pragmatic architecture lets Fortnox stay the local system of record for the Swedish entity while NetSuite remains the group ledger &mdash; with a clean, auditable bridge between them.</p>
<h2>What to synchronise</h2>
<p>A complete integration covers the core entity types in both directions, with full create-update-cancel handling: customers, suppliers, sales invoices, credit memos, journals, and customer and supplier payments. Sales invoices generated in NetSuite can be issued through Fortnox for Swedish e-invoicing compliance, with the Fortnox document number stamped back onto the originating NetSuite transaction for end-to-end traceability.</p>
<h2>The mapping discipline that makes finance trust it</h2>
<p>The part that separates a robust integration from a fragile one is the mapping layer. Every NetSuite GL account should map explicitly to its Fortnox counterpart &mdash; including VAT and tax control accounts &mdash; and unmapped accounts should fail loudly with an actionable error rather than silently falling back. That discipline is what lets statutory accounts reconcile line-by-line for Skatteverket. VAT and tax codes need the same treatment so amounts reconcile precisely and post to the correct control accounts on both sides.</p>
<h2>Echo-loops and idempotency</h2>
<p>Bidirectional syncs have a characteristic failure mode: a record updated on one side is reflected back as a fresh change on the other, and the two systems ping-pong forever. The fix is last-sync hash stamping on every inbound handler, so the integration recognises its own echo and ignores it. Multi-currency handling &mdash; setting currency code and exchange rate for non-SEK transactions &mdash; and payment-terms alignment across the AR and AP sub-ledgers round out a build finance can rely on.</p>
<h2>Native, not iPaaS</h2>
<p>This is precisely the kind of finance-critical, audit-exposed integration where a native SuiteScript 2.1 build pays off: full control over mapping and retry behaviour, no licence drag, and every log line inside NetSuite. An admin dashboard &mdash; OAuth2 token management, mapping maintenance and run/queue monitoring in one Suitelet &mdash; turns it from a script into something a finance team can actually operate.</p>
<h2>The outcome</h2>
<p>Done properly, the Swedish team keeps the tool they need, the group gets clean consolidated numbers, and every transaction is reconcilable across both systems &mdash; with no third-party platform sitting in the middle of your statutory data.</p>

<div class="ins-key"><h3>Key takeaways</h3><ul><li>Let Fortnox stay the Swedish system of record; NetSuite remains the group ledger.</li><li>Sync six core entity types bidirectionally with full create-update-cancel coverage.</li><li>Map every GL/VAT account explicitly; unmapped accounts must fail loudly, not silently.</li><li>Last-sync hash stamping prevents bidirectional echo-loops.</li><li>A finance-critical, audit-exposed sync is the textbook case for native SuiteScript.</li></ul></div>
<p style="margin-top:28px;">Working on something similar? <a href="https://suiteheroes.com/contact/">Book a free call</a> and we'll talk it through &mdash; no obligation.</p>
<p>Originally published at <a href="https://suiteheroes.com/insights/netsuite-fortnox-integration/">suiteheroes.com</a>.</p>]]></content:encoded>
    <media:content url="https://suiteheroes.com/og/insights/netsuite-fortnox-integration.png" type="image/png" medium="image" width="1200" height="630"/>
    <media:thumbnail url="https://suiteheroes.com/og/insights/netsuite-fortnox-integration.png" width="1200" height="630"/>
    <enclosure url="https://suiteheroes.com/og/insights/netsuite-fortnox-integration.png" type="image/png" length="66825"/>
  </item>
</channel>
</rss>
