- Home
- Apps
- SaaS Tools
- POS Sales Order & Quotation from Register
Illustrative previewTurn any POS session into a B2B counter:
convert the cart to a back-office sale order or quotation, take a deposit, and hand off backorders and partial deliveries to Inventory — without leaving the register.
What is POS Sales Order & Quotation from Register?
Turn any POS session into a B2B counter: convert the cart to a back-office sale order or quotation, take a deposit, and hand off backorders and partial deliveries to Inventory — without leaving the register. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Retail counters increasingly serve two customers at once: the walk-in who pays and leaves, and the B2B or special-order buyer who wants a formal quotation, an advance deposit, and delivery of goods you do not have in stock today. Native Odoo POS is optimized for the first case — an order closes atomically against on-hand stock, prints a receipt, and settles the payment immediately. The moment your cashier needs a sale.order with a proper quotation number, a credit check against the customer's property_account_receivable, or a partial delivery that leaves a backorder open, the register runs out of road. Staff drop the customer, walk to a back-office desktop, re-key the cart into Sales, and hope the two documents reconcile. That handoff is where margin, accuracy, and the customer's patience leak away.
This build-to-order module closes that gap by adding a "Create Sale Order / Quotation" action inside the POS UI (an OWL component wired into point_of_sale assets) that serializes the current order lines and customer into a real sale.order record via a controller/ORM path — not a pos.order. The customer set on the register maps straight through, product lines carry their unit price, taxes, and discounts, and you choose the outcome at the counter: a draft quotation (state='draft') to email and print, or a confirmed sale order that reserves stock and generates the delivery. Advance payments are captured as a deposit using Odoo's down-payment product on the order (Enterprise's down-payment wizard where available, an equivalent sale.advance.payment.inv flow on Community), so the deposit posts against the eventual invoice rather than floating as an unlinked POS payment. Where the customer wants some items now and some later, the confirmed order feeds stock.picking so Inventory can validate a partial delivery and Odoo keeps the backorder open automatically.
Technically, the module is a clean, upgrade-safe addon: a declared __manifest__.py depending on point_of_sale, sale_management, and stock; server-side extensions on pos.order/sale.order using models.Model inheritance with @api.depends computes for any derived totals; a credit-limit guard that reads the partner's outstanding receivable and blocks or warns per your policy via a configurable res.config.settings field; access controlled through ir.model.access.csv plus record rules so only permitted POS roles can raise orders or override the credit block; and QWeb reports for the pro-forma and quotation PDFs branded to your template. The register-to-order call is exposed cleanly so it also works over the JSON-RPC/XML-RPC API if you drive it from another system. Everything targets Odoo 17.0, 18.0, and 19.0, and we confirm Community vs Enterprise behavior for the down-payment and any studio-adjacent flows during scoping.
Because this is built to order, there is no instant download. After a short scoping call we confirm your exact flows — quotation numbering, deposit product, credit policy, which POS roles get the button, report layout — write a fixed scope, and build against your Odoo edition and version. Typical delivery is one working week from confirmed scope. You receive the installable source for your version, UAT on a staging copy of your database, a training session for counter and back-office staff, and a post-go-live support window. The Git repository is handed over to you at the end so the code is yours to keep and extend.
What you get
- Installable source code built for your exact Odoo edition and version (17.0, 18.0 or 19.0)
- Installation and configuration on your environment, including Settings, deposit product, sequences and role permissions
- Technical documentation: models, fields, security rules, report templates and the JSON-RPC entry point
- User guide plus a live training session for counter and back-office staff
- UAT on a staging copy of your database with a documented rollback plan before production
- Post-go-live support window for defect fixes and configuration adjustments
- Git repository handover so the code is yours to keep, audit and extend
Who this is for
B2B / trade-counter retailer
Sells to businesses that expect a formal quotation and a delivery note rather than a cash receipt. Needs the counter to raise a real `sale.order` with correct taxes and terms without staff leaving the register.
Special-order and made-to-order shop
Takes deposits on items that are not in stock — furniture, appliances, custom kit. Needs advance-payment capture at the counter and a clean backorder so the balance and delivery are tracked in Inventory and Sales.
Retail operations / store manager
Owns credit exposure and process consistency across cashiers. Needs a credit-limit guard, role-scoped permissions, and pro-forma/quotation PDFs that match company branding — configurable without touching code.
Odoo admin / finance controller
Cares that deposits reconcile against the eventual invoice and that the addon is upgrade-safe across 17/18/19. Needs documented models, security via `ir.model.access.csv`, and a Git handover for audit.
How POS Sales Order & Quotation from Register Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Fit to your B2B/special-order flow | Built to your scoped requirements | Fully custom but you own every decision | Fixed to the author's assumptions | No sale-order-from-POS path |
| Deposit / advance capture | Down-payment product posts to final invoice | Depends on your developer's design | Often loose POS tender, not reconciled | POS payment only, no deposit-on-order |
| Backorder / partial delivery | Feeds `stock.picking`, backorder kept open | Build it yourself against Inventory | Varies; frequently unsupported | POS closes against on-hand stock only |
| Credit-limit check | Configurable warn-or-block on receivable | Extra scope to implement | Rarely included | Not enforced at the register |
| Odoo 17/18/19 support | Built and tested for your version | You maintain across upgrades | Depends on author's update cadence | Version-native, feature absent |
| Ownership & source | Git repo handed over to you | You own it | Licensed, source often obfuscated | Core, not modifiable safely |
| Support & accountability | Post-go-live window + optional retainer | Whoever you hired | Author forum, best-effort | Community/Enterprise general support |
| Time to working solution | one working week from confirmed scope | Longer; full spec-to-build cycle | Instant install, then adapt/fight it | Immediate but missing the feature |
Frequently Asked Questions about POS Sales Order & Quotation from Register
Is this an existing app I can download and install today?
No. It is build-to-order. ECOSIRE builds the module against your Odoo edition and version, installs it, and supports it. There is no instant download because the credit policy, deposit product, numbering and report layout are configured to your business during scoping.
How long does delivery take?
Typical delivery is one working week from confirmed scope. After the scoping call we write a fixed scope covering your exact flows; the clock starts once you approve it. Simpler configurations land nearer two weeks, heavier credit or multi-report requirements nearer four.
Does it create a real sale order or just another POS order?
A real `sale.order` in the back office — with your quotation sequence, taxes, discounts and terms — not a `pos.order`. That is the whole point: the document flows into Sales and Inventory exactly as a desk-entered order would, including delivery pickings and invoicing.
How are deposits and partial deliveries handled?
Advance payments are captured using Odoo's down-payment product so the deposit posts against the final invoice rather than sitting as loose POS tender. Confirmed orders feed `stock.picking`, so you can validate a partial delivery now and Odoo keeps the backorder open for the balance.
Will it work on Odoo Community or only Enterprise?
Both. Core behavior — raising the order, credit check, backorders, QWeb reports — is Community-compatible. Some down-payment conveniences differ between editions; we confirm your edition during scoping and implement the equivalent flow so the outcome is the same.
How do updates and support work after go-live?
Every build includes a post-go-live support window for defect fixes and configuration tweaks. Because you receive the Git repository, the code is yours to maintain or extend. We also offer version-migration and ongoing support engagements when you upgrade Odoo (for example 18 to 19).
Can other systems trigger the order creation?
Yes. The register-to-order path is exposed cleanly so it is callable over Odoo's JSON-RPC / XML-RPC API, letting an external system, kiosk or integration raise the same sale order or quotation programmatically with the same validation.
Related Modules

POS Restaurant Floor Plan Designer Pro
A build-to-order Odoo POS extension that gives multi-floor venues a true drag-and-drop floor designer with custom table shapes, seat capacities, visual merge/split, and a live occupancy and turn-time heat-map. ECOSIRE builds, installs, and supports it for Odoo 17, 18, and 19.

POS Restaurant Recipe & Ingredient Stock (BOM)
A build-to-order Odoo module that deducts raw ingredients from inventory on every dish sold via recipe BOMs, and reports true food cost, margin, and yield per menu item. ECOSIRE scopes, builds, installs, and supports it for Odoo 17.0, 18.0, or 19.0.

POS Show Discounted Price
A build-to-order Odoo Point of Sale extension that surfaces each product's discounted price directly on the POS product grid and order lines, so cashiers and customers see the real, post-discount amount at a glance. ECOSIRE scopes, builds, installs, and supports it for your Odoo 17/18/19.

POS Show Product Price
A build-to-order Odoo Point of Sale module that renders each product's price directly on its selection card in the POS product grid, so cashiers see prices at a glance without opening a product. ECOSIRE scopes, builds, installs, and supports it on your Odoo 17, 18, or 19.
POS Sales Order & Quotation from Register
Turn any POS session into a B2B counter: convert the cart to a back-office sale order or quotation, take a deposit, and hand off backorders and partial deliveries to Inventory — without leaving the register.
- "Create Sale Order / Quotation" action inside the POS UI (OWL component injected into the `point_of_sale` asset bundle) that serializes the live cart
- Cart-to-`sale.order` mapping preserving product, quantity, unit price, discount and tax lines — a real `sale.order`, not a `pos.order`
- Choose the document outcome at the counter: draft quotation (`state='draft'`) or confirmed sale order that reserves stock
- Deposit / advance capture via Odoo's down-payment product so prepaid amounts post against the final invoice instead of floating as loose POS tender