When Your Own Automation Blocks the Sync
TwoCanConnect writes invoice totals onto Accounts and Opportunities on every sync. If your org has a validation rule on those records, it can reject those writes — and the sync fails through no fault of either system.
How you'll see it
The log carries one warning per rule, quoting the rule's own message, how many records it affected, sample record ids, and the exact formula snippet to add for that object. The most recent warning also appears as a banner on the TCC Configuration pages.
That replaces what used to be one error per record per cycle, which buried the cause under hundreds of identical entries.
The fix
Append a condition to your existing rule that says: ignore this save if the only things that changed are TwoCanConnect's fields.
On Account:
&& NOT(OR(
ISCHANGED(tccxero__Total_Amount_Invoiced__c),
ISCHANGED(tccxero__Total_Amount_Due__c),
ISCHANGED(tccxero__Total_Amount_Paid__c),
ISCHANGED(tccxero__Total_Amount_Overdue__c),
ISCHANGED(tccxero__Total_Amount_Credited__c),
ISCHANGED(tccxero__Total_Amount_in_Draft_Status__c),
ISCHANGED(tccxero__Last_Invoice_Date__c)))
On Opportunity: the same list without Total_Amount_Credited__c and Last_Invoice_Date__c (Opportunity has neither), plus ISCHANGED(tccxero__Total_Amounts_Remaining__c) and ISCHANGED(tccxero__Has_Approved_Invoices__c). The log's warning quotes the exact snippet for each object, so copy it from there.
On TwoCanConnect's own objects (Invoice, Xero Contact and so on):
&& NOT(ISCHANGED(tccxero__Last_Sync_DateTime__c))
Append it with &&. Salesforce rejects AND NOT(...) written that way in a validation-rule formula.
Why this works
A person editing a record never changes those fields — they're written by the sync. And the package only writes them when the value actually differs, so a save that changes nothing else won't trip the rule.
The result is that your rule keeps blocking people exactly as before, and stops blocking the sync.
Scoping the exemption to which fields changed rather than who is saving means nobody can bypass your rule by editing through the UI. The rule still applies to every human action, including the sync user's.
Required fields count too
It isn't only validation rules. A required custom field on Account or Opportunity rejects the sync's update just as firmly, and appears the same way in the log. Flows and triggers with their own guards behave the same.
After upgrading
Seeing this warning for the first time after an upgrade usually doesn't mean something new is broken — it means the warning is finally legible. Check any validation rules on Account and Opportunity that touch currency or rollup fields.
Xero
Real Estate
Equifax