| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Inventory (stock)
• Invoicing (account) • Purchase (purchase) • Discuss (mail) |
| Lines of code | 1736 |
| Technical Name |
xero_odoo_poc |
| License | OPL-1 |
| Website | https://erpcr.net |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Inventory (stock)
• Invoicing (account) • Purchase (purchase) • Discuss (mail) |
| Lines of code | 1736 |
| Technical Name |
xero_odoo_poc |
| License | OPL-1 |
| Website | https://erpcr.net |
Xero Connector for Odoo 19
Two-way synchronization of contacts, products, invoices & bills
between Odoo and Xero — powered by OAuth 2.0.
Why choose Xero Connector?
Many businesses use Xero for their accountants and Odoo for operations. This module bridges both systems automatically — eliminating double data-entry, export/import errors, and time wasted reconciling two platforms.
Built and maintained by ERPCR — Odoo specialists with proven enterprise deployments across Latin America and beyond.
Features
Secure OAuth 2.0
Connect to Xero in one click — no passwords stored. Tokens are auto-refreshed silently.
Contact Sync
Push customers & suppliers to Xero Contacts API. Updates existing records automatically.
Product Sync
Sync Odoo products to Xero Items including name, code, description and sale/cost prices.
Invoice & Bill Sync
Push posted customer invoices (ACCREC) and vendor bills (ACCPAY) to Xero with line items.
Bulk Sync Wizard
Sync all contacts, products and invoices in a single click from a dedicated wizard.
Sync Audit Log
Every sync operation is logged with status, Xero ID, timestamp and error details.
How it works
Register your Xero app
Create a free Web App at developer.xero.com. Copy your Client ID and Client Secret.
Configure in Odoo
Go to Xero Integration → Configuration and enter your credentials. The Redirect URI is pre-filled automatically.
Authorize with one click
Click "Open Xero Login" — log in to Xero, approve the connection. Odoo receives the token automatically via OAuth callback.
Start syncing
Use the Bulk Sync wizard to push all existing records, or sync individual records with the button on each partner, product or invoice.
Screenshots
① Module installed in Odoo Apps
The Xero Connector appears in the Odoo Apps list once installed. A single click gives you access to all synchronization features directly from the Odoo interface — no external tools needed.
② Xero Settings — OAuth 2.0 Configuration
Enter your Xero Client ID and Client Secret in the configuration form. The Redirect URI is pre-filled automatically. Click "Open Xero Login" to launch the OAuth flow — no password is ever stored in Odoo.
③ Xero Settings — Scheduled Auto Sync
Enable the built-in scheduled job to automatically push Contacts, Products and Invoices to Xero at a configurable interval (minutes, hours or days). The toggle activates or deactivates the cron without touching the server — perfect for unattended nightly syncs.
④ Historical Data Reconciliation — Map existing Xero records to Odoo
The Reconciliation wizard matches existing Xero Contacts and Invoices to your Odoo records by email (primary) then company name (fallback), avoiding duplicates and preserving historical data integrity. Dry-run mode lets you preview all matches before committing.
③ Bulk Sync Wizard — One-click full synchronization
The Bulk Sync wizard lets you push all Contacts, Products, and Invoices to Xero in a single operation. Choose what to sync using the checkboxes and click "Start Sync". A progress summary is shown when complete.
④ Customer & Contact Sync — Odoo partners pushed to Xero Contacts
All Odoo customers and suppliers are synchronized to Xero as Contacts. The connector handles both creation of new contacts and updating existing ones. Each partner record in Odoo stores the corresponding Xero Contact ID for full traceability.
⑤ Invoice Sync — Posted invoices pushed to Xero with line items
Customer invoices (ACCREC) are pushed to Xero complete with all line items, quantities, unit prices, account codes and tax rates. Invoices are synced in batches to respect Xero API rate limits, so even large datasets sync reliably without errors.
⑥ Invoice Detail in Xero — Tax rates and totals match Odoo
Once synced, each invoice in Xero shows the exact same line items, tax types, subtotals and grand totals as in Odoo. Tax rates are mapped using Xero TaxType codes (OUTPUT, INPUT, NONE, etc.) ensuring financial accuracy on both sides.
⑦ Sync Audit Log — Complete traceability of every sync operation
Every sync event is recorded in the Odoo Sync Log with the record name, model, Xero ID, sync timestamp, status (Success / Error) and a full error description when applicable. You always know exactly what was synced and when — with no black boxes.
⑧ Sync Log List View — Filter and search all sync history
The Sync Log list view provides a searchable, filterable table of all past sync operations across contacts, products and invoices. Quickly identify errors, re-run failed records individually, and maintain a clean audit trail for your accounting team.
Xero Connector vs. alternatives
| Feature | Xero Connector (ERPCR) | Manual export/import | Generic ETL tools |
|---|---|---|---|
| Native Odoo UI | ✓ Yes | ✗ No | ✗ No |
| OAuth 2.0 (no passwords) | ✓ Yes | ✗ N/A | ✗ Varies |
| Auto token refresh | ✓ Yes | ✗ No | ✗ Varies |
| Bulk + individual sync | ✓ Both | ✗ Manual only | ✗ Bulk only |
| Audit log in Odoo | ✓ Full log | ✗ None | ✗ External |
| Odoo 19 compatible | ✓ Yes | ✗ N/A | ✗ Check vendor |
| One-time cost | ✓ $249 USD | Free (your time) | Subscription |
Pricing
One-time purchase · Lifetime updates included
- Odoo 19 Enterprise & Community
- Xero Sandbox & Production
- All sync features included
- Audit log & bulk wizard
- Email support via erpcr.net
- Free minor version updates
Technical information
- Odoo version: 19.0 (Enterprise & Community)
- Dependencies: base, account, sale, purchase, stock, product
- Xero API: Xero API v2 (api.xero.com/api.xro/2.0) — REST/JSON
- Authentication: OAuth 2.0 Authorization Code flow with PKCE-compatible redirect
- No third-party Python packages required — uses only
requests(bundled with Odoo) - License: OPL-1 (Odoo Proprietary License v1)
- Models added: xero.config, xero.sync.log, xero.bulk.sync
- Fields added: xero_contact_id (res.partner), xero_item_id (product.template), xero_invoice_id (account.move)
Support & Contact
© 2026 ERPCR · erpcr.net by Didierh · Xero is a trademark of Xero Ltd. This module is not affiliated with or endorsed by Xero Ltd.
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module