Bista Solutions’ Odoo & Coupa Integration
Odoo Coupa Integration
Odoo ERP is enterprise resource planning software that is used to manage business processes across a company. It features hundreds of applications, tailored to optimize different departments and operations. Coupa, on the other hand, is a platform for all business spend management activities such as invoicing, contracting, and payments.
While Odoo ERP provides users with its own Invoicing application, as well as additional apps related to making and receiving payments – sometimes businesses don’t want to disregard what it’s currently using and have been using for years. In these instances, integration can help save time and easily migrate data over without any loss or mismanagement.
As such, Bista Solutions created a Coupa integration with Odoo and we’ll look at some of its features post-integration below. This document will mainly focus on Coupa purchase orders and invoices.
Odoo Coupa Workflow Diagram:
Coupa Configuration
To begin, log into your Odoo dashboard. The integration can be accessed by the steps as seen in the pictures below: Sales → Configuration → Coupa Configuration → Config.
The image you see below is a Coupa reference document that we’ll use as an example to show you what types of configurations are available with this integration.
The sequence number here would be CCON00001 and then if you look at the fields, most are self-explanatory, while others we’ll go over in more detail.
In this configuration, we have defined 2 Environments: Sandbox and Production. The Sandbox environment is a testing platform, while the Production environment updates information in real time. This information is clearly visible when you take a look at the PO Import URL field with Sandbox selected vs. Production selected.
- A/N: PO Import URL uses API call to fetch the Purchase Orders / Sales Orders
Sandbox Environment
As you can see in the image above, the PO Import URL is: http://lls-test.coupahost.com/api/purchase_orders (Coupa customer account)
Production Environment
On the other hand, when the Production Environment is selected, the PO Import URL becomes: htt://lls.coupahost.com/api/purchase_orders
Let’s go ahead and define a few other fields:
- The API Key is configured at the Customer Portal Site
- The Customer field is defined and added to the Customer Master Data
- This customer will also automatically be linked to any Sales Orders since they are in the Customer Master
- You can have multiple customers within the same company, but if you try to duplicate your customer (i.e. the domain/company), you will not be able to do so since each customer has a different Coupa configuration. Even if you try to duplicate it, you will be faced with the error message as seen in the image below.
- Coupa Vendor Name: Vendor name is associated with ShowYourLogo at the customer site (unique identifier at customer portal site, when they open the customer portal they see ShowYourLogo vendor information; this is our vendor name with this number)
- The invoice Export URL is used to post invoices
- Invoice exporting works with CXML
- The following fields need to be configured on the customer portal site and they need to be sent out when sending out invoices from Odoo to Coupa in Coupa. This is information that needs to be provided so that invoices can be exported.
- CXML Supplier Domain
- SMXL Supplier Identity
- CXML Domain
- CXML Identify
- CXML Secret → this is a password that is configured for the CXML Invoicing
- The following fields need to be configured on the customer portal site and they need to be sent out when sending out invoices from Odoo to Coupa in Coupa. This is information that needs to be provided so that invoices can be exported.
- Invoice exporting works with CXML
- Invoice Void URL is used to cancel/void invoices
Last Import PO Date: Even though Odoo has a scheduler that can easily export Invoices from the Customer Portal into Odoo, users can complete this task manually by choosing the date from which the export should begin. So if you want all the invoices from November 1st, 2020 til the current date (i.e. today), you need to select 11/01/2020 and click on Import PO.
- Likewise, as seen in the image above, if you want to import a specific PO, you need to copy and paste the customer reference number from the customer portal in Order ID (under the PO Parameters section in Odoo) and click Import PO.
- Then all you need to do, in either instance, is refresh the Quotations page and you’ll see your new imports.
Sales Order
When importing a PO from the customer portal into Odoo, it is worth noting that if the Part Number (in the Order on the customer portal) exists within Odoo, then the Product line in Odoo’s Sales Order will automatically be populated. If it does not exist, since in most cases it will be a company’s internal reference number, then the Product ID will be blank. Please see the image example below.
Simply put, if the SKUs / Product information is in the system, the Product lines will be auto-filled. If it is not, the Product line would be blank. In such instances, users cannot “Confirm” the Order because Odoo will not let them do so.
However, since Bista predicted this would be an issue – wherein our client would be forced to reference back to the POs on the customer portal – we created a Coupa Order Lines tab. This automatically populated the products that were ordered, even if the Order Lines in the Sales Order does not. This way our clients are always in the know of what’s going on and have the most accurate information to make informed decisions. Additionally, they can manually fill in the blank product lines from the same window.
Locking Feature
Another great fail-safe the Bista team configured during the Coupa integration process is not allowing users to accidentally alter the quantity of products that were ordered. If a user mistakenly changes a quantity of 1 into 2, the Odoo system will detect this change, inform the user, and revert it back to 1. The same applies to “Description and Unit Price”. None of those can be altered.
Why is that? Because the customer has placed the order via Coupa, and therefore they need to approve these changes. However, if you place the order for your customer via Odoo, all fields can be changed/altered as needed.
The Coupa Order Reference field in Odoo is auto-filled and a great reference source for users if needed. The Customer Reference field on the Sales Order in Odoo is essentially the Purchase Order number on Coupa.
The Workflow
If you go into your Coupa Supplier Portal, you won’t see an invoice there unless you complete a flow. This workflow begins when you export the PO from the customer portal and import it into Odoo. The import generates a Quotation.
- Quotation → confirm to Sales Order
- Click on Delivery Order and validate it to process the delivery order
- Go back to Sales Order and create an Invoice
- When you Post the Draft Invoice, it will be posted on Coupa too (including product details, quantity and price).
Invoice Approvals
- Once the order has been processed and the invoice has been posted, there is another configuration that the Bista team has done
- If the order total is less than $500.00 then the Invoice will automatically be approved and you will see the Invoiced amount in the Lines section on Coupa Supplier portal. If the total, however, is greater than $500.00, then the invoice Status will be “Pending Approval”. This can be seen in the images below. Please note that the Invoiced amount is 0.00 under the “invoice isn’t approved”.
This integration has several other features that we haven’t covered. For example, the Bista team has allowed for users to create multiple partial invoices, and users can also add taxes as needed. Overall, this is a brief overview of the capabilities of this Coupa and Odoo integration.
If you would like to see more, connect with our team at Bista Solutions here. Not only do we have over 250 developers and functional consultations available to help incorporate your specific needs, but our team is also certified Odoo Gold Partners, with over 5 Odoo Best Partners across North America wins under our belt. With our 20+ years of ERP experience, along with our knowledge and expertise, you can rest assured that we’ve got you covered. Contact us for a free demo and see how we can help you with your integration needs.