From this article you will learn:
Do you use NetSuite software for Accounts Payable in your business and want to integrate it with Rossum? We have a simple solution for this. Try our NetSuite Automation Suite for free to see how it can benefit your company.
How does the integration work?
Currently, the integration is suitable for a variety of accounts payable use cases. Its main principle is to export the reviewed data from Rossum to NetSuite and create a new vendor bill (a NetSuite name for an incoming invoice) that is ready for further processing. Rossum imports the most recent NetSuite records every night.
The integration uses this data to pre-match and pre-fill basic values, such as vendor names, custom fields (ABNs, requester person, approver, SKUs, etc.), and items or expenses. Once data is captured from a document, automatic pre-filling and matching occurs. When finished, an AP specialist reviews the data and clicks the confirm button. After that, the document is automatically exported to NetSuite as a new vendor bill. NetSuite File Cabinet stores the original file image.
How to set up the integration between Rossum and NetSuite
Step 1: Log in.
- Log in with your Rossum account credentials on the NetSuite extension webpage on the NetSuite extension webpage.
Step 2: Fill in your Account information
In the Add Netsuite Account tab, your NetSuite Admin must first enter basic information for your account. You will need to prepare credentials for an application created by your NetSuite admin in NetSuite. This integration app should have rights to communicate with SOAP Web Services and access Netsuite lists (e.g. list of currencies).
The following lists are always imported from your NetSuite into Rossum:
- vendors
- subsidiaries
- items
- sales tax items
When you set up the integration via the app, these lists are always imported (you can choose which lists to import via the API):
- accounting periods
- accounts
- classes
- departments
- employees
- expense categories
- locations
- vendor bills

Step 3: Set up your Account configuration
You can set up your timezone, File Cabinet Folder ID and Rossum-NetSuite Field Mapping in the Account configuration section. Your NetSuite account data is automatically updated daily at 2 am, so you need to set up the correct timezone.
File Cabinet is used to store your actual invoice files. Rossum sends the PDF files of incoming invoices there, so you need to provide Rossum with the folder ID. Your NetSuite admin will know.
The Rossum-NetSuite field mapping is critical because this is where you determine what information you want to export from Rossum to NetSuite. To set up the field mapping, you should first ensure that you have set up the Rossum schema accordingly.
Step 3.1: Setting up the Rossum schema
Which Rossum schema you need depends largely on what data you require to create a vendor bill in NetSuite. Therefore, we cannot provide you with the exact schema you need in this guide, but we will try to explain the principles and the necessary fields. If any of the fields required for each NetSuite instance are missing, they are automatically added to your schema, so make sure not to delete them.
You can use this example schema to help you get started.
Look at the table below to check all the required fields:
Field label | Field ID | Type | Note |
---|---|---|---|
Invoice number | invoice_id | Header | On new schemas, this may be called document_id |
Vendor match | company_match | Header | The name of the matched vendor in your NetSuite |
Subtotal | amount_total_base | Header | Total without tax |
Total tax | amount_total_tax | Header | |
Total amount | amount_total | Header | |
Item type | item_type | Line item | Can be expense or item |
Expense category | item_expense_category | Line item | Only for expenses, depends on your NetSuite |
Description | item_description | Line item | Item description which is matched to a description in NetSuite |
Item search | item_search_override | Line item | Non-required but useful for matching items whose description doesn’t match what is in NetSuite |
NetSuite Item Code | item_match | Line item | |
Quantity | item_quantity | Line item | |
Unit price without Tax | item_amount_base | Line item | |
Item tax rate | item_rate | Line item | |
Unit price incl. Tax | item_amount | Line item | |
Item total base | item_total_base | Line item | |
Item total amount | item_amount_total | Line item |
Step 3.2: Map the fields between Rossum and NetSuite
The mapping tells the integration what field in the Rossum schema matches which field in the NetSuite account. For that, we have a simple JSON configuration called Rossum-Netsuite Field Mapping.
NetSuite distinguishes four types of fields:
- Recordref fields are a reference to other information, so they contain an ID, which we can use to retrieve that information.
- Simple refers to invoice fields that contain an actual value, such as the due date, not just an ID referring to an actual value as in the case of recordref.
- Custom refers to custom line item fields specific to your NetSuite configuration.
- List refers to fields stored as a list in NetSuite. We do not currently use this in any scenario.
For each field in the mapping, we are saying the Rossum name, NetSuite name, data type, and whether we need this field to create a line item in NetSuite or match an existing one.
Let us look at the first field – company_match – in detail:
- company_match is a field in Rossum that identifies a company from a predefined list. So it contains the company name.
- entity is a field that contains the company name on the NetSuite side, as we can read from “netsuite_key”.
- type defines what kind of data we use. The string we see here is (in simple terms) the way the developers say “text”.
- required_on_item_creation defines whether we need to include this information when creating a line item in NetSuite. A line item must be created before sending a vendor bill to NetSuite if it does not already exist.
- required_on_item_match specifies whether we need to include this information to match line items on vendor bill to items existing in NetSuite.
3.3: Examples:
The following tables show what we have in this JSON code.
Recordref
Rossum field | NetSuite field | Meaning | Type | Required on item creation | Required on item match | Default Schema |
---|---|---|---|---|---|---|
company_match | entity | company name | string | no | no | no |
currency | currency | currency | string | no | no | yes |
Simple
Rossum field | NetSuite field | Meaning | Type | Required on item creation | Required on item match | Default schema |
---|---|---|---|---|---|---|
invoice_id | tranId | code identifying the specific invoice | string | no | no | yes |
date_due | dueDate | the date the invoice is due | datetime | no | no | yes |
amount_total_tax | taxTotal | Total Tax | float | no | no | yes |
vat_exchange_rate | exchangeRate | Exchange rate used for amounts conversion on the invoice | float | no | no | no |
Custom
Rossum field | NetSuite field | Meaning | Type | Required on item creation | Required on item match | Default schema |
---|---|---|---|---|---|---|
date_issue | custbody_cb_issue_date | Issue date of the invoice | datetime | no | no | yes |
Vendor Bill Item Collection
The last thing you can see in the mapping JSON is the VendorBillItemCollection. It identifies the line items section. For the matching to work, you need to check two things:
- Whether the Rossum fields are named exactly as they are in the default settings (see your Rossum schema).
- If the NetSuite fields have the same names as in the default settings (check the NetSuite settings with your NetSuite admin).
Item tax code is a recordref which again means it is just an ID referring to some value of a tax code.
Rossum field | NetSuite field | Meaning | Type | Required on item creation | Required on item match | Default schema |
---|---|---|---|---|---|---|
item_tax_code | taxCode | Item Tax Code | string | yes | no | no |
Simple
Simple refers to individual values in a line item which are standard to any NetSuite implementation.
Rossum field | NetSuite field | Meaning | Type | Required on item creation | Required on item match | Default schema |
---|---|---|---|---|---|---|
item_description | description | Item description | string | yes | yes | yes |
item_amount_total | grossAmt | Total amount per item | float | no | yes | yes |
item_quantity | quantity | Item quantity | float | no | yes | yes |
item_match | itemId | NetSuite Item Code | string | no | yes | no |
Step 4: Queues configuration
First, select the item type that you process the most frequently. It’s necessary because when you validate the invoice, you’ll have to manually specify whether each line item is an item or an expense. The type you choose here will be pre-filled to save you time.
Second, select the queues for which you want to use this NetSuite account’s data and click Done.
Step 5: Create hooks
Once the account configuration is successfully stored, proceed to the Create hooks tab. Select the queues for which you want the integration to be active, then click Create.

Once the hooks are successfully created, wait overnight for the records to be imported from NetSuite into the Rossum database. In the meantime, get in touch with your Rossum contact. We will help you with the necessary setup to ensure a smooth integration. After that, you can start using the integration.
What if you selected the wrong queue, made an account configuration error, or don’t need the integration anymore? In this case, go to the Remove account tab to delete all account-related data from the database.
Step 6: See the integration in action.
You’ll notice new fields in your schema when you open Rossum’s validation screen. You can test the integration right away – upload the first documents, confirm them, and watch them being exported to NetSuite as vendor bills. Before deploying the integration to production, test it in your sandbox account. If you have any problems, don’t hesitate to contact your Rossum technical representative.
You can try this feature for free. However, it will be limited in the future based on your subscription plan.