Odoo Payment Provider Not Showing in SAR: Fix Guide
Why Tabby and Tamara vanish from your Odoo checkout in SAR, the filters Odoo runs in order, the Odoo 18 availability report, and how to read the API log.
You installed the module, pasted the keys, opened checkout, and nothing is there. Or the card option shows and the BNPL option does not. In almost every case this is not a broken module. It is one of the filters Odoo applies before it renders a single payment option.
This guide walks the same order Odoo walks internally: currency, provider state, company, country, amount. Then it covers what to do when the option does appear and the gateway call fails. If you have not configured the provider at all yet, start with the step by step guide to adding Tabby to Odoo and come back here if it still does not show.
How Odoo decides what to show at checkout
Odoo builds the payment list on the checkout page by filtering providers against the current order. In recent versions the helper is called _get_compatible_providers. Before that it was _get_compatible_acquirers.
That helper asks a series of questions in sequence. Is the provider enabled? Does it belong to the same company as the order? Does it support the order currency? Does it serve the customer country? Is the amount within the allowed range? Any single no removes the provider from the page. The instalment badge under the product price asks only the first of these questions, which is why it can show for a provider that checkout then leaves out; what the badge checks and what checkout checks puts the two side by side.
Up to Odoo 17, Odoo does not tell you which question failed. The option simply is not rendered, so the fix is to walk the filters one at a time. From Odoo 18 there is a shortcut that names the failing filter for you, and it comes first.
On Odoo 18 and later, let the checkout tell you
Odoo 18 added an availability report to the payment form. It is easy to miss, because it is a small bug icon rather than a menu.
- Log in as a user with Settings administrator rights. The report is only drawn for that access level, so a salesperson or a shopper never sees it.
- Put a product in the cart and go through to the payment step, or open the portal page of the quotation or invoice you want paid.
- Click the bug icon beside the payment method heading, and the report opens under the list. If no method rendered at all, the "No payment method available" warning carries a "Show availability report" link instead.
The report lists every provider that is enabled or in test mode, and every payment method, with a green tick or a red cross, and each cross carries a reason. Every reason points at one of the steps below:
- incompatible currency: the cart currency is not in the provider's Currencies field. Steps 2 and 5 cover it.
- incompatible country: the customer's country is outside the provider's country list. See Step 4.
- maximum amount exceeded: the cart is over the provider's Maximum Amount. See Step 4.
- incompatible website: the provider is pinned to another website. See Step 4.
- tokenization not supported: this page needs a saved payment method, which the module does not offer. See the last item in Step 4.
Two limits keep the report honest. First, it runs as you, and an internal user is shown unpublished providers too, so a green tick does not prove that a logged out visitor sees the option. Step 3 and the private window still apply. Second, the report only records Odoo's own filters. If Tabby or Tamara shows a green tick and is still missing from the page, the cart is in a currency outside the module's six, and the module's own guard from Step 5 removed the provider after Odoo had written the report. That usually means someone emptied the Currencies field on the provider.
Step 1: Activate the currency first
On a fresh Odoo database most currencies exist but are inactive. If your database was created with a different country or a generic chart of accounts, SAR itself may be sitting inactive.
Go to Accounting, then Configuration, then Currencies. Remove the Active filter in the search bar so you see the full list, then activate the currency you actually sell in: SAR, AED, KWD, BHD, QAR or OMR.
If you do not have the Accounting app, turn on developer mode and reach the same list from General Settings.
Decimal places matter for KWD, BHD and OMR
The Kuwaiti dinar, the Bahraini dinar and the Omani rial use three decimal places, not two. Odoo stores that on the currency record.
Leave it at two and you get rounding drift between what Odoo displays and what the gateway receives. Some gateways reject the request outright because the amount does not match the expected minor unit. Fix this before your first real order, because correcting it after you have posted journal entries is far more painful.
Step 2: Find out which currency the cart is really using
This is where most people get lost. Your company currency is not necessarily your order currency.
The pricelist decides
The currency on a sales order comes from the pricelist applied to that visitor, not from the company. If you have a USD pricelist attached to a country group, and a visitor arrives from a country inside that group, the cart flips to USD. A provider that only supports SAR then disappears, correctly.
Open Website, then Configuration, and look at which pricelists are selectable on the site and what currency each one carries.
The fastest test: add a product to the cart, open the draft sales order in the back office, and read its Currency field. That value, and nothing else, is what the payment filter uses.
Multi company
A provider record belongs to one company. A website that sells under a different company will never see it. Check that the Company field on the provider matches the company behind the website.
Step 3: State and published are two different switches
In Odoo 14 through 16 the menu reads Payment Acquirers. From Odoo 17 it reads Payment Providers, with a separate Payment Methods list.
A provider has three states.
- Disabled: never appears, anywhere.
- Test mode: appears with a visible test warning and runs against sandbox credentials. Plenty of shops go live in this state and then wonder why no money arrives.
- Enabled: the production state, and it expects production keys.
Published is separate
Payment providers carry a website published flag like any other publishable record. A provider can be fully enabled, visible to you in the back office, and still invisible to a shopper because it was never published.
Open the provider record, confirm the publish toggle, then test the shop in a private window while logged out. Testing as the administrator misleads you, because an admin sometimes sees what a visitor does not.
From Odoo 16 on there is a wrinkle: changing the State flips Published with it, so a provider switched to Test Mode is unpublished and only logged-in employees see it at checkout. The Tamara guide explains why you can see Tamara at checkout while a visitor cannot, and how that lets you test on a store that is already trading.
Step 4: The remaining filters
After currency and state, five things are worth checking.
- Countries: if you set a country list on the provider, any customer with an address outside it loses the option. Leave it empty unless you have a reason.
- Maximum Amount: a real field in Odoo, usually set once during testing and then forgotten. A small value quietly hides the option on larger carts. Odoo compares it in the company currency, converting the cart total first, so a company kept in riyals that sells in dirhams sets the limit in riyals.
- Payment methods: from Odoo 17 onward, a provider with no enabled payment method attached will not render.
- Journal: a provider without a properly configured accounting journal can appear and then fail at confirmation. Set it on the configuration tab.
- Saved payment methods: the module does not save Tabby or Tamara as a reusable payment method, because the customer approves each purchase on the provider's own page. Whenever Odoo needs a payment method it can charge again later, it drops every provider that cannot save one. The case you will meet is a cart holding a product from Odoo's Subscriptions app, which wants a payment method on file for the next period. The portal page where customers manage their saved payment methods leaves Tabby and Tamara out for the same reason. Both are expected, and no setting changes them.
If you run more than one website in the same database, also check any website restriction on the provider record. Pinning it to one site hides it from the others.
Step 5: The provider side currency guard
The module accepts six GCC currencies: SAR, AED, KWD, BHD, QAR and OMR. If the cart is in USD or EUR, the correct behaviour is for the option to disappear rather than appear and then fail at the gateway.
In Tabby & Tamara for Odoo that guard is built in from Odoo 15 onward. The provider declares its supported currencies and hides itself automatically in anything outside the list. So if you meet an unsupported currency, a missing option is the expected outcome, not a fault.
The six are the module's ceiling, not a promise from either provider. Tabby and Tamara each publish a shorter list, and your merchant account covers particular markets. The guide to GCC currencies for Tabby and Tamara compares the lists and shows how to narrow the provider to what your contract covers.
The same install covers four surfaces, website checkout, portal invoices, portal quotations and the Point of Sale, which saves you repeating this diagnosis in four places with four different modules.
When the option shows and the call fails
This is a different problem. The button is there, the customer clicks it, and either the redirect errors or nothing happens. Now you need to see what was actually sent.
The API log in Tabby & Tamara for Odoo records every gateway call with the endpoint, the status code, the request and the response, with secrets redacted. Read it like this.
- 401 or 403: wrong key, or a sandbox key pasted into a provider that is in production state, or the reverse.
- 400 with validation detail: usually amount, currency or customer data. Recheck the currency decimal places and the phone number format.
- Rejected by the provider: sometimes the merchant account itself is not enabled for that currency or that country. That is resolved with Tabby or Tamara, not inside Odoo.
- No log entry at all: the request never left Odoo, so go back to the currency and state filters.
Before any of that, use the Test Connection button. One call tells you whether the credentials are accepted and saves you thirty minutes of guessing.
Point of Sale is a separate path
People configure the website, then find the cashier still has no option. POS has its own configuration. The payment method must be added to the POS config record itself, and the currency here follows the company, not a website pricelist.
In the module the cashier picks Tabby or Tamara, a QR popup opens, the customer scans and approves on their phone, and the server polls the gateway and captures automatically on authorisation. The Validate button stays locked until capture actually succeeds, so goods do not leave the counter on an unconfirmed payment. The whole counter flow, from POS configuration to cashier training, is in Tabby and Tamara in the Odoo Point of Sale.
A ten minute triage order
If you are in a hurry, work this list top down.
- On Odoo 18 or later, open the availability report at checkout and read the reason beside the red cross.
- Activate the currency and check its decimal places.
- Open a test sales order and read its currency.
- Confirm the provider is enabled, published and on the right company.
- Clear the country restriction, temporarily clear Maximum Amount, and take any subscription product out of the cart.
- Confirm an enabled payment method and a journal.
- Open the shop in a private window.
- If it renders and fails, hit Test Connection, then read the API log.
On Odoo 18 the first step usually names the cause outright. On older versions, nine times out of ten the answer is in the next three.
What no module can fix for you
Be clear on the boundaries before you buy anything, and if you are still choosing, the buyer's comparison of the Tabby and Tamara modules on the Apps Store puts the listings side by side. A module connects your keys to the gateway. It does not issue you a merchant account. You still need your own Tabby merchant account through merchant.tabby.ai and your own Tamara merchant account, with their documents and their approval process.
Instalment counts and fee rates are agreed between you and Tabby or Tamara, not set by any Odoo module. And this is an independent integration by Kerneltics built against the public APIs, with no affiliation with or endorsement by either company.
The technical half, making the option appear when it should, disappear when it should, and leave a readable trail when it fails, is fully in your control, and that is exactly what this guide covers.
Frequently asked
Why is Tabby not showing at my Odoo checkout?
Usually one of four things: the currency is not activated in Odoo, the cart currency is not a supported GCC currency, the provider is disabled or not published on the website, or a country restriction or Maximum Amount is set on the provider record. Check them in that order first. On Odoo 18 or later, open checkout as an administrator and click the small bug icon beside the payment heading: the availability report names the filter that removed it.
Which currencies do Tabby and Tamara support in Odoo?
The module accepts SAR, AED, KWD, BHD, QAR and OMR, and from Odoo 15 it hides the option automatically in any other currency, which is correct behaviour rather than a fault. Each provider's own list is shorter, and your merchant account decides which of the six actually go through.
My company currency is SAR, so why is the cart in another currency?
Because the sales order currency comes from the pricelist applied to the visitor, not from the company. Open the draft sales order in the back office and read its Currency field, since that is the value the payment filter uses.
How do I find out why a payment call failed after the option appears?
Use the Test Connection button first to confirm the credentials, then open the API log and read the status code. A 401 or 403 means a wrong key or a sandbox key used in production mode, and a 400 usually points at the amount, the currency or the customer data.
Does the module get me a Tabby or Tamara merchant account?
No. You need your own Tabby merchant account through merchant.tabby.ai and your own Tamara account, with their documents and approval. The module only connects your keys, and it is an independent integration by Kerneltics with no affiliation with or endorsement by either company.
Does it work on Odoo Community and in Point of Sale?
Yes, it supports Community and Enterprise on Odoo 14.0 through 19.0, and covers website checkout, portal invoices, portal quotations and Point of Sale in one install. For POS you must add the payment method to the POS configuration record itself.