Table of Contents

  1. Overview
  2. Pre-Connection Checklist
  3. Step-by-Step Setup Guide
  4. Permissions Reference
  5. Custom Fields & Records
  6. Post-Setup in Core8
  7. Troubleshooting
  8. Additional Resources

Overview

This guide provides comprehensive instructions for setting up NetSuite integration with Core8. Follow each section carefully to ensure successful integration.
ResourceDescription
OAuth 2.0 DocsNetSuite OAuth 2.0 setup guide
REST Web ServicesREST API configuration
SuiteQL DocsQuery language documentation
Roles GuidePermissions configuration

Pre-Connection Checklist

Before starting, ensure you have administrative access to NetSuite. Use this checklist to track your progress:

Essential Requirements

  • REST Web Services enabled
  • OAuth 2.0 enabled
  • SuiteAnalytics Workbook enabled
  • Integration record created
  • Client ID and Client Secret saved
  • Account ID noted

Configuration Requirements

  • Role with required permissions created
  • At least one subsidiary exists
  • Payment terms configured
  • Custom fields created (if using)

Step-by-Step Setup Guide

Phase 1: Enable Core Features

Step 1: Enable Required Features

Navigation: Setup > Company > Enable Features
TabFeatureRequiredPurpose
SuiteCloudREST Web Services✅ YesEnables API communication
SuiteCloudOAuth 2.0✅ YesSecure authentication
AnalyticsSuiteAnalytics Workbook✅ YesRequired for SuiteQL queries*
*Platform Note: While the integration code doesn’t validate the SuiteAnalytics Workbook feature, NetSuite requires it for the SuiteQL API endpoint to function. You must enable this feature or SuiteQL queries will fail.

Step 2: Create Integration Record

Navigation: Setup > Integration > Manage Integrations > New
FieldValueNotes
NameCore8 IntegrationOr your preferred name
StateEnabled ✅Must be enabled
Authorization Code Grant✅ CheckedRequired for OAuth flow
REST Web Services✅ CheckedRequired for API access
Scoperest_webservicesOAuth 2.0 scope (auto-configured)
⚠️ IMPORTANT: After saving, immediately copy:
  • Consumer Key/Client ID
  • Consumer Secret/Client Secret
These credentials are shown only once!

Step 3: Configure OAuth Redirect

In the same integration record:
FieldValue Example
Redirect URIhttps://staging.core8.co/api/auth/netsuite-oauth-callback
Replace staging.core8.co with your Core8 instance URL.

Step 4: Note Account Information

Navigation: Setup > Company > Company Information
InformationExampleWhere to Find
Account ID1234567 or 1234567_SB2Company Information page

Phase 2: Configure Role & Permissions

Step 5: Create/Edit Integration Role

Navigation: Setup > Users/Roles > Manage Roles Choose one approach:
  • Option A: Find existing role → Click Customize
  • Option B: Click New to create from scratch
  • Option C: Find custom role → Click Edit
Role Settings:
SettingValue
NameCore8 Integration Role
Center TypeClassic Center
Then configure permissions as detailed in the Permissions Reference section below.

Phase 3: Required Configuration

Step 6: Configure Subsidiaries

Navigation: Setup > Company > Subsidiaries
RequirementDetails
MinimumAt least one active subsidiary
StatusMust be Active
Required FieldsName, Country, Currency
OrderCreate parent subsidiaries first

Step 7: Configure Payment Terms

Navigation: Billing > Setup > Payment Terms > New
Term TypeUse CaseConfiguration
StandardNet 30, Net 60, etc.Set Days Till Net Due
Date DrivenDue on specific dateSet specific due date rules

Step 8: Multi-Currency Setup (Optional)

Navigation: Setup > Company > Enable Features > Company tab
SettingNotes
Multiple CurrenciesCheck if needed
Base CurrencySet immediately (cannot change later)
Currency ListConfigure at Lists > Accounting > Currencies

Step 9: Deal Stages Configuration

Navigation: Setup > Sales > Customer Statuses > New
StageSuggested ProbabilityType
In Progress10-25%Prospect
In Discussion25-40%Prospect
Identified Decision Makers40-60%Prospect
In Negotiation60-80%Prospect
Proposal75-90%Prospect
Purchasing90-95%Prospect
Closed - Won100%Prospect
Closed - Lost0%Prospect

Permissions Reference

Navigate to the role’s Permissions tab and configure:

Setup Tab

PermissionLevelPurpose
REST Web ServicesFullAPI communication
Log in using Access TokensFullOAuth authentication
Access Token ManagementFullToken lifecycle
SuiteAnalytics WorkbookFullSuiteQL queries

Transactions Tab

PermissionLevelPurpose
InvoiceFullCreate/update invoices
OpportunityFullManage deals
Find TransactionFullSearch records

Reports Tab

PermissionLevelPurpose
SuiteAnalytics WorkbookFullExecute queries

Lists Tab

PermissionLevelPurpose
CustomersFullCreate/update customers
ContactsFullManage contacts
ItemsFullReference products, create discount items
SubsidiariesViewRequired for customers
TermsViewPayment terms
CurrencyViewMulti-currency
Billing SchedulesViewBilling frequencies
Customer CategoriesViewCustomer tiers

Custom Record Tab

PermissionLevelPurpose
Custom Record - il_supp_langsViewPDF languages
Custom List - esc_industriesViewIndustry list
Note: These appear only after creating custom records.

Custom Fields & Records

Part A: Create Custom Lists

1. Industry List

Navigation: Customization > Lists, Records, & Fields > Lists > New
FieldValue
NameESC Industries
IDesc_industries
ValuesTechnology, Healthcare, Manufacturing, Retail, etc.

2. PDF Language Record Type

Navigation: Customization > Lists, Records, & Fields > Record Types > New
FieldValue
NameIL Supported Languages
IDil_supp_langs
TypeCustom Record Type (not List)
FieldsAdd language code and description fields

Part B: Create Entity Fields

Navigation: Customization > Lists, Records, & Fields > Entity Fields > New
FieldLabelID (auto-prefixed)TypeList/RecordApplies To
PDF LanguagePDF Languagecustentity_il_pdf_langList/RecordIL Supported LanguagesCustomer ✅
IndustryIndustrycustentity_esc_industryList/RecordESC IndustriesCustomer ✅
Tax IDTaxpayer IDcustentity_il_taxpayer_idText-Customer ✅
Important: NetSuite automatically adds the “custentity_” prefix to entity field IDs.

API Configuration

OAuth Details

ConfigurationValue
OAuth Scoperest_webservices
Grant Typeauthorization_code
Token Refreshrefresh_token grant with Basic auth

Required Headers

The integration sends these headers with all API requests:
  • Authorization: Bearer {accessToken}
  • Accept: application/json
  • Content-Type: application/json
  • Prefer: transient

Endpoints Used

The integration uses these REST API endpoints:
EndpointPurpose
/services/rest/record/v1/*CRUD operations
/services/rest/query/v1/suiteqlData queries
/services/rest/auth/oauth2/v1/tokenToken refresh
/services/rest/record/v1/metadata-catalogField metadata

Rate Limiting

Core8 automatically handles NetSuite’s rate limits:
Error TypeStrategyMax RetriesDelays
429 Rate LimitExponential backoff35s, 10s, 20s (max 30s)
401/403 AuthToken refresh + retry31s, 2s, 4s (max 5s)
Network ErrorsExponential backoff31s, 2s, 4s

Concurrency Limits

Limit TypeDefaultNotes
Per User (RESTlets)5 concurrentStandard limit
Integration TotalVariesBased on licenses
MonitoringSetup > Integration > Integration GovernanceOptional admin tool
Platform Note: The integration handles limits reactively without client-side concurrency control. It relies on NetSuite’s server-side rate limiting. Monitoring is an optional administrative task.

Data Access

The configured permissions provide access to these NetSuite tables via SuiteQL: Note: Custom tables appear with prefixes like customrecord_ and customlist_ in queries.
TablePurposeOperations
customerCustomer recordsFull CRUD
contactContact managementFull CRUD
itemProduct catalogRead only
transactionInvoices & opportunitiesFull CRUD
subsidiaryOrganization structureRead only
termPayment termsRead only
currencyCurrency settingsRead only
billingScheduleBilling schedulesRead only
entitystatusDeal stagesRead only
customercategoryCustomer tiersRead only

Post-Setup in Core8

Step 1: Connect to NetSuite

  1. Navigate to Core8 integrations
  2. Select NetSuite
  3. Enter Client ID and Client Secret
  4. Complete OAuth authorization
Core8 Configuration

Step 2: Configure Integration

In the Configuration tab:
SettingPurpose
Default SubsidiaryRequired for new customers
Default Payment TermsRequired for new customers
Default PDF LanguageCustomer communication preference
Field MappingsMap NetSuite fields to Core8

Sync Options per Object Type:

  • Always - Full bidirectional sync
  • Read-Only - Import from NetSuite only
  • Never - No sync for this object type
Note: Products in NetSuite are always read-only in Core8.

Troubleshooting

Common Connection Issues

ErrorCheck LocationSolution
”Invalid Grant”Integration RecordRe-authenticate via OAuth
”429 Too Many Requests”N/AWait for retry (automatic)
“401/403 Unauthorized”Token validityToken refresh (automatic)
“Token refresh failed”Client credentialsVerify Client ID/Secret
”No subsidiary selected”ConfigurationSelect default subsidiary
”No term selected”ConfigurationSelect payment terms
”No language selected”ConfigurationSelect PDF language

Common Configuration Issues

IssueCheck LocationSolution
Empty subsidiary listSubsidiaries setupCreate at least one
Missing custom fieldsCustom FieldsCreate required fields
No payment termsPayment TermsAdd standard terms
SuiteQL errorsEnable FeaturesEnable SuiteAnalytics Workbook
Product sync errorsProductsSync products before using in deals/invoices
Network timeoutConnectionCheck network/firewall settings

Testing Your Setup

Optional Test Data

If you want to test with sample data:
Record TypeNavigationRequired Fields
CustomerLists > Relationships > Customers > NewCompany Name, Subsidiary, Terms
ProductLists > Accounting > Items > NewType: Non-inventory or Service
OpportunityTransactions > Sales > Create OpportunityLink to test customer

Verify Permissions

  1. Log in as integration user (or use “Login As”)
  2. Try accessing each record type
  3. Verify you can view required lists

Additional Resources

Documentation

Support Contacts

SupportContactInclude in Request
Core8support@core8.comNetSuite Account ID, Screenshots, Error messages
NetSuiteVia NetSuite UI: Support > Contact SupportReference REST Web Services and OAuth 2.0

Visual References

Look for these key elements in NetSuite:
  1. Enable Features Page - Checkboxes for required features
  2. Integration Record - Client ID and Secret display
  3. Manage Roles Page - Edit/Customize buttons
  4. Permissions Tab - 5 sub-tabs for different permissions
  5. Custom Field Creation - Entity field forms

Document Version: 2.1 | Last Updated: January 2025 | Validated against Core8 codebase