NetSuite’s SuiteTalk web service enables you to automate and schedule the import of your data from staged files as a transaction in NetSuite.  In this example, I am going to demonstrate a sample routine that will import ACH payment data from an external ACH service into NetSuite as payments.  However, before importing, it is critical that I ensure that I do not duplicate records, which is what I’m going to focus on in this article.  You can achieve this by performing a duplicate check against a custom body field.

SuiteTalk Code Sample

private  Boolean FindDuplicatePayment(string pyt_identifier)


    SearchResult transactionSBR;

    List<SearchStringCustomField> oCustomSearchStringList =new List<SearchStringCustomField>();

    SearchStringCustomField custbody_achIdentifier =  newSearchStringCustomField();

    custbody_achIdentifier.scriptId=”custbody_pyt_ach_identifier”;  // id of customField    custbody_achIdentifier.searchValue = pyt_identifier; //value to check

    custbody_achIdentifier.operatorSpecified = true;

    custbody_achIdentifier.@operator =SearchStringFieldOperator.@is;


    TransactionSearchAdvanced transactionSA = newTransactionSearchAdvanced()


        //Below is the saved search that is defined in Netsuite already.

        savedSearchScriptId =”customsearch_check_pyt_identifier”,

        criteria = new TransactionSearch()


            basic = new TransactionSearchBasic()


                customFieldList =  oCustomSearchStringList.ToArray(),




    transactionSBR =;

    if (transactionSBR.status.isSuccess)


        if (transactionSBR.searchRowList.Length != 0 && transactionSBR.searchRowList != null)


            Console.WriteLine(String.Format(“Identifier found.. This record will not be imported.{0} “, pyt_identifier));

            return true;


        return false;


    return false;



Below is brief explanation of the above code sample.

  • pyt_identifier is the value to search within NetSuite
  • The identifier is a custom body field in NetSuite and must be scoped as SearchStringCustomField
  • The saved search in the example is customsearch_check_pyt_identifier which is already created in NetSuite as a saved search
  • oCustomSearchStringList works as a filter to the saved search by checking pyt_identifier value
  • transactionSBR will store saved search results and in this case I am just using the record count (length) to determine duplication

I hope this is useful.  If you’re looking for help extending, integrating and customizing NetSuite, please feel free to contact the MIBAR team – we’re here to help!

Until next time, happy coding!

Get more from your NetSuite investment. Learn more about our NetSuite optimization services.

Additional NetSuite Resources

Why You’ll Love NetSuite’s Business Intelligence Dashboards

Creating Filtered Dropdown Lists in a Custom Field in NetSuite

Update Hidden Subsidiary Sublists in NetSuite

6 Tips for NetSuite Advanced PDF Templates