Suite Utils
Back to Blog
SuiteScriptJul 26, 2026 • 6 min read

Accounting for Unclaimed Property Escheatment

Handling the transition of uncashed checks to state-mandated unclaimed property (escheatment) is a common hurdle for companies moving into NetSuite.

Sarah Jenkins, CPASarah Jenkins, CPAPrincipal Finance Automation Specialist
Accounting for Unclaimed Property Escheatment
Photo by Jakub Żerdzicki on Unsplash

Handling the transition of uncashed checks to state-mandated unclaimed property (escheatment) is a common hurdle for companies moving into NetSuite. The challenge lies in balancing the need to clear the bank reconciliation while maintaining a pristine audit trail for state controllers.

When a check remains uncashed beyond the legal limit, you must "escheat" it, transferring ownership of that asset to the state. From an accounting perspective, this requires removing the liability from your Accounts Payable (A/P) and moving the asset out of your Cash account.

The Challenge: Balancing Reconciliation and Audit Integrity

The primary goal is to ensure that the original transaction (the check issued) remains intact for audit purposes, while ensuring the bank reconciliation reflects the actual cash position. If you simply void a check, you erase the history of the original payment. If you do nothing, the stale check remains as an outstanding item on your bank reconciliation report indefinitely. To handle this correctly in NetSuite, you must create a workflow that separates the reversal of the original liability from the payment to the state.

Recommended Workflow: The Journal Entry & Vendor Bill Method

Based on best practices for maintaining a clean audit trail, the most stable method involves using a Journal Entry to clear the bank reconciliation and a Vendor Bill to record the state's claim.

Step 1: Record the Journal Entry

Instead of voiding the original check, you will record a Journal Entry to "move" the funds. This allows the original check to remain in the system as a record of the transaction that occurred, while clearing it from your bank balance.

  1. Navigate to Transactions > Works_List > Make Journal Entries.
  2. Account 1 (Debit): Select your Cash Account. This removes the funds from your bank balance.
  3. Account 2 (Credit): Select a Unclaimed Property (UCP) Clearing Account.
  4. Memo: Clearly reference the original check number, the original vendor name, and the reason for escheatment.

Step 2: Clear the Bank Reconciliation

Once the Journal Entry is posted, you need to clear the stale check from your bank reconciliation.

  1. Navigate to Transactions > Depository > Bank Reconciliation.
  2. Select the appropriate bank account and date.
  3. Locate the original check (which is still showing as an outstanding item).
  4. Identify the transactions to be cleared. In NetSuite, you can match the Journal Entry and the Stale Check to ensure the bank balance reflects that the money is no longer "outstanding."

Step 3: Create the State Controller Vendor Bill

Now that the funds are in the UCP Clearing Account, you must record the liability to the State Controller.

  1. Navigate to Transactions > Works_List > Make Vendor Bills.
  2. Vendor: Select the State Controller's Office (or create a new Vendor record for them).
  3. Account: Select the Unclaimed Property (UCP) Account.
  4. Amount: Enter the amount being remitted.
  5. Memo: Reference the specific escheatment ID or state filing number.

Step 4: Remit Payment

Finally, create a Bill Payment or use the "Pay Bill" functionality to remit the funds to the state. This will debit the UCP account and credit the State Controller's liability.


Alternative Approach: The AP Journal Entry Method

Some organizations prefer to keep the original Bill open and use a Vendor-Specific Journal Entry. This is often preferred by auditors who want to see the original Bill "closed" without a payment transaction.

Note: This method requires your NetSuite configuration to allow Journal Entries to impact Accounts Payable. While most accounts are accessible, ensure your specific permission sets and account types allow for this flow.


Technical Implementation: Automating Audit Logs

To ensure that these transactions are easily audded, you can use a custom field on the Journal Entry to track escheatment details. If you are automating the tracking of these items, you might use a script to ensure that every time an Unclaimed Property account is hit, it requires a reference number.

While you can manually enter these, for high-volume environments, ensuring that the memo field or a custom custbody_escheatment_ref is populated can be enforced via a Client Script or User Event Script.

Example: Validating Escheatment Reference

If you want to ensure that no one can post a Journal Entry to the Unclaimed Property account without a reference number, you could use validation logic.

/**
 * @NApiVersion 2.1
 * @NScriptType UserEventScript
 */
define(['N/record', 'N/log'], (record, log) => {
    /**
     * @NApiVersion 2.1
     * @NScriptType UserEventScript
     */
    const beforeSubmit = (scriptContext) => {
        const newRecord = scriptContext.newRecord;

        // Get the account being used in the Journal Entry
        const account = newRecord.getValue({ fieldId: 'account' });

        // Logic to ensure a reference is provided if the account is UCP
        // Note: In a real scenario, you would check against a specific 
        // list of UCP Account IDs or a custom field.
        const memo = newRecord.getValue({ fieldId: 'memo' });

        // Example check for a custom reference field
        const escheatRef = newRecord.getValue({ fieldId: 'custbody_escheatment_ref' });

        if (!memo && !escheatRef) {
            // Log the error for auditing purposes
            log.error({
                title: 'Validation Failed',
                details: 'Missing Reference for Unclaimed Property_es_cheatment'
            });

            // Throwing an error prevents the record from being saved
            throw new Error({
                title: 'Missing Reference',
                message: 'Please provide a reference number for Unclaimed Property_escheatment.'
            });
        }

        return true;
    };

    return {
        beforeSubmit: beforeSubmit
    };
});

Data Integrity and Performance

When handling high volumes of escheatment records, it is vital to maintain system performance. Because Journal Entries are posting transactions, they impact the general ledger directly. To ensure your records remain accurate and performant, follow the Optimizing System Performance Guide to ensure that large batches of journal entries do not cause processing bottlenecks during month-end closes.

Properly structured data also ensures that your audit trails remain intact. According to the Auditing and Data Management Guide, maintaining a clear trail of how assets move, especially when moving from a liability to a state-held asset, is critical for compliance.

To maintain a clean audit trail and accurate financial reporting:

  1. Never Void the Original Check: This destroys the audit trail.
  2. Use a Clearing Account: Holds the funds until remitted to the state.
  3. Maintain Clear Documentation: Include the original check number and vendor name in every related Journal Entry memo field.
  4. Consult Your Auditor: Escheatment laws vary by state. Confirm your workflow with your CPA or tax professional.

Handling unclaimed property means separating the original liability reversal from the payment to the state. Moving funds into a clearing account with a Journal Entry, then recording the state's claim with a Vendor Bill, keeps every step transparent and auditable.

About the author

Put these ideas to work.

Suite Utils builds small NetSuite tools that fix the specific thing breaking your day. Each one runs as a native SuiteScript SuiteApp inside your account. No sales call, no onboarding.

Browse the Tools

Enjoyed this one?

Get NetSuite tips like this in your inbox. No spam. Practical guides only.

Keep reading