.png)

NetSuite ERP Integration Guide
Integrate NetSuite ERP with enterprise applications through SuiteTalk REST and SOAP Web Services, RESTlets, SuiteScript callbacks, files, and governed analytics access.
NetSuite ERP integration options at a glance
NetSuite ERP provides SuiteTalk REST Web Services for JSON-based record and business-operation access, while SuiteTalk SOAP Web Services remains relevant for strongly typed and existing enterprise integrations. RESTlets and SuiteScript support custom endpoints, validation, and outbound callback behavior. CSV import and export, File Cabinet operations, asynchronous processing, SuiteQL, and SuiteAnalytics Connect support batch, document, and analytics use cases. NetSuite supports OAuth 2.0 and token-based authentication with role permissions and scopes. Martini can consume these interfaces, expose normalized APIs, orchestrate scheduled or callback-driven workflows, transform data, and apply retry and reconciliation rules.
| Integration point | Supported by NetSuite ERP? | Common use cases | How Martini supports it |
|---|---|---|---|
| REST APIs | Yes | SuiteTalk REST Web Services supports JSON-based access to Customers, Vendors, Items, Sales Orders, Invoices, searches, and SuiteQL operations where supported. | Martini can consume NetSuite REST endpoints from workflows, handle pagination and authentication, map responses, and expose a normalized API to downstream applications. |
| SOAP APIs | Yes | SuiteTalk SOAP Web Services supports record CRUD, searches, transaction processing, and existing integrations that depend on WSDL-based contracts. | Martini can consume SOAP services, configure authentication, transform XML and typed payloads, and route service or validation faults. |
| RESTlets and custom endpoints | Yes | RESTlets implemented with SuiteScript can combine operations, enforce custom rules, and return purpose-built response structures. | Martini can call RESTlets as vendor-specific HTTP endpoints and orchestrate their responses with standard NetSuite APIs and other systems. |
| Webhooks / outbound callbacks | Limited | SuiteScript user events, workflows, scheduled scripts, and custom outbound HTTP requests can provide callback-style notifications for selected events. | Martini can expose a REST API endpoint to receive callbacks, validate them, retrieve current NetSuite data, and fall back to polling where event coverage is incomplete. |
| Bulk, asynchronous, and batch processing | Limited | Selected SuiteCloud services support asynchronous or batch-oriented processing; CSV import and export provide another option for high-volume movement. | Martini can schedule batch workflows, track asynchronous status where exposed, checkpoint progress, and apply controlled retries and reconciliation. |
| File and attachment APIs | Yes | File Cabinet records support document storage, retrieval, association with business records, and file-based exchange; CSV supports batch loading and extraction. | Martini can transfer files, transform metadata, associate documents with supported records, and coordinate document workflows with external applications. |
| Database / analytics access | Limited | SuiteAnalytics Connect and SuiteQL provide governed analytics and query access; NetSuite does not expose its operational database as a general database. | Martini can orchestrate SuiteQL or supported analytics access for extraction and reporting workflows while keeping query, permission, and freshness constraints explicit. |
| Authentication | Yes | NetSuite supports OAuth 2.0 and token-based authentication, with integration records, roles, permissions, scopes, and service-specific access requirements. | Martini can externalize credentials and configuration, consume authenticated APIs, and apply environment-specific security settings without embedding secrets in workflows. |
How NetSuite ERP exposes data and business events
NetSuite REST APIs
SuiteTalk REST Web Services provides JSON-based access to supported NetSuite records, searches, SuiteQL operations, and business actions. It is the principal current interface for many new application integrations.
Martini implementation pattern
Martini implementation pattern: a workflow calls the appropriate REST resource, manages authentication, pagination, record relationships, and response status, then maps the result into a target application or canonical model. Martini can also expose a REST API that hides NetSuite-specific IDs and error formats.
Implementation sequence
NetSuite SOAP APIs
SuiteTalk SOAP Web Services provides WSDL-based access to records, searches, and transactions. It remains relevant for existing integrations and processes that require strongly typed contracts.
Martini implementation pattern
Martini implementation pattern: a workflow invokes the required SOAP operation, transforms XML and typed structures, handles SOAP faults, and coordinates dependent record calls. Existing SOAP contracts can be retained while Martini centralizes orchestration and error handling.
Implementation sequence
NetSuite RESTlets and callbacks
RESTlets are custom SuiteScript HTTP endpoints that can combine operations or implement NetSuite-specific rules. SuiteScript user events, workflows, and scheduled scripts can issue callback-style HTTP requests for selected events, but there is no universal event stream for every record.
Martini implementation pattern
Martini implementation pattern: expose a secured REST API endpoint for configured callbacks, validate the request, retrieve authoritative NetSuite data when necessary, and invoke downstream workflows. Where callback coverage is incomplete, a scheduled polling workflow uses filters, searches, or SuiteQL.
Implementation sequence
NetSuite batch and asynchronous processing
Selected SuiteCloud services support asynchronous or batch-oriented operations, while CSV import and export provide file-based processing. Availability and behavior depend on the service and operation.
Martini implementation pattern
Martini implementation pattern: schedule a controlled batch workflow, submit or retrieve data in pages or files, track asynchronous status where exposed, and checkpoint each completed unit. The workflow can use reconciliation reports to identify late, failed, or duplicated items.
Implementation sequence
NetSuite File Cabinet
NetSuite File Cabinet records support storage and retrieval of documents and attachments, subject to role permissions and service-specific behavior. Files may be associated with customers, vendors, transactions, or other supported records.
Martini implementation pattern
Martini implementation pattern: retrieve or receive file metadata, transfer content through the relevant NetSuite interface, validate file type and size requirements, and associate the file with its business record. Metadata and transfer status are stored for reconciliation.
Implementation sequence
Common NetSuite ERP integration patterns
Pattern 1: Synchronize customers and orders with a commerce platform
When to use this pattern
Use this pattern when Shopify or another commerce application must exchange customers, items, Sales Orders, fulfillment status, and invoices with NetSuite. It supports scheduled incremental synchronization and API-led order submission.
Integration direction
Example Mapping
| NetSuite ERP Field | Canonical Field | Target Field |
|---|---|---|
| customer.email | customer.contactEmail | Customer.email |
| order.externalId | order.sourceKey | Sales Order.externalId |
| order.lineItems[].sku | lines[].itemKey | Sales Order.item |
| order.totalPrice | order.totalAmount | Sales Order.total |
Martini implementation pattern
A Martini API receives the order, validates the customer and item references, resolves NetSuite internal or external IDs, and creates an idempotent Sales Order through SuiteTalk REST Web Services. Scheduled workflows retrieve fulfillment and invoice changes using incremental filters, map them back to the commerce model, and retry transient failures while routing accounting or reference errors for review.
Martini capabilities used
- APIs
- workflows
- API consumption
- data mapping
- business rules
- scheduling
- error handling
Pattern 2: Process commerce orders into NetSuite Sales Orders
When to use this pattern
Use this pattern when an external application submits orders and NetSuite must become the system of record for transaction processing, fulfillment, and invoicing.
Integration direction
Example Mapping
| NetSuite ERP Field | Canonical Field | Target Field |
|---|---|---|
| customer.id | customer.externalKey | Sales Order.entity |
| lineItems[].quantity | lines[].quantity | Sales Order.item.quantity |
| shippingAddress | fulfillment.address | Sales Order.shipAddress |
| tax.amount | tax.total | Sales Order.taxTotal |
Martini implementation pattern
Martini validates required fields, checks for an existing external reference, resolves Customer, Item, subsidiary, location, currency, and tax dependencies, then submits the Sales Order. Business rules can reject unavailable items or invalid accounting combinations before the write. A durable outcome records the NetSuite identifier, while duplicate and transient failures are handled differently.
Martini capabilities used
- API endpoints
- workflow orchestration
- validation
- data transformation
- business rules
- idempotency
- error handling
Pattern 3: Synchronize suppliers and procure-to-pay transactions
When to use this pattern
Use this pattern when Vendor, Item, Purchase Order, Vendor Bill, and payment-related information must move between NetSuite and a procurement, HR, service, or finance application.
Integration direction
Example Mapping
| NetSuite ERP Field | Canonical Field | Target Field |
|---|---|---|
| supplier.number | supplier.externalKey | Vendor.externalId |
| request.lines[].itemCode | procurement.lines[].itemKey | Purchase Order.item |
| request.costCenter | accounting.costCenter | Purchase Order.department |
| invoice.reference | payables.invoiceKey | Vendor Bill.tranId |
Martini implementation pattern
A scheduled or event-triggered Martini workflow retrieves approved requests, validates vendor and item relationships, maps the transaction to NetSuite, and records the source and target keys. Permission errors, missing accounting references, and closed-period failures are routed for manual correction; throttling and temporary service failures use bounded retries.
Martini capabilities used
- scheduled workflows
- API consumption
- mapping
- validation
- conditional routing
- retry handling
- monitoring
Pattern 4: Exchange NetSuite documents and attachments
When to use this pattern
Use this pattern when invoices, purchase documents, reports, or customer correspondence must be transferred through the NetSuite File Cabinet and associated with business records.
Integration direction
Example Mapping
| NetSuite ERP Field | Canonical Field | Target Field |
|---|---|---|
| file.name | document.fileName | attachment.name |
| file.content | document.binaryContent | attachment.content |
| file.folder | document.repositoryPath | attachment.folder |
| file.attachedRecord | document.businessReference | ticket.externalReference |
Martini implementation pattern
Martini retrieves or uploads File Cabinet content, transforms metadata, validates the related Customer, Vendor, or transaction reference, and sends the document to the downstream application. A durable file key prevents duplicate attachment creation, while unsupported formats, permission failures, and missing associations are routed separately from retryable transfer errors.
Martini capabilities used
- workflows
- file processing
- API consumption
- metadata mapping
- validation
- idempotency
- error handling
Applications commonly integrated with NetSuite ERP
NetSuite ERP commonly participates in enterprise processes spanning customer management, commerce, workforce operations, service delivery, project work, support, and tax. The following are practical integration scenarios; exact object coverage depends on each product’s configuration and subscription.
| Application | Scenario | Direction | Martini Pattern |
|---|---|---|---|
| Salesforce | Synchronize customers, contacts, opportunities, orders, invoices, and financial status between CRM and ERP processes. | Salesforce → Martini → NetSuite ERP | Martini consumes Salesforce and NetSuite APIs, resolves customer and item identifiers, maps opportunity or order data to NetSuite records, and returns order and financial status through a controlled workflow. |
| Shopify | Send commerce customers and orders to NetSuite while returning inventory, fulfillment, invoice, and order status to the storefront. | Shopify → Martini → NetSuite ERP | Martini receives commerce requests or events, validates customer and item references, creates idempotent Sales Orders, and schedules status and fulfillment synchronization back to Shopify. |
| Workday | Exchange selected worker, organizational, supplier, or finance-related information where both platforms support shared enterprise processes. | Workday → Martini → NetSuite ERP | A scheduled Martini workflow retrieves approved Workday data, applies field and organizational mappings, validates subsidiary relationships, and writes permitted NetSuite objects with exception routing. |
| ServiceNow | Synchronize vendors, assets, purchase requests, invoices, and financial status between service workflows and ERP processes. | ServiceNow → Martini → NetSuite ERP | Martini orchestrates bidirectional API workflows, translates ServiceNow request and asset data into NetSuite references, and returns invoice or procurement status after validation. |
| Jira | Connect project, issue, time, or delivery information with NetSuite project accounting and customer or financial processes. | Jira → Martini → NetSuite ERP | Martini retrieves relevant Jira project data, maps it to configured NetSuite project or customer references, applies accounting rules, and records rejected items for review. |
| Zendesk | Provide support teams with customer, order, invoice, and entitlement context from NetSuite and optionally return selected support outcomes. | NetSuite ERP → Martini → Zendesk | A Martini workflow retrieves changed NetSuite Customers, Sales Orders, and Invoices, normalizes the data, and upserts support context in Zendesk using stable external identifiers. |
| Microsoft Dynamics 365 | Exchange customers, products, orders, suppliers, and financial or operational data where both platforms coexist. | Microsoft Dynamics 365 → Martini → NetSuite ERP | Martini coordinates REST or other confirmed application endpoints, resolves cross-system IDs, applies canonical mappings, and separates transactional writes from reconciliation reads. |
| Avalara | Send transaction, customer, item, and tax-jurisdiction data for tax calculation and return relevant tax results to NetSuite. | NetSuite ERP → Martini → Avalara | Martini maps NetSuite transaction lines and tax context to Avalara requests, validates the response, and writes approved tax results or routes failures for review. |
How to build a NetSuite ERP integration in Martini
Objective
Establish the NetSuite integration identity and environment-specific configuration before building business workflows.
Instructions in Martini
- Select OAuth 2.0 or token-based authentication based on the required NetSuite service.
- Create a least-privilege NetSuite role and integration record with required permissions and scopes.
- Store credentials, account identifiers, endpoints, and environment values in Martini configuration or secrets management.
- Confirm sandbox and production account differences before testing.
Objective
Select an event, API request, or schedule that matches the required freshness and the actual NetSuite event coverage.
Instructions in Martini
- Use a Martini API for externally submitted transactions or configured NetSuite callbacks.
- Use a scheduler for incremental synchronization, reconciliation, and broad record coverage.
- Treat callback-style notifications as partial and confirm the specific SuiteScript or workflow deployment.
- Define the synchronization watermark, overlap window, and starting scope.
Objective
Read authoritative NetSuite data while controlling pagination, query scope, dependencies, and service usage.
Instructions in Martini
- Consume SuiteTalk REST Web Services for supported JSON record operations.
- Use SuiteTalk SOAP Web Services where existing contracts or required operations make it appropriate.
- Use SuiteQL, searches, or filtered requests for targeted and incremental retrieval.
- Handle pagination, stable sorting, related-record lookups, and asynchronous status where applicable.
Objective
Coordinate NetSuite calls, external applications, dependencies, and durable processing state in a maintainable Martini workflow.
Instructions in Martini
- Separate validation, lookup, transformation, write, and reconciliation stages.
- Resolve Customers, Items, subsidiaries, locations, currencies, tax settings, and other dependencies before transaction creation.
- Use reusable request and mapping logic for repeated NetSuite operations.
- Route asynchronous or high-volume work through controlled batch processing.
Objective
Convert NetSuite-specific records and identifiers into the target model while enforcing business and accounting rules.
Instructions in Martini
- Map actual objects such as Customer, Vendor, Item, Sales Order, Invoice, and File.
- Validate required fields, external references, subsidiaries, accounting periods, currencies, and transaction relationships.
- Preserve internal IDs, external IDs, source keys, and audit metadata.
- Use versioned mappings for custom fields, custom records, forms, and account-specific schemas.
Objective
Perform safe creates, updates, file transfers, or API responses without creating duplicate financial or operational records.
Instructions in Martini
- Use external references or integration keys for idempotent upserts where supported.
- Control transaction creation retries and check for an existing target before repeating a write.
- Return normalized responses from a Martini API when downstream consumers should not depend on NetSuite formats.
- Record source-to-target identifiers and business outcomes.
Common NetSuite ERP data objects used in integrations
| Object | Typical Use | Common target systems | Martini handling |
|---|---|---|---|
| Customer | Synchronize organizations or individuals, billing details, account status, and external identifiers. | Salesforce, Shopify, Zendesk, Microsoft Dynamics 365 | Martini retrieves or receives Customer data, resolves subsidiaries and references, maps fields to a canonical customer model, and performs idempotent upserts. |
| Vendor | Exchange supplier master data and support procurement or accounts-payable workflows. | Workday, ServiceNow, Microsoft Dynamics 365, procurement applications | Martini validates supplier identifiers and required fields, maps vendor attributes, and routes permission or duplicate failures separately from transient errors. |
| Item | Synchronize products, services, inventory items, pricing references, and purchasable entries. | Shopify, Salesforce, Microsoft Dynamics 365, Avalara | Martini normalizes item identifiers, units, tax context, and availability, then applies dependency checks before transaction processing. |
| Sales Order | Represent customer orders before fulfillment or invoicing. | Shopify, Salesforce, fulfillment applications, Avalara | Martini validates Customer, Item, subsidiary, currency, location, and tax references, uses an external key for idempotency, and manages controlled retries. |
| Invoice | Exchange customer billing transactions, payment context, and financial status. | Salesforce, Zendesk, Avalara, Microsoft Dynamics 365 | Martini maps invoice headers and lines, preserves source identifiers, applies accounting rules, and separates accounting-period or permission failures from retryable faults. |
| File | Transfer invoices, purchase documents, reports, customer correspondence, and supporting attachments through the File Cabinet. | Document processing applications, Zendesk, Salesforce, procurement applications | Martini transfers file content and metadata, validates permissions and format, and associates files with Customers, Vendors, or transactions where supported. |
Authentication and security considerations
Authentication and authorization
NetSuite supports OAuth 2.0 and token-based authentication for SuiteCloud integrations. The selected service, integration record, role, permissions, scopes, and account configuration all affect access.
- Use a dedicated least-privilege NetSuite role for each integration boundary where practical.
- Store OAuth credentials, token material, signing values, and account-specific settings in Martini secrets or environment configuration.
- Grant only the required permissions for Customers, Vendors, Employees, Items, transactions, REST or SOAP services, SuiteScript, analytics, and File Cabinet operations.
- Keep sandbox and production credentials, account identifiers, script deployments, and custom-field configuration separate.
Operational considerations for NetSuite ERP integrations
Design for governed access
NetSuite applies governance and concurrency controls, and API behavior varies by service, record type, account customization, and operation.
- Use filtered incremental reads, stable pagination, persisted watermarks, and overlap windows.
- Limit concurrency and apply bounded exponential backoff for throttling and temporary failures.
- Use external IDs or integration keys to make updates idempotent and control transaction-creation retries.
- Resolve subsidiaries, locations, currencies, items, tax settings, and other related records before writes.
- Version mappings for custom fields, custom records, WSDL versions, and account-specific schemas.
- Test in a NetSuite sandbox, monitor workflow outcomes, and reconcile late, failed, or corrected records.
Why use Martini instead of scripts or point-to-point integrations?
Centralized integration behavior
Martini provides a maintainable place to orchestrate NetSuite APIs, external applications, files, schedules, callbacks, and business rules rather than duplicating logic across scripts and point-to-point integrations.
- Expose normalized APIs that shield consumers from NetSuite identifiers, authentication, pagination, and error formats.
- Reuse workflows and services for authentication, lookups, mappings, validation, retries, and reconciliation.
- Support REST, SOAP, RESTlet, file, scheduled, asynchronous, and callback-oriented integration patterns where NetSuite exposes them.
- Separate configuration and secrets from implementation so sandbox and production deployments can use controlled values.
- Centralize monitoring, error classification, durable state, and operational troubleshooting.
Frequently asked questions
NetSuite ERP can integrate through SuiteTalk REST Web Services, SuiteTalk SOAP Web Services, RESTlets, SuiteScript-based callbacks, CSV import and export, File Cabinet operations, SuiteQL, and SuiteAnalytics Connect. OAuth 2.0 and token-based authentication are supported, with access controlled by roles, permissions, and service-specific scopes.
Yes. Martini can consume NetSuite SuiteTalk REST or SOAP Web Services, call RESTlets, receive callback requests through Martini APIs, and orchestrate scheduled, batch, file, and query-based workflows. No dedicated native Martini NetSuite connector is documented in the supplied sources.
No. A dedicated NetSuite ERP connector is not required. Martini can use NetSuite's confirmed native REST, SOAP, RESTlet, callback, file, CSV, query, and authentication mechanisms through workflows and APIs.
Lonti does not charge an additional per-connector or per-vendor fee to integrate NetSuite ERP. The integration is subject to the provisioned capacity of the Martini environment. Separate costs may apply from Oracle NetSuite, cloud infrastructure, or other third-party services based on subscription, usage, and deployment model.
SuiteTalk REST Web Services is generally the preferred starting point when the required records and operations are supported. SOAP remains suitable for existing integrations, strongly typed contracts, or operations that are not practical through REST. RESTlets are appropriate for custom NetSuite-side business logic or response shapes.
NetSuite supports callback-style behavior through selected SuiteScript user events, workflows, scheduled scripts, and custom outbound HTTP requests, but it does not provide a universal webhook stream for every record and event. Martini can receive configured callbacks, while polling, saved searches, SuiteQL, or scheduled synchronization may be needed for broader coverage.
Martini can implement scheduled or event-assisted incremental synchronization using filters, searches, SuiteQL, timestamps, external IDs, and persisted checkpoints. Workflows map NetSuite objects into canonical or target models, resolve related IDs, apply validation and business rules, and use overlap windows and reconciliation to reduce missed or duplicated changes.
Martini can classify authentication, permission, validation, accounting, governance, concurrency, and temporary service errors into retryable, non-retryable, and manual-review categories. Idempotency keys, external references, existing-record checks, bounded backoff, persisted state, and reconciliation workflows help prevent duplicate Customers, Sales Orders, Invoices, files, or other writes.
Related Martini documentation
Workflows
Plan your NetSuite ERP integration
Use Martini to connect NetSuite ERP with enterprise applications through governed APIs, workflows, mappings, callbacks, files, and scheduled synchronization.