This article covers records that could not be read from, or written to, the org structure entities in a Payroll sync: Departments, Locations, and Cost Codes, plus the Primary Work Location field on Employee and Contractor records. Most of these messages mean one specific field is missing, too long, or duplicated, and the fix is a data correction in whichever system actually owns that field. A few Cost Code fields are shared with Arcoro Time (formerly ExakTime), so those corrections happen in Arcoro Time rather than in Payroll. A smaller set of messages mean the sync found more than one matching record and cannot tell which one to update; those need the duplicate cleaned up before the record will sync.
Error Messages
| Message text | Direction | Occurs when | Outcome | Fix |
|---|---|---|---|---|
| A Cost Code with Name: '[cost code name]' has already been read. This field must be unique and the record will not be Synced. Modify the data in Arcoro Time to make each record have a unique Name and execute the Sync again. | Read (Hub to Arcoro) | Only for Cost Codes marked active. Fires when another active Cost Code already read earlier in this run has the same identifier and the same Name (case-insensitive). Two active Cost Codes with the same Name but different identifiers do not trigger this. Inactive Cost Codes are never checked for this. | Record skipped | Rename one of the duplicate Cost Codes in Arcoro Time so each active Cost Code has a unique Name, then rerun the sync. |
| A Cost Code with Id: '[cost code id]' does not have a Name. This field is required and the record will not be Synced. Modify the data in Arcoro Time to make each record have a unique Name and execute the Sync again. | Read and Write | On read: only for Cost Codes marked active with a blank or whitespace-only Name (an inactive Cost Code with no Name is read without error). On write: for any outgoing Cost Code with a blank or whitespace-only Name, regardless of active status. | Record skipped | Add a Name to the Cost Code. If the message appeared on a read step, fix it in Arcoro Time; if it appeared on a write step, fix it in whichever system is feeding this sync. |
| Cost Code Id is a required field. | Write (Arcoro to Payroll) | The outgoing Cost Code has no value in the Id field. | Record skipped | Add an Id to the Cost Code in the source system and rerun the sync. |
| Attempted to write more than one cost code with id [cost code id] and name [cost code name]. Correct the source data and run the sync again. | Write (Arcoro to Payroll) | A second Cost Code in the same sync run resolves to the same existing (or newly created) destination Cost Code as one already written earlier in the run. That is, two source records share the same Id and Name (and, when the source is Sage Intacct, the same Intacct identifier). | Record skipped | Find and merge or remove the duplicate Cost Code in the source data, then rerun the sync. |
| Multiple matches were found for this Cost Code and the Sync does not know which record to use. Correct the data and execute the Sync again. | Write (Arcoro to Payroll) | More than one existing Cost Code already in the destination matches both the incoming identifier (Id, or "[Project Id] Id" when a Project Id is set) and the Name (case-insensitive). This check only runs after the Sage Intacct identifier match, if applicable, found no match. | Record skipped | Remove or rename one of the duplicate Cost Codes already saved so only one record matches this Id and Name, then rerun the sync. |
| Cost Code Name "[cost code name]" exceeds the maximum length of 50 and will not be synced. Correct the data in the source system and run the sync again. | Write (Arcoro to Payroll) | The outgoing Cost Code Name is longer than 50 characters. | Record skipped | Shorten the Cost Code Name to 50 characters or fewer in the source system and rerun the sync. |
| Cost Code Id "[cost code id]" exceeds the maximum length of 50 and will not be synced. Correct the data in the source system and run the sync again. | Write (Arcoro to Payroll) | The outgoing Cost Code Id is longer than 50 characters. | Record skipped | Shorten the Cost Code Id to 50 characters or fewer in the source system and rerun the sync. |
| Multiple records within Hub share the same Intacct Identifier and the Sync does not know which record to use. Contact Arcoro Support to correct this problem. | Write (Arcoro to Payroll) | Only when the sync source is Sage Intacct (or Sage Intacct for Construction). Fires when more than one existing record already stored in the Hub shares the same Intacct identifier as the incoming record. | Record skipped | Escalate to Arcoro Support, as the message states, to remove the duplicate Intacct identifier from the Hub record. |
| Department '[department code]' has been sent to Payroll multiple times. Only the first department with this name will be saved. Correct the source data and run the sync again. | Write (Arcoro to Payroll) | A department with the same Code (case-insensitive) has already been written earlier in the same sync run. This is a within-run check only; it does not compare against departments already saved in Payroll from a prior sync. | Record skipped | Find and correct the duplicate Department Code in the source data so each department has a unique code, then rerun the sync. |
| Work Location is required by Payroll. This record will not be synced. Correct the data in the source system and execute the sync again. | Write (Arcoro to Payroll) | Fires for both Employee and Contractor records when the Primary Work Location field is blank. | Record skipped | Assign a Primary Work Location to the employee or contractor in the source system and rerun the sync. |
| Work Location '[primary work location name]' could not be matched against a valid, active location in Payroll. This record will not be synced. Correct the data in the source system and execute the sync again. | Write (Arcoro to Payroll) | Fires for both Employee and Contractor records when Primary Work Location has a value but it does not exactly match, by name and case, an active Location already in Payroll. For Employee records this check only runs when the Location scope is included in this sync step; for Contractor records it always runs. | Record skipped | Confirm a Location with that exact name (matching capitalization) exists and is active in Payroll, then correct the Primary Work Location value in the source system to match it exactly and rerun the sync. |
| Location Address 1 is required by Payroll. This record will not be synced. Correct the data in the source system and execute the sync again. | Write (Arcoro to Payroll) | The Location has a Physical Address, but Address Line 1 on that address is blank. | Record skipped | Add Address Line 1 to the location's Physical Address in the source system and rerun the sync. |
| Location Address is required by Payroll. This record will not be synced. Correct the data in the source system and execute the sync again. | Write (Arcoro to Payroll) | The Location has no Physical Address at all. | Record skipped | Add a Physical Address to the location in the source system and rerun the sync. |
| Location City is required by Payroll. This record will not be synced. Correct the data in the source system and execute the sync again. | Write (Arcoro to Payroll) | The Location has a Physical Address, but City on that address is blank. | Record skipped | Add a City to the location's Physical Address in the source system and rerun the sync. |
| Location Name is required by Payroll. This record will not be synced. Correct the data in the source system and execute the sync again. | Write (Arcoro to Payroll) | The Location's Name field is blank. | Record skipped | Add a Name to the location in the source system and rerun the sync. |
| Location Name must be a unique value less than 100 characters long. This record will not be synced. Correct the data in the source system and execute the sync again. | Write (Arcoro to Payroll) | The Location Name is longer than 100 characters. Despite the word "unique" in the message, this specific check only looks at length; a duplicate Location Name within the same run raises a separate message instead (see the row below for "has been sent to Payroll multiple times"). | Record skipped | Shorten the Location Name to under 100 characters in the source system and rerun the sync. |
| Location Postal Code is required by Payroll. This record will not be synced. Correct the data in the source system and execute the sync again. | Write (Arcoro to Payroll) | The Location has a Physical Address, but Postal Code on that address is blank. | Record skipped | Add a Postal Code to the location's Physical Address in the source system and rerun the sync. |
| Location State is required by Payroll. This record will not be synced. Correct the data in the source system and execute the sync again. | Write (Arcoro to Payroll) | The Location has a Physical Address, but State on that address has no value. | Record skipped | Add a State to the location's Physical Address in the source system and rerun the sync. |
| Location Postal Code is required to have at least 5 characters. This record will not be synced. Correct the data in the source system and execute the sync again. | Write (Arcoro to Payroll) | The Location's Postal Code is present but shorter than 5 characters. | Record skipped | Correct the Postal Code on the location's Physical Address to at least 5 characters in the source system and rerun the sync. |
| A Location with Name: '[location name]' has been sent to Payroll multiple times. Only the first Location with this Name will be saved. Correct the source data and run the sync again. | Write (Arcoro to Payroll) | A location with the same Name (case-insensitive) has already been written earlier in the same sync run. This is a within-run check only. | Record skipped | Find and correct the duplicate Location Name in the source data so each location has a unique name, then rerun the sync. |
| Payroll does not support updates to a location's address, as such changes could affect tax calculations. The record will not be Synced. Correct the data in [source system name] by changing the Address back to [the address currently stored in Payroll: line 1, line 2, city, state, postal code] and execute the Sync again. | Write (Arcoro to Payroll) | Only for a location that already exists and is being updated. Fires when the incoming Address Line 1, Address Line 2, City, State, or Postal Code is different from the value already stored in Payroll for that location. A brand new location is never affected, since there is nothing to compare against yet. | Record skipped | In the named source system, change the location's address fields back to match what the message shows is currently stored in Payroll, then rerun the sync. Payroll does not accept address changes to an existing location through this sync. |
| The following employees/contractors have this location set as their primary location: [comma-separated list of employee or contractor identifiers]. Please update their primary location before attempting to set this location to inactive. | Write (Arcoro to Payroll) | Only for a location that already exists, is currently active in Payroll, and is being updated to inactive. Fires when at least one employee or contractor already in Payroll still has this location set as their primary workplace. | Record skipped | Reassign each listed employee or contractor to a different primary work location first, then rerun the sync to deactivate this location. |
| A Location '[location identifier or name]' has duplicates in [CheckHQ or Hub]. The sync cannot determine a match. Contact support to remove the duplicate location. | Write (Arcoro to Payroll) | Fires in any of four situations: more than one location already in Payroll shares the identifier carried in the record's additional fields; no identifier match was found but more than one location in Payroll shares the same Name; more than one internal Arcoro record shares the linked Payroll identifier; or no identifier match was found but more than one internal Arcoro record shares the same Name. In every case the sync found more than one existing record and cannot choose between them. | Record skipped | Escalate, as the message states, so the duplicate location record can be removed. See Open questions for who performs this. |
| A record with Name: '[location or union name]' has already been read. This field must be unique and the record will not be Synced. Modify the data in Payroll to make each record have a unique Name and execute the Sync again. | Read (Payroll to Arcoro) | Fires from two different read services. On a Location read: another location with the same Name (case-insensitive) has already been read earlier in this run. On a Union read (outside this Org structure family): another union with the same Name has already been read earlier in this run. Both are within-run checks only. | Record skipped | Rename the duplicate record in Payroll so each Location (or Union) has a unique Name, then rerun the sync. |
Confirming the Error
- Open Sync History and find the sync execution in question.
- Open the step for the Payroll connector.
- Find the row for the affected entity: Department, Location, Cost Code, Employee, or Contractor.
- Check the Errors column for that entity row. Every message in this article is logged as an Error, and a non-zero Errors count is the signal that one or more records were skipped.
- Open the errors list for that entity row and match on the fixed part of the sentence (for example "is required by Payroll" or "has already been read"), not on the values inside the quotes, since those values are specific to your data.
- Confirm the skipped record does not also appear in the Added, Updated, or Unchanged counts for that entity. A record that produced one of these messages was not written or read at all.
A non-zero Failures count for this entity is a different kind of problem than the messages in this article. Everything above is logged as a validation Error that causes one record to be skipped, not a Failure. If Failures is non-zero, that points to something else going wrong during the sync attempt itself and this article does not apply.
Resolving the Error
Cost Code Required or Too-Long Fields
- Identify whether the message came from a read step or a write step (see How to confirm).
- Open the Cost Code record in the system that owns the field: Arcoro Time for a missing Name on a read, or the sync's source system for a missing Id, missing Name, or a Name/Id over 50 characters on a write.
- Add the missing value, or shorten the Name or Id to 50 characters or fewer.
- Rerun the sync and confirm the Cost Code no longer appears in the Errors list for that step.
Cost Code Duplicate Name on Read
- In Arcoro Time, find the active Cost Codes that share the same Name (and, for the Name-required case, the one with a blank Name).
- Rename or correct the Cost Codes so each active Cost Code has a unique Name.
- Rerun the sync and confirm both Cost Codes now appear in the read results instead of the Errors list.
Cost Code Duplicate Matches on Write
- For "Attempted to write more than one cost code," find the two source records sharing the same Id and Name and merge or correct one of them in the source system.
- For "Multiple matches were found for this Cost Code," find the duplicate Cost Codes already saved that share the same identifier and Name, and remove or rename one of them.
- For the Intacct identifier version of this message, escalate to Arcoro Support as the message states.
- Rerun the sync and confirm the Cost Code now writes successfully.
Department Duplicate Code
- In the source system, find the departments sharing the same Code that was named in the message.
- Correct the Code on one of them so each department has a unique Code.
- Rerun the sync and confirm both departments now appear in the Added or Updated counts.
Location Required Fields and Duplicate Name
- Open the location record in the source system.
- Add whichever field the message names as missing: Name, Physical Address, Address Line 1, City, State, or Postal Code.
- If the message is about Name length, shorten the Name to under 100 characters.
- If the message is about Postal Code length, correct it to at least 5 characters.
- If the message says the Location was sent to Payroll multiple times, find and correct the duplicate Location Name in the source data.
- Rerun the sync and confirm the location now appears in the Added or Updated counts.
Location Address Change Blocked
- Open the message text and note the address values it lists as currently stored in Payroll.
- In the source system named in the message, change the location's address fields back to those exact values.
- If you genuinely need the address changed in Payroll, you will need to make that change directly in Payroll rather than through this sync.
- Rerun the sync and confirm the location no longer appears in the Errors list.
Deactivating a Location That Is Still Someone’s Primary Location
- In Payroll, review the list of employees or contractors named in the message.
- Assign each of them a different primary work location.
- Rerun the sync to deactivate the location.
Location or Union Duplicate Name on Read
- In Payroll, find the two Locations (or, outside this family, Unions) that share the same Name.
- Rename one of them so each has a unique Name.
- Rerun the sync and confirm the record now appears in the read results instead of the Errors list.
Location Duplicate Matches (Existing Records)
- Escalate this one, as the message itself instructs. Do not attempt to pick or delete a record without guidance.
Primary Work Location on Employee or Contractor Records
- If the message says Work Location is required, assign a Primary Work Location to the employee or contractor in the source system.
- If the message says the Work Location could not be matched, confirm a Location with that exact name and capitalization is active in Payroll.
- If no such Location exists yet, sync or create the Location in Payroll first, then rerun the Employee or Contractor sync.
- If the Location exists but the name in the source system does not match exactly (including capitalization), correct the Primary Work Location value in the source system to match Payroll's Location Name exactly.
- Rerun the sync and confirm the employee or contractor no longer appears in the Errors list.
When to Escalate
If any of the following occur, you may need to reach out to Arcoro support for additional assistance.
- The error persists after the data has been corrected, and the sync has been rerun.
- The message text in the log does not match anything in the table above.
- The message names a duplicate record already stored in the destination ("Multiple matches were found for this Cost Code," the Intacct identifier duplicate message, or "has duplicates in CheckHQ or Hub"), and you cannot see or remove the duplicate yourself.
- The log text looks like it is passed through from Payroll's own error response rather than one of the Arcoro messages listed above.