How to Automate Odoo Orders with an AI Voice Agent (Setup Guide)

A practical guide to automating Odoo sale orders with an AI voice agent: read products and pricing, match partners, and create orders via Odoo's API, with India GST and WhatsApp tips.

AutosysAI Team·

To automate Odoo orders with an AI voice agent, you connect the agent to Odoo's API (directly via the External API / XML-RPC or JSON-RPC, or through middleware like n8n or Make) so the agent can read products, pricing, and customer records during a call and then create or update sale orders in Odoo when the call ends. The agent handles the conversation, confirming who's calling, what they want, quantities, and delivery details, and Odoo becomes the system of record where the sale.order is written, partners are matched, and your team picks up fulfillment. Below is how that loop actually works and where the practical gotchas are.

What does "automating Odoo orders with a voice agent" actually mean?

It means letting a phone conversation create or change real records in Odoo without a human typing them in. There are two directions to think about:

  • Odoo → agent (context): Before or during the call, the agent looks up the customer (the Odoo partner), their order history, the products you sell, and current pricing or stock, so it talks about real SKUs and real availability instead of guessing.
  • Agent → Odoo (write-back): After the conversation, the agent creates a sale.order (or a quotation), attaches order lines, links it to the right res.partner, and optionally logs the call as a note or activity for follow-up.

Common jobs this covers: a returning customer calling to reorder, an inbound order line for a distributor or kirana supplier, a callback to confirm or modify an open order, or an outbound call to collect a repeat order on a schedule. The point isn't a fancier dialer, it's that the call ends with a structured order in Odoo that your fulfillment process already understands.

What do you need before you start?

  1. An Odoo instance you can reach via API. This works with Odoo Online (SaaS), Odoo.sh, or self-hosted. Confirm which, because network access and custom-module options differ.
  2. API access and credentials. Odoo exposes an External API. You'll typically authenticate with a username and an API key (Odoo supports API keys you generate per user) rather than a raw password. Check your Odoo version's current docs for the exact auth method and endpoints, since details vary across versions.
  3. The right Odoo apps installed. At minimum the Sales app (for sale.order) and Contacts (for res.partner). If you want stock checks or invoicing, you'll also touch Inventory and Accounting/Invoicing.
  4. A voice agent that can make outbound HTTP/RPC calls. Either an off-the-shelf tool with API actions, or a custom agent, which is what AutosysAI builds and runs for clients.
  5. Telephony that can place and receive calls on Indian numbers. For India this usually means a provider such as Exotel, Plivo, Ozonetel, or Knowlarity, or a global CPaaS like Twilio, chosen by your numbers, languages, and call volume.
  6. A decision on what the agent is allowed to do. Create quotations only, or confirm orders? Apply discounts or never? Define this before you build, not after.

How does the agent authenticate and talk to Odoo?

Odoo's External API is typically accessed via XML-RPC, and many versions also support JSON-RPC. The high-level flow is the same:

  1. The agent (or the middleware between it and Odoo) authenticates against your Odoo database with a user login and API key, getting back a user ID.
  2. With that user context, it calls Odoo models through the generic execute_kw method, for example search_read on product.product to find a SKU, search_read on res.partner to match a caller, and create on sale.order to place the order.
  3. Permissions follow the Odoo user. The API user only sees and does what that user's access rights allow, so create a dedicated integration user scoped to exactly the models it needs.

Two practical notes: use an API key tied to a dedicated user rather than a real employee's password, and verify the exact model and field names against your own Odoo, because custom fields and localized modules (including India-specific tax/GST modules) change what's available. Treat the version-specific API mechanics as something to confirm in current Odoo documentation, not from memory.

How do you create or update a sale order from a call?

A reliable order-capture flow looks like this:

  1. Identify the caller. Search res.partner by phone or name. If there's no match, the agent collects the details and creates a new partner (or flags it for a human to verify, depending on how strict you want to be).
  2. Resolve the products. Map what the customer says ("two cartons of the 1-litre") to actual product.product records. This is the step that breaks most often, so build it deliberately, by code, by clear product names, or by a synonyms list you maintain.
  3. Build order lines. For each product, capture quantity and let Odoo apply pricing from your price lists rather than having the agent invent prices.
  4. Create the record. create a sale.order with the partner and order_line entries. Decide whether the agent leaves it as a draft quotation for human review or confirms it, confirming is convenient but riskier on the first rollout.
  5. Write context back. Log a call note or an activity on the order so your team sees what was said and what to follow up on.

A safe default for go-live is draft quotations plus a human confirm step. Once you trust the mapping and the conversation quality, you can let the agent confirm low-risk reorders automatically and keep human review for new customers or large values.

What should you map between the agent and Odoo?

Map deliberately. A minimal, dependable mapping:

| Purpose | Odoo model / field (example) | Direction | |---|---|---| | Who's calling | res.partner (phone, name) | Odoo → agent | | What you sell | product.product (name, code) | Odoo → agent | | Pricing | Odoo price lists | Odoo → agent | | Stock (optional) | stock.quant / availability | Odoo → agent | | The order | sale.order + order_line | agent → Odoo | | Follow-up | Note / activity on the order | agent → Odoo |

The discipline that matters: let Odoo own pricing and tax. The agent should read prices and let Odoo compute totals and GST, not state amounts it computed itself, that keeps your numbers correct and auditable.

What are the India-specific things to get right?

  • GST and invoicing: If you run India's GST localization, taxes and HSN handling live in Odoo's configuration. Let Odoo apply them; the agent should not quote a final tax-inclusive price as fact unless it's reading it back from Odoo.
  • WhatsApp follow-up: Many Indian buyers prefer WhatsApp to confirm. A strong loop is: agent takes the order → writes the sale.order → triggers a WhatsApp message (order summary, a payment link, or a delivery ETA) via the WhatsApp Business API or your messaging stack.
  • Regional languages: Order calls happen in Hindi, English, Tamil, Telugu, Marathi and plenty of code-switching (Hinglish). Confirm your speech stack actually handles the languages and product names your customers use.
  • Phone formats: Normalize numbers to E.164 (+91…) so partner matching and any outbound dialing don't fail on inconsistent formats stored in Odoo.
  • Calling hours and consent: For outbound reorder calls, restrict to sensible windows and honor opt-outs. Operating responsibly under India's TRAI telecom rules and the DPDP Act, data minimization, purpose limitation, honoring opt-outs, is your obligation as the data controller; build it into the trigger logic.

Should you build this in-house or have it done for you?

Building it yourself is reasonable if you have engineering time and want full control over prompts, the order logic, and telephony. The Odoo API itself is rarely the hard part. The hard parts are mapping messy spoken product names to real SKUs, handling quantities and corrections mid-sentence, switching languages cleanly, keeping pricing and tax owned by Odoo, and not creating junk orders under real call volume.

AutosysAI is a done-for-you AI voice-agent agency: we design, build, and run the agent and wire it into Odoo (or whatever stack you use), choosing telephony that fits your numbers, languages, and order patterns. We don't replace your telephony provider, we build and operate the AI layer on top of it, with the Odoo order loop set up end to end and a sensible draft-then-confirm safety net for go-live.

Get started

Want orders captured over the phone and written straight into Odoo without burning sprints on RPC quirks and product mapping? Book a demo and we'll walk through your Odoo setup and what an agent would do on your order calls. To sketch out what it might cost at your call volume, try the cost calculator.

AutosysAI

AI voice agents, founder automations, and chatbots that run your business operations 24/7.

MSME Registered (Govt. of India)

Udyam Registration No: UDYAM-RJ-17-0595127

See an AI voice agent built for your use case, book a quick demo.