| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 291 |
| Technical Name |
ms_safepay_payment |
| License | AGPL-3 |
| Website | https://www.mountsol.com |
| Versions | 17.0 18.0 19.0 |
Safepay Payment Provider
Accept online card payments in your Odoo eCommerce store through Safepay (getsafepay.com) Hosted Checkout — with 3D Secure, refunds, and secure webhooks.
Why Choose This Module?
A complete, native integration with Odoo's standard payment framework — nothing extra to learn.
|
💳
Hosted CheckoutCustomers pay on Safepay's secure hosted page. Card details never touch your Odoo server — PCI scope stays with Safepay. |
🔒
3D Secure (OTP)Every card payment is verified with 3D Secure — fraud protection, chargeback liability shift, and SBP 2FA compliance. |
↩
Full & Partial RefundsRefund any payment — full or partial — straight from the Odoo payment record. Over-refunds are blocked automatically. |
|
📡
Secure WebhooksSafepay notifies Odoo directly — orders confirm even if the customer closes the browser. Every webhook is HMAC-SHA256 verified. |
🔧
Sandbox & LiveTest Mode uses Safepay's sandbox (no real money). Flip one setting and add production keys to go live. |
⚙
Native & Automatic
Built on Odoo's |
Requirements
payment module (installed automatically as a dependency).
Set Up Your Safepay Account
You will collect three values from your Safepay dashboard and paste them into Odoo.
|
🔑
Public KeyIdentifies your store when a payment session is created. |
🔒
Secret KeyAuthenticates server-to-server API calls. Keep it private. |
📡
Webhook SecretVerifies the authenticity of incoming webhook notifications. |
Step A1
Create or log in to SafepayGo to getsafepay.com and Sign up for an account (or Log in if you already have one). Safepay gives you two separate environments — use the Sandbox dashboard for testing, and the Production dashboard for real payments. |
Sandbox — for testing
https://sandbox.getsafepay.com/dashboard/login
Production — for live payments
https://getsafepay.com/dashboard/login
💡 Sandbox and Production are separate accounts with separate API keys. Configure Sandbox first, verify everything works, then switch to Production. |
Step A2
Copy your API keysIn the Safepay dashboard, open Developer → API. Copy the Public Key and Secret Key. Use your Sandbox account for testing and your Production account when going live — each has its own keys. |
|
|
Step A3
Add a webhook endpointOpen Developer → Endpoints and add this URL (replace with your domain):
https://your-domain.com/payment/safepay/webhook
Then click View shared secret and copy the Webhook Secret (see the next step). |
Step A4
Copy the Webhook SecretStill under Developer → Endpoints, click View shared secret. Reveal the key with the 👁 icon (or the copy button) and copy the Webhook Shared Secret. You will paste this into Odoo's Webhook Secret field so every incoming notification can be HMAC-SHA256 verified as genuinely from Safepay. ⚠️ Do not click Rotate — it generates a new secret and invalidates the old one. Just copy the existing key. |
|
Install the Module
Add the module to your addons path, then in Odoo go to Apps, update the apps list, search “Safepay” and click Install. The accounting payment method, journal line, and provider record are created automatically.
Configure in Odoo
|
1
Open ProvidersGo to Invoicing → Configuration → Payment Providers and open Safepay. |
2
Set StateTest Mode for sandbox, or Enabled for live payments. |
3
Paste KeysIn the Credentials tab, paste Public Key, Secret Key & Webhook Secret. |
4
Set JournalIn the Configuration tab, set the Payment Journal (e.g. Bank). |
5
PublishClick Publish so Safepay appears on the website checkout. |
Payment Providers → Safepay — State, Credentials, and Publish
The Customer Payment Flow
From checkout to confirmation — a smooth, secure flow your customers already trust.
1. Select SafepaySafepay appears with its logo as a payment option at checkout. |
2. Pay on SafepayThe customer enters card details on Safepay's secure hosted page. |
3. 3D Secure (OTP)The bank verifies the customer with a one-time password. |
4. Order ConfirmedThe customer returns to Odoo and the order is confirmed — payment recorded. |
Refund from Odoo
Open the payment, click Refund, and enter the amount — full or partial. Odoo sends the request to Safepay and records the refund.
Refund wizardEnter any amount up to the maximum available. Over-refunds are blocked. |
Refund confirmedA refund transaction is created and logged in the payment's history. |
Reliable, Signed Webhooks
Safepay notifies Odoo directly when a payment succeeds, fails, or is refunded — so orders stay in sync even if the customer never returns to your site. Every notification is verified with an HMAC-SHA256 signature; forged requests are rejected.
Safepay → Developer → Webhook Logs — every payment & refund event delivered
Odoo & Safepay, Always in Sync
Every payment and refund made in Odoo is reflected in your Safepay dashboard — easy reconciliation, complete transparency.
PaymentsComplete, Refunded & Partial-refund statuses — matched to your Odoo transactions. |
RefundsFull and partial refunds appear here the moment you process them in Odoo. |
Technical Information
|
Odoo Version
19.0
|
License
LGPL-3
|
Category
Payment Providers
|
Depends
payment
|
Need Help or Customization?
We're here to help with installation, configuration, and any custom requirements.
Visit mountsol.com →
Please log in to comment on this module