if you are upgrading from v1 to v2 of fmAccounting Link (Xero Edition) please review the following summary of the main changes before you start the upgrade process. Our version history page has further details of the changes in v2. Some important points to be aware of:

  • fmAccounting Link (Xero Edition) v2 was rewritten to use native FileMaker functions and script steps which were first introduced in the FileMaker 16 platform, so you must be running FileMaker 16 or higher to use fmAccounting Link (Xero Edition) v2.
  • It no longer requires a FileMaker plug-in which makes integrating with FileMaker Go, FileMaker WebDirect and FileMaker Server clients much easier
  • It will only work with Xero OAuth 2.0 apps.
  • we’ve removed the examples for the Receipts and Expense Claims endpoints that were in v1. These endpoints have been deprecated by Xero and will be replaced by a new Expenses API in the future

Primary Keys

We’ve taken this opportunity to update our primary key system. Previously we were using 2 fields that combined to generate the primary key in each table. For example in the Contacts table we had:



which combined to produce a value like ‘CT1670’. We’ve changed all the ‘_kp_xxxx’ fields to use the Get (UUID) function. So the calculation has a changed from this format:

"CT" & zz_Serial#

to just:

Get (UUID)

We have also removed the UUID fields in each table as these are now redundant.

We have retained the human readable numbers where Xero allow you to set the value, e.g for Invoice Numbers and the Contact Number. These are just for display purposes and also for linking to specific Xero fields where they allow the you to populate a number, such as the Contact Number, Invoice Number, Product Code and Credit Note Number. We are no longer displaying the primary key fields on the layouts but they are on the “DEV” layouts, and you can always add these back if you need access to them.

See below for details about specific changes to certain tables.


We’ve created a new field to store the Xero InvoiceNumber value:


This is an auto-enter serial number but you can modify this to suit your requirements here. This field must be a unique alpha numeric code identifying the invoice.

If you want to have Xero create the Invoice Number instead of passing this value from FileMaker just comment out this line:

["InvoiceNumber" ; Invoices::InvoiceNumber; JSONString];

in the Create Invoice in Xero script when it sets the $json variable with this value.


We’ve created a new field to store the Xero InvoiceNumber value:


This is an auto-enter serial number but you can modify this to suit your requirements here.

In Xero for ACCPAY Invoices (Bills) this field can be a non-unique alpha numeric code identifying invoice and will display as Reference in the Xero Web UI. We’re still using the _kp_BillID as the primary key for the Bills table.


We’ve changed the ContactNumber field to be an auto-enter serial number and are using this as the only match field to the Xero ContactNumber field. This field is displayed as Contact Code in the Contacts UI in Xero.


We’ve added a new field named Code to store the Xero Product Code – this gives users greater flexibility to use their own field here that isn’t tied to an auto-generated primary key field. We’re using a auto entered serial number to ensure this field is never empty, but you can easily change this without worrying about breaking the relationship between a Product and Invoice Items, Bill Itemss etc.

We also renamed all ‘_kf_ProductID’ fields to ‘Code’ so you are always matching a Code field against another Code field.

Purchase Orders

We’ve created a new field to store the Xero PurchaseOrderNumber value:


This is an auto-enter serial number but you can modify this to suit your requirements here.

Get All Scripts

We’ve removed any duplicated script that performed similar functions when downloading bulk records from Xero. We now have one script for each endpoint that passes parameters if it could perform different types of downloading, such as a date range download or a ‘all records’ download. See the version history for the full details of these.

Tracking Categories Layouts

We’ve removed the separate layouts that had the Tracking Category fields (e.g. Invoices Form Tracking) and combined these into the main ‘form’ layouts. If you’re not using Tracking Categories you can remove these 2 fields from the appropriate line items portals. We’ve also added Tracking Categories to the Credit Notes and Manual Journals examples.


We’ve changed the navigation header bar to use a native FileMaker Navigation button bar.

Unreferenced Scripts, Custom Functions and Fields

We’ve taken this opportunity to do a behind the scenes cleanup and have removed fields, layouts, custom functions, value lists and scripts that are not referenced or no longer required.