Recently I had to write a custom integration which would sync customers found in QuickBooks with accounts found in Salesforce. We have been using Python to write all of our custom integrations so I have been using python-quickbooks and simple-salesforce. One thing that we noticed when syncing the two datasources is that due to validation rules inherent to QuickBooks, if you try to create 2 customers with the same first and last name QuickBooks will not create the second customer record. To get around this limitation I found that you can make sure that the second customer’s name is different in some way. The following fields can all be defined to make a customer unique:
Field | Maximum Length | Example |
---|---|---|
Title |
16 characters | Mr. |
GivenName |
100 characters | Jonathan |
MiddleName |
100 characters | Brentyn |
FamilyName |
100 characters | Smith |
Suffix |
16 characters | PhD |
DisplayName |
500 characters | Mr. Jonathan Brentyn Smith PhD |
PrintOnCheckName |
110 characters | Mr. Jonathan Brentyn Smith PhD |
What’s interesting is that the last 2 fields, if not specified, will be inferred from the first 5 fields. In the case that you are syncing data between QuickBooks and Salesforce you can simply set the DisplayName
to be in this format:
{GivenName} {MiddleName} {FamilyName} ({SalesforceId})
Using this format will make it so that no matter how many accounts have the same name in Salesforce you will still be able to store the corresponding customers in QuickBooks without an issue. It is also important to note that you can still define the PrintOnCheckName
field to exclude the Salesforce ID.