Skip to content

NetSuite ​

The NetSuite integration connects Boxture to Oracle NetSuite, the ERP system many customers use for sales, purchasing and finance. NetSuite stays the place where orders are entered and invoiced; Boxture does the warehouse work and reports back what was picked, packed, shipped and received. Boxture is also the master for inventory: NetSuite's stock levels are corrected to match Boxture.

The integration connects to NetSuite's web services (SOAP, version 2025.1) with token-based authentication.

What is synchronised ​

DataDirectionWhen
Sales ordersNetSuite → Boxture (sales orders)Every 15 minutes, when Outbound process is on
Purchase ordersNetSuite → Boxture (purchase orders)Every 15 minutes, when Inbound process is on
Transfer ordersNetSuite → Boxture (transfer orders, or sales and return orders)Every 15 minutes, when Transfer process is on
Vendor return authorizationsNetSuite → Boxture (scrap orders)Every 15 minutes, when the vra search is set in Metadata
Changes to backordered and closed linesNetSuite → BoxtureEvery 15 minutes
Item fulfillments (picked, packed, shipped)Boxture → NetSuiteWhen the order is picked, packed, shipped or delivered, depending on the switches
Item receipts and vendor billsBoxture → NetSuiteWhen goods are received on a purchase or transfer order
ProductsNetSuite → BoxtureEvery 6 hours
InventoryBoxture → NetSuite (inventory adjustments)Every 6 hours for recently changed products, and all products daily at 00:00

Before you start ​

You need from the NetSuite administrator:

  • the account ID of the NetSuite account;
  • the web services endpoint for that account;
  • an integration record in NetSuite with token-based authentication: its consumer key and consumer secret;
  • an access token for the integration user and role: the token ID and token secret, and the role ID;
  • saved searches in NetSuite that select the orders Boxture should pick up (for example "sales orders pending fulfillment at the Boxture warehouse").

In Boxture you need a user for the integration with access to the account and location(s) involved.

Setting up the integration ​

  1. Go to Admin › Integration › Third party and choose Netsuite in the create menu.

  2. Fill in the connection details:

    FieldWhat to enter
    NameA name to recognise the connection by.
    EndpointThe NetSuite web services endpoint.
    Consumer key, Consumer secretFrom the NetSuite integration record.
    UserThe Boxture user the integration works as.
    Token, Token secretThe NetSuite access token.
    RoleThe NetSuite role ID of the token.
    Integration accountThe NetSuite account ID.

    All of these must be filled in; until they are, the integration does nothing.

  3. Choose which processes to run with the switches:

    SwitchEffect
    Outbound processImport sales orders found by the Sales order search.
    Inbound processImport purchase orders found by the Purchase order search.
    Transfer processImport transfer orders found by the Transfer order search.
    Request pick fulfillmentCreate an item fulfillment with status "picked" when a pick list is picked.
    Request pack fulfillmentCreate or update the item fulfillment with status "packed" when the order is packed.
    Request ship fulfillmentCreate or update the item fulfillment with status "shipped" when the shipment is shipped.
    Request deliver fulfillmentUpdate the item fulfillment when the shipment is delivered, with the proof of delivery.
  4. Enter the searches (YAML) that tell Boxture which NetSuite records to import: Sales order search, Purchase order search and Transfer order search. Each contains NetSuite search criteria, typically a reference to a saved search.

  5. Add Metadata options as needed (see below) and save.

The Transfer order search can be used in two ways:

  • With a transfer_order search, NetSuite transfer orders become Boxture transfer orders.
  • Without it, a transfer_fulfill search makes Boxture sales orders of the transfer orders to ship, and a transfer_receive search makes return orders of the transfer orders to receive. Use this when only one side of the transfer is a Boxture warehouse.

Metadata options ​

KeyMeaning
origin_locationThe Boxture location (ID or name) used when a NetSuite location is not linked to a Boxture location
vraSaved search for vendor return authorizations, imported as scrap orders
product_sync, noninventory_product_syncSaved searches for the product import
default_serialization_mode, default_expirableDefaults for imported products
product_weight_unit, product_dimensions_unit, product_currencyUnits and currency for imported products
warehouseSaved search for the NetSuite locations used by the inventory sync; required for the inventory sync
inventory_statusInventory status to use in inventory adjustments
ship_with_statusThe fulfillment status to use when a shipment ships, instead of "shipped"
update_pod_detailsWrite the proof-of-delivery name and date into the item fulfillment
update_tracking_numberWrite tracking links to the sales order
custom_field_listMap NetSuite custom fields, for example phone_number for the custom field that holds the delivery phone number

Orders from NetSuite ​

Every 15 minutes Boxture runs the configured searches and imports each record it has not imported before.

How sales orders are mapped ​

BoxtureTaken from NetSuite
Order type and channelSales order on the channel "NetSuite"
CustomerFound or created by the NetSuite customer name
Customer reference numberThe transaction number (tranId)
Other reference numberThe other reference number
NotesThe memo
Delivery termsThe incoterm
Delivery and billing contactsThe shipping and billing address
Shipping methodThe NetSuite ship method, matched by name to a Boxture shipping method (exactly first, then the closest match)
Origin locationThe Boxture location linked to the NetSuite location, else the origin_location metadata, else the user's only location
Order linesItem, quantity, and lots or serial numbers from the inventory detail
MetadataThe order's custom fields

Products are matched by the NetSuite item Boxture has linked before, or else by the NetSuite item ID (the item's name/number in NetSuite) against the Boxture product number or a product alias on the "NetSuite" channel. If a product cannot be matched, the order is created but put on hold with the reason "invalid order details". Purchase, transfer, return and scrap orders are mapped in the same way, with the vendor (created when missing) on purchase and scrap orders.

Backordered lines ​

When a line is backordered in NetSuite (not yet committed), Boxture marks it. Such lines are skipped during allocation, with the message "Backordered order lines will be skipped during allocation until fully committed in NetSuite". Allocating them by hand fails with "Could not allocate quantity ... because it is backordered in NetSuite." Every 15 minutes Boxture checks these orders again and releases lines that have become committed.

Changes in NetSuite ​

For orders with backordered lines, Boxture also picks up changes: lines closed in NetSuite are cancelled in Boxture, and changed quantities and lots are applied while the line can still be changed.

Feedback to NetSuite ​

Item fulfillments ​

Depending on the switches, Boxture creates an item fulfillment on the NetSuite sales order and moves it through its statuses:

text
pick list picked     → item fulfillment "picked"   (Request pick fulfillment)
order packed         → item fulfillment "packed"   (Request pack fulfillment)
shipment shipped     → item fulfillment "shipped"  (Request ship fulfillment)
shipment delivered   → item fulfillment updated    (Request deliver fulfillment)

Unpicking or unpacking in Boxture updates the item fulfillment accordingly. The fulfillment includes package details (weight, tracking number) in the format of the carrier: FedEx, UPS, USPS or other.

When Request deliver fulfillment is on and proof of delivery is required, fill in the proof of delivery (name and date) on the shipment before delivering it; with update_pod_details these are written into the item fulfillment.

If a "shipped" fulfillment cannot be created, Boxture retries after 4 minutes (up to three times) and fires the messaging event netsuite_fulfillment_failure with the error, account, shipment and user. Create a messaging template for this event to be notified by e-mail. See Messaging.

Item receipts ​

When goods are received on a purchase order or transfer order, Boxture creates an item receipt in NetSuite with the quantities, lots, serial numbers and expiry dates. When a purchase order is fully received, Boxture also creates the vendor bill.

Products ​

Every 6 hours Boxture runs the product_sync and noninventory_product_sync saved searches and creates or updates products with the NetSuite item ID (the item's name/number) as product number. Kits and assemblies, serialized items and lot-numbered items are recognised. If an item's ID changes in NetSuite, the product with the old number is expired and a new one is created.

Inventory ​

Boxture is the master for inventory. Every 6 hours (for products changed in the last two hours) and every night at 00:00 (for all products), Boxture compares, for each NetSuite location in the warehouse search, NetSuite's available quantity with Boxture's available quantity, and posts an inventory adjustment in NetSuite for the difference.

WARNING

Because Boxture is the master, a quantity of 0 in Boxture is also sent to NetSuite. Make sure the warehouse search only contains locations that Boxture actually manages.

The inventory reporting percentage is not applied to NetSuite.

Monitoring and troubleshooting ​

  • The Third party list shows Last order at and the Connection status traffic light. See Connection status.
  • NetSuite jobs retry automatically, with growing intervals, when NetSuite is unavailable. Errors are listed under Exceptions.
  • The orders' Transaction log shows when Boxture created or changed them.
ProblemCheck
Nothing happens at allAre all connection fields filled in (endpoint, keys, token, role, account)?
No orders come inIs the right process switch on? Does the saved search return the orders in NetSuite, for the integration's role?
Orders arrive on holdDo the NetSuite items exist in Boxture as product number or NetSuite alias? Is the address complete?
Lines are not allocatedAre the lines backordered in NetSuite?
No fulfillments in NetSuiteAre the Request ... fulfillment switches on? Check Exceptions for the error from NetSuite.

Boxture Help