- KWD, BHD and OMR divide into 1,000 fils or baisa, so they always show three decimals: KD 15.490, not KD 15.49.
- Charm prices end in .990 or .950, and every charged amount should end in 0, in 10-fils steps.
- Gateways take whole minor units: KD 15.490 becomes 15490. Code that multiplies by 100 undercharges tenfold.
- Percentage discounts and partial refunds create 1-fils endings like KD 13.941. Round them back to the nearest 10 fils.
- Test a full order, a discount, a partial refund and a COD order in each 3-decimal currency before you go live.
A shopper in Kuwait City sees KD 15.49 on your product page. To you it looks fine. To her it looks broken.
The Kuwaiti dinar, Bahraini dinar and Omani rial all carry three decimals. They're also the three highest-value currency units in the world, which makes every digit on a price tag count.
Getting the third decimal right is a short job. Here's how prices should look, how your platform and gateway handle them, and how to test before launch.
What are fils and baisa?
Fils and baisa are the small units of the Gulf's three-decimal currencies. One Kuwaiti dinar (KWD) or Bahraini dinar (BHD) equals 1,000 fils, and one Omani rial (OMR) equals 1,000 baisa.
Compare that with the Saudi riyal, which splits into 100 halalas, or the UAE dirham into 100 fils. Same word in the UAE, different maths.
Here's how the six Gulf currencies divide:
| Currency | Small unit | Decimals | Example price |
|---|---|---|---|
| Saudi riyal (SAR) | 100 halalas | 2 | SAR 219 |
| UAE dirham (AED) | 100 fils | 2 | AED 189 |
| Qatari riyal (QAR) | 100 dirhams | 2 | QAR 179 |
| Kuwaiti dinar (KWD) | 1,000 fils | 3 | KD 15.490 |
| Bahraini dinar (BHD) | 1,000 fils | 3 | BD 20.690 |
| Omani rial (OMR) | 1,000 baisa | 3 | OMR 20.190 |
Those example prices come from one product with a USD 50 net price, rounded per market. Our multi-currency checkout guide shows how each one was built, including VAT. It's part of our GCC payments guides.
How should 3-decimal prices look?
Always show all three decimals. KD 15.490 is right, and so is KD 10.000.
A few display habits matter:
- Code or symbol first in English. Write KD, BD or OMR before the number, as in KD 15.490. The ISO code KWD works too.
- After the number in Arabic. Arabic pages usually put د.ك, د.ب or ر.ع after the number, as in 15.490 د.ك.
- Western digits. Most Gulf stores use 0–9 on Arabic pages too. See our guide to Western vs Arabic-Indic numerals.
- Charge in 10-fils steps. The last digit of a price is always zero, as in KD 15.490.
Set these once in your store's currency settings, then open a live product page in each currency to check them.
Which charm prices work in KWD, BHD and OMR?
Charm pricing works here just as it does elsewhere. Only the endings change: .990 takes the place of .99.
Because each unit is worth more than three US dollars, the ladder has smaller gaps between rungs:
| Band | Kuwait (KWD) | Bahrain (BHD) | Oman (OMR) |
|---|---|---|---|
| Impulse buys | 0.950 · 1.990 · 2.950 | 0.990 · 1.950 · 2.990 | 0.990 · 1.950 · 2.990 |
| Everyday items | 4.950 · 7.990 · 9.900 | 4.990 · 7.950 · 9.990 | 4.990 · 7.990 · 9.990 |
| Mid-range | 14.990 · 19.990 · 24.950 | 14.990 · 19.900 · 24.990 | 14.990 · 19.990 · 24.950 |
| Premium | 29.990 · 49.900 · 99.000 | 29.990 · 49.990 · 99.000 | 29.900 · 49.990 · 99.000 |
What does that mean for you? A converted price rarely lands on a rung, so move it to the nearest one.
For example, a USD 50 product converts to about KD 15.500. Move it to KD 15.490, just below.
Whole-dinar prices like KD 25.000 suit gift cards and Eid offers, where a round number feels generous.
Want to do this for a whole catalogue? The GCC price localizer applies these endings to all six currencies at once, with VAT.

How do gateways read 3-decimal amounts?
Payment gateways don't take decimals. They take a whole number in the currency's minor unit, so you multiply the price by 1,000 for KWD, BHD and OMR.
For example, Checkout.com sends KD 15.490 as 15490. Its docs also say the last digit must be 0 for three-decimal currencies, so 15495 fails.
Adyen works the same way and sends BD 10 as 10000.
| Shelf price | Minor units sent | Wrong if coded for 2 decimals |
|---|---|---|
| KD 15.490 | 15490 | 1549 = KD 1.549 |
| BD 20.690 | 20690 | 2069 = BD 2.069 |
| OMR 20.190 | 20190 | 2019 = OMR 2.019 |
That right-hand column is the classic bug. A plugin written for cents multiplies by 100, and every Kuwaiti order is charged a tenth of its price.
So store money as whole fils or baisa, never as floating-point numbers. Keep a small table of decimals per currency: 2 for SAR, AED and QAR, 3 for KWD, BHD and OMR.
Where do rounding errors come from?
Your shelf prices start clean. The trouble comes from maths that runs after them.
Here are the usual culprits:
- Percentage discounts. 10% off KD 15.490 gives KD 13.941. That ending breaks the 10-fils rule.
- Partial refunds. Refunding a third of a KD 15.490 bundle gives KD 5.163.
- Split payments. Instalments and multi-item splits rarely divide evenly into 10-fils steps.
- VAT lines. Bahrain's VAT share of a BD 20.690 price is BD 1.881. That's fine on an invoice, but don't charge it as a separate amount.
The fix is one rule, applied everywhere money changes: round the charged amount to the nearest 10 fils. So KD 13.941 becomes KD 13.940, and a KD 5.163 refund becomes KD 5.160.
Rounding leaves a few fils over. Three refunds of KD 5.160 add up to KD 15.480, so the last one should be KD 5.170.
Decide who absorbs the leftover fils, usually the last item or the final instalment. Then write it down so finance and support give the same answer.
How do you test 3-decimal pricing?
Run each test in KWD first, then repeat it in BHD and OMR. Together they catch every bug above.
For cash on delivery, I'd also round COD totals to the nearest 250 or 500 fils, so the driver isn't hunting for coins. Our cash on delivery guide covers COD fees and verification.
Notes for Shopify stores
- Local charging needs Shopify Payments. Only Shopify Payments or Adyen can charge a converted KWD, BHD or OMR price. Other gateways charge your store's base currency.
- Kuwaiti, Bahraini and Omani companies can't get Shopify Payments. Set the store currency to KWD, BHD or OMR and connect a local gateway, so the charge is already in the right currency.
- Rounding rules round up, and you can't change them. Shopify rounds converted prices up to its default ending for each currency, and the defaults can't be customised.
- Use fixed prices for 3-decimal markets. Set KD 15.490-style prices through Markets catalogs, so rounding never picks the ending for you.
- Check the theme too. Checkout always shows decimals, but theme money formats are built around two-decimal examples, so preview a KWD product page for KD 15.490.
- Our Shopify Markets guide walks through catalogs and rounding.
Notes for Salla and Zid stores
- Both are SAR-first. Their dashboards, payouts and local gateways are built around the Saudi riyal.
- Zid offers multi-currency display through Go Global. Salla's multi-currency market tools are far less mature than Shopify Markets.
- Check the charge currency. Find out whether a Kuwaiti order is charged in KWD or converted to SAR, and show that clearly at checkout.
- Compare the two in our Salla vs Zid comparison.
Notes for WooCommerce and custom builds
- Set decimals per currency. WooCommerce's general currency setting has a "Number of decimals" field. A KWD store needs 3, and a multi-currency plugin needs a per-currency value.
- Check the gateway plugin. Read how it builds the amount. A hard-coded ×100 is the tenfold bug.
- Round tax consistently. Pick line-level or subtotal-level tax rounding and keep it, so invoices match charges.
- Custom stacks: keep integers in minor units and a currency exponent table, and round only at the point you charge.
- Need a gateway that handles KWD, BHD and OMR natively? Browse our payment gateway directory, or read how shoppers pay in Kuwait, Bahrain and Oman.
Frequently asked questions
The dinar divides into 1,000 fils, and Bahrain and Oman use the same split. Because one dinar is worth more than three US dollars, a single fils is still a meaningful amount, so the third decimal stays in use on every price tag and receipt.
Sources & further reading
- Calculating the amount — Checkout.com
- Rounding prices — Shopify Help Center
- Formatting how currency displays to your customers — Shopify Help Center
- Selling in local currencies: limitations — Shopify Help Center
- Currency codes and minor units — Adyen
- ISO 4217 currency codes — Wikipedia
This guide is for general information only and is not legal, tax or financial advice. Rules and fees change — always confirm with the official source or a licensed advisor.

Maya is MiddleEastEcom's lead guide and editor. She researches GCC marketplaces, payments and regulations and turns them into practical playbooks for sellers.
Meet Maya



