NetSuite Integration Playbook

Submitted: 09 December 2024 | Revised: 17 December 2024

Tip

Latest Netsuite P2P Bundle Version : 17.0.1 (Released 2024-12-17)

Latest Netsuite P2O Bundle Version : 13.0.0 (Released 2024-12-09)

Latest Netsuite Treasury Bundle Version : 2.0.0 (Released 2024-12-09)

Warning

Please upgrade to Vendor 2.0, Invoice 2.0, COA 2.0, Exchange Rate 2.0, Payments 2.0 Scripts.

Older 1.0 script for these integration will not be supported! Keep your Coupa Netsuite Bundle up to date!

Tip

Register to get the Netsuite Bundle Update Notifications here

clipboard_e7b2252b14c0bee819f24ad4e29c0e014.png

Dataflow and Integration Points

P2P (Purchase to Pay Bundle)

Customer having Netsuite and using Coupa for their Invoicing process may implement the Coupa Netsuite P2P Bundle which includes master data - suppliers, account segments and transaction data - Approved Invoices going from Coupa into NetSuite and transaction data - bill payments coming from NetSuite into Coupa and. Coupa Netsuite P2P Bundle also contains Expense Report integration to Netsuite.

Customers using Coupa Pay may take Virtual Card Charges for PO Payment from Coupa to Netsuite as Credit Card Transactions and Coupa Invoice Payments from Coupa to Netsuite as Vendor Bill Payments. (highlighted red on the diagram)

Coupa NetSuite Architecture Diagrams - P2P_news.png

Expense (Purchase to Pay Bundle)

Coupa NetSuite Architecture Diagrams - Expenses (3).png

Netsuite P2P + Expense Bundle Scripts:

NetSuite Vendor to Coupa Suppliers

This integration syncs up Vendor records between NetSuite and Coupa. NetSuite is the vendor master and the records flow from NetSuite into Coupa. User Event Suitescript is used to capture the “create” and “update” events and then based on the event type either a new Supplier is created in Coupa or an existing Supplier in Coupa is updated. This integration is real time as the Coupa API call to create/update the supplier record is called as soon as the NetSuite user event is captured. The nlapiLoadRecord('vendor', recordid) function is used to read the NetSuite vendor record and the nlapiRequestURL function is used to do a HTTP POST/PUT to create/update the supplier record in Coupa.

NetSuite Subsidiary/Department/Class/GL Account/Location to Coupa Account Segments

This integration syncs up account code segments between NetSuite and Coupa. NetSuite is the master for the individual accounting segments. The Coupa COA can be configured to have multiple account segments with each segment mapping to an individual object (Subsidiary/Department/Class/GL Account) in NetSuite. There is one Coupa COA created per subsidiary, and they should leverage the Dynamic Accounting feature. User Event Suitescript is used to capture the “create” and “update” events and then based on the event type either new account segment(s) are created or existing account segments(s) in Coupa are updated. The nlapiLoadRecord('subsidiary/account/classification/department/location', recordid) function is used to read the NetSuite record and the nlapiRequestURL function is used to do a HTTP POST/PUT to create/update the account combination in Coupa.

Coupa SIM to NetSuite Vendor

This integration takes a Coupa SIM record and uses it to either create or update a Vendor in NetSuite. Coupa SIM allows users to better manage supplier information using Coupa's user friendly UI. It allows you to request additional supplier information directly in Coupa, while keeping the ERP as the source of truth for supplier data. This integration is a scheduled suitescript. Every hour or so (depending on your configuration), the integration will look for all SIM records in Coupa that are approved and have not been exported. It will then process each SIM record one at a time and either create or update the corresponding Vendor in NetSuite. As part of the SIM integration, the following sub records are brought over to NetSuite: Primary Contact, Addresses, & Bank Payment Records.

Exchange Rate from NetSuite to Coupa

This integration takes a Netsuite Exchange rates and creates exchange rate in Coupa.

Coupa Pre Payments to Netsuite Pre Payment

This integration created Pre-Payments in Netsuite based on Purchase Orders with Pre Payments (Milestones) approved in Coupa . PrePayments must be paid in Netsuite. Integration will bring Pre-Payment “paid” status back to Coupa which allows the Pre-Payment to be allocated to an Invoice. Pre-Payment allocation in Coupa will be integrated to Netsuite creating a Pre-Payment Allocation. When Coupa Invoice integrated to Netsuite, it will have the relevant Pre-Payment linked through the Pre-Payment Allocation which will reduce automatically the Invoice Payment due amount in Netsuite.

Coupa Approved (OK to Pay) Invoices to NetSuite Vendor Bill

This integration brings over approved Invoices from Coupa into NetSuite. The integration is run as a scheduled suitescript on NetSuite’s SuiteCloud platform. During each scheduled run, the integration script queries (HTTP GET) Coupa for any approved but un-exported Invoice(s) and creates Vendor Bill(s) in NetSuite. Once an Invoice is successfully created in NetSuite, it is marked as exported in Coupa. The nlapiRequestURL function is used to query Coupa and the nlapiCreateRecord('vendorbill') function is used to create the vendor bill in NetSuite. For each Invoice line in Coupa an Expense line is created in the NetSuite vendor bill. All the data transformations are built within the script

NetSuite Vendor Bill Payments into Coupa

This integration updates the payment status of Invoice in Coupa once the vendor bill payment is made in NetSuite. The integration is run as a scheduled suitescript on NetSuite’s SuiteCloud platform. During each scheduled run, the integration script queries NetSuite for any vendor bill payments using the NetSuite search functionality and then updates the payment status on the Coupa Invoices. This integration handles now Payments only containing Credit Notes in Netsuire (from Netsuite Bundle Release 14.0.0

CoupaPay Dynamic Discounting (Coupa Pay)

This integration puts Netsuite Bill to "Hold Payment" t ensure Bill can not be paid while Invoice in Coupa is under working capital consideration. Once Early Payment Discount is approved or Early Payment Discount has expired in Coupa for the bill/invoice, integration applies the payment term on the bill in Netsuite matching the approved early payment discount in Coupa and removes the "Hold Payment" flag. The integration creates Netsuite payment terms automatically (like "_DD_Terms_Percentage%_DueDays") to support this process.

Coupa Virtual Card Charges to Netsuite Credit Card Transaction (Coupa Pay)

This integration brings Virtual Charges for PO Payments to Netsuite as Credit Card Transactions. This integration is run as a scheduled suitescript on NetSuite’s SuiteCloud platform. During each scheduled run, the integration script queries (HTTP GET) Coupa for any new Charges related to PO Payments and creates Credit Card Transaction in NetSuite. For each Charge in Coupa an Credit Card Transaction is created in the NetSuite. All the data transformations are built within the script

Coupa Invoice Payments to Netsuite Vendor Bill Payment (Coupa Pay)

This integration brings Coupa Invoice Payments to Netsuite as Vendor Bill Payments. This integration is run as a scheduled suitescript on NetSuite’s SuiteCloud platform. During each scheduled run, the integration script queries (HTTP GET) Coupa for any new Invoice Payments and creates Vendor Bill Payments in NetSuite. If this script is used, Coupa Approved Invoice (OkToPay) Invoice script "Coupa Pay Enabled" parameter must be set true so Invoices paid out of Coupa are marked for "Hold Payment" in Netsuite. All the data transformations are built within the script.

Coupa Fund Transfer Payments to Netsuite Vendor GL (Coupa Pay)

This integration brings Coupa Fund Transfer Payments to Netsuite as GL Entries. This integration is run as a scheduled suitescript on NetSuite’s SuiteCloud platform. During each scheduled run, the integration script queries (HTTP GET) Coupa for any new Fund Transfer Payments and creates General Ledged entries in NetSuite. All the data transformations are built within the script.

Coupa Approved (OK to Pay) Expense Reports to NetSuite Expense Report

This integration brings over approved Expense Reports from Coupa into NetSuite. This integration is run as a scheduled suitescript on NetSuite’s SuiteCloud platform. During each scheduled run, the integration script queries (HTTP GET) Coupa for any approved but un-exported Expense Report(s) and creates Expense Reports(s) in NetSuite. Once an Expense Report is successfully created in NetSuite, it is marked as exported in Coupa. The Expense Reports require Coupa Expenses Users to be set up in NetSuite as Employees, and Expense categories to be a one to one match. The nlapiRequestURL function is used to query Coupa and the nlapiCreateRecord(‘expensereport’) function is used to create the vendor bill in NetSuite. For each Expense line in Coupa an Expense line is created in the NetSuite Expense Report.. All the data transformations are built within the script.

PreApproved type Expense Report Integration. This integration start with the Charge from Coupa being integrated to Netsuite as Credit Card Transactions and allocated against a holding account. Once PreApproved type Expense Report is approved, integration script queries (HTTP GET) Coupa for any approved but un-exported PreApproved type "Approved" Expense Report(s) and creates Expense Report. The script will find the Credit Card transaction created earlier and updates the final expense account from the approved Expense Report. Credit Card transaction will contain link to the Coupa Expense Report and Coupa Employee. As part of this script, Coupa also provide a report and an applet to move outstanding Credit Card transasctions to next financial period.

Trip Booking type Expense Report Integration. This integration start with the Charge from Coupa being integrated to Netsuite as Credit Card Transactions and allocated against a holding account. Once Trip Booking type Expense Report is approved, integration script queries (HTTP GET) Coupa for any approved but un-exported Trip Booking type "Approved" Expense Report(s). The script will find the Credit Card transaction created earlier and updates the final expense account from the approved Expense Report. Credit Card transaction will contain link to the Coupa Expense Report and Coupa Employee. As part of this script, Coupa also provide a report and an applet to move outstanding Credit Card transasctions to next financial period.

Coupa Expense Report Payments (ER2ER Payment) to Netsuite Expense Payment (Coupa Pay)

This integration script brings Coupa Expense Report (ER2ER) Payments to Netsuite as Expense Payments. This integration is run as a scheduled suitescript on NetSuite’s SuiteCloud platform. During each scheduled run, the integration script queries (HTTP GET) Coupa for completed Expense Report Payments and creates Expense Payment in NetSuite. If this script is used, Coupa ER2ER script "Coupa Pay Enabled" parameter must be set true so Expense Reports paid out of Coupa are marked unapproved in Netsuite to avoid payment in Netsuite. All the data transformations are built within the script.

Coupa Approved (OK to Pay) Expense Reports to NetSuite Vendor Bill

This integration brings over approved Expense Reports from Coupa into NetSuite as Vendor Bills. This integration is useful if clients want to pay their employees in a currency other than the "functional currency" of the employee's subsidiary in NetSuite. It is a scheduled suitescript. To use this solution, you will need to make sure that Coupa Expense Users are set up as Vendors in NetSuite. The integration can skip Expense Reports created from Credit Card Integrations, if desired.

PreApproved type Expense Report Integration. This integration start with the Charge from Coupa being integrated to Netsuite as Credit Card Transactions and allocated against a holding account. Once PreApproved type Expense Report is approved, integration script queries (HTTP GET) Coupa for any approved but un-exported PreApproved type "Approved" Expense Report(s) and creates Vendor Bill(s). The script will find the Credit Card transaction created earlier and updates the final expense account from the approved Expense Report. Credit Card transaction will contain link to the Coupa Expense Report and Coupa Employee. As part of this script, Coupa also provide a report and an applet to move outstanding Credit Card transasctions to next financial period.

Trip Booking type Expense Report Integration. This integration start with the Charge from Coupa being integrated to Netsuite as Credit Card Transactions and allocated against a holding account. Once Trip Booking type Expense Report is approved, integration script queries (HTTP GET) Coupa for any approved but un-exported Trip Booking type "Approved" Vendor Billl(s). The script will find the Credit Card transaction created earlier and updates the final expense account from the approved Expense Report. Credit Card transaction will contain link to the Coupa Expense Report and Coupa Employee. As part of this script, Coupa also provide a report and an applet to move outstanding Credit Card transasctions to next financial period.

Coupa Expense Report Payments (ER2VB Payment) to Netsuite Vendor Bill Payment (Coupa Pay)

This integration script brings Coupa Expense Report (ER2VB) Payments to Netsuite as Vendor Bill Payments. This integration is run as a scheduled suitescript on NetSuite’s SuiteCloud platform. During each scheduled run, the integration script queries (HTTP GET) Coupa for completed Expense Report Payments and creates Vendor Bill Payment in NetSuite. If this script is used, Coupa ER2VB script "Coupa Pay Enabled" parameter must be set true so Vendor Bills (created for Coupa Expense Reports) are marked "Hold Payment" in Netsuite to avoid double payment. All the data transformations are built within the script.

P2O (Purchase to Order Bundle)

Customer having Netsuite and using Coupa for their purchasing process (but Invoicing in Netsuite) may implement the Coupa Netsuite P2O Bundle which includes master data - suppliers, account segments and transaction data - Purchase Order and Receipt/Item - from Coupa to Netsuite.

Customers using Coupa Pay may take Virtual Card Charges for PO Payment from Coupa to Netsuite as Credit Card Transactions.

Coupa NetSuite Architecture Diagrams - P2P (1).png

Netsuite P2O Bundle Scripts:

NetSuite Vendor to Coupa Suppliers

This integration syncs up Vendor records between NetSuite and Coupa. NetSuite is the vendor master and the records flow from NetSuite into Coupa. User Event Suitescript is used to capture the “create” and “update” events and then based on the event type either a new Supplier is created in Coupa or an existing Supplier in Coupa is updated. This integration is real time as the Coupa API call to create/update the supplier record is called as soon as the NetSuite user event is captured. The nlapiLoadRecord('vendor', recordid) function is used to read the NetSuite vendor record and the nlapiRequestURL function is used to do a HTTP POST/PUT to create/update the supplier record in Coupa.

NetSuite Subsidiary/Department/Class/GL Account/Location to Coupa Account Segments

This integration syncs up account code segments between NetSuite and Coupa. NetSuite is the master for the individual accounting segments. The Coupa COA can be configured to have multiple account segments with each segment mapping to an individual object (Subsidiary/Department/Class/GL Account) in NetSuite. There is one Coupa COA created per subsidiary, and they should leverage the Dynamic Accounting feature. User Event Suitescript is used to capture the “create” and “update” events and then based on the event type either new account segment(s) are created or existing account segments(s) in Coupa are updated. The nlapiLoadRecord('subsidiary/account/classification/department/location', recordid) function is used to read the NetSuite record and the nlapiRequestURL function is used to do a HTTP POST/PUT to create/update the account combination in Coupa.

Coupa SIM to NetSuite Vendor

This integration takes a Coupa SIM record and uses it to either create or update a Vendor in NetSuite. Coupa SIM allows users to better manage supplier information using Coupa's user friendly UI. It allows you to request additional supplier information directly in Coupa, while keeping the ERP as the source of truth for supplier data. This integration is a scheduled suitescript. Every hour or so (depending on your configuration), the integration will look for all SIM records in Coupa that are approved and have not been exported. It will then process each SIM record one at a time and either create or update the corresponding Vendor in NetSuite. As part of the SIM integration, the following sub records are brought over to NetSuite: Primary Contact, Addresses, & Bank Payment Records.

Exchange Rate from NetSuite to Coupa

This integration takes a Netsuite Exchange rates and creates exchange rate in Coupa.

Coupa Virtual Card Charges to Netsuite Credit Card Transaction (Coupa Pay)

This integration brings Virtual Charges for PO Payments to Netsuite as Credit Card Transactions. This integration is run as a scheduled suitescript on NetSuite’s SuiteCloud platform. During each scheduled run, the integration script queries (HTTP GET) Coupa for any new Charges related to PO Payments and creates Credit Card Transaction in NetSuite. For each Charge in Coupa an Credit Card Transaction is created in the NetSuite. All the data transformations are built within the script

Coupa Purchase Orders to Netsuite

This integration script brings Coupa Purchase Orders to Netsuite. This integration is run as a scheduled suitescript on NetSuite’s SuiteCloud platform. During each scheduled run, the integration script queries (HTTP GET) Coupa for Purchase Order in new/changed/soft-close/closed/cancelled statuses.

Coupa PO Receipt to Netsuite

This integration script brings Coupa PO Receipt to Netsuite. This integration is run as a scheduled suitescript on NetSuite’s SuiteCloud platform. During each scheduled run, the integration script queries (HTTP GET) Coupa for PO Receipts in new/voided statuses.

Treasury Bundle

Customer having Netsuite and using Coupa Treasury (in AWS) can now integrate Realized Cash Flow and Fund Transfer Payments to Netsuite.

Coupa Treasury Realised Cash Flow to Netsuite

This integration script brings Coupa Treasury Realized Cash Flow created from Statements to Netsuite as General Ledger entries  This integration is run as a scheduled suitescript on NetSuite’s SuiteCloud platform. 

Coupa Treasury Payments to Netsuite

This integration script brings Coupa Pay Treasury Payments to Netsuite as General Ledger entries.  This integration is run as a scheduled suitescript on NetSuite’s SuiteCloud platform. 

Netsuite Bundle Integration Method

Coupa integrates seamlessly with NetSuite using the Coupa REST API and NetSuite’s Suitescript.

Coupa provides rich, robust access to read, edit, or integrate data via a RESTful API. This UTF-8 XML based interface allows you to create, update, and take action on individual records within Coupa by making an HTTP request call.

Built on industry standard JavaScript that ensures portability and rapid developer productivity, SuiteScript enables full-featured application-level scripting capabilities throughout NetSuite. Suitescript provides a complete set of flexible scripting models to support customization needs, including user event-based scripts and scheduled scripts.

The Coupa NetSuite Integrations have been built to meet and comply with the documented practices for architecture, development, privacy and security of the NetSuite SuiteCloud platform and is certified and approved by the “BUILT FOR NETSUITE” program.

The Coupa Netsuite Bundle scripts should not be modified by the customer. Modified scripts will not be supported by Coupa Support.

Netsuite Bundle Data Mapping

Integration & Installation/Upgrade/Configuration Guide

NS Bundle P2P Integration Document - published 2024-12-09

NS Bundle P2O Integration Document - published 2024-12-09

NS Bundle Treasury Integration Document- published 2024-12-09

Release Note

Latest Netsuite P2P Bundle Release 17.0.1 , published 2024-12-17

Latest Netsuite P2O Bundle Release 13.0.0 , published 2024-12-09

Latest Netsuite Treasury Bundle Release 2.0.0, published 2024-12-09

Netsuite Bundle Dashboard

NetSuite Administrators can find the Coupa Center Tab added to their NetSuite account.

Netsuite Bundle Dashboard provides

  • Centralized view for all Coupa Netsuite Bundle Scripts health. Administrators can monitor errors, warning in one place without going into each script deployment and execution logs
  • Coupa Built reports to monitor transactions related to the Netsuite Bundle.
  • Monitoring Netsuite Bundle Version

Coupa NetSuite Dashboard Manual v 5.0.1.pdf

clipboard_eda88174dfce85bac17a873bf68b5bc6d.png

Release Plan P2P & P2O Netsuite Bundle

  • Netsuite Bundle 15.0.0 (R39)- 22th April 2024 
  • Netsuite Bundle 15.1.0 - 24th June 2023 
  • Netsuite Bundle 16.0.0 (R40)  - 12nd Aug 2024 
  • Netsuite Bundle 16.1.0 - 28th Oct 2024
  • Netuiste Bundle 17.0.0  (R41) - 9th Dec 2024
  • Netsuite Bundle 17.1.0 -  3rd Mar 2024
  • Netsuite Budnle 18.0.0  (R42) - 28th April 2025
  • Netsuite Budnle 18.1.0 - 23th June 2025
  • Netsuite Budnle 19.0.0  (R43) - 18th Aug 2025

Netsuite Bundle Integration Testing Package and Move To Production (MTP) steps

The following steps must be executed during Coupa Netsuite Bundle implementation.

These documents must be prepared in advance and included when opening a Coupa Support ticket. Otherwise it will delay approval of MTP by Integration Architect and result in delays for Go-Live date.

A week to review is typical and Support may advise of necessary changes before bundle access grant.

  • MTP - PRODUCTION GO-LIVE
    • Coupa Support ticket must be created 2 weeks prior GO-LIVE. Ticked must include:

Important Information for phased Implementations:

For partners, if the customer is going live in phases, in which deployment of different module scripts are staged, then either please:

  • A. Get written confirmation from customer, an email consent in PDF form is acceptable, stating the details below. - Acknowledgement that this Go-Live is for a limited number of scripts initially. - Agreement with the customer that the partner will raise a new support case in each subsequent stage of the partner's statement of work. - The support case will include required documents detailed above for each additional Coupa script of that stage/phase.
  • B. Provide all required documents for all in-scope scripts including future stages. The expectation is that a staged approach would not be used to bypass this required review and approval. With that in mind, if A or B is not followed Coupa Support will be unable to debug issues with those additional scripts. In that scenario, we will defer the customer to the Coupa Professional Services team, which may require paid services.