Allowing customers to pay for their orders online is essential for a time efficient business. Previously our customer used our Stripe MOTO Backend Payments module to take card payments over the phone. However, they were looking to save time by having customers pay for their orders online, while also keeping the option to take MOTO payments if necessary.
There is a Stripe Payments module supplied with base Odoo which allows frontend website payments. Our customer however wanted to add some additional modifications and features to make the process leaner and better aligned with their business process.
Our customer wanted the Sales Order Proforma Invoice documents to include a link which would take their customers directly to a payment page on their website where they could pay for their order with Stripe. They also wanted the customer payments screen website to show a breakdown of the order so that customers could verify this before completing the payment.
They also wanted customers to have to confirm that they had read the terms and conditions of the sale before making payment.
Once they payment was complete, they also wanted some custom actions to be run in the system, these included sending the customer an email/SMS receipt and moving the Sales Order out of the ‘Waiting Payment’ state, into the next state.
We first extended the report template for Sales Orders, which is used to generate Proforma Sales documents which are sent to the customer, to include a ‘Pay Now’ button which would take the customer to the payments screen on the website. In the default Odoo process the customer would either need to have a Portal account to access this, or our sales team would need to manually generate this link and send it to the user manually.
Next, we extended the website payment screen to include a line-by-line breakdown of the Sales Order and include the ‘Net Total’, ‘VAT’ and ‘Gross Total’ of the order.
We also added a checkbox on this screen which must be checked before proceeding to pay for the order. This checkbox is to confirm that the customer ‘accepts the terms & conditions.’ There is also a link to the terms & conditions of the sale so customers can read these before they accept.
We then also added some processes to be completed after the payment has been taken. Once the payment has been successfully processed an email and SMS receipt will be sent to the customer and the Sales Order will be moved from the ‘Waiting Payment’ state to the ‘Waiting Confirmation’ state so the sales team can then proceed with confirming the order.
Using this module now removes the need for the customer’s Sales Team to take card details over the phone or to have to generate a payment link for online payment, it is instead included on the Proforma Sales Invoice which was already sent to the customer as part of the Sales process.
This module also allows customer to pay for their order online, without need a Portal/Website login/account.
How it Works
This module works by extending the default Odoo portal payment process to include a detailed breakdown of the order on the payments screen. The terms and conditions checkbox has also been added in which becomes a requirement for the order to be processed. The payments process is then also extended to automatically send an email and SMS receipt to the custom and move the Sales Order into the next state.
The modules also extend the customer’s customer Sales module which we had previously developed for the customer, to generate and add the ‘Pay Now’ button on the Sales Proforma Invoice document.
This module also works with the Refund feature of our Stripe Moto Payments module so payments made by customers online can be Partially/Fully refunded. The module also works with our Reconciling Stripe Payments in Odoo module, so payment and fee lines are automatically added and reconciled on the Stripe Bank Statement.
What is Stripe?
Stripe primarily offers payment processing software and application programming interfaces for e-commerce websites and mobile applications.
Any Questions or Need a Custom Bespoke Module?