How-to: Connect your policy to NetSuite - (Token Based Authentication)

Options
Ted Harris
Ted Harris Expensify Success Coach - Admin, Expensify Team, Expensify Student Ambassador Posts: 359 Expensify Team
edited January 2023 in How-to Docs

Expensify can connect your policies to all the major accounting integrations.

Why connect your Accounting Package to Expensify:

  • When a policy is connected to an accounting integration, the connection 'syncs' every 24 hours to allow expense reports within Expensify to export to an account you choose in NetSuite!
  • It's not just expense reports you can export, you now have the ability to export invoices from Expensify to NetSuite! When an invoice has been marked as paid in Expensify, the paid status will transfer to NetSuite and vice-versa making this a simple and low effort solution for tracking your invoices!

Let's get started with NetSuite Token Based Authentication!

Important Notes Before We Start:

  • Token based authentication works by ensuring that each request to NetSuite is accompanied by a signed token which is verified for authenticity.
  • You must be able to login to NetSuite as an administrator to initiate the connection.
  • Companies/businesses need to have a Control Plan in Expensify in order to integrate with NetSuite. You can read more about our plans, pricing and what's included in each, here!
  • Each NetSuite subsidiary will need its own Expensify Group Policy.
  • Employees do NOT need NetSuite access or a NetSuite license to submit expense reports for export to NetSuite. The connection is managed by the Policy Admin.
  • Ensure that your policy's report output currency setting matches the NetSuite Subsidiary default currency.
  • If you choose to sync "People," all employees under the same NS Subsidiary that you are syncing will be brought in to Expensify, and you MUST select an approval workflow on the policy People settings page, allowing you to set a final approver. 
  • If Manager Approval is chosen when using "People" sync, Expensify will set the “expense approver” in NetSuite as the approver in Expensify. If an expense approver doesn’t exist in NetSuite then the supervisor will be used.
  • Make sure your page size is set to 1000 for importing your customers and vendors. Go to Setup > Integration > Web Services Preferences > 'Search Page Size'
  • There is currently a known issue when connecting to NetSuite Sandbox environments whereby the "Account ID" field must be formatted with an underscore instead of a hyphen and the "sb" portion of the Account ID must be capitalised - ie: "SB" instead of "sb". This is typically resulting in the error: Unexpected error while trying to login via Tokens. Please try again later

There are 7 steps to complete the connection, but you only have to do this once!

Step 1: Install the Expensify Bundle in NetSuite

  • Logged into NetSuite as an administrator, go to Customization > SuiteBundler > Search & Install Bundles then search for "Expensify." Click on the Expensify Connect bundle (Bundle ID 283395) then click Install.
  • If you already have the Expensify Connect bundle installed, head to Customization > SuiteBundler > Search & Install Bundles > List and update it to the latest version.


Select "Show on Existing Custom Forms" for all available fields.

Step 2A. Enable Token Based Authentication

  1. Setup > Company > Enable Features > SuiteCloud > Manage Authentication
  2. Make sure “Token Based Authentication” is enabled
  3. Save

2B. Add Expensify Integration Role to a User

  1. Lists > Employees > find the user you want to add the Expensify Integration role to
  2. Click Edit > Access then find the Expensify Integration role in the dropdown and add it to the user. Be sure to save the change.

This user must have access to at least the permissions included in the Expensify Integration Role but they're not required to be an Admin.

Remember: Tokens are associated with a User and a Role, not just a User. You cannot create a connection with tokens using one role and then switch to another. Once you make a connection with tokens, that's the token/user/role you use to make any subsequent sync or export.

2C. Create Access Tokens

  1. Global search for page: tokens
  2. Click New Access Token
  3. Select the application Expensify (this must be the original Expensify integration from the bundle and will not have an application ID) and the role Expensify Integration, then press save.
  4. Copy and Paste the token ID and token secret to a saved location on your computer. This is the only time you will see these. 

Step 3: Confirm Expense Reports are Enabled in NetSuite

Enabling Expense Reports is required as part of Expensify's integration with NetSuite. 

  • Logged into NetSuite as an administrator, go to Setup > Company > Enable Features > Employees
  • Confirm the checkbox next to Expense Reports is checked. If it is not, click the checkbox then click Save to enable Expense Reports.

Step 4: Confirm Expense Categories are set up in NetSuite

Once Expense Reports are enabled Expense Categories can be set up in NetSuite. Expense Categories are an alias for General Ledger accounts for coding expenses.

  • Logged into NetSuite as as administrator, go to Setup > Accounting > Expense Categories. A list of Expense Categories should be available. 
  • If no Expense Categories are visible click on "New" to create new Expense Categories.

Step 5A: Confirm Journal Entry Transaction Forms are Configured Properly

  • Logged into NetSuite as an administrator, go to Customization > Forms > Transaction Forms. 
  • Click "Customize" or "Edit" next to the Standard Journal Entry form then click Screen Fields > Main. Please verify the "Created From" label has "Show" checked and the Display Type is set to Normal.
  • Click the sub-header Lines and verify that the "Show" column for "Receipt URL" is checked.
  • Go to Customization > Forms > Transaction Forms and ensure all other Transaction Forms with the Journal type have this same configuration.

Step 5B: Confirm Expense Report Transaction Forms are Configured Properly

  • Logged into NetSuite as an administrator, go to Customization > Forms > Transaction Forms. 
  • Click "Customize" or "Edit" next to the Standard Expense Report form then click Screen Fields > Main. Please verify the "Created From" label has "Show" checked and the Display Type is set to Normal (see screenshot below).
  • Click the second sub-header Expenses (the one at the bottom--there are two!) and verify that the 'Show' column for 'Receipt URL' is checked.
  • Go to Customization > Forms > Transaction Forms and ensure all other Transaction Forms with the Expense Report type have this same configuration.

Step 5C: Confirm Vendor Bill Transactions Forms are Configured Properly

  • Logged into NetSuite as an administrator, go to Customization > Forms > Transaction Forms. 
  • Click "Customize" or "Edit" next to your preferred Vendor Bill form then click Screen Fields > Main and verify that the "Created From" label has "Show" checked (see screenshot below) and that Departments, Classes, and Locations have the "Show" label unchecked. 
  • Under the Expenses sub-header (make sure to click "Expenses" sub-header at the very bottom and not "Expenses & Items"), ensure "show" is checked for Receipt URL, Department, Location, and Class
  • Go to Customization > Forms > Transaction Forms and ensure all other Transaction Forms with the Vendor Bill type have this same configuration.

Step 5D: Confirm Vendor Credit Transactions Forms are Configured Properly

  • Logged into NetSuite as an administrator, go to Customization > Forms > Transaction Forms.
  • Click "Customize" or "Edit" next to your preferred Vendor Credit form then click Screen Fields > Main and verify that the "Created From" label has "Show" checked (see screenshot below) and that Departments, Classes, and Locations have the "Show" label unchecked.
  • Under the Expenses sub-header (make sure to click "Expenses" sub-header at the very bottom and not "Expenses & Items"), ensure "show" is checked for Receipt URL, Department, Location, and Class
  • Go to Customization > Forms > Transaction Forms and ensure all other Transaction Forms with the Vendor Credit type have this same configuration.

Step 6: Set up Tax Groups (only required if tracking taxes)

Expensify imports NetSuite Tax Groups (not Tax Codes), which you can find in NetSuite under Setup > Accounting > Tax Groups.

Tax Groups are an alias for Tax Codes in NetSuite and can contain one or more Tax Codes (Please note: for UK and Ireland subsidiaries please ensure your Tax Groups do not have more than one Tax Code). We recommend naming Tax Groups so they are easily understood by your employees. Both the name and rate will display in Expensify.

Before trying to import NetSuite Tax Groups into Expensify, first:

  1. Create your Tax Groups in NetSuite by going to Setup > Accounting > Tax Groups. Click New, then select the country for your Tax Group. Enter the Tax Name (this will be displayed to employees in Expensify), and then select the subsidiary for this Tax Group. Finally, from the table select the Tax Code you wish to include in this Tax Group, click Add and then click Save.
  2. Create one NetSuite Tax Group for each tax rate that you want available in Expensify.
  3. Ensure Tax Groups can be applied to expenses by going to Setup > Accounting > Set Up Taxes and set the Tax Code Lists Include preference to "Tax Groups And Tax Codes" or "Tax Groups Only". If this field does not display, don't worry! This just means it does not need to be set for that country.

Step 7: Connect Expensify and NetSuite

  • Log into Expensify as a Policy Admin and go to Settings > Policies > [Policy Name] > Connections > NetSuite. Click the "radio button" next to Connect to NetSuite. Enter your Account ID (Account ID can be found in NetSuite by going to Setup > Integration > Web Services Preferences), Token and Token Secret here. You must create the connection using a NetSuite account with the Expensify Integration role.


  • Click Connect to NetSuite. You can connect to your Sandbox Environment by going through the setup steps with a Sandbox role. 

The NetSuite connection will sync and the Configuration dialog will open. You should then be connected! 

If you are experiencing issues after following these steps, you can search the Community for the error you're receiving,

You are now connected! Woohoo!

Moving forward all reports exported from Expensify will be created in NetSuite by "SOAP Web Services". This is the term that NetSuite uses when records are created via an integration

If you are experiencing issues after following these steps, you can search the Community for the error you're receiving, read the related articles below or write into concierge@expensify.com!

Related articles
Tagged: