NetSuite Integration Guide

Integrate your Point of Sale brand with NetSuite, streamlining data and workflows across platforms. Configuring both NetSuite and your content management system (CMS) ensures a seamless connection. This integration helps to maintain consistent branding and product information, and enables efficient order and inventory management. With connected systems, you reduce manual data entry and improve overall operational efficiency.

This article outlines the process to set up a Point of Sale brand to integrate with NetSuite. It is assumed that the brand already has the necessary sandbox and production accounts available.

The setup consists of configuration on the NetSuite side (through the NetSuite web console) as explained in this article, followed by configuration on the Point of Sale side (through the CMS). Refer to NetSuite CMS Configuration for the CMS configuration portion.

NetSuite POS Architecture

A block diagram shows the NetSuite POS Architecture.

Configure NetSuite Setup

Complete the NetSuite-side configuration including account setup, authentication, roles, and custom fields required for Point of Sale integration.

Configure Account Settings

  1. Log in to the NetSuite UI as an Administrator.
  2. Navigate to Setup | Company | Company Information.
  3. Make a note of the Account ID shown on the Company Information UI.
  4. Navigate to Setup | Company | Enable Features.
  5. Click on the SuiteCloud tab.
  6. Scroll to SuiteTalk (Web Services).
  7. Enable SOAP WEB SERVICES.
    This will allow the use of the SOAP (Simple Object Access Protocol)-based method for integration.

    Screen shows the option to enable SOAP web services.

  8. Navigate to Setup | Integration | Manage Integrations.
  9. Create a new integration by clicking on the New button.
  10. Fill out the required fields including Name and State.
    By default, the State is Enabled.
  11. Under Authentication, enable the following options:
    1. TOKEN-BASED AUTHENTICATION - A security technique that authenticates the users who attempt to log in.
    2. TBA: ISSUETOKEN ENDPOINT - A programmatic method for creating the tokens, which will reduce compromising a user's credentials.
    3. USER CREDENTIALS - An additional method for authentication.
  12. Click Save.

    A screen displays options for SuiteTalk Web Services.

Important
Important This sets up token-based authentication for API access. Please make a note of the Consumer Key and the Consumer Secret.

Create Web Services Role

Create a new role for web service access with appropriate permissions.

  1. Navigate to Setup | Users/Roles | Manage Roles.
  2. Click on the New Role button.
  3. Fill out the required fields including Name.
  4. Under Subsidiary Restrictions, enable USER SUBSIDIARY.
    This will restrict the role's access to the user's subsidiary only.
  5. Under Authentication, enable WEB SERVICES ONLY ROLE.
    This will prohibit the user from accessing NetSuite through the user interface, enhancing the security of the integrations.
  6. Under Permissions, add relevant permissions with their levels. See Configure Role Permissions

    A configuration screen includes options for token-based authentication, OAuth 2.0, and user credentials.

  7. Click Save.

Configure Role Permissions

The recommended permissions for the web services role are:

  1. Transactions:
    Permission Level
    Adjust Inventory Full
    Cash Sale Full
    Cash Sale Refund Full
    Check Full
    Credit Card Full
    Credit Card Refund Full
    Credit Memo Full
    Credit Returns Full
    Customer Deposit Full
    Customer Payment Full
    Customer Refund Full
    Find Transaction Full
    Invoice Full
    Item Receipt Full
    Make Journal Entry Full
    Receive Order Full
    Receive Returns Full
    Refund Returns Full
    Return Auth. Approval Full
    Return Authorization Full
    Sales Order Full
    Quote Full
    View Payment Events Full
  2. Lists:
    Permission Level
    Custom Record Entries Full
    Customer Profile Full
    Customers Full
    Documents and Files Full
    Email Template Full
    Items Full
    Perform Search Full
    Promotion Full
    Publish Search Full
    Website (External) publisher Full
    Locations Full
    Payment Methods Full
    Product Lines Full
    Record Custom Field Full
    Shipping Items Full
    Subsidiaries Full
    Tax Records Full
  3. Setup:
    Permission Level
    Access Token Management Full
    Accounting Lists Full
    Integration Application Full
    Log in using Access Tokens Full
    Manage Accounting Periods Full
    SOAP Web Services Full
    User Access Tokens Full

Create Web Services User

Create a new user that will have the web services role created above.

  1. Navigate to Setup | Users/Roles | Manage Users.
  2. Click on the New User button.
  3. Under Access, enable GIVE ACCESS.

    A screen lists employee information.

  4. On the Access | Roles tab, assign the web services role created above to the new user.
Important
Important Be sure to assign the web services role created above to the new user on the Access > Roles tab.

Create Access Tokens

Create a web services access token for the web services user.

  1. Navigate to Setup | Users/Roles | Access Tokens | New.
  2. Under Application Name, select your integration which you've named in the previous steps.
  3. Under User, select the user you've created.
  4. Under Role, select the role you've created.
  5. Under Token Name, enter a name for your tokens that will be generated.
  6. Click Save.

    A screen shows access token settings.

Important
Important Please make a note of the generated Token ID and Token Secret.

Configure Custom Fields

Create custom fields required for data synchronization between Point of Sale and NetSuite.

Create Entity Fields

  1. Navigate to Customization | List, Records, & Fields | Entity Fields.
  2. Create the following entity fields:
    Attribute ID Type Description
    _remaining_balance_credit Currency Customer store credit (optional)
    _discount_group List/Record Customer group for promotion (optional)
    _email_acquisition List/Record Email acquisition type - GIVEN, REFUSED, UNAVAILABLE (optional)
    _phone_type List/Record Customer phone type - LANDLINE, CELL (optional)
    Note
    Note NetSuite will automatically prepend custentity to the beginning of the ID.

Create Transaction Body Fields

  1. Navigate to Customization | List, Records, & Fields | Transaction Body Fields.
  2. Create the following transaction body fields:
    Attribute ID Type Description
    _tax_amount Decimal Number Order-level tax amount as calculated by Point of Sale
    _discount_amount Decimal Number Order-level discount as calculated by Point of Sale
    _external_customer_id Free-Form Text References to a customer ID existing in an external system, if required for clienteling
    _pos_order_id Free-Form Text POS order ID
    _pos_transaction_id Free-Form Text POS transaction ID
    _customer_credit Currency Customer credit amount applied to order (optional)
    _layaway Check Box Marks order as layaway order (optional)
    _ship_method List/Record Shipping method internal ID (optional)
    _cc_last_4_digits Integer Number

    Last four digits of the credit card, if available (optional)

    Tip: For details on the support capability for BORIS returns to credit card payments, refer to this Buy Online, Return In-Store (BORIS) Payment Refunds via Credit Card.

    _finance_account_number Free-Form Text Financing account number (optional)
    _finance_auth_number Free-Form Text Financing authorization code (optional)
    _finance_message Free-Form Text Financing instruction text (optional)
    _finance_order_number Free-Form Text Financing order number (optional)
    _finance_primary_buyer Free-Form Text Financing primary buyer (optional)
    _finance_total_amount Currency Total amount financed (optional)
    _finance_payment_type_code List/Record Financing payment type code internal ID (optional)
    _finance_buyer_id Integer Number Financing buyer ID (optional)
    _finance_last_four_ssn Free-Form Text Financing last four digits of social security number (optional)
    _finance_message_code List/Record Financing message code (optional)
    _finance_order_type List/Record Financing order type (optional)
    _finance_state_id List/Record Financing ID state issued (optional)
    _finance_buyer_verified Free-Form Text Financing buyer is verified (optional)
    _tax_exempt_card_number Free-Form Text Masked tax exempt card number (optional)
    _tax_exempt_code Free-Form Text Tax exempt code (optional)
    _tax_exempt_customer_name Free-Form Text Tax exempt customer name (optional)
    _tax_exempt_name Free-Form Text Tax exemption name (optional)
    _tax_exempt_notes Free-Form Text Tax exempt notes (optional)
    _tax_exempt_rate Decimal Number Tax exempt percentage rate (optional)
    _is_exchange_order Check Box Indicates that the order is part of an exchange
    _promotion_code Free-Form Text A comma-separated list of merchant promotion codes applied to the order
    _logged_in_associate_id Free-Form Text Internal ID of associate logged into POS at order time
    _store_credit Decimal Number Store credit used by customer for order
    _total_credit_used Decimal Number Total credit used by customer for order
    _total_assembled Decimal Number Total assembled quantity
    _total_boxed Decimal Number Total boxed quantity
    _delivery_date Date Selected delivery date for delivery orders
    _coupon_code Free-Form Text A comma-separated list of merchant coupon codes applied to the order
    _order_discount_reason_codes Free-Form Text A comma-separated list of PS reason codes for discounts applied to order
    _quote_id Free-Form Text Point of Sale quote ID
    Note
    Note NetSuite will automatically prepend custbody to the beginning of the ID.

Create Transaction Line Fields

  1. Navigate to Customization | List, Records, & Fields | Transaction Line Fields.
  2. Create the following transaction line fields:
    Attribute ID Type Description
    _item_discount_amount Decimal Number Item level discount as calculated by Point of Sale
    _item_pos_order_item_id Free-Form Text Order item ID as determined by Point of Sale
    _item_upc Free-Form Text Item UPC code
    _delivery_type List/Record Order item delivery type (if supported, set up as a select form field within NetSuite)
    _delivery_date Date For line level fulfillment, the delivery date for the line
    _pickup_date Date For line level fulfillment, the pickup date for the line
    _available_date Date For line level fulfillment, the available date for the line
    _item_notes Free-Form Text Notes applied to the line
    _line_unique_key Free-Form Text Applies a unique key to be associated with the line
    _item_discount_reason_codes Free-Form Text A comma-separated list of PS reason codes for discounts applied to the line
    Note
    Note NetSuite will automatically prepend custcol to the beginning of the ID.

Custom Field Naming Convention

Custom field attribute IDs listed in the tables above are suggested naming conventions. Attribute IDs can be named in any way by merchants, but if so the attribute IDs must be entered into CMS (through ERP configuration UI) as named by the brand.

Create NetSuite Customers (if necessary)

If using an external system for clienteling, create one or more Customers in NetSuite for use by Point of Sale when creating transactions within NetSuite.

Navigate to Lists | Relationships | Customers and click New.

Collect Parameters for Point of Sale

Once the above setup is complete, the following parameters will need to be provided to Point of Sale in order to allow Point of Sale servers to invoke web services on NetSuite.

  1. Collect the following Authentication Parameters:
    Parameter Location in NetSuite
    Account ID Setup | Company | Company Information
    SuiteTalk URL Setup | Company | Company Information | Company URLs tab
    Consumer Key Integration
    Consumer Secret Integration
    Token ID Access Token
    Token Secret Access Token
  2. Collect the following Object References:
    Reference Location in NetSuite
    Payment Method Names/Internal IDs Setup | Accounting | Accounting Lists | Payment Method list
    Subsidiary Internal ID* Setup | Company | Subsidiaries
    Location Internal IDs* Setup | Company | Locations
    Department Internal IDs* Setup | Company | Departments
    Class Internal IDs* Setup | Company | Classes
    Customer Internal IDs** Lists | Relationships | Customers

    * These references are only required depending on required fields in the transaction records that need to be created within NetSuite.

    ** These references are only required if the customer accounts are referenced from an external system as NetSuite requires a customer entity to be set in transactions based on a NetSuite customer.

NetSuite Transaction Postings

Understand the NetSuite records created by POS for different order flows and transaction types.

Overview

The following is a summary of NetSuite records created by POS in NetSuite for different order flows. POS orders can be searched within NetSuite by POS Order ID and/or POS transaction ID.

Note
Note For a list of events that Point of Sale can stream, refer to Data Exports.

Quotes (Estimates)

  • Quotes (estimate records in NetSuite) can be generated from the POS Suspended Carts page when a cart is saved. Only active quotes will be shown on the Suspended Carts page as the app filters out any expired quotes.
  • Quotes in POS have a reference to the NetSuite quote via the quote ID.
  • Quotes can be resumed in POS, which will generate a cart from the quote. The cart can be updated as needed. When the order is submitted, the NetSuite quote is updated with any additional changes, and a sales order or invoice is initialized from the quote in NetSuite and then persisted.

Sale Transactions

For standard sale transactions, the following records are created:

  • Sales Order, Invoice, or Cash Sale (depending on chosen transaction type in CMS)
  • Customer Payment(s) - multiple records if a multi tender order

Return Transactions

For return transactions, the following records are created:

  • Return Authorization
  • Item Receipt
  • Credit Memo
  • Customer Refund(s) - multiple records if a multi tender return

Exchange Transactions

Exchange transactions create records for both the original order and the new order components.

Exchange - Even

Original Order:

  • Sales Order, Invoice, or Cash Sale (depending on chosen transaction type in CMS)
  • Customer Payment(s) - multiple records if a multi tender order
  • Return Authorization - for item(s) being returned
  • Item Receipt - for item(s) being returned
  • Credit Memo - for item(s) being returned
  • Customer Refund(s) - multiple records if a multi tender return - for item(s) being returned

New Order:

  • Sales Order, Invoice, or Cash Sale (depending on chosen transaction type in CMS) - for item(s) being purchased in exchange
  • Customer Payment(s) - multiple records if a multi tender order - for item(s) being purchased in exchange

Exchange - Customer Gets Refund

Original Order:

  • Sales Order, Invoice, or Cash Sale (depending on chosen transaction type in CMS)
  • Customer Payment(s) - multiple records if a multi tender order
  • Return Authorization - for item(s) being returned
  • Item Receipt - for item(s) being returned
  • Credit Memo - for item(s) being returned
  • Customer Refund(s) - multiple records if a multi tender return - for item(s) being returned

New Order:

  • Sales Order, Invoice or Cash Sale (depending on chosen transaction type in CMS) - for item(s) being purchased in exchange
  • Customer Payment(s) - multiple records if a multi tender order - for item(s) being purchased in exchange
Note
Note The sum of refunds on the original order will be greater than the sum of payments in exchange.

Exchange - Customer Pays Additional

Original Order:

  • Sales Order, Invoice, or Cash Sale (depending on chosen transaction type in CMS)
  • Customer Payment(s) - multiple records if a multi tender order
  • Return Authorization - for item(s) being returned
  • Item Receipt - for item(s) being returned
  • Credit Memo - for item(s) being returned
  • Customer Refund(s) - multiple records if a multi tender return - for item(s) being returned

New Order:

  • Sales Order, Invoice, or Cash Sale (depending on chosen transaction type in CMS) - for item(s) being purchased in exchange
  • Customer Payment(s) - multiple records if a multi tender order - for item(s) being purchased in exchange
Note
Note The sum of refunds on the original order will be less than the sum of payments in exchange.

No Receipt Return

For returns without a receipt, the following records are created:

  • Return Authorization
  • Item Receipt
  • Credit Memo
  • Customer Refund(s) - multiple records if a multi tender return
Note
Note The return authorization will not be linked to any existing invoice within NetSuite.

No Receipt Exchange

No Receipt Return:

  • Return Authorization - for item(s) being returned
  • Item Receipt - for item(s) being returned
  • Credit Memo - for item(s) being returned
  • Customer Refund(s) - multiple records if a multi tender return - for item(s) being returned
Note
Note The return authorization will not be linked to any existing invoice within NetSuite.

New Order:

  • Sales Order, Invoice, or Cash Sale (depending on chosen transaction type in CMS) - for item(s) being purchased in exchange
  • Customer Payment(s) - multiple records if a multi tender order - for item(s) being purchased in exchange

NetSuite Integration FAQ

Frequently asked questions about NetSuite integration with Point of Sale.

Frequently Asked Questions

Do you support NetSuite's "BIN management" feature?
No, we do not support this feature at this time.