Accounting & NetSuite

NetSuite as an accounting integration in Flxpoint lets you keep finance in sync by supporting Send Accounting Orders and Send Accounting Shipments. These operations create/update the corresponding NetSuite records (Sales Orders, Item Fulfillments, and related artifacts) using NetSuite’s REST Web Services and Token-Based Authentication (TBA). Explanations below highlight how routing, partial shipments, and customer/SKU mapping behave in practice. 
 

How to connect

NetSuite Connection Screenshot
📋 Phase 1: NetSuite Setup Prerequisites +
Enable Required Features
In Setup → Company → Enable Features, open the SuiteCloud tab and enable:
  • SuiteScript (Client + Server)
  • SuiteTalk (Web Services) → REST Web Services
  • Token-Based Authentication (TBA)
Assign Role Permissions
Go to Setup → Users/Roles → Manage Roles and ensure the integration role includes:
Tip: Create a dedicated “Flxpoint Integration” role for auditability.
Setup Permissions
  • Access Token Management
  • Log in using Access Tokens
  • REST Web Services
List Permissions
  • Customers, Vendors, Items
  • Custom Record Entries / Record Custom Field
  • Subsidiaries (OneWorld)
Transactions Permissions
  • Sales Order
  • Purchase Order
  • Item Fulfillment
  • Inventory Adjustment
  • Vendor Bill (for billing syncs)
Why This Matters
These features/permissions allow TBA-secured REST access and the records used by Flxpoint (Sales Orders, Item Fulfillments, POs, Vendor Bills).
🔐 Phase 2: Create Your NetSuite Connection +
Navigate to Accounting
Click the Account Settings gear → Accounting+ to add a new accounting integration.
Choose Integration
Select NetSuite Sales Order from the list.
Enter Credentials
Provide exactly as provisioned in NetSuite:
  • Connection Name
  • Client ID & Client Secret (Integration record)
  • NetSuite Store ID (your Flxpoint field for reaching the correct NS account/env)
  • Token ID & Token Secret (generated per user+role+integration)
Note: Use separate credentials for Sandbox vs Production. Keep values case-sensitive and secure.
Test & Save
Click Test Connection. If successful, Save ConnectionSave and Proceed.
⚙️ Phase 3: Configure Accounting Operations +
Toggles & Linking
Enable/disable Link to Existing Sales Receipts as needed, then Save and Proceed.
Enable Operations
Turn on desired Accounting Operations. For each enabled operation, select the relevant source(s) or channel(s).
Tip: Multiple sources/channels can map to one NetSuite connection when appropriate.
Save & Complete
Click Save and Complete to finalize setup.
🔑 Phase 4: Generate NetSuite Token ID & Token Secret +
Create Access Tokens
  1. Log in with a role that has Access Token Management.
  2. In the Settings portlet, click Manage Access Tokens.
  3. Click New My Access Token.
  4. On the Access Token page, select the Application (Integration) and role; keep the token name or set your own.
  5. Click Save, then copy Token ID and Token Secret and store securely.
  6. Note: Sandbox/Preview do not reuse Production tokens—create per environment.



Accounting Operations

Send Accounting Orders 

Supported

NetSuite — Send Accounting Orders

Introduction

Send Accounting Orders creates a NetSuite Sales Order and, when the route is dropship, a related Purchase Order from eligible Flxpoint orders. Customer matching/creation, SKU choice, and headers are driven by your Mapping Template.

  • 1Enable the operation: Accounting → Send Accounting Orders.
  • 2Connection: Select your NetSuite connection (Production or Sandbox) → TestSave.
  • 3Template: Select or create a Send Accounting Orders Mapping Template and choose your SKU option (Order-level vs PO-level).
  • 4Schedule: Turn on Scheduled and set a cadence (e.g., Every 30 Minutes) or run on demand.
Tip: For dropship routes, confirm vendor associations and PO-level SKUs before enabling the schedule.
Template Index
Template Use Case What it Sends Availability
Send Accounting Orders Create NetSuite Sales Orders (+ PO for dropship) Customer/header fields, line items, optional PO lines for dropship Available
Customer & Header Fields
From Value To NetSuite Field Required? Notes
Customer → Email Email (Customer) Optional Used to find/create the customer if Id not provided.
Category Id (Customer) Optional Use your NetSuite value.
Custom Form Id (Customer) Optional Specify a particular customer form.
Entity Status Id (Customer) Optional Status value in NetSuite.
Subsidiary Id (Customer) Optional OneWorld only.
Line Item & SKU Options
Choice Effect When to use
Send Order-level SKU Uses ordered SKU on SO lines. When a single SKU represents the item end-to-end.
Send PO-level SKU Uses vendor/dropship SKU (“exploded SKUs”). When vendors require their SKU on linked POs.
Exploded SKU example
Ordered SKU: FLX-SKU123 (Qty 3). Routing splits to vendor SKUs.
SO lines might be:
VA-SKU123: Qty 1 | Internal Warehouse
FLX-SKU123: Qty 2 | Dropship | Vendor A
FFL Field Mapping (NetSuite Get Orders)

Flxpoint can bring FFL information from NetSuite orders. NetSuite doesn’t have a native FFL field on Sales Orders or Purchase Orders; use your NetSuite custom body field and map it to Flxpoint’s Order FFL in the Get Orders mapping template.

How to set it up
  • In Get Orders → Mapping Template, map your NetSuite custom field to Order FFL in Flxpoint.
  • Enter the NetSuite field id with the cf_ prefix.
  • Example: If your NetSuite field id is custbody_ffl_number, enter cf_custbody_ffl_number and map it to Order FFL.
Scope: Applies to both Sales Order and Purchase Order Get Orders.
Mapping Rules (Optional)
Rule Name Type Input What it Does
If FFL required, set billing name Conditional String Sets billing name when FFL is required.
If FFL required, set billing phone Conditional String Sets billing phone when FFL is required.
Sets, Lists & Builders
Utility Availability How You Might Use It
Mapping Sets Optional Compose references/notes.
Lists Optional Allow/deny lists for rule conditions.
Product Builders Default provided Default builder matches on Master SKU.
Quick Checks
  • Provide Customer Id or map Email/Name so the customer can be found/created.
  • Confirm your SKU choice (Order-level vs PO-level) matches vendor expectations.
  • For dropship, verify vendor associations so a PO is created from the SO.
Operation Details
Capability Status Notes
Sales Order creation Supported REST: record/v1/salesorder
Dropship PO creation Supported When FR is routed external/dropship.
Custom fields Supported Map via template (incl. cf_* fields).
Troubleshooting
  • Customer not created/found: Provide Customer Id or ensure Email/Name mapping exists.
  • Wrong SKUs on lines: Verify template choice (Order-level vs PO-level) and vendor associations.
  • SO created but no PO: Check FR type (PO generation only for external/dropship).
  • Validation errors: Confirm IDs (Category, Custom Form, Entity Status, Subsidiary) match NetSuite values.
Related: Vendor Bills (Partial Bills)

Partial invoicing is supported. When a vendor bills only some PO lines:

  • First bill: Send all lines; for not-yet-billed items use quantity: 0.
  • Later bill(s): Send only newly invoiced items with billed quantities.
Example payloads
{
  "items": [
    { "orderLine": 1, "quantity": 1 },
    { "orderLine": 2, "quantity": 0 }
  ]
}
{
  "items": [
    { "orderLine": 2, "quantity": 1 }
  ]
}

 

 
 

Send Accounting Shipments 

Supported

NetSuite — Send Accounting Shipments

Introduction

Send Accounting Shipments creates NetSuite Item Fulfillments for shipped lines and attaches one or more tracking numbers. Unshipped lines remain open so you can complete them later with additional fulfillments.

  • 1Enable & Connect: Turn on Accounting → Send Accounting Shipments, pick your NetSuite connection (Production/Sandbox), TestSave.
  • 2Configure: Choose default inventoryLocation behavior and any header options required by your account.
  • 3Template: Select or create the Send Accounting Shipments template and map key fields (below).
  • 4Schedule or Run: Toggle Scheduled for automatic syncing or use Run Now for ad-hoc pushes.
NetSuite requirement: When transforming a Sales Order to an Item Fulfillment, NetSuite expects a valid inventoryLocation that aligns with the SO. Keep locations accurate to avoid transform errors.
Template Index
Template Use Case What it Sends Availability
Send Accounting Shipments Create Item Fulfillment(s) in NetSuite Fulfillment header + line quantities + tracking numbers Available
Field Mapping (Key Fields)
From (Flxpoint) To (NetSuite) Example Notes
Order → External Id / SO Id Created-from Sales Order SO12345 Fulfillment transforms from this SO.
Shipment → Tracking Number(s) Tracking Numbers (Fulfillment) 1Z999…, 1Z888… Single or multiple; all preserved.
Order Item → SKU Item (line) SKU001 Association by SKU.
Order Item → Quantity Quantity (line) 1 Only the shipped quantity for that line.
(Optional) Order/Line → Weight Weight (line or package) 2.4 Optional if you report weights.
Mapping Rules (Optional)
Rule Name Type Input What it Does
Normalize Tracking Numbers Conditional String Trim/clean tracking values prior to send.
Sets, Lists & Builders
Utility Availability How You Might Use It
Mapping Sets Optional Compose package notes or references.
Lists Optional Carrier allow/deny logic in rules.
Product Builders Default provided Not typically needed for shipments.
Partial Shipments (Behavior)

Multiple shipments are supported via partial fulfillments:

  • Create a fulfillment for the shipped lines (attach tracking to those lines).
  • Leave unshipped lines unfulfilled; the Sales Order remains Partially Fulfilled.
  • Later shipments create new fulfillments for remaining lines.
Example flow
Fulfillment #1: fulfill SKU001 with tracking 1Z…; leave SKU002 unfulfilled.
Fulfillment #2: later fulfill SKU002 with a new tracking number.
Quick Checks
  • Sales Order exists and is accessible to the integration role.
  • Template maps SKU, Quantity, and Tracking Number(s).
  • Default or mapped inventoryLocation aligns with the SO.
Operation Details
Capability Status Notes
Fulfillment creation Supported Transforms from an existing SO.
Multiple tracking numbers Supported All tracking values attached to the fulfillment.
Shipment status sync Not Supported This operation focuses on creating fulfillments.
Item association Supported Lines matched by SKU.
Accounting/ledger updates Not Supported Billing/invoicing handled by other operations.
Troubleshooting
  • No fulfillment created: Ensure the Accounting Order (SO) exists and the operation is enabled/scheduled.
  • Tracking on wrong line: Verify SKU parity between Flxpoint and NetSuite.
  • Partial not reflected: Only include shipped lines in a given fulfillment.
  • Transform error: Include a valid inventoryLocation and confirm it’s allowed for the SO.
 
 

 

 

Troubleshooting Flashcards

Troubleshooting

NetSuite — Accounting

Authentication failed

NetSuite

Token/role/account ID mismatch or expired.

  • Wrong Account ID or environment (SB vs PROD).
  • Role lacks permissions for AR/Items/Transactions.
TBARoles

Fix

  • Confirm Account ID, Role, Token ID/Secret, and environment.
  • Grant permissions: Customers, Items, Invoices, Sales Orders, Accounts, Subsidiaries, Classes/Depts.
  • Regenerate tokens if expired or revoked.

Posting period closed

Periods

Invoice/credit can’t be created.

  • Period closed for AR or back-dated posting blocked.
ARGL

Fix

  • Open/unlock the period or date the transaction in an open period.
  • Enable Allow Non-GL Changes only if policy allows.

Customer not created

Entities

Duplicate or mandatory field missing.

  • “Duplicate entity” on same name/email.
  • Missing subsidiary, terms, or currency.
Validation

Fix

  • Match/update existing by ID/email instead of creating a new one.
  • Provide required fields: Subsidiary, Currency, Terms, addresses.
  • Normalize naming (e.g., add channel suffix) to avoid dupes.

Item not found/inactive

Items

SKU mismatch or inactive item blocks posting.

  • SKU doesn’t match itemid / internalId / UPC.
  • Item inactive for subsidiary/location or price level missing.
Mapping

Fix

  • Use a consistent identifier (e.g., itemid or internalId lookup).
  • Activate item for correct subsidiary/location; ensure price level availability.

Subsidiary/Location missing

Segments

Transaction fails validation rules.

  • Mandatory subsidiary, department, class, or location not set.
OneWorld

Fix

  • Add defaults for subsidiary/class/department/location in posting rules.
  • If per-line segments required, map them from source data line-by-line.

Currency mismatch

Multi-currency

Customer/company currency differs from order.

  • Customer currency not enabled or differs from transaction.
  • Exchange rate missing for the date.
FX

Fix

  • Enable customer currency or convert to customer’s currency before posting.
  • Ensure exchange rate exists for the transaction date (or apply policy rate).

Tax code not found

Tax

Nexus/rules don’t match ship-to or subsidiary.

  • Tax code disabled or not available for subsidiary/location.
  • SuiteTax vs Legacy Tax configuration mismatch.
NexusSuiteTax

Fix

  • Map to a valid tax code for the ship-to and subsidiary.
  • Align with SuiteTax settings (or legacy codes) and address validation before posting.

GL account blocked

GL

Posting fails due to account or role limits.

  • AR account restricted/not visible to role.
  • Non-posting or inactive account selected.
Permissions

Fix

  • Use active posting accounts and grant role access to AR/AP/Revenue accounts.
  • Confirm account is allowed for the subsidiary and segment rules.

Discount/rounding mismatch

Totals

Invoice totals don’t match source order.

  • Negative discount lines vs discount item handling.
  • Tax on shipping/discount configured differently.
Rounding

Tips

  • Prefer a NetSuite discount item rather than negative line amounts.
  • Align “tax on shipping/discount” with source; round consistently (line vs header).

Shipping/fees not posted

Mapping

Amounts don’t land in expected GL accounts.

  • No default item/account for shipping, fees, discounts.
GLItems

Tips

  • Create mapping for Shipping/Handling/Discount items and link to correct GL accounts.
  • Ensure taxability of those items matches the source order behavior.

Record locked / concurrency

System

Save fails due to locks or governance limits.

  • Another process editing the same record.
  • Governance/usage limits during high volume posting.
LocksThroughput

Tips

  • Retry with backoff; stagger posting jobs to reduce contention.
  • Batch exports in smaller chunks to avoid governance/timeouts.