Shared Transactions Common Script Errors and Fixes
Overview
Shared Transactions surfaces most setup problems as an error when an allocation tries to run. This article lists the errors we see most often, what each one means, and how to fix it. For behavior that isn't tied to a specific error string (an allocation that silently didn't generate, performance, CSV imports, fields not showing), see Shared Transactions Tips and Troubleshooting.
Most of these errors share a root cause: the segment, entity, or intercompany setup the allocation needs isn't available in the subsidiary it's allocating to. Because allocation can run after a transaction has already saved, the error often appears only in the script log, not on screen - see Viewing script errors below.
Viewing script errors
Allocation runs as NetSuite scripts, and it can run after a transaction has already saved - so the error often isn't shown on screen, but the script log usually says why.
To find the error:
- Go to Customization > Scripting > Script Execution Logs.
- Filter Type to Error (and Date to today) to see only failures.
- Read the Detail column and match the message against the list below.
To check a specific job:
- For the Map/Reduce jobs (anything ending in | MR), open Customization > Scripting > Map/Reduce Script Status to see whether the run is Pending, Processing, Complete, or Failed.
- Or open the script at Customization > Scripting > Scripts, click it, open its Deployments, and review the Execution Log subtab.
You can also open the source transaction and review the Allocation Preview subtab and System Notes / Related Records to see what was (or wasn't) generated.
Errors after a successful save don't email you automatically
Shared Transactions does not send automatic email alerts for backend processing errors that happen after a transaction saves. Use the Script Execution Logs to catch allocations that didn't complete.
Error quick reference
| Error message | What it means | Fix |
|---|---|---|
| "The location / department / account / classification, ___, is either inactive or has not been made available for the selected subsidiary" | The segment isn't shared with the subsidiary being allocated to | Confirm the segment/subsidiary combination and that the segment record lists the destination subsidiary - usually Include Children isn't checked. See below |
| "The vendor, ___, is either inactive or has not been made available for the selected subsidiary" | The bill's and destination subsidiaries aren't both on the vendor's available subsidiaries | Add the subsidiaries on the vendor's Subsidiary subtab, then re-run. See below |
| "An elimination vendor could not be found associated with one or more intercompany relationships" | No representing vendor links the destination subsidiary to the source subsidiary | Generate representing entities and/or set Represents Subsidiary on the intercompany vendor, then retrigger. See below |
| "An elimination customer could not be found associated with one or more intercompany relationships" | Same, for the customer side of the relationship | Add/link a representing customer for the subsidiary pair, then retrigger. See below |
| "Accounts Receivable and Accounts Payable lines marked for elimination must specify an Intercompany Customer or Vendor" | The System Setup GL accounts are elimination accounts but the intercompany entities aren't set up | Create the four intercompany records per subsidiary pair, or use non-elimination accounts on Demo/Dev. See below |
| "[Interco Subsidiary Customer] can only be used in transactions marked for elimination" | The account is an elimination account and the setup expects representing entities | Generate representing entities for the subsidiaries, or confirm whether the account should be an elimination account |
| "An Advanced Intercompany Journal must use at least two subsidiaries" | A subsidiary is set on the allocation template lines, but it matches the source. The system attempts to create an AICJE but errors out since there is only one subsidiary. | If you didn't intend an intercompany allocation, clear the Subsidiary column on the template line. See below |
| "Invalid Field Value ___ for the following field: entity (or location)" | A subsidiary mismatch between the transaction and the entity or segment | Add the destination subsidiary to the entity/segment record, then edit and save the source transaction to retrigger. See below |
| "Invalid reference key ___" when allocating | The allocation template referenced on the line has been inactivated | The number after "reference key" is the template's internal ID - reactivate that template or switch the line to an active one. See below |
| "The currency on the transaction, ___, is different from ___, the currency of the entity" | The representing vendor/customer doesn't list the transaction's currency | Add the currency to the representing entity's currency list, save, and re-run. See below |
| "Missing required field: account" (Shared Payments) | The bill payment can't resolve a default payment account | Remove the Default Vendor Payment account from the vendor record so the subsidiary-level default is used. See below |
| "Please enter value(s) for: [Class / Employee / Line Memo]" | A required field on the allocation/journal form has no sourcing record feeding it | Make the field non-mandatory, or set up / reactivate the sourcing record for it. See below |
| "Script Execution Time Exceeded" | The transaction has more lines than the real-time script can process in time | Lower the Map Reduce Allocation Script Threshold and/or split the transaction. See Tips and Troubleshooting |
| "AFTERSUBMIT processing failed" on CSV import | The allocation script errored in the CSV context though the record saved | Fix the underlying validation (usually a vendor/subsidiary issue), then run NTA | Transaction Updates | MR. See Tips and Troubleshooting |
| "This record can only be interacted with via the Netgain Tools | System Setup Suitelet" | A setup record was edited directly instead of through the setup screen | Make the change in Netgain > Setup > System Setup using an Administrator role |
"...is either inactive or has not been made available for the selected subsidiary"
This message appears for a location, department, account, or classification (and, separately, for a vendor). It means the value selected in the allocation isn't available in the subsidiary the allocation is posting to - which may be the original subsidiary if the subsidiary isn't changing.
To fix it:
- Confirm the correct segment (or vendor) and subsidiary are selected on the allocation.
- If the combination is correct, open the record (the location, department, account, class, or vendor) and confirm the destination subsidiary is listed as available.
- The most common cause is that Include Children was not checked on the subsidiary when the record was set up - check it if you intend the record to be available to child subsidiaries.
- If you can't resolve the setup, your NetSuite administrator should review how that record is shared across subsidiaries.
"The vendor, ___, is either inactive or has not been made available for the selected subsidiary"
This is the vendor-specific form of the message above. It occurs when the subsidiaries on the bill and the subsidiaries being allocated to are not all listed as available on the vendor record.
- Navigate to Lists > Relationships > Vendors and open the vendor from the allocated bill.
- Click Edit and go to the Subsidiary subtab.
- Add every subsidiary the bill is being allocated to. Click Save.
- Run the allocation on the bill again.
CSV imports hit this most often
When a vendor bill is imported by CSV and the destination subsidiary isn't on the representing-entity vendor, the bill saves but the allocation fails with an "AFTERSUBMIT processing failed" wrapper around this message. Add the subsidiary to the vendor, then "edit" and resave the bill or run NTA | Transaction Updates | MR to complete the allocation.
"An elimination vendor or customer could not be found associated with one or more intercompany relationships"
When your intercompany accounts use elimination, Shared Transactions looks up a vendor in the destination subsidiary that represents the source subsidiary (and a customer the other direction) so the intercompany journal records correctly. This error means that representing entity is missing for the subsidiary pair.
To fix it:
- Generate representing entities at Setup > Company > Subsidiaries, then Generate Representing Entities on each subsidiary.
- Confirm each intercompany vendor/customer has the correct Represents Subsidiary value.
- Edit and save the errored transaction to retrigger the allocation.
Inactivate any duplicate or manually-created intercompany vendors/customers so Shared Transactions uses the system-generated IC- records. Creating the intercompany entities themselves is native NetSuite setup and falls outside standard product support.
"Accounts Receivable and Accounts Payable lines marked for elimination must specify an Intercompany Customer or Vendor"
This occurs when the GL accounts set in Netgain > Setup > System Setup are marked as Elimination accounts. Elimination accounts require intercompany vendors and customers before the intercompany journals can run.
For Demo and Development accounts
You can avoid this setup entirely by changing the GL accounts in Netgain > Setup > System Setup to non-elimination accounts.
To set it up properly, create a record in both directions for each subsidiary pair. To allocate between Sub A and Sub B, that is four records:
- Two customers: one from A → B and one from B → A
- Two vendors: one from A → B and one from B → A
Steps:
- Enable the NetSuite Intercompany Framework at Setup > Company > Enable Features > Accounting.
- Customize the Customer and Vendor records to unhide the Represents Subsidiary field.
- Go to Lists > Relationships > Customers > New. Enter an identifiable name, the Subsidiary that will appear on transactions, and the Represents Subsidiary the expense will be allocated to.
- Create the opposite-direction customer too.
- Repeat for two new vendors.
Once these exist, the intercompany allocations run without the error.
Enabling the Intercompany Framework can't be undone
Once the Intercompany Framework feature is enabled it cannot be disabled. Confirm with your administrator or NetSuite representative before turning it on.
"The currency on the transaction, ___, is different from ___, the currency of the entity"
The representing vendor or customer used for the intercompany lines doesn't list the transaction's currency. This shows up on foreign-currency bills and on Shared Payments.
- Open the representing vendor and customer for the subsidiaries involved.
- Add the transaction's currency to their currency list (the primary currency can stay as is).
- Edit and save the record to retrigger, then re-run the allocation.
As a rule, make sure the representing entities for a subsidiary include every currency you transact in for that subsidiary.
"Invalid Field Value ___ for the following field: ___"
The allocation can't set a value the destination subsidiary doesn't allow - most often an entity (customer/vendor) or a segment (location, department) that isn't available in the subsidiary being allocated to. The number in the error is the internal ID of the record being rejected.
To diagnose and fix it:
- Look up what the Field Value ID represents for that field type - for example, ID 200 in the entity field might be the customer "Falcon Systems."
- Try to build the journal by hand: from the source transaction's Allocation Preview, recreate the same Advanced Intercompany Journal at Transactions > Financial > Advanced Intercompany Journal. If you can't create it manually, the allocation script can't either - and whichever field NetSuite rejects is the cause.
- Open that record and add the missing destination subsidiary. Confirm its currency list also includes the transaction's currency - a subsidiary can be available while the currency is not.
- Edit and save the source transaction to retrigger. If a different field errors, repeat.
"An Advanced Intercompany Journal must use at least two subsidiaries"
A subsidiary set on the allocation template lines is what tells Shared Transactions to build an Advanced Intercompany Journal (AICJE) rather than a regular journal. If that subsidiary is the same as the source transaction's, the AICJE it assembles has only one subsidiary across every line - and NetSuite rejects it, because an intercompany journal has to span at least two.
The usual cause is a same-subsidiary allocation that was never meant to be intercompany. The Subsidiary column on the template's line subtab is populated - often because it was made mandatory on a custom template form, so the user has to pick a subsidiary even when they're only redistributing within one subsidiary. Selecting the source's own subsidiary is what produces the one-subsidiary journal that errors.
To fix a same-subsidiary (non-intercompany) allocation:
- On the source transaction's Allocation Preview, check the Subsidiary on the template lines. If it matches the source transaction's subsidiary, the allocation shouldn't be intercompany.
- Make the Subsidiary column non-mandatory on the custom template form (or remove it from the form), then clear it on the template's lines. With no subsidiary on the lines, Shared Transactions posts a regular journal instead of an AICJE. This is the same custom-form pattern as "Please enter value(s) for" below.
- Edit and save the source transaction to retrigger.
If you did intend an intercompany allocation, the destination subsidiary on the lines has to actually differ from the source. Set the correct destination subsidiary, then edit and save the source transaction to retrigger the allocation.
"Invalid reference key ___"
This almost always means the allocation template on the line has been inactivated. The number after "reference key" in the error is the template's internal ID.
- Go to the list of Shared Transaction templates and click Show Inactive.
- Click Customize View and add the Internal ID column, then find the ID from the error.
- Reactivate that template, or change the line to an active template, then edit and save the source transaction to retrigger.
"Missing required field: account" (Shared Payments)
When generating a Shared Payments bill payment, the payment can't resolve a default account. This happens when a Default Vendor Payment account is set on both the vendor and the subsidiary.
- Open the vendor record and remove the Default Vendor Payment account.
- Confirm the paying subsidiary has a Default Vendor Payment account set.
- Retrigger the payment - the subsidiary-level default now populates.
"Please enter value(s) for: [Class / Employee / Line Memo]"
A field on the preferred allocation or Advanced Intercompany Journal form is set Mandatory, but nothing sources a value into it, so the allocation can't post.
- Class or another segment (Shared Payments): in Netgain > Setup > Shared Transaction Sourcing, edit the segment, open Advanced Configuration, and set Shared Payment: To AICJE to that segment.
- Employee: make the Employee field non-mandatory on its transaction line field record, or create a custom Shared Transaction Journal form without the mandatory Employee field and set it as preferred. (NetSuite allows only one preferred form per transaction type.)
- Line Memo: reactivate the Line Description sourcing record that Shared Transactions ships (it is inactive by default) so the value carries to the journal, rather than relying on a custom mandatory Line Memo field.
Shared Transactions Scripts
Allocation is done by these scripts. You don't normally run them by hand - they trigger from the transaction forms or on a schedule - but knowing what each does helps when reading a log or talking to support. Find any of them at Customization > Scripting > Scripts.
| Script (NetSuite name) | Type | What it does | When it runs |
|---|---|---|---|
| NTA | Transaction Updates | MR | Map/Reduce | Finds source transactions that have Shared Transaction data (template or allocation values) but no allocation journal, and creates the allocations. Has a Minimum Date parameter to limit how far back it looks | Manually (Save & Execute) or on a scheduled deployment - commonly nightly to catch integration/overnight transactions |
| NTA | Transaction Sync Override | MR | Map/Reduce | Re-syncs the source transaction's segment values (department, class, location, account, subsidiary) onto existing allocation journals; supports per-segment ignore options and a minimum date | Run for Ramp or other 3rd-party imports that didn't allocate (their errors happen before the real-time script fires), or to push corrected segment values onto existing allocations |
| NTA | Transaction Deployment | MR | Map/Reduce | Processes allocations for large transactions and batch deployment work in the background | When a transaction exceeds the real-time threshold, or on its deployment |
| NTA | Setup | SL | Suitelet | Serves the System Setup screen (Transactions Configuration, thresholds, system features). Setup records can only be changed here | Whenever you open Netgain > Setup > System Setup |
| NTA | Worksheet App | SL | Suitelet | Serves the Allocation Worksheet for allocating with or without a template | Whenever you open the Allocation Worksheet |
Several user-event and client scripts also run automatically as you save and work in transactions - these are what create allocations in real time when you save a posted transaction.
Still Need Help?
If your error isn't listed here, or the fix doesn't resolve it, contact Netgain support at support@netgain.tech. Include the exact error text and timestamp from the Script Execution Logs, the source transaction, and the subsidiaries involved. Keeping your SuiteApp up to date also resolves some issues, since fixes ship in updates. To grant access for a support case, see Shared Transactions - Providing Access to NetSuite Account for Support Cases.
