Xero Integration: Data Mapping and Field Reference
Understand how PSOhub maps contacts, invoices and invoice lines to Xero fields
Published: 1 June 2026
Audience
-
Admin
Objective
This article provides the full field-level reference for the PSOhub–Xero integration. Use it to understand which data is sent from PSOhub to Xero, how fields are mapped, and what limitations apply.
Overview
When an invoice is created and sent in PSOhub, three types of data are pushed to Xero:
- Contact — the customer company and invoice contact
- Invoice — the invoice header record
- Invoice lines — the individual line items on the invoice
The sections below describe the field mapping for each.
⚠️ Important: Xero does not accept the double-quote character ( " ) in any field sent from PSOhub. Avoid using this character in company names, contact names, invoice descriptions, or any other field that is part of the integration.
Contact Mapping
Before creating a new contact in Xero, PSOhub checks whether a contact already exists by matching on the email address of the invoice contact in PSOhub. If a match is found, the existing Xero contact is used. If no match is found, a new contact is created.
| Field in Xero | Field in PSOhub |
|---|---|
| Contact Name | Company Name |
| Primary Person | Invoice Contact |
| Email of primary person | Invoice contact email |
| Postal Address | Invoice contact address |
| City | Invoice contact city |
Invoice Mapping
When the invoice is sent to the customer, PSOhub uses the primary person's email address.
| Field in Xero (Invoice) | Field in PSOhub (Invoice) |
|---|---|
| (Invoiced) To | Company |
| Reference | Reference |
| Primary person | Invoice contact email |
Invoice Line Mapping
PSOhub maps each invoice line to a sales line in Xero. The revenue account used is the default account configured during the Xero integration setup. If a different revenue account has been set on a specific contract line in PSOhub, that account is used for those lines instead.
Tax calculations are performed within Xero — PSOhub does not calculate or send tax values for individual lines.
| Field in Xero (Invoice sales line) | Field in PSOhub (Invoice line) |
|---|---|
| Description | Line ID + Name of the invoice line |
| Quantity | 1 |
| Account | Revenue account |
| Amount | To be invoiced (of the invoice line) |
Invoice Detail Level
If an invoice in PSOhub is set to Detailed invoice level, the specification document showing all hours booked against Time & Materials contract lines is attached to the invoice in Xero as a PDF attachment.
Summary invoices do not include this attachment.
Invoice Due Date
Invoice due dates in Xero are derived from the Due Days setting in PSOhub. There are two places this can be configured:
- Default — set under Settings > Invoice Settings > Information & Defaults > Due Days
- Per project — set in the left panel of the individual project screen
If neither is configured, the due date will not appear correctly in Xero.
Invoice Status Synchronization
The following status changes are synchronized between PSOhub and Xero:
| Event | Behavior |
|---|---|
| Invoice sent from PSOhub | Invoice is pushed to Xero; Xero invoice number is returned and displayed in PSOhub as a deep link |
| Invoice paid in Xero | A signal is sent to PSOhub and the invoice status is updated to Paid |
| Invoice edited in Xero | Changes are not synchronized back to PSOhub |
⚠️ Important: Always make invoice adjustments in PSOhub before pushing to Xero. Changes made directly in Xero will not be reflected in PSOhub, which may cause discrepancies in project-level reporting.
Activity
Any activity related to an invoice — including when it is sent or paid — is also displayed in the Activity feed of the related project in PSOhub and in the related deal in HubSpot (if connected).