Skip to content

Determine Deposited Status of CustomerRefunds in NetSuite

Most payment and refund records in NetSuite have a straightforward way to determine if they’ve been deposited or not. The CustomerRefund is one exception: there is no way to determine from the GUI, or from the SuiteTalk API response for a CustomerRefund, if a given CustomRefund has been linked to a deposit record. However, you can search for CustomerRefunds which are deposited or undeposited using a couple poorly documented search filters:

Continue Reading

How to Find the NetSuite Web Services Account Number

Finding the account number for NetSuite’s SuiteTalk WebService API isn’t very straightforward. This number is required for any applications with connect to NetSuite via their SuiteTalk API. Navigate to the SuiteTalk preferences via "Setup > Integration > Web Services Preferences", by searching for "page: Web Services Preferences" in the global search bar, or by visiting this URL (may not work depending on your NetSuite data center). You’ll see the following screen containing the Account Number (also called the Account ID): Some things to keep in mind: The account number is not always a number. It can be a string of letters…

Continue Reading

Resolving the NetSuite LIST_ID_REQD Deposit Record Error

Creating deposit records in NetSuite using the SuiteTalk API can sometimes result in the following error: This error is not well documented at all and does not point to a single issue. In order to properly handle and prevent this error from occurring you need to implementation validation before upserting (or adding, updating, etc) the record. Here are the various causes of the error: The included refund’s (CashRefund, CustomerRefund) account field is not set to the NetSuite instance’s “Undeposited Funds” account. The easiest way to determine what the “Undeposited Funds” account internalId is to search for the account by name and grab the first search result. The name of the “Undeposited funds account can be customized…

Continue Reading

How to Close a NetSuite SalesOrder Using SuiteTalk

Many things in NetSuite’s SuiteTalk XML API are not intuitive or obvious: closing a SalesOrder is one of them. When you create a SalesOrder using upsert or add you can set the order_status to _pendingFulfillment or _pendingApproval directly through the order_status field. However, you can’t simply update the order_status field on a SalesOrder to close the record, you need to set is_closed field on each line item in the SalesOrder. Other SalesOrder states work in a similar way: _partiallyFulfilled, _fulfilled, etc are only achieved by modified the item_list sublist or by creating a separate record (ItemFulfillment, Invoice, etc).

Continue Reading

NetSuite SuiteTalk User & Role Edits Are Delayed

If you work with NetSuite’s SuiteTalk API, you know that: You must access the API via employee/user record in NetSuite API calls specify the user role to use You will get different results based on which user and which user role you are accessing the API with. For instance, if the employee record has the “Sales Rep” option checked, all Sales Orders created using that employee/user credentials will have the “Sales Rep” field assigned to the user’s record. Each role has a different set of permissions. You will get different fatal error messages depending on which user role you are operating under. Often, when developing a NetSuite integration, you’ll need to make edits to the SuiteTalk user/employee record or the role…

Continue Reading

Split Shipment Fulfillment with NetSuite

NetSuite natively supports partially fulfilling a SalesOrder. However, updating an ItemFulfillment record (NetSuite’s equivalent to a ‘package’ or ‘shipment’ in other systems nomenclature) after it’s been created comes with some unique edge cases in NetSuite. Here’s the NetSuite state that I was operating in: Sales Order is created. order_status = _partiallyFulfilled An ItemFulfillment exists with ship_status = _picked A CustomerDeposit representing the payment coming from an external system is associated with the SalesOrder The contents of the created ItemFulfillment need to be adjusted and a second ItemFulfillment needs to be created…

Continue Reading

NetSuite Global Search Shortcuts for Alfred.app

I’ve done a lot of NetSuite development in ruby over the last couple years. It’s very challenging to integrate NetSuite with external applications. During the process of completing several NetSuite integration projects I’ve developed a set of tools and shortcuts to speed up the NetSuite development workflow. One key tool is search shortcuts for Alfred.app.  I have a production and sandbox search shortcut which drops my search query directly in the NetSuite global search bar. This search shortcut allows me to just type in NetSuite customer number, sales order number etc and jump right to the record in the NetSuite environment. Many times if you go to the NetSuite homepage directly you are required to login again…

Continue Reading

NetSuite PHPToolkit & Uncaught Empty Search Results Error

So far my experience with NetSuite has been less than favorable. Their developer resources aren’t bad, but they aren’t terribly good either. I’m working on a project that involves searching through contacts & selectively modifying contact data based on search results. In some cases the search will return an empty result set – just like any normal search should. I would have thought that the PHP developer kit was mature enough to handle an empty search set, but apparently not…

Continue Reading