How to Add Tabby to Odoo: Full Setup Guide

A practical guide to accepting Tabby in Odoo: merchant account, API keys, test mode, supported currencies, publishing the provider, and verifying an order.

Tabby splits a purchase into four payments for the shopper and pays you the full amount up front, less the fee you agreed with Tabby. It is now close to a default expectation in Saudi retail, which is why so many Odoo store owners go looking for an odoo tabby payment integration module within a week of going live.

Odoo ships no native Tabby provider in any version, so switching it on means three separate things: a merchant account with Tabby, a module that speaks the Tabby API, and a configuration pass inside Odoo. The configuration pass is where most people lose an afternoon, because two of its steps fail silently. A provider that is Enabled but not Published never appears at checkout. An order priced in a currency Tabby does not support hides the provider by design, with no error anywhere in the log.

This guide walks the whole path, in order, with the traps called out where they actually bite.

Step 1: get your own Tabby merchant account

No module can issue this for you, and any listing that hints otherwise is selling you something it cannot deliver. You apply directly at merchant.tabby.ai.

What Tabby asks for

Expect to supply your commercial registration or a freelance document, a bank account in the business name, your store URL, and details about what you sell and your average order value. Tabby underwrites the merchant, so approval is a commercial decision on their side and the timeline is theirs, not your integrator's.

Once approved you get access to the merchant dashboard, and inside it the two things Odoo needs: a public key and a secret key, in both a test and a live pair. You also agree your fee rate and the instalment plan offered to your shoppers with Tabby directly. A module does not set those numbers and cannot change them.

A note on Tamara

Tamara is a separate company with a separate application and separate keys. Most Saudi merchants end up wanting both, because shoppers have a preference and the checkout that only offers one loses the other half. Plan the two applications in parallel rather than in sequence.

Step 2: pick a module that matches your Odoo version and edition

Odoo prices and packages per major version, so a module bought for 17.0 is not the same product as the 18.0 build. Before you buy, confirm three things: the exact version of your database, whether the module supports Community as well as Enterprise, and whether it covers the surfaces you actually collect money on.

That third point is worth a minute. A lot of merchants only think about the website checkout, then discover after go live that the portal invoice link they email to a customer has no Tabby button on it, and that the counter in the branch has none either. Tabby & Tamara for Odoo exists because of that gap: one install covers the eCommerce checkout, portal invoices, portal quotations and the Point of Sale, for both providers, on Odoo 14.0 through 19.0, Community and Enterprise.

Step 3: install and enter your keys

Install the module from Apps, then open Invoicing, Configuration, Payment Providers. In Odoo 16.0 and earlier the same screen is called Payment Acquirers.

Open the Tabby record and fill in:

  • Public key and Secret key from the Tabby dashboard, test pair first.
  • The merchant code if your Tabby account uses one per country or per store.
  • The Payment Journal on the accounting tab. Odoo refuses to enable a provider with no journal set, and the error it gives is not always obvious.

Save, then use the Test Connection button before you do anything else. A good module calls the gateway and tells you plainly whether the credentials were accepted. If it fails here, it is a key problem, not an Odoo problem, and no amount of clearing assets will fix it.

Step 4: test mode first, and know what test mode really means

Set the provider State to Test Mode and use the test key pair. Tabby's sandbox gives you deterministic test identities, so you can drive an approval and a rejection on demand instead of hoping.

Two things people forget. First, test transactions never settle, so do not use them to prove the accounting entries. Second, when you flip to live you must replace both keys, not just the public one, and you must re-run Test Connection. A live secret paired with a test public key produces an error message that reads like a network fault.

Step 5: publish the provider, not just enable it

This is the single most common reason for the search "tabby payment method not showing odoo 18 checkout".

In Odoo, a payment provider has two independent controls. The State field, which can be Disabled, Test Mode or Enabled, decides whether the provider can process at all. The Published toggle, on the provider form near the title, decides whether the website is allowed to render it.

Set the state to Enabled and skip the publish toggle and you get exactly what many merchants describe: the provider looks perfectly configured in the back office, the keys test fine, and the checkout page shows no Tabby button at all. Nothing is broken. Odoo is doing what you told it.

Flip Published on. If you are on Odoo 15.0 or older, the equivalent is the Publish button that appears when you view the provider on the frontend.

Step 6: check the currency before you debug anything else

Tabby and Tamara operate in Gulf currencies only. The supported set is SAR, AED, KWD, BHD, QAR and OMR.

If the sales order, invoice or POS session is priced in USD or EUR, a correctly built module hides the provider rather than sending the gateway a request that will fail. That is the right behaviour, but it looks identical to a broken install from the outside.

So when Tabby does not appear, check in this order:

  1. Provider State is Enabled, not Disabled.
  2. Provider is Published.
  3. The document currency is one of the six.
  4. The order total sits inside the minimum and maximum Tabby set for your account.
  5. Website country and currency restrictions on the provider are not excluding this visitor.

That list resolves the large majority of cases before anyone needs to open a log file.

Step 7: verify with a real order

Switch to live keys, keep the state at Enabled, and place one small real order yourself. Then confirm four things, not one:

  • The promo badge appears under the product price and updates when you change the quantity or pick a different variant. Tabby expects that on site message to be visible as part of go live QA, so a static image of the logo is not enough.
  • The redirect to Tabby carries the correct total and customer details.
  • After approval, the Odoo transaction moves to Done, the sales order confirms, and the payment is linked to the invoice.
  • The amount in the Tabby dashboard matches the amount in Odoo to the halala.

Then do the negative test. Abandon the payment on the Tabby page and confirm the order stays unpaid in Odoo.

Why a forged success page must not confirm an order

This matters more than it sounds. The browser comes back to your site with a URL, and a URL can be typed by anyone. If a module trusts a success parameter in that redirect, a customer can mark their own order paid.

The correct pattern is that the return URL carries only a reference, and Odoo then calls the provider back, reading the real state from GET /api/v2/payments/{id} before touching the order. Webhooks are verified the same way rather than trusted on arrival, and a transaction already in a final state is never processed twice. That is how it is implemented in Tabby & Tamara for Odoo, and it is a fair question to ask any vendor before you buy.

Step 8: refunds and day two operations

Refunds are the first thing your accountant will ask about. Both full and partial refunds should be possible from the Odoo back office, including directly from the invoice, so the credit note and the gateway refund happen in one motion rather than as two disconnected acts in two systems.

Keep an eye on the API log as well. Every call to the gateway, with secrets redacted, means that when one order behaves strangely you can see the request and the response instead of guessing.

What this does not do, stated plainly

It does not get you approved with Tabby or Tamara. It is not official, endorsed by, or affiliated with either company. The instalment count, the fee rate and the shopper limits are set by Tabby and Tamara in your merchant agreement, not by any Odoo module. And it does not replace your own testing on your own database before you put it in front of customers.

Everything else on the list above, you can now do yourself. If you would rather not do it twice, once for Tabby and once for Tamara, that is what Tabby & Tamara for Odoo is for.

Frequently asked

Do I still need my own Tabby merchant account?

Yes. You apply directly at merchant.tabby.ai with your commercial registration or freelance document and a bank account in the business name. The module connects your keys to Odoo, it cannot get you approved.

Tabby does not appear at my Odoo checkout, why?

Usually one of two reasons. The provider state is Enabled but the Published toggle is still off, so the website will not render it. Or the document currency is not one of SAR, AED, KWD, BHD, QAR or OMR, in which case the provider is hidden by design.

Does this work on Odoo Community or only Enterprise?

Both, on Odoo 14.0 through 19.0. The module is LGPL-3 with readable commented source and does not require Enterprise.

Can someone fake a success redirect and get a paid order?

Not when it is built correctly. The return URL carries only a reference, and Odoo reads the real status from the provider API at GET /api/v2/payments/{id} before confirming anything. Webhooks are re-verified the same way, and an already final transaction is never processed twice.

How do refunds work after the customer paid in instalments?

Full and partial refunds run from the Odoo back office, including from the invoice, so the credit note and the gateway refund happen together. Instalment counts and fee rates are set by Tabby and Tamara in your merchant agreement, not by the module.

Is this module official or endorsed by Tabby or Tamara?

No. It is an independent integration by Kerneltics built against the providers' public APIs, with no affiliation or endorsement from either company.

One payment, for all your stores

$200
Buy on the Apps Store Talk to us first

Articles