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
- SuiteScript (Client + Server)
- SuiteTalk (Web Services) → REST Web Services
- Token-Based Authentication (TBA)
- Access Token Management
- Log in using Access Tokens
- REST Web Services
- Customers, Vendors, Items
- Custom Record Entries / Record Custom Field
- Subsidiaries (OneWorld)
- Sales Order
- Purchase Order
- Item Fulfillment
- Inventory Adjustment
- Vendor Bill (for billing syncs)
- 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)
- Log in with a role that has Access Token Management.
- In the Settings portlet, click Manage Access Tokens.
- Click New My Access Token.
- On the Access Token page, select the Application (Integration) and role; keep the token name or set your own.
- Click Save, then copy Token ID and Token Secret and store securely.
- Note: Sandbox/Preview do not reuse Production tokens—create per environment.
Accounting Operations
Send Accounting Orders
NetSuite — Send Accounting Orders
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) → Test → Save.
- 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.
| 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 |
| 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. |
| 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. |
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
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.
- 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, entercf_custbody_ffl_numberand map it to Order FFL.
| 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. |
| 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. |
- 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.
| 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). |
- 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.
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.
{
"items": [
{ "orderLine": 1, "quantity": 1 },
{ "orderLine": 2, "quantity": 0 }
]
}
{
"items": [
{ "orderLine": 2, "quantity": 1 }
]
}
Send Accounting Shipments
NetSuite — Send Accounting Shipments
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), Test → Save.
- 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.
inventoryLocation that aligns with the SO. Keep locations accurate to avoid transform errors.
| Template | Use Case | What it Sends | Availability |
|---|---|---|---|
| Send Accounting Shipments | Create Item Fulfillment(s) in NetSuite | Fulfillment header + line quantities + tracking numbers | Available |
| 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. |
| Rule Name | Type | Input | What it Does |
|---|---|---|---|
| Normalize Tracking Numbers | Conditional | String | Trim/clean tracking values prior to send. |
| 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. |
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.
Fulfillment #1: fulfill
SKU001 with tracking 1Z…; leave SKU002 unfulfilled.Fulfillment #2: later fulfill
SKU002 with a new tracking number.
- 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.
| 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. |
- 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
inventoryLocationand confirm it’s allowed for the SO.
Troubleshooting Flashcards
NetSuite — Accounting
Authentication failed
NetSuiteToken/role/account ID mismatch or expired.
- Wrong Account ID or environment (SB vs PROD).
- Role lacks permissions for AR/Items/Transactions.
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
PeriodsInvoice/credit can’t be created.
- Period closed for AR or back-dated posting blocked.
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
EntitiesDuplicate or mandatory field missing.
- “Duplicate entity” on same name/email.
- Missing subsidiary, terms, or currency.
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
ItemsSKU mismatch or inactive item blocks posting.
- SKU doesn’t match itemid / internalId / UPC.
- Item inactive for subsidiary/location or price level missing.
Fix
- Use a consistent identifier (e.g., itemid or internalId lookup).
- Activate item for correct subsidiary/location; ensure price level availability.
Subsidiary/Location missing
SegmentsTransaction fails validation rules.
- Mandatory subsidiary, department, class, or location not set.
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-currencyCustomer/company currency differs from order.
- Customer currency not enabled or differs from transaction.
- Exchange rate missing for the date.
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
TaxNexus/rules don’t match ship-to or subsidiary.
- Tax code disabled or not available for subsidiary/location.
- SuiteTax vs Legacy Tax configuration mismatch.
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
GLPosting fails due to account or role limits.
- AR account restricted/not visible to role.
- Non-posting or inactive account selected.
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
TotalsInvoice totals don’t match source order.
- Negative discount lines vs discount item handling.
- Tax on shipping/discount configured differently.
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
MappingAmounts don’t land in expected GL accounts.
- No default item/account for shipping, fees, discounts.
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
SystemSave fails due to locks or governance limits.
- Another process editing the same record.
- Governance/usage limits during high volume posting.
Tips
- Retry with backoff; stagger posting jobs to reduce contention.
- Batch exports in smaller chunks to avoid governance/timeouts.