| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 562 |
| Technical Name |
eh_payment_zaincash |
| License | OPL-1 |
| Website | https://www.erpheritage.com.au |
| Versions | 16.0 17.0 18.0 19.0 |
ZainCash Payment Provider
Accept ZainCash wallet payments in Iraq at your Odoo checkout: website, eCommerce, Sales, Invoicing and Point of Sale. Built on the ZainCash Payment Gateway v2 with OAuth2, signed callbacks, inquiry-confirmed status and refunds, settling in Iraqi Dinar.
One clear configuration screenEnter your ZainCash client id, secret and API key, choose Test or Production, and you are live. The Iraqi Dinar is set up for you on install.
Why this module
The ZainCash gateway, wired into Odoo the honest way.
Paid means paid
Every payment result is confirmed through the ZainCash inquiry API before an order moves. A closed browser tab or a spoofed redirect never marks an order paid by mistake.
Signed callbacks, verified
Redirect and webhook tokens are checked with a HS256 signature before any state changes. Verification is self contained, so there is no extra Python library to install.
Refund from Odoo
Reverse a completed ZainCash payment straight from the transaction. Switch Test and Production in one click, and the Iraqi Dinar is set up for you on install.
Day in the life
A shopper checks out in Baghdad
The shopper picks ZainCash and is taken to the ZainCash page to confirm with their wallet number and OTP. They come back to your store, Odoo verifies the signed token, asks ZainCash for the authoritative status, and marks the order paid. If they close the tab first, the production webhook and the inquiry API still settle it. Need to give the money back, one refund from the transaction reverses it.
Edge cases
The cases most modules quietly ignore.
In the shipped code today, each one a place where a cheaper module silently does the wrong thing.
ZainCash rejects the capitalised language codes its own documentation lists. The provider sends the lower-case codes the live API actually accepts, checked against the real gateway.
The gateway can return an error inside an HTTP 200 response. The provider reads that error message and surfaces it, instead of treating the call as a success.
The redirect token is verified for authenticity, but the order status comes from the inquiry API, so a forged or replayed redirect cannot flip an order to paid.
A redirect or webhook with an invalid signature is rejected with a 403 and never processed.
What is inside
Built to do the job, end to end.
- Redirect checkout. OAuth2 client-credentials authentication, transaction init, and a clean redirect to the hosted ZainCash page.
- Inquiry confirmation. Authoritative payment status pulled from the ZainCash inquiry API on return and on webhook.
- Refunds. Full refund through the ZainCash reverse API, triggered from the Odoo payment transaction.
- Production webhooks. Optional server-to-server notification so orders settle even when the shopper leaves.
- Signed token verification. Self-contained HS256 check with expiry validation, no external Python dependency.
- Test and Production. One switch between the ZainCash UAT sandbox and your live credentials.
Honest about the edges
What this does not do, so nothing surprises you.
- Settles in Iraqi Dinar (IQD) only, as ZainCash does.
- Refunds are full only; partial refunds depend on your ZainCash commercial agreement.
- Webhooks are delivered in production only; the ZainCash sandbox does not send them.
- Saved-wallet reuse is not stored on the token; each payment starts fresh, as ZainCash recommends for first payments.
ZainCash Odoo, ZainCash payment provider, Iraq payment gateway Odoo, IQD payment Odoo, ZainCash Payment Gateway v2, Odoo website payment Iraq, ZainCash wallet checkout, Odoo payment acquirer Iraq, Odoo 16 17 18 19 ZainCash
ZainCash at checkoutShoppers pick ZainCash on your website, eCommerce or customer portal, then confirm on the ZainCash page with their wallet and OTP.
Confirmed, and refundable from OdooEvery payment is confirmed through the ZainCash inquiry API, and a full refund can be sent straight from the transaction.
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 562 |
| Technical Name |
eh_payment_zaincash |
| License | OPL-1 |
| Website | https://www.erpheritage.com.au |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module