---
title: "GCC Currencies for Tabby and Tamara in Odoo"
description: "Which currency Odoo actually sends to Tabby and Tamara, what happens outside the six GCC currencies, and why the pricelist, not the company, decides it."
lang: en
canonical: https://tabby.kerneltics.com/en/bnpl-currencies-gcc-odoo/
alternate_ar: https://tabby.kerneltics.com/bnpl-currencies-gcc-odoo/
published: 2026-10-01
updated: 2026-10-01
---

# GCC Currencies for Tabby and Tamara in Odoo

> Which currency Odoo actually sends to Tabby and Tamara, what happens outside the six GCC currencies, and why the pricelist, not the company, decides it.

Your company books in Saudi riyals and a customer in Kuwait browses in dinars. One of them sees the Tabby button, the other does not. Or both see it and Tamara refuses the dinar order. Currency trouble in a BNPL setup rarely produces a readable error, just a missing button or a refused checkout, caused by a setting nobody connects with payments.

This guide covers how [Tabby & Tamara for Odoo](https://tabby.kerneltics.com/en/) treats currency: what a checkout is sent in, which currencies get through, what happens to the rest, and how to add a second Gulf currency without breaking your books. Everything said about the module is read from its code on each Odoo branch, with version differences called out.

## Three lists, and a currency has to be on all of them

A currency works for BNPL in Odoo only when three separate lists agree.

**Odoo's currency list.** A currency must be active before a pricelist or invoice can use it, and a fresh database has most switched off. Odoo ships KWD, BHD and OMR with three decimal places (rounding 0.001), and SAR, AED and QAR with two. Leave those as they are.

**The module's list.** The module accepts six currencies: SAR, AED, KWD, BHD, QAR and OMR. From Odoo 15 onward it removes Tabby and Tamara from the payment options whenever the document is in any other currency. The Odoo 14 branch carries the same list but never applies it, so on 14 the button shows in any currency and the gateway refuses what it cannot take.

**The provider's list, and your contract.** The one most stores miss. At the time of writing, [Tabby's merchant help centre](https://tabby.ai/en-AE/help-business/selling-with-tabby/currencies) names SAR, AED and KWD, and [Tamara's checkout API reference](https://docs.tamara.co/reference/createcheckoutsession) accepts SAR, AED, BHD, KWD and OMR. Neither lists QAR. Your own merchant account is approved for particular markets, possibly fewer still. Both providers keep expanding, so check their pages before you promise a currency to customers.

| Currency | Decimals in Odoo | On Tabby's list | On Tamara's list |
|---|---|---|---|
| SAR | 2 | Yes | Yes |
| AED | 2 | Yes | Yes |
| KWD | 3 | Yes | Yes |
| BHD | 3 | No | Yes |
| OMR | 3 | No | Yes |
| QAR | 2 | No | No |

The module's list is wider than either provider's on purpose: it serves both, and cannot know which markets your contract covers. Closing that gap is your job.

### Narrow the list on Odoo 17 and later

From Odoo 17 the provider form has a **Currencies** field in the Availability group of its Configuration tab, filled on a Tabby or Tamara provider with the module's six. Remove the ones your account does not take; a Tabby account approved for Saudi Arabia and the UAE might keep only SAR and AED. Odoo then hides the provider for every other currency.

Two details. Adding a currency outside the six does nothing, because the module's own rule still removes the provider. And clearing the field means no restriction from Odoo, not no restriction at all; the six still apply.

Odoo 15 and 16 have no such field, so the six are the only currency filter. Do not publish a pricelist in a currency your account cannot take, or those customers will see the button and be refused at the gateway.

## Which currency is actually sent

Not the company currency. The module sends the currency of the document being paid, and nothing is converted on the way.

- **Website checkout:** the order's currency, which comes from the pricelist the visitor is on. With no pricelist it falls back to the company currency. A riyal company with a dinar pricelist sends dinars to Tabby.
- **Invoice paid from the customer portal:** the invoice currency.
- **Quotation paid from the portal:** the quotation's currency, which again comes from its pricelist.
- **Point of Sale:** the currency of the register's sales journal, or the company currency when the journal has none.

The customer's country travels with it: the one on the customer's address, or Saudi Arabia when the address has none. Tamara's reference lists five country codes beside its currencies (SA, AE, BH, KW and OM), so a dinar order from a Kuwaiti address fits what it expects. At the counter, Tamara receives the company's country instead.

### Maximum Amount is in the company currency

If you set a Maximum Amount on the provider, which Odoo offers from version 16, it is in your company currency. Odoo converts the cart into that currency at today's rate before comparing, so a 5,000 riyal cap also caps dinar carts, after conversion.

## What happens outside the list

| Where the customer pays | Currency outside the six |
|---|---|
| Website checkout | Tabby and Tamara do not appear (Odoo 15 onward) |
| Portal invoice or quotation | They do not appear either |
| Instalment badge under the price | Still shows, since it does not check currency |
| Point of Sale | The methods show and the payment fails when used |

A hidden provider leaves nothing in the API log, because no request ever left Odoo. If you are chasing a missing button rather than planning currencies, [the fix guide for a provider missing at checkout](https://tabby.kerneltics.com/en/odoo-payment-provider-sar/) walks every filter Odoo applies, in order. The badge is explained in [the article on the instalment message under the price](https://tabby.kerneltics.com/en/tabby-promo-message-odoo/), and the counter in [Tabby and Tamara in the Odoo Point of Sale](https://tabby.kerneltics.com/en/bnpl-odoo-pos/).

## Exchange rates: the mistake with no error message

Odoo converts every foreign currency payment into your company currency for the books. When that currency has no rate at all, Odoo does not stop you. It uses a rate of 1, booking one dinar as one riyal. Checkout works, the customer pays the right amount, and your accounts are out by the whole exchange rate. The Maximum Amount comparison breaks too.

Before the first sale in a new currency, give it a current rate, typed in or fetched by an automatic rate source, and keep it current.

The payment is recorded in the order's currency, with its company currency value at that day's rate. When the provider's payout lands, in whichever currency your contract settles, any gap between the rate Odoo used and what actually arrived surfaces at reconciliation. Matching that payout to its orders through the provider's clearing journal is covered in [the guide to reconciling Tabby and Tamara payouts](https://tabby.kerneltics.com/en/bnpl-accounting-odoo/).

## Three decimal currencies

For KWD, BHD and OMR the module sends website and portal amounts with three decimals, the others with two, and rounds each order line to the same precision. If the lines then stop adding up to the amount paid, because of delivery or a discount, it sends one line for the full amount instead (Odoo 15 onward), so a rounding gap never gets an order refused.

What you control is the price. If your dinar pricelist derives prices from riyal prices with a formula rule, fill in its **Price Rounding**, 0.050 or 0.100 for example, or customers see prices like 12.347.

## Adding a second currency, step by step

Say a Saudi company wants to take dinars from Kuwaiti customers through Tabby.

1. **Ask Tabby first.** One Tabby provider record holds one secret key, one API address and one merchant code. Tabby's [technical requirements](https://docs.tabby.ai/introduction/technical-requirements) describe the merchant code as usually standing for a country or a single store, and Tabby runs separate API addresses by region, api.tabby.ai and api.tabby.sa. Ask your Tabby contact whether the key and code you already have accept KWD, or whether Kuwait needs a setup of its own.
2. **Activate KWD**, confirm its rounding is 0.001, and give it a current rate.
3. **Create a KWD pricelist**, attach it to a country group containing Kuwait or let visitors pick it, and set the price rounding.
4. **Keep KWD in the provider's Currencies field** on Odoo 17 and later.
5. **Test as a logged out visitor** on that pricelist: product badge, cart, checkout, then a sandbox order. The checkout request in the API log should carry "KWD" and a three decimal amount. [The pre-launch test plan](https://tabby.kerneltics.com/en/testing-bnpl-before-golive/) covers everything else.

If Tabby gives Kuwait its own credentials, one provider record cannot hold both sets. Providers belong to a company in Odoo, so the clean route is a separate company and website for that market, each with its own provider.

The Point of Sale works differently. Its keys are entered once per database under Settings, and only the merchant code can change per register, through the Tabby Merchant Code (branch) field. A branch that needs its own code is covered; one that needs its own key is not.

## What no setting changes

Which currencies your account accepts, and the currency your payouts arrive in, are agreed between you and Tabby or Tamara, not set in Odoo. This is an independent integration by Kerneltics built on their public APIs, with no affiliation with or endorsement by either company.

## Frequently asked

### Which currencies can Tabby and Tamara take through Odoo?

The module lets six through: SAR, AED, KWD, BHD, QAR and OMR, and from Odoo 15 it hides both providers in any other currency. That is the ceiling, not the promise. At the time of writing Tabby names SAR, AED and KWD, Tamara accepts all of the six except QAR, and your own account may be approved for fewer. Confirm with the provider before you open a currency.

### My company currency is SAR. Can customers pay with Tabby or Tamara in AED or KWD?

Yes, as long as your provider account accepts that currency. The module sends the order's own currency, which comes from its pricelist, not the company's. Activate the currency, give it an exchange rate and a pricelist, and Odoo converts the payment into your company currency for the books.

### Will the module convert a USD cart into riyals so Tabby accepts it?

No. Nothing is converted on the way. If the order is in USD or EUR, Tabby and Tamara disappear from checkout on Odoo 15 and later, and the API log stays empty because no request was sent. To offer instalments to those customers, put them on a pricelist in a Gulf currency your account accepts.

### The button showed for a QAR order, so why was it refused?

Because QAR is on the module's list of six but on neither provider's published list at the time of writing. The module cannot know what your contract covers. On Odoo 17 and later, remove the currency from the provider's Currencies field; on 15 and 16, do not publish a pricelist in a currency your account does not take.

### What happens if the currency has no exchange rate in Odoo?

Odoo raises no error. It uses a rate of 1 and books one dinar as one riyal. Checkout works and the customer pays the right amount, but your entries are wrong by the whole exchange rate and the Maximum Amount check goes wrong with them. Give the currency a current rate before its first sale.
