# City rules for one country only (KW:Salwa)

> In the city list, a plain name such as Salwa hides COD for that city in every country. Put a two-letter country code and a colon first, as in KW:Salwa, to limit it to one country. Names are compared whole, after folding capitals, hyphens and Arabic spelling variants.

URL: https://khaleejicod.com/help/country-city-rules/  
Updated: 2026-10-26  
Publisher: Trifid Media LLC

Each entry in **Hide COD in these cities** is either a plain city name or a country code, a colon
and a city name. A plain name, such as `Salwa`, hides Cash on Delivery for that city in every
country. An entry with a country code, such as `KW:Salwa`, hides it only when the shipping address
is in that country. The country-code form arrived in version khaleeji-cod-4 (26 October 2026).
A plain name still matches in every country.

## How does the app read a city entry?

When you click **Save rules**, the app splits your list at every comma. An English comma (,) and
an Arabic comma («،») both count. When a shopper reaches the payment step, the app takes the city
and the country from the shipping address and checks each saved entry:

1. If an entry starts with two letters (A to Z) and a colon, those letters are the country.
   Everything after the colon is the city name.
2. An entry without that start is a city name only.
3. It folds the city name and the shopper's city the same way (see below).
4. COD is hidden when the two names are the same, and, for an entry with a country, the shipping
   address is in that country.

Spaces at the start, the end and around the colon don't matter, so `KW:Salwa`, `kw:salwa` and
`KW : Salwa` are the same entry.

## When do you need a country code?

Use one when the same city name could turn up in more than one country you ship to. Salwa is the
usual example: it's an area in Kuwait and a town in Saudi Arabia. If you want to stop COD in the
Kuwaiti area only, write `KW:Salwa`. A plain `Salwa` would hide COD for Saudi orders to Salwa too.

A country code also keeps your list easy to read when you sell in several Gulf countries. You can
see at a glance which entries belong to which market.

If you sell to one country only, plain names are fine. Adding the code does no harm either.

## Which country codes can you use?

Use the two-letter code for the country of the shipping address:

| Country | Code | Example entry |
|---|---|---|
| United Arab Emirates | `AE` | `AE:Al Ain` |
| Saudi Arabia | `SA` | `SA:الرياض` |
| Kuwait | `KW` | `KW:Salwa` |
| Qatar | `QA` | `QA:Al Khor` |
| Bahrain | `BH` | `BH:Riffa` |
| Oman | `OM` | `OM:Sohar` |

The city names in the table only show the format. Build your own list from the cities in your
orders.

## What does spelling folding do?

Before comparing, the app changes both names to one standard form:

- Capital letters don't matter: "AL AIN", "al ain" and "Al Ain" are the same.
- Hyphens and underscores read as spaces: "Al-Ain" matches "Al Ain".
- Arabic vowel marks, tanween and tatweel («ـ») are removed.
- «أ إ آ ٱ» read as «ا», «ى» as «ي», and «ة» as «ه». The Persian-keyboard «ی» and «ک» read as «ي»
  and «ك».

So `KW:سلوى` also matches «سلوي», and `SA:جدة` also matches «جده».

After folding, the whole name must match. The app doesn't look for part of a name, translate
between English and Arabic, or guess at other spellings.

## Examples

| Entry | Hides COD for | Doesn't hide COD for |
|---|---|---|
| `Salwa` | Salwa in any country | |
| `KW:Salwa` | Salwa, Kuwait | Salwa, Saudi Arabia |
| `kw : سلوى` | «سلوى» or «سلوي», Kuwait | "Salwa" written in English |
| `AE:Al Ain` | "Al Ain", "Al-Ain", "AL AIN" in the UAE | "Alain", or "Al Ain" in another country |
| `SA:الرياض` | «الرياض», Saudi Arabia | "Riyadh" |
| `العين` | «العين» in any country | "Al Ain" |

To cover a city fully, add an entry for each spelling you see: `AE:Al Ain, AE:Alain, AE:العين`.

## What are the common mistakes?

- Writing a three-letter code or a country name. `KSA:Riyadh`, `UAE:Al Ain` and `Kuwait:Salwa`
  aren't read as a country. The app treats the whole entry as a city name, and it never matches.
  Use `SA`, `AE` or `KW`.
- Using a hyphen instead of a colon. `KW-Salwa` is read as the city "KW Salwa". Region codes such
  as `KW-JA` belong in **Hide COD in these emirates or regions**. City entries use a colon.
- Putting a comma inside a name. A comma always starts a new entry, so a city can't contain one.
- Expecting part of a name to match. "Riyadh" doesn't match "Riyadh City" or "North Riyadh". Add
  the longer forms as their own entries if your shoppers use them.
- Expecting English to match Arabic. "Salwa" and «سلوى» are separate entries.
- Thinking of the shopper's location or currency. The country that counts is the one on the
  shipping address.
- Forgetting to tick the rule or save. The list does nothing until **Hide COD in these cities** is
  ticked and you click **Save rules**. A ticked rule with an empty list hides nothing.

On the Free plan you can switch on one rule. If the city rule is the one you need, switch the
others off. Pro ($7.99/month) lets you use every rule. See [Free or Pro](/help/free-vs-pro/).

## How do you check that an entry works?

Create a draft order with a shipping address in the country and city you listed, open its checkout
link in a private window, and look at the payment step. COD should be hidden. Then change the
country (or the spelling) and check that COD comes back. Keep the cart small so the cart and
first-order rules don't hide COD for another reason. The steps are in
[how to test checkout payment rules with draft orders](/guides/test-payment-rules-draft-orders/).

For country-by-country setups, see [setting up Khaleeji COD for Kuwait](/help/setup-kuwait/) and
[setting up Khaleeji COD for Saudi Arabia](/help/setup-saudi-arabia/). For every rule in one place, see
the [checkout rules reference](/help/rules-reference/).

## Sources

- [Shopify.dev: Payment customization Function API](https://shopify.dev/docs/api/functions/latest/payment-customization)
