Salesforce to Xero

Salesforce to Xero Integrations are generally based off the Opportunity to create Invoices in Xero, but that is often not enough flexibility. 

  • Can't do part payments - eg if you take a 20% deposit up front. 
  • Some apps don't allow you to send different Record Types over with different data, so that makes it very very limiting. 
  • Some apps don't allow you to send over two Tracking Codes - even though the Xero API allows this. 

Xero is weird. There is no concept of an account code (or contact code in their terms). They do have this weird URL link thing that you can put a URL directly to the Salesforce Account record, but that is just a one way link, and not an integration. 

If you send out invoices from Salesforce you could create the Contact in Xero as a concatenated string of Account Code + Account Name or similar, but that would go on the invoice if you are sending the invoices from Xero. 

Also think about do you need to sync contacts from Xero to Accounts in Salesforce. I would strongly caution against this - make Salesforce your single source of the truth. 

Also, do you need to sync everything to Xero. If you have a good enough record of all transactions in Salesforce, maybe manually doing a journal entry for daily transactions is enough. But accountants will not like this - I can guarantee it.  


The comparison of Xero Integration tools was first done in 2014, and since then a LOT has changed. Breadwinner bought Dime, OneSaas completely rebuilt their product, and about 5 new integration products have been released. 

Beware that I've only updated the OneSaas notes as of Jan-2018. 


(Updated Jan-2018)


(yet to be fully investigated)

Automated(tick)(tick)(tick)(tick) Setup Requ(tick) Setup Req
Manual Button to Sync(error) (there is on in OneSaas, but not in SF)(tick)(error)(tick)(error)
Sync TimeOne Hour
15minsTwice Hourly at fastest, up to DailyN/A
Create an Invoice with one line item from an Opp with no Products(tick) Sort of (see mapping below)
Automatically updates payment status(question)
Modify the Invoice if it has been updated in SF(tick)
(error)(tick)(tick) Until Authorised
Copy of the Invoice attached to the Opp(error)
(error)(tick) Button(tick) Button
Set the branding of the Invoice(error)
Set the reference on the Invoice(error)
Match the Contact or Create new(tick)
(tick) Email(tick) Configurable matching(error)
Choose how the Contact is created(tick) No good options
(tick) Formula(tick) Configurable to a point(error)
Update Salesforce with the Invoice Number and/or Status that it is sent.(error) Updates OneSaas only
Create your own Invoice Number(error)
Have Xero create the Invoice Number(tick)
(tick)(question) I think not(tick)
Set status to Authorized (note, must have mandatory fields).(tick)
(tick)(tick)(tick) button (auto did not work)
Create Xero Invoice from Custom Object(error)
(tick)(tick) with configuration(tick) with configuration
Use a field other than Amount to create Invoice (eg for deposit invoices)(error)
(tick)(tick) with configuration(tick) with configuration
Only create invoices based on Opp Record Type or similar(error) ALL Opps only
(tick)(tick) with configuration(tick) with configuration
Create invoices with different tax types? 

Prevents duplicates if Opp is set to ClosedWon again?(question)
(tick) Set criteriaNANA
Logging or stats showing what has been transferred to Xero

(error) Only in OneSaas - not in SF.

(tick) BasicThere is some error logging it seems(error)
Can do customisations (paid)(error)
Multiple Integrations in the advertised fee(tick) But multiple SF's won't work
Set the Due Date(tick) Offset
(tick) Field or Offset(tick)(tick)
Set Tracking Codes(error)
(tick) One only set on the Integration. Tracking Code can come from SF but must already exist in Xero(tick)(error)!!!!!!!!
Will create a tracking code option (error)
Multiple Tracking codes(error)
Can stop and start easily and sync missing data(tick)
Syncs all Invoices to Salesfirce(question)
Set Account Codes(tick) all the same
Handles Payables and Receivables Invoices! (question)

Not included in this list: 

  • Multicurrency

Case Study 1

Looking at the options for integrating Salesforce with Xero for an NFP. Mid sized NFP but with very limited budget. Large volume of shop transactions. Low volume of donations. The NFP is run by an Accountant who has always used MYOB, so using Xero will be enough of a challenge so I need to make the Salesforce to Xero part really seamless. They don't have a huge budget for this so as much as I'd like to say just use Breadwinner, I know it's probably not going to be an option. I know I can knock something quickly up in Zapier, but I need to investigate ALL the other options that are out there now to ensure we are going down the right path. 


  • Create Invoices in Xero automatically - transactions initiate on the website and come into Salesforce from there (that bit is already set up, and we don't need to mess with it). 
    • Contact Details - yes, the Accountant is insisting on the Contact details being replicated in Xero. I am yet to convince her that this is not needed. 
    • Different Tracking Codes for different products sold. 
    • Different Account Codes for different products sold. 
    • Data NOT coming from the Opportunity. I could move everything to the Opportunity, but that's extra work should be NOT needed. 
    • Potentially create Invoices using products - but I'm going to try to not have them to have to create Products in Xero because they are already created on the Website, and you don't want to have to create them in multiple places. 
    • If transaction is paid already (using Eway on the website), then Invoice is created as Approved, otherwise created as Draft. 
  • Update Salesforce when Payment is Received. This is optional, and dependent on how much the integration costs overall. There are times when the website transactions are created and the person can send their payment through via EFT (remember, this is an NFP - no matter how people want to give them money, they need to accommodate this). So when the EFT payment comes through, into Xero, the website needs to be updated to say that the payment is received, so their digital product can be delivered or their physical product shipped. And of course Salesforce needs to be updated so we have a fully reconcilable list of transactions between Salesforce and Xero. Remember, in NFP world it is sometimes more cost effective to do things manually than pay for software to automate it, as volunteers are cheaper than software. I know that's a bit of a fallacy in the long term, but it's definitely something we have to factor into the cost equations. 

So really simple requirements. 


  • Product is purchased on Website - payment is processed via Eway (all working well now). 
  • Transaction is automatically recorded in Salesforce (all working well now). 
  • Salesforce automatically creates invoice in Xero
  • A few days later, bank feeds create transactions in Xero
    • Now, remember as with all payment gateways, there is one settlement per day for all transactions that came through on that day - so sometimes you will need to look at the Eway settlement statement to see which Invoices this settlement transaction will match to. 
  • Match the Invoices to the Eway settlement transaction. Ensuring that the Eway fees are recorded to the Fees Account Code
  • Voila! Everything recorded and reconciled. 

(A lot easier than the completely manual process now where all website transactions are manually created in MYOB when the bank statement is downloaded from the bank each day, and marked off from a printout of transactions downloaded from the website, and cross referenced with a printed statement of the Eway transactions). 


Salesforce (Custom Object)XeroNotesOne SaasInvoice ThisSFX
From Custom Object

(error) - big issue(tick) with configuration(tick) with configuration but I will have to check the VF override
StatusStatusApproved if Paid via Eway(error) Can only set to one status (tick)(tick)
Transaction DateInvoice Date
Expected Banking Date 
(Transaction Date +2)
Due Date
(minus) Can only be a default value(tick)(tick)
Transaction TotalInvoice Total
GST Included (checkbox)
formula to make Tax Type
Tax Type

"GST Included" or 

"GST Excluded"

(error) Can only be one type - not per item, unless using Salesforce Products(tick) from formula field(tick) from formula field
TotalLine Item Total
(error) - would have to build this into the Description(tick)(tick)
ProductLine Item Description
(tick) Would have to be a field updated by workflow to include all the data needed by Xero(tick)(tick)

Product (optional)
(tick) Can create products in Xero(error)(error)
Account Code
(formula based on Product Type)
Account CodeDifferent depending on what the product is (or Donation)(tick) Yes, nicely done based on what text is in the description(tick)(error)!!!!!!!!
GSTTax Amount
(error) Not possible PER transaction(tick)(tick)
Payment Method (eg Eway)

(tick) We would have to put it all in the description field(error)(error) in Description only
Contact DetailsContact Details

(tick) Can set ALL transactions to say "Online" customer

Or the Customer, or the Customer Organisation

(tick) with configuration(tick) with configuration
Tracking Code 1 (formula)

Tracking Code

Tracking Option

State is one of the Tracking Codes







Tracking Code 2 (formula)

Tracking Code

Tracking Option








With no per-transcation Tax Codes and no Tracking Codes, it's just not doable. 
Plus we would have to move from a Custom Object to having everything in Opportunities and Products, and manually create the Products in Salesforce when they are created in the Website. 
I'm going to say a big NO! 
Yes it could definitely workNo Tracking Codes, could almost live without, but no Account Codes it's an absolute no, despite the great features of the eWay integration. 

Case Study 2

Small NFP client - mainly donations and a small shop. We are using Payments2Us for the payment gateway, so every payment is in Salesforce, and then we create an Opportunity for each payment. (Creating an Opp is important when using the Nonprofit Success Pack - NPSP as the roll up summaries of donors are pre-built in. But also think about not creating Opps (it's just extra data) and using Rollup Helper to create a few key rollups to the Account and Contact). 

We want the Opportunity to automatically create an invoice in Xero when it is set to the stage of ClosedWon (which is actually on create). We want the Opportunity to do the following field matching to Xero. 

OpportunityXeroNotesOneSaasZapierInvoice ThisSFX
From Opportunity

(tick) with configuration(tick)

StatusAuthorised (as they are all donations that have been made)(tick) Can set as Authorised. 
(tick)(tick) but it did not work automatically
(tick)(tick) Field(tick)(tick)
DateClosed+2DueDateOr Banked Date from P2U(minus) Only Date Offset(tick) Offset(tick)(tick)
AmountInvoice TotalINC GST(tick) Per Integration(minus)(tick)(tick)

Tax Type"GST Included"(tick) Per Integration (tick) Per Integration(tick)(tick)
AmountLine Item Total
(tick) Auto(tick) Field(tick)(tick)
(tick) Auto(minus)(tick)(tick)
QuantityQuantityUsually 1(error)(tick) Fixed(tick)(tick)
DescriptionLine Item Description
(tick) Description Field(tick) Field(tick)(tick)

AccountCodeDifferent depending on what the payment is for(tick) Can be different per line item (eg Based on description field)(tick) Per Integration(tick)(error)

Tax Amount
(tick) Per Integration(minus)(tick)(tick)

Tax Rate
(tick) Based on Tax Type(minus)(tick)(tick)
(formula field)Payment Method

Transaction Code
(tick) We would have to put it all in the description field
(tick) description(tick) description
(formula field)ReferenceDifferent depending on what the payment is for(error)(tick) Field(tick)(error) or on description
Account DetailsContact Details
(tick) Customisable, which is good(tick) Email Only(tick)(tick)

Tracking CodeThe name of the tracking code we are setting - eg Event(error)(tick) Formula (note - must exist in Xero)(tick)(error)
(formula field)Tracking OptionThe name of the tracking code option we are setting eg EventName(error)(tick) Formula(tick)(error)

If it were only donations and only the one type of donations with all the same tax code, maybe, we could work around the limitations of OneSaas, but you know NFP's next week they will want to do events or a shop, and then your'e stuffed. So it would have to be a NO! Yes, doableYes, doableNot doable without Account Code!

We can't use OneSaas because Opps are used for a feature other than Invoices also, and OneSaas only syncs ALL or nothing. 

So, here's what I would suggest - Use Zapier! For all Transactions that don't need fiddling with - eg they are Payments that have been created in P2U, have been paid (or refunded) and created as an Opp, just use Zapier to create them. This will set the tracking code and these invoices will be created as Approved in Xero. This will cover 90% of the transactions. 

Case Study 3

Commercial org, low volume, high value transactions. Uses a Salesforce OEM App, so no Opportunities. Multiple transactions per customer. Low volume of customers, so they could potentially be stored in Xero. Potentail to also record purchases in Xero. Invoices currently sent from Xero but we want to move everything to Salesforce as the single source of truth. Really important for Sales Reps to know, and be notified when payments are received in Xero. Then Automate Receitpt to be sent from Salesforce. 

Even for the basics, I think Breadwinner is going to be the only option, but as we need Breadwinner Enterprise to create Invoices from a Custom Object, then we have the ability to do all sorts of things, even if it is later down the track. 

I can use InvoiceThis after looking at it further. I would really love to use SFX for this client but the no Account Code and no Tracking Code rules it out. Both InvoiceThis and SFX I can customise enough to create the Invoice record from the Custom Object. 

I will have to be very aware of a) the API Calls, b) the Setup and Configuration costs and c) the security model for InvoiceThis. 



I haven't yet done a full investigation of this product, but it definitely looks like the No. 1 option for Integrating Salesforce and Xero now. 

See the Demo Videos on their site and I am sure you will find a reason that means that Breadwinner will work for you. And if it doesn't you've got two options - go down to Zapier and deal with the occasional failures and manual intervention or go up to a custom development with Trineo. 

OneSaas (thumbs down)

Australian product.

Does way more than SF to Xero. 

Basic app for AUD$49/month (to use Salesforce) which includes 1 accounting app and 5 eCommerce or CRM. But that still only gives you 600 transctions per month - that is not a lot. It's $12 per additional 500 transactions. Hourly sync. You need to go up to the Unlimited app for AUD$99 per month for unlimited transactions, and that includes unlimited connections also. It is not bad pricing. 

Easy to connect to Xero and Salesforce. 

Really limited setup structure.

Data has to go through OneSaas - doesn't use a direct connection. 

Huge limitation is that OneSaas will ONLY connect to Opportunities and Orders (orders is new since the last time I checked, so that might be an option for my Case Study 1). 

Here is the Salesforce to Xero help documents

Salesforce to Xero


Creating of Invoices in Xero starts off looking like it's quite customisable - but looks are deceiving, it's not actually very customisable at all. There are a few options for how to choose which Xero Statuses are set, which Customers are used and how Products are handled. 

There is a concept of a Paid sales invoice - not sure how that translates to Opportunities. Turns out it doesn't seem to at all. There is no concept of a "Paid" Opportunity, and there are no customisations allowed, so there is really no way of setting anything different for paid or unapaid opportunites as different statuses in Xero. 


How on earth did I miss this first time around - see that tiny tiny funnel icon? 

You can filter Opportunties that come through from Salesforce to go through into Xero. 

But what are Tags and how do they get onto the Invoices in OneSaas? There is NO Documentation on this in their very very limited help system. 

NOTE: ALL opportunities are still retreived from Salesforce, it just filters what to send to Xero. 

Products can't be filtered! 


When it come to tax, things are again limiting. 

If you use Products then the product can determine whether tax is applied or not - this is quite straightforward. If you don't use products, then well, it is just very very weird. 

you get one variable for domestic and one varaible for foreign - nothing based on something that would be useful - like a custom TAX CODE field on the Opportunity. What are these variables? Well they are NOT varables at all. They are hard coded words "Salesforce Country Tax" and "Salesforce Foreign Tax", that become those selected Tax Codes in Xero. It seems you CAN change the wording of this in OneSaas but the funcationality would still be limited it seems.  

It seems that the Salesforce Country Tax or Foreign Tax is set based on the Country of the Account. I wonder in what sort of business you would have to be to have every transaction created for every Australian company as one tax rate and every transaction created for any company outsite of Australia as another tax rate - and absolutely no variation from that? I just had another client change their whole project management system becuase the invoices generated from it would not allow individual line items to be ex GST or inc GST, so they had issues when exporting and importing the invoices to their Accounting System. 

Daily Summary

OK, this is a nice option - you can post one transaction of a daily summary from Salesforce to Xero. This might be good IF a) you could guarantee that your payment gateway had exactly the same definition of day as OneSaas does, and b) there are NO other transactions entered into Salesforce at all other than transactions that go through your payment gateway. Not sure this would ever be a valid scenario. The Daily summary option is only avalable on the Unlimited Plan. 

Account Codes

Oh, finally some customisation. You can set a default Account Code OR you can define which Account Code is used based on some text in the Line Item. This is good! It works based on details entered in the Description field in the Salesforce Opportunity. Finally something good, and customisable!  

It creates these weird codes in OneSaas that you can't seem to change - well you can, but they would probably just be re-created. But it does get through to Xero fine. 


NOTE: OneSaas does NOT support any customisations or any custom fields of any sort. See I don't know of ANY Salesforce implementation that I have done that has a standard Salesforce setup for Opportunities. Plus there is NO WAY to configure OneSaas to ONLY sync say Opportunties of RecordType. 

OneSaas have just started a Developer only service named Hub, so I wonder if that would be useful for customising how your integration works. 

Use OneSaas with Caution

Just to be clear here - with OneSaas having no customisations available and with the lack of the ability to filter any Opportunities. OneSaas is an ALL or NOTHING option. It means that EVERY Opportunity set as Closed Won in Salesforce must have the same

  • Invoice structure
  • Contact naming structure
  • Tax Rate (see notes below)

So, if you have some Invoices that are Inc GST and some that are Ex GST or some that need to go to one bank account and some that need to go to another bank account, you just can NOT use OneSaas. It is so disappointing that this product is so limiting.

There is the ability to have different line items go to different account codes, so that is useful at least. 

The good news is that there is apparently a lot more you can do with filtering if you use products. But for small NFP's, donations don't have products.

Xero to Salesforce

  • You can udpate Contacts in Salesforce if they are updated in Xero. Basically I don't want my Xero Accountants updating data in Salesforce. I would not turn this on. 
  • You can create an Opp in Salesforce if an Invoice is created in Xero. Use with caution - try and have one process for everything. Create the Invoice in Salesforce always! 
  • You can update Products in Salesforce if a Product is created or Updated in Xero - again, use caution. If Salseforce is your single source of the truth, then make sure they are only created in Salesforce. 
  • You can swap Billing and Shipping Address - due to this
  • You can get Xero to create Invoice numbers - cool, but will that update back to the Opp? Again, I think let Salesforce create the Invoice nubmers, and have a different Invoicing Number sequence than Xero usually uses. 
  • You can set a default due date, which is good for some transactions, but again this obsession with OneSaas that every transaction coming from Salesforce is exactly the same and every customer they deal with sells Products through Opportunities. 
  • It does NOT, however, update Salesforce to say that the Invoice has been paid!  


(for Opps without products, Inc GST)

OppOpp records

Tags(used for filtering)Seems to be no way to set Tags in OneSaas from Salesforce

(error)Invoice Number Invoice #Still does not seem to be a way to send Invoice No. over from Salesforce




Line Item Description

Line Item Description

Line Item No. Automatic


Invoice Date

Date Offset (settings)Due Date


Line Amount

Total Amount

(error)Shipping Method

(error)Purchase Order #

AccountAccount records

AccountTag to use for filtering

RecordType as tag 

Account NameOrganisation

Contact Name 

You can configure to send over Contact Names, but don't

Billing AddressBilling AddressPostal Address

Shipping AddressShipping AddressPhysical Address

(error)Home Address

Business Number

Customer Number



ContactContact records

ContactTag to use for filtering

RecordType as tag 

Full NameTitleContact Name

Salutation (Title)Salutation(error)

First NameFirst NamePrimary Person First Name

Last NameLast NamePrimary Person Last Name


EmailWork EmailPrimary Person Email

(error)Home Email(error)

The Good

  • Very good linking back to Salesforce and back to Xero from One Saas to see exactly the matching that has been done. Auditors will love it. But I don't want to be logging into OneSaas. 
  • In Xero you can open the transaction directly in Salesforce, which is nice, even though it says OneSaas (but I think that is a setting)! 
  • Really nice logging of everything that is happening
  • You can manually synchronise with one click. 
  • The updating of Invoices that have been updated in Salesforce works really well. (Note, this would only work before they have been approved in Xero, and since the people using Salesforce have NO VISIBILITY that the Invoice in Xero is approved, they don't know if they are making changes) 
  • You get to choose how the Contacts will be created in Xero.
  • You can sync historical data by setting the Integration Start Date, but watch your API limits if you do that. 
  • You can set the Status of the Invoice to Authorized. 
  • Uses Salesforce OAuth authentication.

The Bad

  • I just don't see the benefit of having another third party system to store all this valuable information in. I just don't like the concept of having all my data in yet another system - in OneSaas. I would prefer it to be a direct sync. Especially with all the privacy implications surrounding data these days - it just connects to your Salesforce and downloads ALL your contacts - no matter whether you have ever had a transaction with them or would ever likely have a transcation with them,. 
    • One way around this is to set up Sharing Rules on your Accounts and Contacts with your Integration User to ensure that only the Accounts and Contacts, and only the fields you absolutely need are even visible to the Integration. But what if you are an NFP with no money and need one Integration account to do multiple integrations. That might not be viable. 
    • There is tags created on Organization records in OneSaas by default and the Account RecordType gets created as a Tag, as well as say a Xero Supplier. You can at least filter which Xero Contacts get created in Salesforce by filtering on Tags. There does note seem to be a way to filter Accounts get created in Xero, but would that then limit transactions from being created, so it's probably not wise to filter them.  
    • Now there is NO detailed restrictions on what access you give to your Xero via the API, it's all or nothing. This is another important reason to ensure that you are NOT creating Account and Contact data in Xero unless it is absolutely necessary. It is just a risk for extra places that could be open to a data breach (here's hoping it never happens though). 
    • It needs to PULL all Accounts from Salesforce into OneSaas, then all Contacts from Xero into OneSaas to work out which ones are duplicated. I really just don't get this. The customer knows more about their data than anyone, so if they say that ONLY these Accounts will ever be Invoiced, then allow me to only sync those Accounts - not EVERY account in the system by default. 

  • There are buttons in OneSaas like Merge Duplicates. I don't WANT anyone to be looking at or editing the data in any system other than Salesforce. I just don't need the whole extra system to manage. 

  • It brings ALL your Chart of Accounts into OneSaas. As an Accountant do you really want that mess anywhere else other than tucked away in your Accounting System (and no, don't try and tell me you have seen a perfectly structured, neat, Chart of Accounts!). 

  • There is NO logging back to Salesforce to show that the invoice has been processed to Xero. For Sales reps that have no login access to OneSaas and Salesforce, there is NO feedback to them that their client has got the invoice. Not cool. 
  • You could even delete the Opportunity in Salesforce and it is still in Xero. 
  • When looking at the contact record in OneSaas you can't see the related invoices. 
  • No way to use other than the default branding of your invoices in Xero - that would be OK if you are never sending invoices from Xero though. 
  • There is NO WAY to pull Opps into OneSaas based on different criteria - only All Opps after the date specified are synced. I asked OneSaas specifically about this in 2014 when they were creating their new App. It's 2018 and there is STILL no way to do this. 
  • Beware of Contact Duplicates!
  • Don't change your invoices in Xero!
  • I don't have products, I don't want to use Products but on the first sync it has an issue that I don't have a default price book enabled. I don't want or need a price book enabled! 


  • If you have a very straightforward setup and all opportunities need to be created as invoices and you have a very hands-on accountant who will keep on top of things and your accountant is not so worried about how things are created in Xero, then sure, use OneSaas. But I have NEVER seen a Salesforce set up like that. So in all honesty I STILL can not recommend OneSaas. There seems to have been only very minor updates since 2014 and still nothing to handle Xero Tracking Codes. This is really not acceptable. 
  • I would also recommend creating the Invoices in Salesforce so the Sales team has control over sending the invoices to the Client.  


Workato is an interesting beast. I don't particularly like integration products for just integrating two apps, but if you have multiple apps, and you have a cluey data specalist who can set up and run your integrations, then it's definitely an option. The major advantage of Workato over Zapier is that it handles Updates - Zapier is very limited and only handles integrations on record creation. But the difference in pricing completely reflects that. 

Workato has an interesting pricing model - there is a Base App, for US$299/month and Xero is in the Base teir, but Salesforce is in the Professional tier so you need the US$599 per month option, and that puts it out of the range of many an NFP. Plus the additional cost of setting up the integration, plus you have to have someone montitoring the integrations to make sure that things are happening smoothly. 

These are all the triggers you get with Xero 

Here's the triggers from Salesforce so it's definitely cool that you can trigger a Workato workflow based on a record being deleted. And they now support platform events too! And any custom object and any custom field in Salesforce can be used for your sync. 

You can do so much with this product but each and every integration needs to be built by you and maintained by you. You can start with pre-built recipies but you always need to tweak them for your customisations.  So it's easy to go overboard and think of all the cool things you want to do, so just stick with the basics first. 

Some of the cool features of Workato is that you can do loops, branch off to antoher flows, do if / then statements and almost any workflow you can imagine. 

Here are the main receipies you will want to use:

So bottom line is, if you do under 500 invoices per month, and are just doing a straight Salesforce Opps to Xero two way sync, then Breadwinner is still cheaper, and it's basically plug and play. So there is no way you would get Workato if it was JUST basic Salesforce to Xero. 

But if you say have a basic Salesforce to Xero two way sync but it's from Custom Objects (like my Case Study 3 that uses an OEM app), then US$599 per month might be better than Breadwinner Enterprise - but talk to Breadwinner about your options on that one. 

Commercient Sync

Looks like I can't review this app, they won't talk to me, they will only talk to my client. Nope, as a professional Salesforce Consultant, it is my job to completely evaluate apps before I even consider mentioniing them to my clients. This is not a good sales strategy. 

I haven't installed this or looked into the full features yet, but there are a few points to note

  • Calling Xero and ERP is a complete stretch. There is no way Xero is an ERP system. Yes Xero can do basic warehousing but I do not call that ERP. 
  • Their appexchange listing still has screenshots from the first iteration of Lightning (vertical nav, or the Windows 8.1 of Lightning). It just shows to me that they have not updated their product in a long time, or they just don't care enough about Salesforce (they do all sorts of other integrations also). 
  • Their data sheet is still in Salesforce Classic - again, shows they are not updating thier app enough. (The title of the Data Sheet is Sage sync. So they must have just done a find and replace from Sage to Xero - yep, their screenshots still show Sage also! This does NOT fill me with any hope that this app will be good). Other clangers in the data sheet... 
    • "Commercient software provides XERO users with a “CRM in the cloud” experience." A line directly from their data sheet - what are they talking about? Both Xero and Salesforce are already in the cloud! 
    • "Commercient has provided the means to make the data searchable in Salesforce CRM. " No, Salesforce just does that. This is just showing that they really don't understand what Salesforc is. 
    • "Automatic XERO Sails Order Email Engine" oh dear
    • "The result is that Commercient significantly reduces the likelihood of exceeding the Salesforce CRM AP XERO limits." The sentence doesn't even make sense. I like what they are TRYING to say, but it's just not saying it. 
    • " Salesforce CRM API is included at no charge." of course it is! Salesforce don't charge for access to their API! 
  • Products and Price Books seems to be an optional extra
  • They have discounts for NFPs which is good

So now I'm really interested in trying it out. The Quickbooks to Salesforce demo on YouTube looks really interesting - lots of data avaible. But you click Get It Now on the Appexchange and all it does is send them your details. Grrr. I just want to evaluate the app myself. 

Dime for CRM

Note: Dime for CRM is no longer, and all Dime implementations are moving to Breadwinner. See Trineo are still doing the Dime for CRM Developer product and custom integrations. (just checking with them as I can't see the developer documentation anymore. I haven't heard back after a month, so I think we can say Dime is dead. Sad). 

Carry the One (thumbs down)

Look, I just can't bring myself to look at CarryTheOne again. It did not meet up to any expectations the first time I looked at it back in 2014 and looking at the website where they list "NEW!" features as at 12 June 2013, I'm assuming they haven't done much updating in the past few years. So I am going to make an executive decision and remove my comparisons of CarryTheOne. The notes below are from 2014 but I just updated the Australian pricing due to the exchange rates! 

UK Company. They mainly do e-commerce integrations. Could be good if you also need to integrate an E-commerce app - as extra integrations are cheaper.

The good

  • Automatically applies payments to the invoices created - Winner!
  • Set Xero Tracking Category - Winner! (However, it is only one set tracking category option, not based on a value from the Opportunity)
  • Invoices are intelligently matched to existing customer records - wonder how - based on email address of contact? but which contact? 
  • Has a nice way of setting a field for Payment Type and then choosing whether to approve the invoices for that Payment Type or even whether to import opportunities with that payment type. This is only valid for a Picklist though. So, if you want all Invoices only for a particular RecordType, then create a picklist that matches that RecordType, run a workflow to set that picklist to match the record type. 

The bad and the ugly:

  • Horrible horrible UX. Very old product, that has not been updated in eons. 
  • Error messages to tell you what you have done wrong in configuration are in the same text as help messages - ridiculous! 
  • Horrible help
  • Brings values from your Salesforce back into the configuration screen but does not tell you that that is what they are, and it is quite confusing. 
  • Terrible trial setup - have to set up a subscription in Payway just to try it out for a few days. 
  • Such a terrible terrible app - you set it all up, it says it's running but it gives you no indication that it is running or doing anything. 
  • There was too many other weird things happening that I would have to go through their support process and spend a lot of time working out. Their support was helpful, but I just can not recommend this app at all. 

The weird

  • They require an email field on the Account object, which is wrong in so many ways. Unless you set up a Primary Contact field and then a formula field to reference the primary contact. 

19.99GBP per month. AUD$43 - so comparable. However, this is only for one integration, and the very weird weird way it is set up, you would probably need to do multiple integrations, so it will become expensive very quickly. 


I normally don't include Zapier when talking about integrations, but in this case it is interesting. In my testing this was the ONLY app that would do what I wanted in my Case Study above. 

Zapier starts from only US$25/month. 

SFX Connector

The website looks good

Another Australian company, based in Sydney. Riverdale Cloud

AU$39/month - so very good pricing. 

Setup and Configuration

  • Notes
  • I do not like when apps connect to seemingly random connections
    • Especially since eWay is optional (and I won't be testing it). But I know that is probably a Salesforce limitation but hopefully the new Setup APIs will help with this. 
    • They note it in their documentation but just call it the SFX connector. I want more information that that! 
  • Oh wow, you have to go through all the Public Key BS like @Connect but at least this one is more automated. But why is this so? Why do other apps just directly connect to Xero rather than going through all this BS. 

Creating Invoices

  • Hmm, there seems to be something different in the help docs and the actual app - since it has been lightning-ified there is no Copy Opportunity Line Items button and the Line Items don't get populated from the Opp if there are no products on the Opp (generally for donations there are no products used). So I'm not sure if that is what that button dies, but it needs to. But at least the other fields get populated. 
  • Not sure what the Type field is - no docco on that. 
  • You can only have Invoice Numbers generated in Xero - not sure I like that. I like to have a different series of Invoice Numbers for the Invoices generated from Salesforce. 


  • The VF Page Invoice Override will make it very hard to customise it for not using Opportunities. 
  • Faaar out, just when I was starting to really like this app, no tracking codes - almost a deal breaker! 
  • Hmm, I created it as AUTHORISED and it created it in Xero as DRAFT this is not good. 
    • The Approval process in Salesforce is very strange indeed. 
    • And it actually did NOT approve the Invoice in Xero. 
    • Ah, so I set the status back to DRAFT and then the Approval worked. Bizarre. 
  • It does not use or sync Xero Products to Salesforce. Not an issue much for this client, but could be a big deal for many clients. 
  • No link in Xero to the Invoice in Salesforce. 
  • I had a JSON error when editing an Invoice. Not good. 
  • OMG where is the Account Code? You can NOT set the Account Code? It just creates it as the default Sales Account Code by the looks. Not good at all. 

Good Things

  • It has a direct link to Xero from Salesforce. 
  • Integration with eWay - my client who uses eWay will love this - the ability to charge a credit card directly in Saleforce is great. Of course, if you are not using eWay and are using Payments2Us with one of thier gateways, you can do that too. 
  • Adding Payments in Salesforce is a nice touch too! 
  • They have help docs on how to use Process Builder to auto create an Invoice - this is good. 
  • There is nice history on the Xero Invoice to say it was crated in Salesforce. 
  • Nice Send Invoice feature from Salesforce - it would be nice if it would use the new Lightning Emails though. 


  • Dammit, I really really want to like this app, but with no tracking codes it's almost ruled out. Why oh why would they do everything else quite nicely, and not handle tracking codes. Bizarre. 
  • Overall it's a bit ugly and needs a refresh - especially the popup pages. 
  • It's not as heavy handed as InvoiceThis becuase it doesn't sync Contacts or Products or Invoices, but it means that ONLY Invoices created in Salesforce will be visible in Salesforce? So it's only a one way sync. Not good. Again, I really want to like this app, but it's not letting me! 
  • No Account Codes is once again a feature that rules this app out! Sorry! 


Appexchange Listing 

Atlas Consulting, Based in Sydney

No pricing on their website or Appexchange. Interesting review on the Appexchange. 

Works with Professional Edition which is interesting. 

Setup and Configuration

  • Uses Quotes - not sure why, but let's see 
  • Notes
  • No no no, do NOT give me a page layout customised to the way you want it to look, just tell me what fields to add to my Page Layouts. Geez app providers doing silly things like this are going to be so caught out when modular page layouts in lightning come out. 
  • Oh dear oh dear oh dear, it's asking me to do something with Open SSL on my Windows PC. I do not want this. This is not good. Why can't it just use some form of direct connection to another cloud service - have they not heard of OAuth? This does not fill me with any confidence at all. And you click the download link that they provide and it's a 404! 
    • Ah, crap the "downloads" page on Open SSL only downloads in .tar.gz format and windows can't read that. So then you find the Binaries page and it says something that binaries are not supported etc etc. OMG if you were trying to do this for your own business you would, and SHOULD stop now. But in the interests of sceince, I am going to continue. 
    • So I download a binary for Windows 64 bit from a dodgy site and try to "install" that. There is no installer. It just says "Copy both DLL fiels into your application directory". What is an application directory? 
    • So then I tried another installer and it installed in my root directory - how rude! but now I have a cmd prompt with OpenSSl... we can continue. 
  • Wait, they have random long strings of commands that you have to type into this cmd window and they don't allow copying from their PDF instruction file? Absurd! 
  • Nope, then I get an error, something about it can't find openssl.cnf for reading. 

I give up. If you make your app this hard, it can't be for regular users to use, so I'm not going to even review it for regular users to use. Get a clue. Fix this ridiculousness! 

Invoice This

An app by Cause I Can / Clouding Around based in Melbourne. 

Their website says it's $89 per month but nothing to say if that's USD or AUD. But another appexchange listing says it's AUD $89/month. 

Can only create Invoices from Opps or Accounts - may not be flexible enough for my client. 

Very weird setup. First you have to install the package, then you have to install another package - the Xero Engine, it seems the other package is the bit that costs the $89 per month. This is really weird. Why would they do this? 

They seem to have good help docs, which is quite amazing as another ot their products has zero help documents. 

They handle Invoice Tracking Categories - good start! 

Their app is nice and lightning-ified. Good. 

Configuration and Setup

Not sure about the setup configuration options

  • Good that you get to choose an Email Template to send a Xero Invoice from Salesforce - that is a nice feature. 
  • Annoying that Xero does not have a good concept of uniqueness or Account IDs or Contact IDs, so you have to make them up, and they use FirstName + LastName + Email as the unique ID. NOTE that they don't state how you have to pre-fill all your Contact data wiht that unique ID and what impact that will have on your org when you try to create that as a Unique ID and find all the duplicates in your org. I'm not convinced this a good strategy at all. 
  • Then Accounts - really the only uniqueness you could use is Name - I don't see any other way you could sync between Xero and Salesforce based on anything other than that. We shall see. 

Now, about syncing. Not sure this is going to work. It seems to sync ALL invoices from Xero to Salesforce (from a starting date). I definitely do NOT want all Invoices from Xero in Salesforce. See the help docs. This is a security issue. There are invoices in Xero that do NOT belong in Salesforce. You will need Private OWDs and Criteria Based Sharing rules. 

They install separate objects for Invoices and Invoice Line Items, which is good. Because then maybe I can extend these objects. However, when you use an app like Payments2Us, this may become a bit of overkill. You have a Payment Trx record to record the receipt of a $2 donation. You have an Opportunity record to record that donation against the Account and Contact, then you need an Invoice record just to get the data into Xero. I know it makes it easier for them, but why can't they just create the Xero Invoice from the Opp? It's also a shame that for a one line item invoice I need two records. So now we are up to 6 x 2KB and 1 x 1KB data storage to store a $2 donation. If you were at the point of paying for data storage, it would almost cost more to store the one transaction. (Records are PaymentTrx, Opp, Opp Contact Role (0kb), Campaign Member (1kb), NPSP Payment (Optional), Invoice, Invoice Line Item, Invoice Payment - add an extra 2kb for any additional Task created along with this - hint, use Chatter instead, and if there is an issue, there will be a Log record).

Hmm, they are using URL Hacks to pre-fill an Invoice - this is not good - why not use Actions - especially since their app is nicely lightning-ified already. And I will definitely want this bit automated anyway. 

Geez, don't you HATE apps that don't set up their apps correctly - eg Recently Viewed lists that only contain Invoice ID - and related List of Invoice Line Items on the Invoice that only contains Invoice Line Item ID. Have some respect for your clients and finish settting up the app. Grr. (Not only this app, many apps do it too, and it's even worse with Lightning Pages).

Sending Invoices to Xero

  • You can send invoices as DRAFT, AUTHORISED or even PAID. Good. 
  • You can create Accounts Receivable or Payable. In my case we only want to do Receivable. 
  • It brings through Products form Xero which is good - so you can be sure that those that are creating Invoices in Salesforce have exactly the options as there are in Xero. 
  • It brings through all the Tax Codes from Xero - good. 
  • It brings through all the tracking categories from Xero - good. 
  • It brings in your whole chart of Accounts into Salesforce - not so good - No you do NOT need that information anwywhere other than Xero. Ensure you set up privacy on that object to only share key accounts with Sales staff. 

This might be a good app where you want Sales Reps to manually create Invoices and don't want to give them access to Xero, but the issue with ALL the Invoices syncing back into Salesforce kinda negates the security aspects of that. 

Now, there is a debate as to whether every donor's Account and Contact details should exist in Xero or not. My thoughts are no - they are in Salesforce, so you don't need to replicate them into Xero as then you have to keep them in sync. Your typical Accountant will say Xero is my domain, I want EVERYTHING in Xero, I don't want to touch Salesforce. But there can be a middle ground and unfortunately I think that accountants need to give up some of their control for the greater good here. Now, the way this app works, it probably actually works better to have all donor details synced. But I still don't want that, and it's doable by creating Paid Invoices only against a dummy account / contact named Donor, but it would be a bit of work to set it up. 


  • When you create the Invoice, the page has a lookup to Contact only - it does not fill in the Account on the Invoice record. Easy fix, but why should I have to fix it? It does put the Contact's Org Name in a text field though, which is nice, but wierd. 
  • When you create the Invoice and have a few line items there is no total on the page, this is really disconcerting. So you click Save and there is no Totals there either. Weird. Ah, it's an asynchronous process, so you have to refresh the page to see the totals. 
  • There is no Manual Sync button on the Invoice page. I would really like a Manual Sync item - especially if I'm in a hurry to get the invoice to Xero. Oh, there is a manual Sync button, you just have to add it to the page layout. This is their page layout, why wasn't it on there as standard? 
  • There is an Edit button and an Edit Invoice button. Luckily in Lightning we can remove the Edit button, but in Classic that is an issue and something we will have to train the users about. 
  • Hmm, the Account created from Xero did not have Address details in it. This is not good at all. Why would it do that? So you have hundreds and hundreds of accounts created in Salesforce that has a Name and a Xero ID and a Xero Record Type and that is it. That is not good. 
  • But a Contact record created from Xero DID have an address in it. Again, this is not good - why is it not on the Account also? 
  • Hmm, even Invoices created from Xero do not enter the Account onto the Invoice record. This is such a simple thing, why haven't they just done a simple trigger for this? Completely bizzare. 
  • There is nothing to say the Invoice was initiated from Xero or intiated from Salesforce. 
  • There is nothing to say that the Invoice has ben sent from Xero or sent from Salesforce - you are going to have to have a really good business process to ensure that a) the Invoice is sent and b) the Invoice is not sent more than once. 
  • I set it to Sync Invoices back from a certain date, and it did not do that. 

Good Things

  • It has a link back from Xero to the Invoice record. Good. 
  • After you configure the Invoice Page Layout (why wasn't this done as part of the package!) there is a direct link to the Invoice In Xero. 
  • The PDF of the invoice looks exactly like the PDF from Xero, this is good. I wonder if they generate it from Salesforce or Xero. 


  • It's an adequate app that handles the syncing of invoices well. It is priced well for what it does. I would probably recommend this app. 
  • You will need to heavily customise it to work for your business and have good business processes in place. But it is great that it is easily customisable. Things I would customise
    • Bring the Account Code onto the Invoice to aid in Critera Based Sharing (depends on the complexity of your invoices) 
    • Set up Private OWD and Criteria Based Sharing on every aspect of this app. 
    • Ensure Account is auto populated on Invoice
    • Lookup to custom object such as PaymentTrx 
    • "rollup" to Account to show unpaid Invoice amount. 
    • Status Indicator on Account to show if the Account has good credit standing. 
    • Automatically create the Invoice 
  • I do NOT like that it syncs all Invoices - at all. So you will need to work out how to do some criteria based sharing say based on Account Codes to ensure that Sales Reps do not see Invoices they shouldn't 
  • There is nothing about multi currency on their website so beware if you are doing anything with multi currency. 
  • Remmeber, you will NEED a separate User to connect to Xero (as with any Integration service - do NOT connect to Xero with your System Administrator Account. Now. how you actually do this with an API Only User, when you have to intiate it from the UI, I don't know. Hopefully you can set this up, then change the User to be an API Only user after that. 
  • Make SURE you set up all your duplicate handling and External ID fields BEFORE you connect this app, or it could create a lot of duplicates. 
  • Have some really good business processes around using this app - as with any app that Syncs data. 
  • Watch your API Calls - There wasn't a huge amount in my initial testing, but as it's syncing all Invoices it could add up. 

See also

My blog post on integrations.