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 |
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
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 |
ShowInExpenseClaims | Internally used | Must be |
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 | Last name | Last name of the user. When updating in Yokoy, the Xero |
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 | 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:
Reimbursable expenses (i.e. privately paid expenses)
Card expenses (i.e. non-reimbursable expenses other than travel expenses)
Travel expenses (i.e. expenses from business travel providers such as TravelPerk)
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 |
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 |
From (contact) | Submitter | Internal identifier used to map to Xero user. |
Amount | Amount per line item | Calculated via the journal entry functionality within Yokoy. |
Account | 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 | Cost object name |
|
Tax Rate | Tax rate |
|
Total Tax (calculation done in Xero) | n/a | Calculation done in Xero based on amount and |
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: | 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 |
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 |
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: | 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 |
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 |
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.
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.

