Skip to main content

Xero integration for expenses

Integrate Yokoy with Xero to automatically export expenses to the accounting system.

Written by Yokoy Team
Updated over a month ago

With the Yokoy expense integration for Xero, you can streamline your workflows by automating spend management data flows, reducing manual work, and ensuring accurate account associations.

With this integration, you can import Xero Tracking Categories as cost objects and Accounts as expense categories in Yokoy. Xero Contacts are synced with users in Yokoy, allowing any changes in names or status to be automatically updated in Yokoy.

When you export reviewed expenses from Yokoy, they are automatically posted in Xero accordingly:

Yokoy expense type

Xero concept

  • Privately paid expenses (reimbursable expenses)

  • Bills

  • Credit notes for privately paid expenses

  • Credit Note Bills/Vendor Credit

  • Company card transactions

  • Spend Money Bank Transactions

  • Company card transaction refunds

  • Receive Money Bank Transactions

  • Travel expenses (from business travel providers such as TravelPerk)

  • Spend Money Bank Transactions

  • Travel expense credit notes

  • Receive Money Bank Transactions

The Yokoy integration sends the corresponding tax rate from Yokoy so that tax amounts can be calculated in Xero.

The approval flow for expenses is managed entirely by Yokoy using either a standard workflow such as cost object or line manager approval or a custom workflow.

How it works

The Yokoy integration for Xero is an API-based integration that exchanges data bidirectionally. Tracking categories and Accounts are imported into Yokoy and synchronized on a daily basis. Users, Company cards, and Tax rates are also synchronized on a daily basis, but must first be manually created within Yokoy.

Once expenses are processed within Yokoy and are triggered for export, they are exported to Xero.

When you configure the Yokoy integration, you need to grant Yokoy the following access to Xero:

Read access

Write access

  • Company information

  • Accounts

  • Contacts

  • Tax Rates

  • Tracking Categories

  • Invoices

  • Attachments

  • Expenses

  • Vendor Credits

Employee & accounting master data

The Yokoy integration for Xero allows you to synchronize employee and accounting master data from Xero for use in Yokoy. Data is synchronized at company level, rather than for the entire organization.

When setting up the integration for the first time, the Yokoy team needs to configure a synchronization job to create or update objects in Yokoy. Once set up, the job runs daily to check for any changes.

You can synchronize the following data objects from Xero:

A unique identifier is used to determine whether or not the corresponding object (i.e. expense category, cost object, user, or tax rate) already exists in Yokoy. If found, the integration tries to update the existing object with changes in the data.

In the case of Accounts, Tax Rates, and Tracking Categories, if the integration does not find the corresponding object in Yokoy, it creates a new category or cost object in Yokoy. For other master data such as company cards cards and users, you need to first create these manually in Yokoy.

Only certain values are updated in Yokoy if changes are made to these objects in Xero. For example, for tax rates, only the status is updated.

Expense categories

An expense account is mapped to a Yokoy expense category on a one-to-one basis. In other words, you can only create one expense category for each expense account.

The Xero account must have the account type Expense or Bank, and also have Show in Expense Claims active; otherwise, it will be ignored by the integration.

The integration synchronizes any changes in accounts, updating the corresponding object in Yokoy. For example, if you archive an account in Xero, the corresponding expense category is flagged as inactive in Yokoy and the synchronization will update the category’s status accordingly.

If a Xero account type changes to any type other than Expense or Bank, further updates made to the Xero account will not be synced with the existing Yokoy expense category.

Xero Account data

Yokoy expense category data

Description

Name

Name

The account name.

Code

ERP code

Customer-defined alpha-numeric account code e.g 200 or SALES

AccountID

Internally used

Used as the unique identifier during synchronization.

Type

Internally used

Must be EXPENSE or BANK. See Account types.

ShowInExpenseClaims

Internally used

Must be TRUE. See Accounts.

Status

Status

Status of the account. If deleted or archived in Xero, takes inactive status in Perk.

🚧 Caution

Expense categories cannot be created manually in Yokoy. If you manually create expense categories and use them in expenses, you will not be able to export those expenses. The integration uses an internal ID when synchronizing categories with Xero.

💡 Tip

Xero Bank Accounts imported as expense categories cannot be automatically hidden from the Expense summary. However, you can manually hide them by selecting Not visible for employees.

Cost objects

Yokoy cost objects for cost controlling are created from Xero Tracking Categories. The integration synchronizes any changes in Tracking Categories, updating the corresponding object in Yokoy. Archived tracking categories are also included in the sync.

✏️ Note

You must manually set up cost object approvers in Yokoy since this information is not imported from Xero.

Xero Tracking Category data

Yokoy cost object data

Description

Name

Name

Name of the tracking category.

Tracking category status

Status

Status of the tracking category.

🚧 Caution

Cost objects cannot be created manually in Yokoy. If you manually create cost objects and use them in expenses, you will not be able to export those expenses. The integration uses an internal ID when synchronizing cost objects with Xero.

Users

Users must first be created in Yokoy before they can be mapped with Xero contacts. These users are mapped to Xero contacts using the email address. Therefore, it is important that the email address is identical in Xero and Yokoy for correct synchronization.

After the initial sync, if a Xero contact’s email address changes, you must manually update the email address in Yokoy in order for that user to remain “in sync” with the Xero contact.

The synchronization job can update any changes made to the user’s first name, last name, status, and Contact ID. If a contact is not active in Xero, the user is considered to be inactive in Yokoy and the synchronization will update the user’s status accordingly.

Xero Contact data

Yokoy user data

Description

Email address

Email address

Email address of the user. Used as the unique identifier during synchronization.

Name

First name

First name of the user. When updating in Yokoy, the Xero Name is split at the first space (' ') to determine the first name.

Name

Last name

Last name of the user. When updating in Yokoy, the Xero Name is split at the last space (' ') to determine the last name.

Contact status

Status

Status of the user. If deleted or archived in Xero, takes inactive status in Yokoy.

Tax rates

Tax rates can be imported from Xero into Yokoy. After the initial sync, if the rate percentage of the tax rate is modified in Xero, you must manually update the corresponding percentage of the tax rate in Yokoy. The synchronization job only updates changes made to the status of the tax rate. In other words, if a tax rate is not active in Xero, the tax rate is considered to be inactive in Yokoy and the synchronization will update the tax rate’s status accordingly.

Xero Tax Rate data

Yokoy tax rate data

Description

Name

Name

Name of the tax rate.

Code

ERP code

Used as the unique identifier during synchronization.

• Total Tax Rate, or
• Effective Tax Rate

Tax rate

Used to match against the tax rate in Yokoy. You should use the highest rate if both total tax rate and effective tax rate are used in Xero.

Status

Status

Status of the tax rate. Always created as active on initial synchronization. If deleted or archived in Xero, takes inactive status in Yokoy.

Company cards

If your company uses Yokoy Platinum Visa cards or another third-party card integration, company cards must first be created in Yokoy before they can be linked with Xero. These company cards are mapped to Xero Credit Card Accounts using the Code (Xero) / ERP Code (Yokoy).

After the initial sync, when a Credit Card Account is modified in Xero, you must manually update the corresponding company card data in Yokoy.

Once set up, the synchronization job only updates changes in status made to the Xero Credit Card Account. In other words, if a Credit Card Account is not active in Xero, the Company Card is considered to be inactive in Yokoy and the synchronization will update the Company Card’s status accordingly.

Xero Credit Card data

Company card data

Description

Status

Status

Status of the company card. If deleted in Xero, takes inactive status in Yokoy.

Bank Account Code

Creditor number

Used as the unique identifier during synchronization

Posting financial transactions (expenses)

The Yokoy integration exports data including employee information, tracking categories, accounts, tax rate reference (for calculation in Xero), amount, and currency.

By default, expense data is only exported when a finance users clicks Export in Finance > Export. However, you can configure the integration to automatically export expenses at a regular interval. See Set up an automatic export for expenses.

Export types

The following Yokoy expense types are supported:

Privately paid expenses

Reimbursable expenses are exported as approved Bills in Xero. Yokoy credit notes are exported to Xero as Draft vendor credits.

The following expense data is exported to Xero:

Xero field

Yokoy Expense data

Description

Type

n/a

Sent to Xero as ACCPAY (expense) or ACCPAYCREDIT (credit note).

Total

Expense total claim

Calculations made before export to Xero based on expense currency and export currency configuration.

Status

n/a

Sent to Xero as AUTHORISED (expenses) or no status sent (credit notes).

From (contact)

Submitter

Internal identifier used to map to Xero user.

Amount
(per line item)

Amount per line item

Calculated via the journal entry functionality within Yokoy.

Account
(per line item)

Category per line item

Category (header)

n/a

Xero pulls this data based on internal identifier stored on the cost object in Yokoy.

Value in Category column
(per line item)

Cost object name

Tax Rate
(per line item)

Tax rate

Total Tax (calculation done in Xero)

n/a

Calculation done in Xero based on amount and TaxType sent to Xero (TaxType sent based on Tax rate in Yokoy).

Reference

n/a

Sent to Xero as empty string.

Date

Posting date

Amount Currency

n/a

Business logic applied via the journal entry functionality within Yokoy, based on expense currency and export currency configuration.

Due Date

Expense date

The applicable tax rate used for privately paid expenses varies depending on whether it is a credit note or not.

  • For privately paid expenses, the default tax rate set on the Account is overwritten in the Bill by the tax rate sent by Yokoy.

  • For credit notes, the tax rate sent by Yokoy is ignored. The default tax rate set on the Xero Account is used instead.

Card expenses and travel expenses

Expenses paid by company card and travel expenses are exported as Spend Money Bank Transactions, since they do not generate any payment in Xero for these transactions. Company card and travel expense refunds are exported as Receive Money Bank Transactions.

Company card data

The data for expenses paid by company card is export to Xero is as follows:

Xero data

Company card paid expenses

Description

Account (type: BANK, account type: CREDIT CARD)

Company card

Internal identifier used to map to Xero Credit Card Account.

Date

Expense date

Spend vs Receive Money

n/a

Business logic based on whether the expense is a credit note or not results in either SPEND (regular expense) or RECEIVE (credit note) being sent to Xero.

To

Submitter

Internal identifier used to map to Xero user.

Amount (per line item)

Amount per line item

Calculated via the journal entry functionality within Yokoy.

Account (per line item)

Category per line item

Category (header)

n/a

Xero pulls this data based on internal identifier stored on the cost object in Yokoy.

Value in Category column (per line item)

Cost object name

Tax rate (per line item)

Tax rate

Unit price (per line item)

Net amount (per line item)

Calculated via the journal entry functionality within Yokoy.

Total Tax (calculation done in Xero)

n/a

Calculation done in Xero based on amount and TaxType sent to Xero (TaxType sent based on Tax rate in Yokoy).

Reference

n/a

Sent to Xero as empty string.

Amount Currency

n/a

Business logic applied via the journal entry functionality within Yokoy, based on expense currency and export currency configuration.

Travel expense data

The data for expenses associated with a travel provider integration is exported to Xero as follows:

Xero data

Travel provider expense data

Description

Account (type: BANK, account type: BANK)

Transfer account (configured in the Travel Provider configuration)

Value stored in Transfer account from Travel Provider configuration is used to map to an expense category ERP code in Yokoy.

Date

Expense date

Spend vs Receive Money

n/a

Business logic based on whether the travel expense is a credit note or not results in either SPEND (regular expense) or RECEIVE (credit note) being sent to Xero.

To

Submitter

Internal identifier used to map to Xero user.

Amount (per line item)

Amount per line item

Calculated via the journal entry functionality within Yokoy.

Account (per line item)

Category per line item

Category (header)

n/a

Xero pulls this data based on internal identifier stored on the cost object in Yokoy.

Value in Category column (per line item)

Cost object name

Tax rate (per line item)

Tax rate

Unit price (per line item)

Net amount (per line item)

Calculated via the journal entry functionality within Yokoy.

Total Tax (calculation done in Xero)

n/a

Calculation done in Xero based on amount and TaxType sent to Xero (TaxType sent based on Tax rate in Yokoy).

Reference

n/a

Sent to Xero as empty string.

Amount Currency

n/a

Business logic applied via the journal entry functionality within Yokoy, based on expense currency and export currency configuration.

Currency handling

Depending on the posting strategy determined the company settings, the Yokoy integration exports expenses in either:

  • Company currency

  • Original receipt currency

  • User currency

Tax amounts

Yokoy sends the selected tax rate(s) in the expense export payload to Xero and Xero then calculates the tax based on these inputs.

Credit note handling

Credit notes for reimbursable expenses (i.e. privately paid expenses) are treated like regular expenses in terms of export features; however, they are reflected in Xero as a Vendor credit in Draft status.

Credit notes of non-reimbursable expenses (i.e. paid by company card) are treated like regular expenses in terms of export features; however, they are reflected in Xero as a Receive money bank transactions.

Expense receipts and supporting documents

Expense receipts and any files attached to the expense as supporting documents can be sent to Xero if required. You configure the Yokoy integration to determine whether you want to send receipts only, all documents (receipts and attachments), or choose not to any documents.

Receipts and supporting documents are displayed in the File column in Xero. You can preview these files when you click on the file. They are also visible in the View Bill view, when you click on the file icon.

View Bill in Xero where you can find the expense receipt as an attachment

The bill history includes the action Attached the file through the Xero API using Yokoy Business App.

✏️ Note

In Yokoy, receipts uploaded as files retain the original file name. Files uploaded as supporting documents are renamed with the timestamp of when it was uploaded.

Xero rejects any files that contain <, >, :, ", /, \, |, ?, *, \0 characters in the file name. Therefore, the integration removes these characters if they are present in the file name. For example, 2025-08-22T10:00:09.953Z-1.png becomes 2025-08-22T100009.953Z-1.png.

Did this answer your question?