NetSuite Integration Requirements for Core8
Resource | Description |
---|---|
OAuth 2.0 Docs | NetSuite OAuth 2.0 setup guide |
REST Web Services | REST API configuration |
SuiteQL Docs | Query language documentation |
Roles Guide | Permissions configuration |
Setup > Company > Enable Features
Tab | Feature | Required | Purpose |
---|---|---|---|
SuiteCloud | REST Web Services | ✅ Yes | Enables API communication |
SuiteCloud | OAuth 2.0 | ✅ Yes | Secure authentication |
Analytics | SuiteAnalytics Workbook | ✅ Yes | Required for SuiteQL queries* |
Setup > Integration > Manage Integrations > New
Field | Value | Notes |
---|---|---|
Name | Core8 Integration | Or your preferred name |
State | Enabled ✅ | Must be enabled |
Authorization Code Grant | ✅ Checked | Required for OAuth flow |
REST Web Services | ✅ Checked | Required for API access |
Scope | rest_webservices | OAuth 2.0 scope (auto-configured) |
Field | Value Example |
---|---|
Redirect URI | https://staging.core8.co/api/auth/netsuite-oauth-callback |
staging.core8.co
with your Core8 instance URL.
Setup > Company > Company Information
Information | Example | Where to Find |
---|---|---|
Account ID | 1234567 or 1234567_SB2 | Company Information page |
Setup > Users/Roles > Manage Roles
Choose one approach:
Setting | Value |
---|---|
Name | Core8 Integration Role |
Center Type | Classic Center |
Setup > Company > Subsidiaries
Requirement | Details |
---|---|
Minimum | At least one active subsidiary |
Status | Must be Active |
Required Fields | Name, Country, Currency |
Order | Create parent subsidiaries first |
Billing > Setup > Payment Terms > New
Term Type | Use Case | Configuration |
---|---|---|
Standard | Net 30, Net 60, etc. | Set Days Till Net Due |
Date Driven | Due on specific date | Set specific due date rules |
Setup > Company > Enable Features > Company tab
Setting | Notes |
---|---|
Multiple Currencies | Check if needed |
Base Currency | Set immediately (cannot change later) |
Currency List | Configure at Lists > Accounting > Currencies |
Setup > Sales > Customer Statuses > New
Stage | Suggested Probability | Type |
---|---|---|
In Progress | 10-25% | Prospect |
In Discussion | 25-40% | Prospect |
Identified Decision Makers | 40-60% | Prospect |
In Negotiation | 60-80% | Prospect |
Proposal | 75-90% | Prospect |
Purchasing | 90-95% | Prospect |
Closed - Won | 100% | Prospect |
Closed - Lost | 0% | Prospect |
Permission | Level | Purpose |
---|---|---|
REST Web Services | Full | API communication |
Log in using Access Tokens | Full | OAuth authentication |
Access Token Management | Full | Token lifecycle |
SuiteAnalytics Workbook | Full | SuiteQL queries |
Permission | Level | Purpose |
---|---|---|
Invoice | Full | Create/update invoices |
Opportunity | Full | Manage deals |
Find Transaction | Full | Search records |
Permission | Level | Purpose |
---|---|---|
SuiteAnalytics Workbook | Full | Execute queries |
Permission | Level | Purpose |
---|---|---|
Customers | Full | Create/update customers |
Contacts | Full | Manage contacts |
Items | Full | Reference products, create discount items |
Subsidiaries | View | Required for customers |
Terms | View | Payment terms |
Currency | View | Multi-currency |
Billing Schedules | View | Billing frequencies |
Customer Categories | View | Customer tiers |
Permission | Level | Purpose |
---|---|---|
Custom Record - il_supp_langs | View | PDF languages |
Custom List - esc_industries | View | Industry list |
Customization > Lists, Records, & Fields > Lists > New
Field | Value |
---|---|
Name | ESC Industries |
ID | esc_industries |
Values | Technology, Healthcare, Manufacturing, Retail, etc. |
Customization > Lists, Records, & Fields > Record Types > New
Field | Value |
---|---|
Name | IL Supported Languages |
ID | il_supp_langs |
Type | Custom Record Type (not List) |
Fields | Add language code and description fields |
Customization > Lists, Records, & Fields > Entity Fields > New
Field | Label | ID (auto-prefixed) | Type | List/Record | Applies To |
---|---|---|---|---|---|
PDF Language | PDF Language | custentity_il_pdf_lang | List/Record | IL Supported Languages | Customer ✅ |
Industry | Industry | custentity_esc_industry | List/Record | ESC Industries | Customer ✅ |
Tax ID | Taxpayer ID | custentity_il_taxpayer_id | Text | - | Customer ✅ |
Configuration | Value |
---|---|
OAuth Scope | rest_webservices |
Grant Type | authorization_code |
Token Refresh | refresh_token grant with Basic auth |
Authorization: Bearer {accessToken}
Accept: application/json
Content-Type: application/json
Prefer: transient
Endpoint | Purpose |
---|---|
/services/rest/record/v1/* | CRUD operations |
/services/rest/query/v1/suiteql | Data queries |
/services/rest/auth/oauth2/v1/token | Token refresh |
/services/rest/record/v1/metadata-catalog | Field metadata |
Error Type | Strategy | Max Retries | Delays |
---|---|---|---|
429 Rate Limit | Exponential backoff | 3 | 5s, 10s, 20s (max 30s) |
401/403 Auth | Token refresh + retry | 3 | 1s, 2s, 4s (max 5s) |
Network Errors | Exponential backoff | 3 | 1s, 2s, 4s |
Limit Type | Default | Notes |
---|---|---|
Per User (RESTlets) | 5 concurrent | Standard limit |
Integration Total | Varies | Based on licenses |
Monitoring | Setup > Integration > Integration Governance | Optional admin tool |
customrecord_
and customlist_
in queries.
Table | Purpose | Operations |
---|---|---|
customer | Customer records | Full CRUD |
contact | Contact management | Full CRUD |
item | Product catalog | Read only |
transaction | Invoices & opportunities | Full CRUD |
subsidiary | Organization structure | Read only |
term | Payment terms | Read only |
currency | Currency settings | Read only |
billingSchedule | Billing schedules | Read only |
entitystatus | Deal stages | Read only |
customercategory | Customer tiers | Read only |
Setting | Purpose |
---|---|
Default Subsidiary | Required for new customers |
Default Payment Terms | Required for new customers |
Default PDF Language | Customer communication preference |
Field Mappings | Map NetSuite fields to Core8 |
Error | Check Location | Solution |
---|---|---|
”Invalid Grant” | Integration Record | Re-authenticate via OAuth |
”429 Too Many Requests” | N/A | Wait for retry (automatic) |
“401/403 Unauthorized” | Token validity | Token refresh (automatic) |
“Token refresh failed” | Client credentials | Verify Client ID/Secret |
”No subsidiary selected” | Configuration | Select default subsidiary |
”No term selected” | Configuration | Select payment terms |
”No language selected” | Configuration | Select PDF language |
Issue | Check Location | Solution |
---|---|---|
Empty subsidiary list | Subsidiaries setup | Create at least one |
Missing custom fields | Custom Fields | Create required fields |
No payment terms | Payment Terms | Add standard terms |
SuiteQL errors | Enable Features | Enable SuiteAnalytics Workbook |
Product sync errors | Products | Sync products before using in deals/invoices |
Network timeout | Connection | Check network/firewall settings |
Record Type | Navigation | Required Fields |
---|---|---|
Customer | Lists > Relationships > Customers > New | Company Name, Subsidiary, Terms |
Product | Lists > Accounting > Items > New | Type: Non-inventory or Service |
Opportunity | Transactions > Sales > Create Opportunity | Link to test customer |
Support | Contact | Include in Request |
---|---|---|
Core8 | support@core8.com | NetSuite Account ID, Screenshots, Error messages |
NetSuite | Via NetSuite UI: Support > Contact Support | Reference REST Web Services and OAuth 2.0 |