User guide
Cashfree Payment Gateway for Odoo: Setup and User Guide
How to install, configure and use the Cashfree Payment Gateway module for Odoo 19.0 and 20.0, covering checkout, payment recovery, refund approvals, settlement reconciliation and discrepancy checks.
KalvyAI Engineering · · 8 min read

Cashfree Payment Gateway (technical name ki_payment_cashfree) connects Odoo 19.0 and 20.0 to Cashfree Checkout. Customers can pay quotations, sales orders, invoices and eCommerce orders by UPI, card, net banking or wallet. The module also handles the work around payments: failed-payment recovery emails, refund approvals, settlement reconciliation and hourly checks that Odoo and Cashfree agree.
This guide covers installation, setup and each main feature. You can buy and install the app from the KalvyAI store page.
What the app is for
The module does two jobs.
- Collect payments. Customers pay through Cashfree Checkout, and Odoo verifies the payment status in real time.
- Automate the follow-up work. That includes recovery reminders when a payment fails, dual approval for large refunds, settlement imports that split out gateway fees and GST, bank matching by UTR, and hourly discrepancy checks.
Who it helps
- Business owners selling in India who want customers to pay by UPI, cards (Visa, Mastercard, RuPay, Amex), net banking or wallets directly from Odoo documents.
- Finance teams who reconcile Cashfree settlements against bank statements by hand today.
- ERP admins who need refund controls, role-based access and multi-company support.
- Developers who want signed, verified webhooks with retries rather than a fragile custom integration.
Requirements
Check these before you install:
- Odoo 19.0 or 20.0, Community or Enterprise, on Odoo.sh or self-hosted. Odoo Online (SaaS) is not supported.
- Standard Odoo Invoicing (
account_payment) and Sales (sale) modules. - An active Cashfree merchant account, with either sandbox test keys or production credentials.
- A public HTTPS URL so Cashfree can deliver signed webhook notifications.
- A configured Odoo outgoing mail server, needed for payment recovery reminder emails.
Installation and setup
Step 1: Install the module
- Get the module from the store page.
- Add it to your Odoo.sh repository or your self-hosted addons path. [CHECK: delivery format and exact install instructions from the store]
- Update the Apps list, search for Cashfree Payments and click Install.
The required dependencies (Invoicing, Online Payments, Sales) are installed and configured automatically.
Step 2: Connect your Cashfree credentials
- Go to Invoicing › Configuration › Online Payments › Cashfree.
- Enter your Cashfree App ID and Secret Key.
- To test first, leave the Live toggle unticked and use your sandbox App ID and Secret Key.
- Click Test Connection and confirm that it succeeds.
Step 3: Configure the webhook
- On the Cashfree provider form in Odoo, copy the Webhook URL shown there. [CHECK: exact field label and location on the provider form]
- Open your Cashfree Developer Dashboard and paste the URL into the webhook settings. [CHECK: Cashfree dashboard menu path for webhooks]
- Make sure your Odoo URL is public and uses HTTPS. Webhooks will not reach a localhost instance.
Step 4: Set refund limits and recovery options
- In Odoo, set your refund limit threshold. Refunds above this amount will need a second approver. [CHECK: menu path and field name for refund limits]
- Turn on payment recovery and review the email options. Recovery is disabled by default until you activate it. [CHECK: menu path and field names for recovery settings, including quiet hours]
- Assign users to the security groups: User, Refund Approver and Manager. [CHECK: menu path for user group assignment]
Step 5: Publish and go live
- Once sandbox testing works, tick Live and replace the sandbox keys with production credentials.
- Set the provider state to Enabled or Published.
- Customers can now check out using Cashfree straight away.
We recommend running one full test cycle in sandbox before going live:
1. Create a quotation or invoice and open the customer payment link
2. Pay with a sandbox payment method
3. Confirm the transaction status updates in Odoo
4. Trigger a failed payment and confirm the recovery sequence starts
5. Request a refund above your limit and approve it as a different user
6. Import a settlement and check fees, GST and UTR matchingUsing the main features
Taking payments with Cashfree Checkout
Cashfree works on sales orders, customer invoices and the website eCommerce portal.
- Send the customer a quotation, sales order or invoice with an online payment link, or let them check out on your website.
- The customer chooses Cashfree and pays by UPI (Google Pay, PhonePe, Paytm and others), credit or debit card, net banking or wallet.
- Odoo verifies the payment status in real time and updates the transaction.
For international transactions, the module supports INR and any currency enabled on your Cashfree merchant account.
Automated payment recovery
When a payment fails, the module sends reminder emails with a direct pay link on this schedule:
Failed payment
+45 minutes -> reminder 1 with pay link
+24 hours -> reminder 2 with pay link
+72 hours -> reminder 3 with pay linkHow it behaves:
- Quiet hours stop reminders going out at unsociable times. [CHECK: how quiet hours are configured and what happens to a reminder that falls inside them]
- Instant cancel on payment. Before each reminder is sent, Odoo checks the current due balance and queries Cashfree. If the order is already paid, no reminder goes out.
- Emails are sent through your Odoo outgoing mail server, so that server must be configured and working.
Refunds with limits and dual approval
Refunds above your configured threshold need approval from a second person.
- A user requests a refund on a paid Cashfree transaction. [CHECK: where the refund button or action is located]
- If the amount is within the limit, the refund proceeds. If it exceeds the limit, the request waits for approval.
- A member of the Refund Approver group reviews and approves it. The requester cannot approve their own refund.
- Every step is logged in the audit trail.
Refunds post outbound accounting payments in Odoo. If local tax law requires a credit note, create it separately.
Settlement import and bank reconciliation
Cashfree pays you net of fees and GST. The settlement feature splits that amount out so your books match the bank.
- Import the Cashfree settlement. The module supports a daily import of settlements. [CHECK: whether the daily import is automatic, manual file upload, or both, and the menu path]
- Review the settlement lines: gross payments, refunds, gateway fees and GST.
- Post the settlement. Odoo creates journal entries that book gateway fees to your fee expense account and GST to the tax account. [CHECK: where the fee expense and tax accounts are configured]
- Bank statement lines are matched to the settlement by UTR, so the net deposit reconciles without manual searching.
This uses standard Invoicing features and works the same in Community and Enterprise.
Hourly discrepancy monitoring
A background job runs every hour and compares Odoo transactions with the Cashfree API.
- If a status differs (for example, paid in Cashfree but pending in Odoo), managers receive an alert.
- A daily digest summarises any mismatches.
[CHECK: whether alerts are sent by email, Odoo activity or both, and who receives them]
Secure webhook queue
Cashfree sends status updates to your webhook URL. The module:
- Verifies each event's signature cryptographically.
- Protects against replayed events.
- Filters duplicate events.
- Retries automatically on network errors.
No daily action is needed. If webhooks are not reaching Odoo (for example on a localhost test server), you need to check payment status manually. [CHECK: how to run a manual status check]
Payment activity analytics
Reports cover transactions, refunds, fees and settlements. Each can be viewed as a pivot table, a chart or a detailed list. [CHECK: menu path for Cashfree reports]
Useful views to set up:
- Fees by month, to compare against your merchant agreement.
- Refunds by approver, to review approval activity.
- Settlements by status, to spot anything not yet reconciled.
Multi-company and role-based access
Each company can have its own Cashfree provider configuration with separate credentials. Access is controlled by three groups:
- User: day-to-day payment work. [CHECK: exact permissions for the User group]
- Refund Approver: approves refunds above the limit.
- Manager: full configuration and discrepancy alerts. [CHECK: exact permissions for the Manager group]
Tips
- Test end to end in sandbox. Leave Live unticked and run payments, a failed payment, a refund and a settlement before switching to production.
- Send a test email first. Recovery depends on your outgoing mail server, so confirm it works before activating recovery.
- Set the refund threshold to match your internal policy, and make sure at least two people can approve, so refunds do not get stuck when one person is away.
- Check currencies in Cashfree. If an international currency fails, confirm it is enabled on your Cashfree merchant account.
- Read the daily digest. It is the quickest way to catch a missed webhook or a stuck transaction.
Limitations
- Odoo Online (SaaS) is not supported. Custom modules require Odoo.sh or on-premise hosting.
- Webhooks need a publicly accessible HTTPS URL. Localhost environments rely on manual status checks.
- Refunds post outbound accounting payments. Credit notes must be generated separately if local tax law requires them.
- Recovery emails go through Odoo's outgoing mail server, and recovery is disabled by default until you activate it.
- Cashfree gateway fees and taxes are billed directly by Cashfree under your merchant agreement. The module records them; it does not set them.
- Available currencies depend on what is enabled on your Cashfree merchant account.
FAQ
Which Odoo editions and versions are supported?
Odoo 19.0 and 20.0, both Community and Enterprise, on Odoo.sh or self-hosted servers.
Do I need Odoo Enterprise or full accounting for settlement reconciliation?
No. Settlement reconciliation uses standard Invoicing features and works the same in Community and Enterprise.
Can I test with Cashfree sandbox keys first?
Yes. Leave the Live toggle unticked and enter your sandbox App ID and Secret Key for end-to-end testing.
Which payment methods can customers use?
UPI (Google Pay, PhonePe, Paytm and others), credit and debit cards (Visa, Mastercard, RuPay, Amex), net banking across Indian banks, and wallets.
How are Cashfree fees and GST handled?
When you post a settlement, gateway fees are booked to your fee expense account and GST to the tax account. The net deposit is matched to your bank statement by UTR.
Will customers who already paid get a recovery reminder?
No. Before each reminder is sent, Odoo checks the current due balance and queries Cashfree. Paid orders are excluded.
Where do I buy and install the module?
On the Cashfree Payment Gateway store page.
How KalvyAI can help
We build and connect Odoo, ERPNext and Shopify systems, and we can help you install this module, configure the Cashfree webhook, set up fee and tax accounts for reconciliation, and test the full payment cycle before you go live. If you want an AI agent to work alongside your finance team, for example reviewing discrepancy digests with human approvals, a budget and an audit trail, we can set that up too.
Contact us to talk through your setup.
- User guide
- Odoo
- Cashfree
- Payment Gateway
- UPI
- Reconciliation
- User Guide
KalvyAI Engineering · Engineering team
The engineers who build, connect and fix business systems at KalvyAI: Odoo, ERPNext, Shopify and AI agents that work inside them with approvals, budgets and an audit trail.



Comments
No comments yet. Questions and corrections are welcome.
Rate this post or leave a comment