NetSuite WSDL and XSD Structure
SOAP web services use single WSDL file that describes all supported operations and messages. You can access that file at the following link:
https://webservices.netsuite.com/wsdl/v2024_2_0/netsuite.wsdl
You can also download a .zip version of the file at the following link:
https://content.netsuite.com/download/WSDL_v2024_2_0.zip
In these links, v2024_2_0 reflects the WSDL version.
NetSuite defines WSDL versioning, the location of schemas, namespaces, and the endpoint as follows:
WSDL: https://webservices.netsuite.com/wsdl/v2024_2_0/netsuite.wsdl
<xsd:import namespace="urn:core_2023_2_0.platform.webservices.netsuite.com"
schemaLocation="https://webservices.netsuite.com/xsd/platform/v2024_2_0/core.xsd"/>
<port name="NetSuitePort" binding="tns:NetSuiteBinding">
<soap:address location="https://webservices.netsuite.com/services/NetSuitePort_2023_2_0" />
</port>
For more information about WSDL versioning, upgrading, and testing, see NetSuite WSDL Versioning. For information about WSDLs that pre-date 2024.2, see SOAP Web Services Archives.
The WSDL is composed of numerous NetSuite-specific types that are defined in related XSDs. Each XSD URL has an alias that can be used as a reference to the corresponding XSD file. The following tables show the organization of the XSD files.
NetSuite hosts customer accounts in multiple data centers. For that reason, the correct URL for SOAP web services access varies depending on the data center hosting the account.
For more details, see Dynamic Discovery of URLs.
Your integration must incorporate logic that dynamically determines the correct URL. You should use the getDataCenterUrls operation and the The DataCenterUrls REST Service to dynamically discover the correct domain URLs.
Messaging XSD Files
These files provide descriptions for the base SOAP web services functions used by all operations. For API documentation on each operation, see SOAP Web Services Operations.
URL |
Schema Alias |
Notes |
---|---|---|
https://webservices.netsuite.com/xsd/platform/v2024_2_0/common.xsd |
platformCommon |
This file also includes descriptions for the following subrecords:
|
https://webservices.netsuite.com/xsd/platform/v2024_2_0/core.xsd |
platformCore |
Among other elements, this file includes descriptions for the following complex types, which are used for authentication:
|
https://webservices.netsuite.com/xsd/platform/v2024_2_0/faults.xsd |
platformFaults |
— |
https://webservices.netsuite.com/xsd/platform/v2024_2_0/messages.xsd |
platformMsgs |
— |
Record Type Definitions
The following XSD files provide descriptions for each record type in NetSuite. For field reference information about each record, see SuiteTalk SOAP Records Overview. For general information about working with records in SOAP web services, see Records in SOAP Web Services.
URL |
Schema Alias |
Record Types |
---|---|---|
https://webservices.netsuite.com/xsd/lists/v2024_2_0/scheduling.xsd |
actSched |
|
https://webservices.netsuite.com/xsd/transactions/v2024_2_0/demandPlanning.xsd |
demandPlanning |
|
https://webservices.netsuite.com/xsd/documents/v2024_2_0/fileCabinet.xsd |
docfileCab |
|
https://webservices.netsuite.com/xsd/general/v2024_2_0/communication.xsd |
generalComm |
|
https://webservices.netsuite.com/xsd/lists/v2024_2_0/accounting.xsd |
listAcct |
|
https://webservices.netsuite.com/xsd/lists/v2024_2_0/accounting.xsd |
listAcct |
|
https://webservices.netsuite.com/xsd/lists/v2024_2_0/employees.xsd |
listEmp |
|
https://webservices.netsuite.com/xsd/lists/v2024_2_0/marketing.xsd |
listMkt |
|
https://webservices.netsuite.com/xsd/lists/v2024_2_0/relationships.xsd |
listRel |
|
https://webservices.netsuite.com/xsd/lists/v2024_2_0/supplyChain.xsd |
listScm |
|
https://webservices.netsuite.com/xsd/lists/v2024_2_0/website.xsd |
listSite |
|
https://webservices.netsuite.com/xsd/lists/v2024_2_0/support.xsd |
listSupport |
|
https://webservices.netsuite.com/xsd/setup/v2024_2_0/customization.xsd |
setupCustom |
|
https://webservices.netsuite.com/xsd/transactions/v2024_2_0/bank.xsd |
tranBank |
|
https://webservices.netsuite.com/xsd/transactions/v2024_2_0/customers.xsd |
tranCust |
|
https://webservices.netsuite.com/xsd/transactions/v2024_2_0/inventory.xsd |
tranInvt |
|
https://webservices.netsuite.com/xsd/transactions/v2024_2_0/employees.xsd |
tranEmp |
|
https://webservices.netsuite.com/xsd/transactions/v2024_2_0/financial.xsd |
tranFin |
|
https://webservices.netsuite.com/xsd/transactions/v2024_2_0/general.xsd |
tranGeneral |
|
https://webservices.netsuite.com/xsd/transactions/v2024_2_0/purchases.xsd |
tranPurch |
|
https://webservices.netsuite.com/xsd/transactions/v2024_2_0/sales.xsd |
tranSales |
|
System Constants XSD Files
These files provide constant values for the corresponding types in the business records XSD files.
Example
For example, the addRequest message type has three levels of referencing.
In the WSDL file, the addRequest message is defined as:
<message name="addRequest">
<part name="parameters" element="platformMsgs:add"/>
</message>
The element called platformMsgs:add is defined in the platformMsgs XSD file. In this case, the platformMsgs alias refers to the xsd file at:
https://webservices.netsuite.com/xsd/platform/v2024_2_0/messages.xsd
In this file, the addRequest element is defined again as:
<complexType name="AddRequest">
<sequence>
<element name="record" type="platformCore:Record" />
</sequence>
</complexType>
Again there is a reference that is not contained in this XSD file called platformCore:Record. The platformCore alias refers to the XSD file at:
https://webservices.netsuite.com/xsd/platform/v2024_2_0/core.xsd
The abstract type Record is defined as:
<complexType name="Record" abstract="true">
<sequence>
<element name="nullFieldList" type="platformCore:NullField" minOccurs="0" maxOccurs="1" />
</sequence>
</complexType>
In SOAP web services, Record is the base for all other NetSuite record types.
XML Samples of Supported Variations of a SOAP Request
Here you can see 3 variations of a SOAP request that are supported by NetSuite.
Variation A
In this variation namespace aliases are always used, as suggested by the official WSDL documentation.
<soapenv:Body>
<platformMsgs:initialize>
<platformMsgs:initializeRecord>
<platformCore:type>itemReceipt</platformCore:type>
<platformCore:rference type="purchaseOrder" internalId="123"/>
</platformMsgs:initializeRecord>
</platformMsgs:initialize>
</soapenv:Body>
Variation B
In this variation namespace aliases are used only when needed.
<soapenv:Body>
<platformMsgs:initialize xmlns:platformMsgs="urn:messages_2019_1.platform.webservices.netsuite.com">
<platformMsgs:initializeRecord xmlns:platformCore="urn:core_2019_1.platform.webservices.netsuite.com">
<platformCore:type>itemReceipt</platformCore:type>
<platformCore:reference type="purchaseOrder" internalId="123"/>
</platformMsgs:initializeRecord>
</platformMsgs:initialize>
</soapenv:Body>
Variation C
In this variation, the namespace aliases are used again only when necessary.
<soapenv:Body>
<initialize xmlns="urn:messages_2019_1.platform.webservices.netsuite.com">
<initializeRecord>
<urn1:type xmlns:urn1="urn:core_2019_1.platform.webservices.netsuite.com">itemReceipt</urn1:type>
<urn2:reference intelId="123" type="purchaseOrder" xmlns:urn2="urn:core_2019_1.platform.webservices.netsuite.com:/>
</initializeRecord>
</initialize>
</soapenv:Body>