| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) |
| Lines of code | 1957 |
| Technical Name |
tv_qbo_connector |
| License | OPL-1 |
| Website | https://technovista.example |
| Versions | 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) |
| Lines of code | 1957 |
| Technical Name |
tv_qbo_connector |
| License | OPL-1 |
| Website | https://technovista.example |
| Versions | 17.0 18.0 19.0 |
Push Odoo data to QuickBooks Online — reliably.
Customers, products, customer invoices, and customer payments — synced through a durable queue with retries, idempotent pushes, structured error reporting, and a 24-hour support SLA.
Why this connector
Built specifically to fix the problems other QuickBooks connectors leave you debugging.
Durable queue
Every push goes through a persistent queue. Transient errors retry with exponential backoff. The Intuit-TID idempotency header prevents double-creates. No lost records, no duplicate customers.
Actionable errors
When something fails, you see exactly what — "Tax 'GST 18%' is not mapped to a QBO TaxCode" — with a one-click Fix mapping → retry path. No more digging through server logs.
Multi-company
One QuickBooks realm per Odoo company. Currency mismatches caught at preflight — your USD invoices won't silently land in a GBP realm. Each company's tokens are encrypted at rest.
Realtime or batch
Choose per company. Queue mode drains every 5 minutes via cron. Realtime mode pushes synchronously on Odoo write and falls back to the queue if QBO is unreachable.
Real documentation
Step-by-step setup guide. Inline help on every configuration field. A mapping wizard that auto-suggests QBO accounts and tax codes by name match.
24-hour support SLA
First response within 24 hours on every issue. 30-day no-questions refund. We answer our own emails — there is no support tier between you and the developers.
What syncs
v1 covers the most common AR-side workflow.
Customers
res.partner → QBO Customer. Display name, company name, email,
phone, billing address (Line1 / Line2 / City / State / Postal / Country). Individual contacts
split into given / family name automatically.
Products
product.product → QBO Item. Service, Inventory, or NonInventory
type inferred from Odoo. Income account mapped through your QBO chart of accounts.
Customer Invoices
account.move (out_invoice / out_refund) → QBO Invoice
on validation. Per-line taxes resolved against your QBO TaxCode mapping. DocNumber preserved.
Customer Payments
account.payment (customer, inbound) → QBO Payment
on validation. Customer reference auto-resolved; ensures the customer exists in QBO first.
Setup in five minutes
OAuth handshake, mapping wizard, optional backfill. Done.
- Register an app on Intuit Developer and copy the Client ID + Secret.
- Install the module and set the secrets in System Parameters.
- Click Connect to QuickBooks. Complete Intuit's OAuth flow in a new tab.
- Run the Mapping Wizard — auto-suggested matches by name; review and save.
- Optional: Backfill existing customers, products, invoices, and payments.
Support
Email: technovistaconsult@gmail.com
First response: within 24 hours
Refund policy: 30 days, no questions asked
Supported Odoo versions: 17.0, 18.0, 19.0
Frequently Asked Questions
How do I connect Odoo to QuickBooks Online?
From QuickBooks â Connections, click New, choose Sandbox or Production, then click Connect to QuickBooks. You'll be redirected to Intuit's sign-in, authorize the app, and bounce back to Odoo with a green "Connected" status.
Which Odoo objects sync to QBO?
Customers (res.partner), Products (product.product), Customer Invoices (account.move), and Customer Payments (account.payment). All sync in one direction: Odoo â QBO.
The mapping wizard didn't show an account I expected â what do I do?
The wizard reads accounts/taxes directly from QBO at the time you open it. If you just created the account in QBO, close and reopen the wizard. The wizard now paginates through realms with thousands of accounts.
A sync failed â where do I look?
Open QuickBooks â Sync Queue, filter by state "Failed". Each entry shows the QBO error, the source Odoo record, and a "Retry" button. The source record (e.g., the invoice) also has a chatter note explaining the failure.
What does "dead-letter" mean and how do I recover?
After 8 retryable failures with exponential backoff, an entry moves to dead-letter. Fix the underlying issue (e.g., add a missing tax mapping), then either click Retry on the entry or use Backfill to re-enqueue the source record.
Multi-company: one Odoo company per QBO realm, or multi?
One qbo.connection per Odoo company. Each company connects to exactly one QBO realm. If you have multiple Odoo companies, create one connection per company. Multi-realm-per-company is not supported in v1.x.
I posted an invoice but it didn't appear in QBO immediately. Why?
Default sync mode is Queue â entries are drained every 5 minutes by the cron. Switch the connection to Real-time with fallback to push synchronously on post (falls back to queue if QBO is unreachable).
Top 10 QBO error codes and what they mean
- 3200 Authorization failure â token expired or revoked. Reconnect from the connection form.
- 4000 Duplicate document number â invoice number already exists in QBO. Set Custom Transaction Numbers = ON in QBO Settings.
- 5010 Stale Object Update â concurrent edit. Sync engine retries automatically.
- 6190 Duplicate Name â customer name conflict. Edit the partner display name in Odoo.
- 6240 Reference not found â a related QBO entity was deleted. Re-run the mapping wizard.
- 6610 Currency does not match â invoice currency differs from realm currency. Multi-currency is on the v2.x roadmap.
- 6940 Invalid account reference â your mapping points to a deleted/inactive QBO account. Re-map.
- 500 Internal QBO error â transient; retried automatically.
- 429 Throttled â too many requests. Sync engine backs off automatically.
- 401 Unauthorized â refresh token revoked. Reconnect.
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