Saltar al contenido principal
Los detalles del producto se muestran en inglés. Próximamente traducciones.
Square POS Connector for Odoo — A build-to-order Odoo integration that pulls Square POS orders into Odoo, keeps catalog and s — 1/1Vista previa ilustrativa

A build-to-order Odoo integration that pulls Square POS orders into Odoo,

keeps catalog and stock aligned in both directions, and turns Square payouts into reconcilable accounting entries.

ECOSIRE scopes, builds, installs and supports it for your database.

¿Qué es Square POS Connector for Odoo?

A build-to-order Odoo integration that pulls Square POS orders into Odoo, keeps catalog and stock aligned in both directions, and turns Square payouts into reconcilable accounting entries. ECOSIRE scopes, builds, installs and supports it for your database. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Características clave

Dedicated `square.backend` model holding OAuth credentials, environment (sandbox/production), merchant and location IDs, with encrypted token storage and automatic refresh
Authenticated webhook controller consuming `order.updated`, `payment.updated`, `refund.created` and `inventory.count.updated` events, with Square signature verification on every request
Idempotent order import: a unique `square_order_id` index plus an event-ID ledger so replayed or duplicated webhooks can never create a second `sale.order`
Configurable status mapping table translating Square order, fulfilment and payment states into Odoo sale/invoice/picking states — no hard-coded assumptions about your flow
Scheduled `ir.cron` reconciliation poll that fetches any orders missed while Odoo or the network was down, with a configurable look-back window
Bidirectional catalog sync: `product.template`/`product.product` to Square catalog objects with category tree, variant attributes, SKU/GTIN, images and tax codes, tracked by a mapping model storing the Square object version
Near-real-time stock synchronisation driven by `stock.quant` changes through a debounced queue job, mapping Odoo warehouses and locations to Square locations
Price and pricelist export with a dry-run preview showing every field that would change before anything is written to Square
Shipment confirmation and tracking-number push-back from `stock.picking` to the Square order fulfilment record
Settlement engine that pulls Square payouts and payout entries and posts a balanced `account.move` splitting gross sales, processing fees, refunds, tips and adjustments to your configured accounts and journal
Refund and partial-refund handling that creates the matching credit note and restores stock where the return is physical
Full sync log model storing the raw request and response payload per record, with a Retry action, error classification and a failure counter surfaced on the backend form
QWeb settlement reconciliation report tying each payout line to its constituent orders, fees and refunds for your accountant
Multi-company and multi-location aware, secured by `ir.model.access.csv` plus record rules, with sync actions callable over XML-RPC/JSON-RPC for external schedulers

Hecho a medida, listo para ti

Sin configuración por tu cuenta: una app funcional creada, instalada y con soporte de ECOSIRE.

  1. 1

    Haces el pedido

    Empieza con un precio único de desarrollo. Definimos el alcance contigo en el arranque.

  2. 2

    Creamos e instalamos

    ECOSIRE la crea, la configura y la instala en tu Odoo.

  3. 3

    En marcha + soporte

    Sales en vivo en aproximadamente una semana laboral, con dos semanas de soporte tras la puesta en marcha. Los defectos en el código que entregamos se corrigen sin coste.

Especificaciones técnicas

Compatibilidad con Odoo
Odoo 17, Odoo 18, Odoo 19
Ediciones
Enterprise y Community
Licencia
La licencia requiere confirmación
Requisito de Python
Python 3.10+
Base de datos
PostgreSQL 12+

Sobre este producto

Running Square POS in the shop and Odoo in the back office means keeping two versions of the truth. Somebody exports a Square sales report at the end of the day and keys the totals into Odoo, or a script drops a CSV into the accounting inbox. Stock is the worst part: Odoo's stock.quant figures drift away from what the till has actually sold, so replenishment rules fire late, purchase suggestions are wrong, and the online channel oversells items that walked out the door hours ago. When the Square payout lands, it is a net figure — gross sales, minus processing fees, minus refunds, plus tips — and reconciling one bank line against dozens of individual orders is manual work that quietly gets skipped. Odoo out of the box has no Square knowledge at all: there is no Square provider in the payment framework, no catalog mapping, and no stock.quant listener that pushes availability to a Square location.

What we build is a proper Odoo module that speaks Square's REST API on your behalf. A dedicated square.backend model holds credentials, the location IDs you trade from, and per-backend sync toggles; OAuth tokens are stored encrypted and refreshed automatically rather than pasted into a config file. Orders arrive either by Square webhook (order.updated, payment.updated, refund.created) hitting an authenticated controller route, or by a scheduled ir.cron catch-up poll for anything the webhook missed. Each Square order maps to a sale.order — or straight to an invoice, depending on how you want revenue recognised — with a unique square_order_id index so a replayed webhook can never create a duplicate. Fulfilment and payment state map onto a configurable status table, so a Square COMPLETED order can land as a confirmed and delivered sale while an OPEN tab stays a draft.

Catalog and stock run in both directions. Odoo product.template and product.product records export to Square catalog objects with your category tree, variant attributes, SKUs, images and tax codes carried across; a mapping model keeps the Square object ID and version so updates use Square's optimistic-concurrency version field instead of blindly overwriting. Stock synchronisation hooks stock.quant changes through a compute/@api.depends chain plus a debounced queue job, so a receipt in Odoo pushes fresh availability to the right Square location within seconds rather than on a nightly batch, and a till sale writes back down the same path. Price and pricelist changes follow the same route, with a dry-run mode so you can see exactly what would change before anything is written. Where you ship rather than hand over the counter, shipment confirmation and tracking numbers push back to Square so the customer record stays complete.

Settlements are handled as accounting, not as a report. We pull Square's payouts and payout entries, then generate account.move entries that split gross sales, processing fees to your fee expense account, refunds, tips and adjustments per your chart of accounts and fiscal position — landing on a dedicated journal so the payout line on the bank statement reconciles against one balanced entry. Everything is instrumented: a sync log model holding the raw request and response, a Retry action on failed records, and a QWeb reconciliation report you can hand to your accountant. Access is governed by ir.model.access.csv plus record rules so a shop manager sees their own location's data and nothing else, and the whole module is multi-company aware.

This is a build-to-order product, not an instant download. You request a quotation, we run a short scoping call, and we write down exactly which Square locations, which order and fulfilment states, which accounts and which Odoo version we are targeting. From confirmed scope, typical delivery is one working week: we develop against your Odoo version (17.0, 18.0 or 19.0, Community or Enterprise), install on a staging copy of your database, run UAT against the Square sandbox or a limited live location, then go live with a rollback plan. You receive the full source, a git repository handover, technical and user documentation, a training session and a post-go-live support window. Nothing is obfuscated — you own the code we write for you.

lo que obtienes

  • Installable module source code targeting your exact Odoo version (17.0, 18.0 or 19.0), Community or Enterprise, with a clean `__manifest__.py` and no obfuscation
  • Installation and configuration on your environment, including Square application setup, OAuth connection, location mapping and account/journal configuration
  • Technical documentation: data model, mapping tables, webhook routes, cron jobs, security rules and documented extension points for your own developers
  • End-user guide plus a live training session for the operations and finance staff who will run the sync day to day
  • UAT on a staging copy of your database against the Square sandbox or a limited live location, with a written test script and a documented rollback plan
  • Go-live cutover support and a post-go-live support window for defect fixes on the delivered scope
  • Git repository handover with full commit history, so the code is yours to maintain, fork or extend
  • Source-level support for one Odoo minor-version upgrade path within the agreed support window

¿Para quién es esto?

Multi-store retail operations manager

Runs several Square tills across shops and needs one stock figure the buying team can trust. Wants till sales to decrement Odoo stock as they happen so reordering rules and inter-warehouse transfers fire on real numbers, not on yesterday's export.

Finance lead or controller

Reconciles Square payouts against the bank every month and is tired of net figures that hide fees, refunds and tips. Needs each payout to arrive as a balanced journal entry against the right accounts, with a report that stands up in an audit.

Omnichannel merchant selling in-store and online

Sells the same SKUs over the counter through Square and online through Odoo eCommerce or a marketplace. Needs one catalog, one availability figure, and no oversell when a popular item moves quickly on either channel.

Odoo functional consultant or internal ERP owner

Is responsible for the company's or client's Odoo instance and wants a maintainable module with clear models, proper access rules and readable code — not a black-box connector that has to be rebought at every version upgrade.

Cómo se compara Square POS Connector for Odoo

CriterioECOSIREConstrucción personalizadaCompetidorNativo de Odoo
Fit to your Square setup and Odoo flowScoped to your locations, order states and chart of accounts before a line is writtenFits exactly, if the spec is right and the developer knows both APIsGeneric mapping; you adapt your process to the module's assumptionsNo Square concept exists anywhere in Odoo core
Settlement and fee reconciliationBalanced `account.move` per payout splitting gross, fees, refunds and tipsPossible, but the accounting design is usually the part that gets cutOften imports orders only; payouts stay a manual bank-side exerciseManual journal entry keyed from a Square report
Stock accuracy across till and back officeDebounced `stock.quant`-driven push plus scheduled drift reconciliationDepends entirely on whether the build got past nightly batch syncCommonly a cron batch; intra-day oversell remains possibleNo link; stock diverges from the first till sale onward
Time to a working systemTypically one working week from confirmed scope, including UAT on stagingMonths of discovery, build and rework in most in-house attemptsInstalls in minutes; the fit-and-gap work starts afterwardsImmediate, because nothing is connected
Code ownership and extensibilityFull source and git repository handover; inherit and override freelyFully yours, and fully your maintenance burdenFrequently obfuscated or licence-locked per databaseCore code you would have to fork to extend
Odoo version upgradesBuilt for your exact 17/18/19 version, with one minor-version upgrade path supportedUpgrade cost lands on your team at every major releaseDepends on the vendor porting it; often a repurchaseNothing to upgrade, and nothing gained
Security and multi-company`ir.model.access.csv` plus record rules; per-location visibility, multi-company awareAccess rules are usually the first thing skipped under deadlineTypically one global configuration with admin-only accessNot applicable
Failure visibility and recoveryRaw request/response sync log, error classification, Retry action, catch-up cronLogging quality varies widely; often only the server logBasic status flag; failures usually need vendor supportNo process to fail, and no visibility to gain

Preguntas frecuentes sobre Square POS Connector

How long does delivery take?

This is a build-to-order module, so there is no instant download. After the scoping call and a confirmed written scope, typical delivery is one working week: development against your Odoo version, installation on staging, UAT with you, then go-live. Larger scopes — many locations, unusual accounting treatment, heavy customisation of your existing sales flow — are quoted with their own timeline before work starts.

What support and updates do I get after go-live?

You get a post-go-live support window agreed in the quotation, covering defect fixes on the delivered scope, plus source-level support for one Odoo minor-version upgrade path within that window. Because you receive the full source and the git repository, your own team or any Odoo partner can maintain it afterwards. Ongoing support and Square API-change maintenance beyond the initial window are available as a separate retainer.

Which Odoo versions and editions are supported?

We build for Odoo 17.0, 18.0 and 19.0, Community or Enterprise, developing against the exact version and edition you run so there is no compatibility-shim layer. Accounting entries use the standard `account.move` model available in both editions; if you rely on Enterprise-only accounting features such as assisted bank-statement reconciliation, we map into those during scoping rather than around them.

How is stock kept accurate when both systems sell at once?

Odoo remains the master of stock. Changes to `stock.quant` trigger a debounced queue job that pushes fresh availability to the mapped Square location, and Square sales write back down the same path as inventory moves. A scheduled reconciliation job compares both sides on your chosen cadence and reports any drift in the sync log rather than silently correcting it, so you always know when a manual adjustment happened at the till.

What happens to Square fees, refunds and tips in accounting?

They are posted explicitly. When a payout is imported we generate a balanced `account.move` in a dedicated journal that splits gross sales, processing fees to your fee expense account, refunds, tips and any Square adjustments according to your chart of accounts and fiscal position. The bank line for the payout then reconciles against a single entry, and a QWeb report shows exactly which orders and fees made it up.

Do I need to change how my staff use Square?

No. The connector reads from Square's API and writes catalog, price and inventory data back to it. Staff carry on ringing up sales in the Square app as they do today. The changes are on the Odoo side, where you configure which locations sync, which Square states map to which Odoo documents, and which accounts settlements post to.

Can it be extended for our own workflow?

Yes — that is why you get the source and the git repo. The module is written as ordinary Odoo code: standard models, inherited views, documented extension points on the import and export methods, and sync actions exposed over XML-RPC/JSON-RPC. Your developers can inherit and override it from your own module without forking ours, and additional workflow requirements can be included in the original scope if you raise them at the scoping call.

Solicitar presupuesto

Square POS Connector

A build-to-order Odoo integration that pulls Square POS orders into Odoo, keeps catalog and stock aligned in both directions, and turns Square payouts into reconcilable accounting entries. ECOSIRE scopes, builds, installs and supports it for your database.

  • Dedicated `square.backend` model holding OAuth credentials, environment (sandbox/production), merchant and location IDs, with encrypted token storage and automatic refresh
  • Authenticated webhook controller consuming `order.updated`, `payment.updated`, `refund.created` and `inventory.count.updated` events, with Square signature verification on every request
  • Idempotent order import: a unique `square_order_id` index plus an event-ID ledger so replayed or duplicated webhooks can never create a second `sale.order`
  • Configurable status mapping table translating Square order, fulfilment and payment states into Odoo sale/invoice/picking states — no hard-coded assumptions about your flow

Solicitar presupuesto

Cuéntanos tus necesidades de Square POS Connector y te enviaremos precios, opciones de licencia y una propuesta a medida, normalmente en un día hábil.

Sin pago ahora. Esto envía una solicitud de presupuesto a nuestro equipo; te responderemos por correo con precios y próximos pasos.