Resolving the NetSuite LIST_ID_REQD Deposit Record Error
Tags: netsuite, suitetalk • Categories: Web Development
Creating deposit records in NetSuite using the SuiteTalk API can sometimes result in the following error:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2015_1.platform.webservices.netsuite.com">
<platformMsgs:nsId>REDACTED</platformMsgs:nsId>
</platformMsgs:documentInfo>
</soapenv:Header>
<soapenv:Body>
<upsertResponse xmlns="urn:messages_2015_1.platform.webservices.netsuite.com">
<writeResponse>
<platformCore:status xmlns:platformCore="urn:core_2015_1.platform.webservices.netsuite.com" isSuccess="false">
<platformCore:statusDetail type="ERROR">
<platformCore:code>LIST_ID_REQD</platformCore:code>
<platformCore:message>Required field missing in a related list. You must set lineId.</platformCore:message>
</platformCore:statusDetail>
</platformCore:status>
<baseRef xmlns:platformCore="urn:core_2015_1.platform.webservices.netsuite.com" externalId="external_id" type="deposit" xsi:type="platformCore:RecordRef"/>
</writeResponse>
</upsertResponse>
</soapenv:Body>
</soapenv:Envelope>
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 upsert
ing (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. If this is the case, you need to hard code the
internalId
in your app’s config.
- The easiest way to determine what the “Undeposited Funds” account
- The payment (CustomerPayment, CashPayment, CustomerDeposit) is already deposited. You can test this through the
status
field on these record. Thestatus
field will have a value ofDeposited
orNot Deposited
. - The payment sublist filters in the deposit sublist are causing the given payment record to be unavailable for the deposit. For example, if your GUI payment sublist date filters are configured to only show payments for the current day, and your deposit request using SuiteTalk includes a record created yesterday. In this case, the GUI settings (which cannot be modified or inspecting by SuiteTalk) are causing a fatal error in SuiteTalk. Instructions on how to resolve this error are detailed below.
- The subsidiary or bank account restrictions are causing your included payment to be unavailable. The best way to see if this is the case is to attempt to mimic the SuiteTalk request in the GUI.
Clearing the Deposit Payment Sublist Filters
Here’s how you clear the deposit payment sublist date filters.
- Go to the new deposit record page:
https://system.netsuite.com/app/accounting/transactions/deposit.nl
. Note that this URL can be different depending on your data center URL. - Choose “All” on the date filter drop down. The From/To filters should disappear.
- Press cancel
- Go to the new deposit page again and ensure that the changes “stuck”
- Logout
- Wait 8-24 hours for the NetSuite user cache to invalidate. This is an internal cache that you cannot monitor.
In addition to clearing the date filter, click the customize button and ensure that no additional filters have been added to the payment sublist filters. You are aiming for a completely stock configuration.