Tabby 4 payments message under the product price in Odoo

How the Tabby and Tamara instalment badge works in Odoo: where it shows, what Tabby checks before go-live, and why it can show when checkout does not.

Open a product in your store and look under the price. If the module is set up, there is a small line there: a Tabby logo, "4 interest-free payments of 73.75 SAR", and a Learn more link. For a customer weighing a 295 SAR purchase that line does more work than any banner on the page. It is also the first thing a Tabby reviewer looks for when you ask to go live.

This article explains how that message works in Tabby & Tamara for Odoo: where it appears, what Tabby's own checklist says about it, how the per-payment figure is recalculated when the customer changes quantity or variant, and the few reasons it fails to show. Everything below is taken from the module's code.

What the badge is, and what it is not

The badge is rendered by the module, on your server, as part of the page. It is not an image and not a script loaded from Tabby's servers. Each enabled provider gets one row: the provider's logo, the text "N interest-free payments of X", and a Learn more link that opens a breakdown. Enable Tabby alone and you get one row. Enable Tamara as well and you get two, stacked, each with its own count.

On the product page the module hooks into Odoo's standard price template and inserts the badge right after the price element, so it sits under the price in any theme that keeps Odoo's price markup.

The second badge lives inside Odoo's cart total block, under the order total, and Odoo draws that block in more places than the cart page. It is part of the order summary on every checkout step, so the badge stays in view through the address, delivery and payment steps. On Odoo 14 to 16 the cart preview that the header's cart icon opens uses the same block, so the badge shows there too. Category and shop grid pages carry no badge, and neither do portal invoices or quotations.

One detail that matters for review: the badge shows whenever the provider is in any state other than Disabled. Test mode counts. That is deliberate, because Tabby's review happens while you are still on test keys.

It needs no public key either. The provider form has a public key field, and the badge does not use it: nothing in the module reads that field, on any branch from 14 to 19. The badge is drawn from three things only: the provider's state, the Show Promo switch and the instalment count.

Why Tabby looks for it before go-live

Tabby publishes what it expects, so there is no need to guess. Its on-site messaging documentation says the promo belongs near the product price, next to the add to cart button, or below the cart total, and gives the reason plainly: customers who learn about instalments before checkout are more likely to buy. Whether that holds for your catalogue is your call. What matters is that Tabby treats the message as part of the integration, not as decoration.

Its testing checklist for custom integrations is more specific. The storefront items are, in substance: product and cart snippets and pop-ups are present; product snippets show for all products with no amount limit; the cart snippet shows for all amounts and its figure updates when the cart changes; snippets fit a mobile screen as well as a desktop one; and a checkout message appears under the Tabby payment method or matches the approved copy. Tabby's team runs its QA after you finish on your side.

Map those to the module:

  • Present on product and cart pages, with a pop-up. The two templates and the Learn more breakdown.
  • All products, no amount limit. The template has no threshold logic. Provider enabled and count above zero means every product page gets the badge.
  • Cart amount updates. The cart badge is rendered from the order total, inside the block Odoo re-renders from the server whenever the cart changes.
  • Fits mobile. The row wraps on narrow screens instead of overflowing.
  • Checkout message. Each provider ships with a line shown under it at checkout: "You will be redirected to Tabby to split your payment into interest-free installments." Edit it on the provider form if Tabby asks for specific wording.

An honest caveat. The badge is the module's own rendering, built to cover those items. What an individual reviewer asks for beyond them is between you and your Tabby contact. No module can promise a reviewer's decision; it can only put the right thing on the page.

How the figure is calculated

The badge starts with a number computed on the server, then keeps itself current in the browser.

On the product page

Odoo already knows the price of the combination the customer is looking at, with the pricelist applied. The module divides that by the instalment count and renders the result, so the first figure is right before any script runs.

Then the widget takes over. It reads the price Odoo displays on the page, multiplies it by the number in the quantity box, divides by the count, and rewrites the per-payment figure. It listens to the quantity box and watches the price element itself, so switching to a variant that costs more updates the badge without a reload. Type 3 into the quantity box and "4 payments of 73.75" becomes "4 payments of 221.25". If the widget cannot read the displayed price, for example in a theme that has moved it, it falls back to the server figure.

The figure uses the website currency's symbol, position and decimal places, so a KWD store shows three decimals and a SAR store two.

On the cart page

Here the badge takes the order total, the same number the customer sees as the cart total, and divides it by the count. When the customer changes a quantity, Odoo re-renders the total block from the server and the badge inside it is drawn again with the new total.

What the split does not claim

The module shows an even split, and the same figure for "You pay today". The plan the customer is actually offered is decided by the provider on its hosted checkout page, subject to its approval. That is why the pop-up footer says approval is subject to the provider's terms, and why the badge is a preview, not a contract. If your account offers a different plan from the count you configured, fix the count.

The Learn more pop-up

Learn more opens a breakdown the module builds and controls itself, without depending on the theme's Bootstrap JavaScript. The same widget ships on every supported branch from Odoo 14 to 19. It shows the product price, quantity, provider, number of payments, amount per payment, provider fees shown as zero, the total, what the customer pays today, the final payable amount, and a row of chips, one per payment, with the first highlighted. Its numbers come from the same live quantity and price the badge used, so it never disagrees with what is under the price.

Here is the same split on the 295 SAR purchase from the top of this article, once with Tabby and once with Tamara:

An order total of 295.00 SAR splitting into four Tabby payments of 73.75 SAR, then into three Tamara payments of 98.33 SAR, with the first payment due today and provider fees at 0.00 SAR.

Both ship translated. The Arabic strings live in the module's own translation file, so an Arabic storefront reads "4 دفعات بدون فوائد بقيمة 73.75 ر.س" with no extra work.

Turning it on and choosing the number

Open Payment Providers, then Tabby. Under the credentials there is a group called Storefront Promo with two fields: Show Tabby Promo on Products, on by default, and Tabby Installments, four by default. The Tamara provider has the same pair, with three as the default. Setting a count to zero hides that provider's badge without disabling the provider. Despite its label, the switch covers every badge that provider draws, the cart and the checkout summary included, not only product pages.

Set the count to the plan your provider account actually offers. The badge makes a promise, and a customer who saw four payments on the product page and is offered three at checkout has a reason to leave. What each count does to the number under the price is worked through in Tabby versus Tamara for an Odoo store.

The badge and checkout ask different questions

The badge asks two questions before it draws a row: is this provider in any state other than Disabled, and is its Show Promo switch on with a count above zero. Checkout asks more, because it is deciding whether the order may really be paid that way. Odoo's own provider filter runs first, then the module's currency guard. Any single no removes Tabby or Tamara from the payment step while the badge stays where it is.

Question Badge Checkout
State is Test Mode or Enabled Yes Yes
Provider belongs to the order's company Not asked Yes
Provider is Published Not asked Yes
Customer's country is on the provider's list, if it has one Not asked Yes
Order is within the provider's Maximum Amount (Odoo 16 and later) Not asked Yes, in the company currency
Currency is one of the six the module supports Not asked Yes

Three of those rows catch people out.

Test Mode hides the payment, not the badge

From Odoo 16, switching a provider to Test Mode also unpublishes it, and Odoo offers an unpublished provider only to logged in employees. So for the whole review window a visitor who is not logged in sees the badge on every product and no Tabby at checkout. Logged in as yourself you see both, which is why this one is easy to miss.

Do not publish a provider that still holds test keys just to let a reviewer through. Real shoppers would see it as well, and a sandbox approval marks an order paid that nobody paid for. If the reviewer needs to walk checkout on test keys, publish it on a staging copy of the store, not on the live shop.

Maximum Amount does not hide the badge

Tabby's checklist asks for the product badge on every product with no amount limit, and the module follows that literally: the badge ignores the Maximum Amount field. Set a cap on the provider form and a product priced above it still shows "4 interest-free payments of", while checkout leaves Tabby out. Odoo converts the order total into the company currency before comparing, so a cap of 5,000 on a SAR company means 5,000 SAR whatever currency the shopper sees.

There is no switch to hide the badge on one product, so the choice is real. Leave the field empty and let Tabby's own page decide what it covers, or keep the cap and accept a badge on items that cannot use it.

The currency guard

The badge writes its figure in the currency the shopper is browsing in and does not check whether Tabby or Tamara accepts it. Checkout does, and drops both providers for anything outside SAR, AED, KWD, BHD, QAR and OMR. Why that guard exists and how to fix a store that trips it is in why Tabby disappears from Odoo checkout.

Two companies, or several websites, in one database

The badge looks for providers across the whole database. It lists every Tabby and Tamara provider that is not Disabled, without asking which company or website it belongs to. Checkout is stricter and offers only the providers of the order's company. With one company and one website the difference never shows. With more than one, it shows in two ways.

Two Tabby rows under the price. The module creates one Tabby and one Tamara provider, in the company it was installed from. If a second company in the same database gets a Tabby provider of its own, for its own merchant account, every product page on every website shows two Tabby rows. Keep Show Promo on for one Tabby provider and turn it off on the others, and do the same for Tamara. The row that remains appears on every website, so give the providers the same instalment count and the figure is right everywhere.

A badge on a site that cannot take Tabby. A website whose company has no Tabby provider still shows the badge, as long as another company's provider is switched on, while its own checkout offers no Tabby at all. The switch lives on the provider, not on the website, so no setting hides the badge on one site and keeps it on another. Either turn the badge off for that provider everywhere, or have a developer limit the badge template to the current website's company. That is a small inherited view, and worth it only if the sites really must differ.

The figure itself is right on every site. It uses the currency the visitor is shopping in on that website, so an AED site shows dirhams and a SAR site shows riyals.

When the badge does not show, or shows the wrong thing

No badge at all. Check, in order: the provider is not Disabled; Show Promo is on; the count is above zero; the module's assets were loaded after install (upgrade the module once if the page looks unchanged). Then check the theme. The product badge hooks into the element Odoo uses for the price, and a theme that replaces the price template with its own markup removes the hook, and the badge with it.

Badge shows, but never updates. A theme that renders the price outside Odoo's price container leaves the widget on its server fallback, which is right for the page as loaded but does not follow variants. That is a theme fix, not a setting.

Badge shows, but Tabby is missing at checkout. That is the two sets of rules above disagreeing, not the badge misbehaving. Walk the table from the top: company, Published, country, Maximum Amount, currency.

Figure looks wrong. The badge divides the price the page displays, so tax-inclusive display means a tax-inclusive badge. On the cart page it divides the order total, delivery included once a method is set.

Before you ask Tabby to review

Run through this on a test provider, on a phone as well as a laptop:

  1. Open a product page. Badge under the price, logo visible, figure equals price divided by the count.
  2. Change the quantity. The figure updates.
  3. Pick a different variant. The figure updates.
  4. Click Learn more. The pop-up opens, matches the badge, and closes cleanly.
  5. Add to cart and open the cart. Badge under the total; change a quantity and watch it follow.
  6. Go to checkout and select Tabby. The message under the method reads as Tabby expects.
  7. Open a product in a private window, logged out. The badge is there for every visitor. On Odoo 16 and later, while the provider is in Test Mode, Tabby will not be at checkout in that window; that is Published at work, not a fault.
  8. If the database runs more than one website, open a product on each one and count the rows.

That is the storefront part of the checklist. The rest of a go-live, from keys to the first real order, is in how to add Tabby to Odoo. If you are still choosing a module, the storefront questions to put to any of them are in choosing a Tabby module for Odoo.

If you are still weighing whether instalments are worth it at all, read what changes in the shopper's journey and how to measure it from your own data.

Frequently asked

Can I show the Tabby badge only, without Tamara?

Yes. Each provider has its own switch in the Storefront Promo group on its form. Turn off Show Promo on the Tamara provider, or set its instalment count to zero, and Tamara stays available at checkout with no badge on the product page. The same works the other way round.

Does the badge show while the provider is in Test mode?

Yes. The badge shows in any provider state other than Disabled, and Test mode is one of them. That is what you want, because Tabby's review happens on test keys before you switch to live.

Can I change the 4 payments figure to a different number?

Yes, from the Tabby Installments or Tamara Installments field on the provider form. The defaults are four for Tabby and three for Tamara. Set it to the plan your account actually offers, because the badge is a preview and the real plan is decided by the provider on its own checkout page.

Why does my product page show two Tabby rows?

Because the database holds two Tabby providers that are not Disabled, usually one per company. The badge lists every such provider in the database, whatever company or website it belongs to. Turn Show Promo off on all but one Tabby provider, and give the one you keep the instalment count your accounts actually offer. Do the same for Tamara if it has a second provider too.

Is this Tabby's official snippet loaded from their site?

No. The module draws the badge and the pop-up itself, on your server, with the provider logo and a figure computed from the price and the count, and loads no script from Tabby or Tamara. It is built to cover the storefront items on Tabby's testing checklist, but anything a particular reviewer asks for beyond that is between you and your Tabby contact.

Why is the badge visible but Tabby missing at checkout?

The badge checks only that the provider is not Disabled and that its Show Promo switch is on. Checkout also checks the order's company, the Published flag, the customer's country, the Maximum Amount and the currency. During setup on Odoo 16 and later the usual cause is Test Mode, which unpublishes the provider, so logged out visitors see the badge and no Tabby. After go-live it is usually the currency: anything outside the six supported ones hides both providers at checkout.

One payment, for all your stores

$200
Buy on the Apps Store Talk to us first

Articles