NetSuite Training On-demand Annual Pass

With the Self-Study Single User Annual Pass, you have access to the most comprehensive NetSuite learning offering available.


The Self-Study center contains unlimited online access to the equivalent of all of NetSuite’s publicly offered courses for one annual fee. As it is a cloud solution you will have access to learning content anytime, anywhere.



  • An easy way to learn NetSuite that fits into your schedule 24×7

  • On-demand access to expert-led learning

  • Apply and practice new skills with hands-on exercises1

  • One cost-effective annual training fee


  • Content is current with each NetSuite release

  • Self-study versions of NetSuite’s publicly offered courses

  • Courses include:

  • Recorded presentations

  • Student workbooks

  • One demo account per course with 30 days access2

  • Instructor email support within 1 business day 

*Pricing will vary depending on country and region.


Contact NetSuite to purchase your Self-Study Annual Pass today!


SuiteTraining Self-Study access is purchased as an individual license. The confirmed user is the only person who may use the course and/or materials. Sharing the training with others in any way is expressly prohibited. Pricing will vary depending on country and taxation requirements. Self-Study does not include NetSuite Consultant Bootcamp or Certification vouchers.


NetSuite Demo Accounts are included when they form part of the standard course curriculum.

 Prepare for the self-study experience by first viewing the system requirements.

Sales & Use Tax Automation using Vertex SMB Built for NetSuite SuiteApp

Vertex helps automate sales and use tax compliance for businesses of all sizes. By enabling calculations and returns, Vertex meets the sales and use tax automation needs of growing businesses.

Simply connect NetSuite to Vertex through a certified integration for more accurate sales and use tax calculations.

Vertex centralizes the rates and rules required for product taxability and calculation of tax in your system. No need to manage tax rate changes manually. Let Vertex’s research team stay on top of the latest tax changes, while you grow your business.

Key Benefits

Vertex SMB for NetSuite offers full support for your order entry to invoicing processes, including:

  1. Real-time tax calculations for sales and procurement transactions
  2. Quotes/estimates
  3. Cash sales
  4. Sales orders
  5. Invoices
  6. Supports Value Added Tax (VAT)
  7. Simplified NetSuite tax setup Consumers Use Tax on the SuiteTax integration
  8. Address validation: validate address information for accurate tax calculation
  9. Estimates: get accurate tax rates for the estimates you prepare
  10. Sales orders: ensure the accuracy of taxes to be collected or paid
  11. Invoices: update your tax journal with real-time tax information
  12. Credit memos: calculate the correct tax amount for credit memos
  13. Cash sales: enter correct tax information for in-person purchases
  14. Cash sales refunds: calculate the correct tax amount for cash returns
  15. Subsidiaries: separate taxation amount subsidiaries in NetSuite OneWorld

Available for use in three deployment models

Vertex for SuiteTax is available for use in three deployment models – on-premise, on-demand and cloud to integrate directly with mid-market ERPs, procurement solutions, and eCommerce platforms. From returns-only processing, tax calculations, and signature-ready PDF returns to outsourcing services that include returns filing and payment processing, Vertex provides a proven and reliable solution for businesses looking to save time, effort, and risk associated with sales and use tax calculation, returns, remittance, and compliance.


Rate Files

Download rate files by location or upload addresses for your specific business needs and access tax rate files. Jurisdiction tax amounts are continuously researched and updated, maintaining our tax content to keep you current.

Fully Automated for Sales and Purchasing

Vertex enables companies of all sizes to realize the full strategic potential of the tax function by automating and integrating tax processes while leveraging advanced and predictive analytics of tax data. Vertex provides cloud-based and on-premise solutions that can be tailored to specific industries for every major line of tax, including income, sales, and consumer use, value-added, and payroll.

Flex Fields

This new functionality applies additional attributes to transactions for specialized data needed to provide accurate taxability and tax rates. This gives you more flexibility and alleviates manual updates in your process. With Vertex, you don’t need to spend extra time reorganizing your product catalog!

Simplified Processing

Vertex provides accurate and complete tax calculations regardless of your NetSuite configuration. Since you have many configuration choices with NetSuite (Advanced Taxes, Advanced Shipping, Line Item Shipping, etc.) Vertex handles each scenario to provide the taxation that you need at any level.

Engineered to Scale with Businesses as they Grow

Vertex enables customers to continue focusing on their core business and react to new market opportunities quickly and confidently. The enhanced technology provides companies with the tools needed to accelerate growth and drive efficiency.

Reference: Vertex SMB

APEX code nuggets – How to avoid executing SOQL or DML in loops

This is a common mistake where queries or DML statements are placed inside a for loop to lookup a record once per iteration. By doing this you will very quickly hit the governor limit of SOQL queries and/or DML statements (insert, update, delete, undelete).

Instead, move any database operations outside of for loops. Form a single query such that you get all the required records at once. You can then iterate over the results. If you need to modify the data, batch update into a list and invoke your DML once for that list of data.

Here is an example showing both a query and a DML statement inside a for loop:


					trigger accountTestTrggr on Account (before insert, before update) {
   //For loop to iterate through all the incoming Account records
   for(Account a: Trigger.new) {         
      //Since the SOQL Query for related Contacts is within the FOR
      //loop, if this trigger is initiated with more than 100 records,
      //the trigger will exceed the trigger governor limit of maximum
      //100 SOQL Queries.
      List<Contact> contacts = [select id, salutation, firstname,
         lastname, email from Contact where accountId = :a.Id];       
      for(Contact c: contacts) {
         System.debug('Contact Id[' + c.Id + '], FirstName[' 
            + c.firstname + '], LastName[' + c.lastname +']');
         c.Description = c.salutation + ' ' + c.firstName + ' ' 
            + c.lastname;          
         //SCALE Since the UPDATE dml operation is within the FOR
         //loop, if this trigger is initiated with more than 150
         //records, the trigger will exceed the trigger governor limit
         //of 150 DML Operations maximum.                                   
         update c;

Since there is a SOQL query within the for loop that iterates across all the Account objects that initiated this trigger, a query will be executed for each Account. An individual Apex request gets a maximum of 100 SOQL queries before exceeding that governor limit. So if this trigger is invoked by a batch of more than 100 Account records, the governor limit will throw a runtime exception.


In this example, because there is a limit of 150 DML operations per request, a governor limit will be exceeded after the 150th contact is updated.


Here is the optimal way to efficiently query the contacts in a single query and only perform a single update DML operation:

					trigger accountTestTrggr on Account (before insert, before update) {
  //In this case we are using the child relationships to filter down
  //and form a single query to get the required records.
  List<Account> accountsWithContacts = [select id, name, (select id,
    salutation, description, firstname, lastname, email from Contacts)
    from Account where Id IN :Trigger.newMap.keySet()];
  List<Contact> contactsToUpdate = new List<Contact>{};
  // For loop to iterate through all the queried Account records
  for(Account a: accountsWithContacts){
     // Use the child relationships to access the related Contacts
     for(Contact c: a.Contacts){
      System.debug('Contact Id[' + c.Id + '], FirstName[' + c.firstname 
        + '], LastName[' + c.lastname +']');
      c.Description=c.salutation + ' ' + c.firstName + ' ' 
        + c.lastname;
   //Now outside the FOR Loop, perform a single Update DML statement.
   update contactsToUpdate;

Now if this trigger is invoked with a single account record or up to 200 account records, only one SOQL query and one update statement is executed.