> ## Documentation Index
> Fetch the complete documentation index at: https://docs.useparagon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# NetSuite

## Required Setup

To configure a Sync for NetSuite, your connecting users will need to configure NetSuite **Token-Based Authentication (TBA)**.

Verify that your App Configuration for your NetSuite integration is set to use this authentication type:

<Frame>
  <img src="https://mintcdn.com/paragon/xt8b4D7eppoZyOQv/assets/netsuite-app-type.png?fit=max&auto=format&n=xt8b4D7eppoZyOQv&q=85&s=20367ef0d96fcce6b5b72cae393cfe89" alt="Token-Based Authentication selected for Application Type" width="2804" height="1632" data-path="assets/netsuite-app-type.png" />
</Frame>

<Info>
  Paragon's standard NetSuite setup supports three other authentication strategies (Authorization Code, Client Credentials, and Client Credentials with User Certificates), but the NetSuite sync pipeline requires Token-Based Authentication (TBA).

  For details on configuring authentication, see [Connecting to NetSuite](/resources/integrations/netsuite).
</Info>

In Token-Based Authentication, your customers will create an Access Token assigned to a User and Role. The role assigned to the Access Token should be configured as follows:

* Set **Accessible Subsidiaries** to **All** and turn on **Allow Cross-Subsidiary Record Viewing**.
* In Permissions, set:
  * **Lists > Contacts:** at least View
  * **Lists >** \[any List type to sync]: at least View
  * **Setup > SOAP Web Services:** Full
  * **Setup > User Access Tokens:** Full
  * **Setup > Log in using Access Tokens:** Full
  * **Setup > CRM Lists:** at least View
  * **Setup > Other Lists:** at least View

If a saved search you are syncing includes joined fields or related records, the role also needs view access to those record types, such as customers, companies, or custom records. Saved searches used for NetSuite Sync must include the **Internal ID** column.

## Synced Objects

NetSuite supports the following Synced Objects:

* [Contacts](/managed-sync/api/contact-schema)
* [Custom Objects](/managed-sync/api/custom-object-schema)

## Contacts

### Sync Configuration Options

```json Example theme={null}
{
    "integration": "netsuite",
    "pipeline": "contacts",
    "configuration": {
        "savedSearchId": "customsearch_my_contacts"
    }
}
```

<ParamField path="savedSearchId" type="string">
  The ID of a NetSuite saved search to limit the Sync scope to. If not specified, the Sync will ingest all available contacts from the user's NetSuite account.

  The saved search must include the **Internal ID** column for Paragon to identify records.
</ParamField>

## Custom Objects

Use the `custom_objects` pipeline to sync any NetSuite record type that is not natively supported, such as other standard records like `customer`, `vendor`, or `salesOrder`.

### Sync Configuration Options

```json Example theme={null}
{
    "integration": "netsuite",
    "pipeline": "custom_objects",
    "configuration": {
        "recordType": "customer",
        "savedSearchId": "customsearch_my_customers"
    }
}
```

<ParamField path="recordType" type="string" required>
  The NetSuite record type to sync, e.g., `customer`, `vendor`, `salesOrder`.
</ParamField>

<ParamField path="savedSearchId" type="string">
  The ID of a NetSuite saved search to limit the Sync scope to. If not specified, the Sync will ingest all available records of the configured `recordType` from the user's NetSuite account.

  The saved search must include the **Internal ID** column for Paragon to identify records.
</ParamField>
