Title: CityFee – City Dropdown &amp; Delivery Fees for WooCommerce
Author: Digital Services SARL
Published: <strong>November 13, 2026</strong>
Last modified: November 14, 2026

---

Search plugins

![](https://ps.w.org/cityfee/assets/banner-772x250.png?rev=3801112)

![](https://ps.w.org/cityfee/assets/icon-256x256.png?rev=3801112)

# CityFee – City Dropdown & Delivery Fees for WooCommerce

 By [Digital Services SARL](https://profiles.wordpress.org/medsalemkhattat/)

[Download](https://downloads.wordpress.org/plugin/cityfee.1.1.0.zip)

[Live Preview](https://wordpress.org/plugins/cityfee/?preview=1)

 * [Details](https://wordpress.org/plugins/cityfee/#description)
 * [Reviews](https://wordpress.org/plugins/cityfee/#reviews)
 *  [Installation](https://wordpress.org/plugins/cityfee/#installation)
 * [Development](https://wordpress.org/plugins/cityfee/#developers)

 [Support](https://wordpress.org/support/plugin/cityfee/)

## Description

In many countries couriers price delivery by city, not by postcode, and customers
type their city in many different ways. CityFee replaces the free-text city field
with a dropdown (a select list) of the cities you deliver to and charges the delivery
fee of the chosen city: city-wise delivery charges that you set. It is built for
Cash on Delivery stores, but works for any WooCommerce store that ships by city.

**Free features**

 * City dropdown at checkout instead of a free-text city field, per country, in 
   the **classic checkout and the Checkout block**, for billing and shipping addresses.
 * The customer can only pick a city from your list, and the choice is checked on
   the server too.
 * Your own city lists: add, edit, hide and reorder cities in WooCommerce > CityFee.
   An optional “other spelling” (for example the name in Arabic script) is shown
   next to the name.
 * Paste a whole list at once: one city per line, optionally with its fee. You can
   copy two columns (city and fee) from a spreadsheet and paste them directly.
 * “Delivery by city” shipping method: a fee per city, a default fee for cities 
   without one, and “not delivered” cities that get no delivery option.
 * The fee updates as soon as the customer changes the city.
 * Change many fees at once (bulk edit for selected cities or a whole country).
 * Cities can also be used as regions in WooCommerce shipping zones.
 * The chosen city is copied into the order and customer address, so emails, invoices
   and courier exports show a normal city name.
 * Postcode field hidden per country (optional).
 * Compatible with HPOS (High-Performance Order Storage).
 * Translation-ready and right-to-left ready (admin screen and checkout checked 
   in Arabic).

**How it works**

 1. Go to WooCommerce > CityFee, choose a country and add or paste your cities with
    their fees.
 2. In WooCommerce > Settings > Shipping, add “Delivery by city” to the shipping zone
    that covers the country, like Flat rate, and set the default fee.
 3. Customers now choose their city from the list and see its delivery fee at checkout.

CityFee comes without city lists: you add your own, so the list matches your courier’s
cities exactly. Try it first with “Load demo cities” (7 cities of Mauritania).

**CityFee Pro**

A paid version, CityFee Pro, adds city groups (for example Zone A / B / C) with 
one fee per group, free delivery above a cart amount per city or group, hiding Cash
on Delivery for selected cities, and full CSV import and export of your city lists.
The free plugin works on its own and shows no advertising.

Pricing and a 7-day free trial (no card needed): [dssarl.com/cityfee](https://dssarl.com/cityfee/)

**Privacy**

CityFee does not send any data to external services and adds no tracking. City lists
and settings are stored in your WordPress database; orders and customer addresses
use WooCommerce’s normal fields.

CityFee is developed by Digital Services SARL (https://dssarl.com/).

Getting fake Cash on Delivery orders? Our free plugin [OrderProof](https://wordpress.org/plugins/orderproof/)
asks customers to confirm COD orders with a WhatsApp code before you ship.

Questions or problems? Open a thread in the [support forum](https://wordpress.org/support/plugin/cityfee/).
If CityFee is useful to your store, an honest review helps other store owners find
it.

## Screenshots

[⌊Classic checkout: the city field is a searchable list of your cities, with the
other spelling next to each name.⌉⌊Classic checkout: the city field is a searchable
list of your cities, with the other spelling next to each name.⌉[

Classic checkout: the city field is a searchable list of your cities, with the other
spelling next to each name.

[⌊Classic checkout: the order summary shows the delivery fee of the chosen city (
Rabat, 35).⌉⌊Classic checkout: the order summary shows the delivery fee of the chosen
city (Rabat, 35).⌉[

Classic checkout: the order summary shows the delivery fee of the chosen city (Rabat,
35).

[⌊Checkout block: the city list and the delivery fee of the chosen city.⌉⌊Checkout
block: the city list and the delivery fee of the chosen city.⌉[

Checkout block: the city list and the delivery fee of the chosen city.

[⌊WooCommerce > CityFee, cities of a country: fees, default fee, "Not delivered"
cities, order, the add form and the paste box.⌉⌊WooCommerce > CityFee, cities of
a country: fees, default fee, "Not delivered" cities, order, the add form and the
paste box.⌉[

WooCommerce > CityFee, cities of a country: fees, default fee, “Not delivered” cities,
order, the add form and the paste box.

[⌊Countries overview: city dropdown and postcode setting per country.⌉⌊Countries
overview: city dropdown and postcode setting per country.⌉[

Countries overview: city dropdown and postcode setting per country.

[⌊The "Delivery by city" shipping method in a shipping zone, with its title, tax
status and default fee.⌉⌊The "Delivery by city" shipping method in a shipping zone,
with its title, tax status and default fee.⌉[

The “Delivery by city” shipping method in a shipping zone, with its title, tax status
and default fee.

[⌊The cities screen in Arabic (right-to-left).⌉⌊The cities screen in Arabic (right-
to-left).⌉[

The cities screen in Arabic (right-to-left).

## Installation

 1. Install and activate WooCommerce.
 2. Install CityFee from Plugins > Add New, or upload the plugin folder to `/wp-content/
    plugins/`, and activate it.
 3. Open WooCommerce > CityFee to add your first country and its cities.
 4. Add the “Delivery by city” method to a shipping zone in WooCommerce > Settings 
    > Shipping.

## FAQ

### I use States, Cities, and Places for WooCommerce. Can I move to CityFee?

Yes. Keep that plugin installed, open WooCommerce > CityFee and choose your country:
an “Import from States, Cities, and Places for WooCommerce” box imports its places
as CityFee cities (all of them, or only the states you choose). Then set your delivery
fees and deactivate the other plugin, because both plugins change the city field
at checkout.

### How do I add my cities and fees quickly?

Go to WooCommerce > CityFee, choose the country and paste one city per line. Add
the fee after a semicolon:

    ```
    Casablanca;30
    Rabat;35
    Tanger
    ```

Cities without a fee use the default fee of “Delivery by city”. Fees are plain numbers
in the store currency. Two columns copied from a spreadsheet (city, fee) work the
same way. Tick “Check only” to count the lines before saving anything.

### Can I set different delivery charges for each city?

Yes. Each city can have its own fee, cities without a fee use the default fee of“
Delivery by city”, and you can change many fees at once with bulk edit.

### Does it work for my country?

Yes. Choose any country in WooCommerce > CityFee and add the cities your courier
serves. You can show another spelling next to each name, for example in Arabic script.
If WooCommerce asks for a region (state) in your country, the city list takes its
place (see below).

### Does it work with the Checkout block?

Yes. The city dropdown and the fee work in both the classic checkout and the Checkout
block.

### Does it come with city lists?

Not yet. You add or paste your own list, so it matches your courier’s cities exactly.

### What happens to the country’s region (state) field?

For a country where you turn the city dropdown on, the city list takes the place
of the region field. Stores that need both a region and a city should keep that 
country switched off.

### What if I don’t deliver to a city?

Mark it “Not delivered”. It stays in the list, but “Delivery by city” offers no 
rate for it, so WooCommerce shows its usual “no shipping options” message unless
another method of the zone (for example local pickup) is available.

### Can I rename a city later?

Yes. Each city has a code that orders store; renaming the city keeps its code. Past
orders keep the address they were placed with.

### How many cities can a country have?

Up to 2,000. Above 300 the admin shows a reminder, because the Checkout block shows
a plain dropdown without search.

### Is it translated?

CityFee is ready for translation and for right-to-left languages. French and Arabic
translations have been prepared for translate.wordpress.org.

### What is removed when I delete the plugin?

The city lists, the CityFee settings and the “Delivery by city” methods in your 
shipping zones. Orders and customer addresses are never changed. Tick “Keep city
lists and settings when the plugin is deleted” if you plan to reinstall.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“CityFee – City Dropdown & Delivery Fees for WooCommerce” is open source software.
The following people have contributed to this plugin.

Contributors

 *   [ Digital Services SARL ](https://profiles.wordpress.org/medsalemkhattat/)

[Translate “CityFee – City Dropdown & Delivery Fees for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/cityfee)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/cityfee/), check out
the [SVN repository](https://plugins.svn.wordpress.org/cityfee/), or subscribe to
the [development log](https://plugins.trac.wordpress.org/log/cityfee/) by [RSS](https://plugins.trac.wordpress.org/log/cityfee/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.0

 * New: import city lists from “States, Cities, and Places for WooCommerce” when
   it is installed on the same site (active or not). Each country screen shows an
   import box; you can import all places or only some states. Cities already in 
   your list are kept, and the import tells you how many were added, already listed
   or over the limit.

#### 1.0.1

 * Readme: clearer short description and description, two new FAQ entries (fees 
   per city, supported countries), support forum link, screenshot 2 caption. No 
   change to how the plugin works.

#### 1.0.0

 * First public release: city dropdown per country in the classic checkout and the
   Checkout block (billing and shipping), server-side city check, city lists managed
   in WooCommerce > CityFee (add, edit, hide, reorder, bulk fee changes, paste-import
   with fees), “Delivery by city” shipping method (fee per city, default fee, not-
   delivered cities, tax status), cities usable as regions in shipping zones, city
   copied into orders and customer addresses, optional postcode hiding, HPOS compatible,
   translation and right-to-left ready, uninstall cleanup with a “keep data” option.

## Meta

 *  Version **1.1.0**
 *  Last updated **8 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [cash on delivery](https://wordpress.org/plugins/tags/cash-on-delivery/)[checkout](https://wordpress.org/plugins/tags/checkout/)
   [City Dropdown](https://wordpress.org/plugins/tags/city-dropdown/)[delivery-fees](https://wordpress.org/plugins/tags/delivery-fees/)
   [Shipping By City](https://wordpress.org/plugins/tags/shipping-by-city/)
 *  [Advanced View](https://wordpress.org/plugins/cityfee/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/cityfee/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/cityfee/reviews/)

## Contributors

 *   [ Digital Services SARL ](https://profiles.wordpress.org/medsalemkhattat/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/cityfee/)