Appearance
Reference data
For merchants
The import puts Shopware's countries, states and currencies in order for African markets, from a dataset that ships with the plugin (version 2026.1, based on ISO 3166-1, ISO 3166-2 and ISO 4217; states and regions from the ISO Online Browsing Platform via the amckenna41/iso3166-2 dataset, retrieved 25 August 2026).
Run the import
In the Administration: Extensions → My extensions → ⋯ African Commerce Core → Configure, card Reference data, Run reference-data import.
On the command line:
bash
bin/console africa:reference:importBoth need the Reference data switch (card Features, All Sales Channels) on — it is on by default. The import never runs by itself: not on installation, not on update, not on a schedule.
You can run it as often as you like. It compares each record with the dataset and only writes what differs; a second run reports nothing created and nothing updated.
Reading the result

One row per dataset: currencies, countries, subdivisions (states and regions), divisions (local divisions).
| Column | Meaning |
|---|---|
| Created | Added to your shop. |
| Updated | Existed but differed from the dataset; corrected. |
| Up to date | Already matched; not touched. |
| Overridden | Carries the Merchant override marker; not touched — see below. |
| Missing | Currencies only: not installed in your shop, so not corrected. Currencies are never created. |
The command prints the same table and ends with Reference data reconciled or, when nothing changed, Reference data already converged — nothing to change.
States of a country that does not exist in your shop are skipped without being counted. The divisions row is all zeros while the Administrative-division hierarchy switch is off.
Countries — 26
Every country is set to active. Two also get address policies, written to Shopware's own country settings (no custom validation):
| Country | ISO | What is set |
|---|---|---|
| Ghana | GH | Active; Postal code required off; Check postal code pattern off |
| Nigeria | NG | Active; Postal code required off; Display state in registration on |
| Kenya, South Africa, Rwanda, Egypt, Côte d'Ivoire, Senegal, Tanzania, Uganda, Ethiopia, Morocco, Algeria, Tunisia, Cameroon, DR Congo, Congo, Benin, Burkina Faso, Mali, Niger, Togo, Guinea, Djibouti, Comoros, Burundi | KE ZA RW EG CI SN TZ UG ET MA DZ TN CM CD CG BJ BF ML NE TG GN DJ KM BI | Active only; all other settings left as they are |
Nothing else on the country is changed — name, position, tax, address format and so on stay yours. If one of these countries does not exist in your shop at all, the import creates it with its ISO code as the name (for example GH); rename it under Settings → Shop → Countries.
Activating is not the same as offering
Shopware shows a country in a storefront only if it is assigned to that sales channel: Sales Channels → your storefront → General → Countries. The import does not change sales channels.
The import re-applies these values
If you deactivate one of these countries, or switch Ghana's postal code back on, the next import changes it back. To keep your own setting, tick Merchant override on that country.
Currencies — 18
Only the decimal places are corrected — item and total rounding, both set to the ISO 4217 precision. The exchange rate, name, symbol and everything else are never touched, and a currency that is not installed is reported as Missing, never created, because it needs your real exchange rate.
| Decimal places | Currencies |
|---|---|
| 0 | XOF (West African CFA franc), XAF (Central African CFA franc), RWF, UGX, GNF, BIF, DJF, KMF |
| 2 | NGN, GHS, KES, ZAR, EGP, MAD, DZD, TZS, ETB |
| 3 | TND |
A currency counts as up to date when both item and total rounding already have these decimal places. When it does not, the import writes the decimal places and sets the rounding interval to the smallest unit (1, 0.01 or 0.001) with Round for net prices on — a custom interval such as cash rounding to 0.05 is replaced.
Shopware formats prices with the currency's decimal places, so after the import prices in XOF and XAF show no decimals. The currency of DR Congo (CDF) is not in the dataset.
To add a missing currency: Settings → Shop → Currencies → Add currency, with ISO code, exchange rate and symbol, then run the import again.
States and regions — 443
First-tier ISO 3166-2 subdivisions for all 26 countries, added to the country's States tab. Each is matched by its ISO code (stored as the state's short code, e.g. NG-LA):
- not there → added with its ISO name;
- there with a different name → renamed to the ISO name;
- there with the same name → not touched.
States you created yourself with a different short code are not recognised, so the ISO state is added next to them.
| Country | Count | Country | Count | Country | Count |
|---|---|---|---|---|---|
Nigeria NG | 37 | Ethiopia ET | 13 | Benin BJ | 12 |
Ghana GH | 16 | Morocco MA | 12 | Burkina Faso BF | 13 |
Kenya KE | 47 | Algeria DZ | 58 | Mali ML | 11 |
South Africa ZA | 9 | Tunisia TN | 24 | Niger NE | 8 |
Rwanda RW | 5 | Cameroon CM | 10 | Togo TG | 5 |
Egypt EG | 27 | DR Congo CD | 26 | Guinea GN | 8 |
Côte d'Ivoire CI | 14 | Congo CG | 12 | Djibouti DJ | 6 |
Senegal SN | 14 | Uganda UG | 4 | Comoros KM | 3 |
Tanzania TZ | 31 | Burundi BI | 18 |
The full list, with codes:
Nigeria (NG) — 37
NG-AB Abia, NG-AD Adamawa, NG-AK Akwa Ibom, NG-AN Anambra, NG-BA Bauchi, NG-BE Benue, NG-BO Borno, NG-BY Bayelsa, NG-CR Cross River, NG-DE Delta, NG-EB Ebonyi, NG-ED Edo, NG-EK Ekiti, NG-EN Enugu, NG-FC Abuja Federal Capital Territory, NG-GO Gombe, NG-IM Imo, NG-JI Jigawa, NG-KD Kaduna, NG-KE Kebbi, NG-KN Kano, NG-KO Kogi, NG-KT Katsina, NG-KW Kwara, NG-LA Lagos, NG-NA Nasarawa, NG-NI Niger, NG-OG Ogun, NG-ON Ondo, NG-OS Osun, NG-OY Oyo, NG-PL Plateau, NG-RI Rivers, NG-SO Sokoto, NG-TA Taraba, NG-YO Yobe, NG-ZA Zamfara
Ghana (GH) — 16
GH-AA Greater Accra, GH-AF Ahafo, GH-AH Ashanti, GH-BE Bono East, GH-BO Bono, GH-CP Central, GH-EP Eastern, GH-NE North East, GH-NP Northern, GH-OT Oti, GH-SV Savannah, GH-TV Volta, GH-UE Upper East, GH-UW Upper West, GH-WN Western North, GH-WP Western
Kenya (KE) — 47
KE-01 Baringo, KE-02 Bomet, KE-03 Bungoma, KE-04 Busia, KE-05 Elgeyo/Marakwet, KE-06 Embu, KE-07 Garissa, KE-08 Homa Bay, KE-09 Isiolo, KE-10 Kajiado, KE-11 Kakamega, KE-12 Kericho, KE-13 Kiambu, KE-14 Kilifi, KE-15 Kirinyaga, KE-16 Kisii, KE-17 Kisumu, KE-18 Kitui, KE-19 Kwale, KE-20 Laikipia, KE-21 Lamu, KE-22 Machakos, KE-23 Makueni, KE-24 Mandera, KE-25 Marsabit, KE-26 Meru, KE-27 Migori, KE-28 Mombasa, KE-29 Murang'a, KE-30 Nairobi City, KE-31 Nakuru, KE-32 Nandi, KE-33 Narok, KE-34 Nyamira, KE-35 Nyandarua, KE-36 Nyeri, KE-37 Samburu, KE-38 Siaya, KE-39 Taita/Taveta, KE-40 Tana River, KE-41 Tharaka-Nithi, KE-42 Trans Nzoia, KE-43 Turkana, KE-44 Uasin Gishu, KE-45 Vihiga, KE-46 Wajir, KE-47 West Pokot
South Africa (ZA) — 9
ZA-EC Eastern Cape, ZA-FS Free State, ZA-GP Gauteng, ZA-KZN Kwazulu-Natal, ZA-LP Limpopo, ZA-MP Mpumalanga, ZA-NC Northern Cape, ZA-NW North-West, ZA-WC Western Cape
Rwanda (RW) — 5
RW-01 City of Kigali, RW-02 Eastern, RW-03 Northern, RW-04 Western, RW-05 Southern
Egypt (EG) — 27
EG-ALX Al Iskandarīyah, EG-ASN Aswān, EG-AST Asyūţ, EG-BA Al Baḩr al Aḩmar, EG-BH Al Buḩayrah, EG-BNS Banī Suwayf, EG-C Al Qāhirah, EG-DK Ad Daqahlīyah, EG-DT Dumyāţ, EG-FYM Al Fayyūm, EG-GH Al Gharbīyah, EG-GZ Al Jīzah, EG-IS Al Ismā'īlīyah, EG-JS Janūb Sīnā', EG-KB Al Qalyūbīyah, EG-KFS Kafr ash Shaykh, EG-KN Qinā, EG-LX Al Uqşur, EG-MN Al Minyā, EG-MNF Al Minūfīyah, EG-MT Maţrūḩ, EG-PTS Būr Sa‘īd, EG-SHG Sūhāj, EG-SHR Ash Sharqīyah, EG-SIN Shamāl Sīnā', EG-SUZ As Suways, EG-WAD Al Wādī al Jadīd
Côte d'Ivoire (CI) — 14
CI-AB Abidjan, CI-BS Bas-Sassandra, CI-CM Comoé, CI-DN Denguélé, CI-GD Gôh-Djiboua, CI-LC Lacs, CI-LG Lagunes, CI-MG Montagnes, CI-SM Sassandra-Marahoué, CI-SV Savanes, CI-VB Vallée du Bandama, CI-WR Woroba, CI-YM Yamoussoukro, CI-ZZ Zanzan
Senegal (SN) — 14
SN-DB Diourbel, SN-DK Dakar, SN-FK Fatick, SN-KA Kaffrine, SN-KD Kolda, SN-KE Kédougou, SN-KL Kaolack, SN-LG Louga, SN-MT Matam, SN-SE Sédhiou, SN-SL Saint-Louis, SN-TC Tambacounda, SN-TH Thiès, SN-ZG Ziguinchor
Tanzania (TZ) — 31
TZ-01 Arusha, TZ-02 Dar es Salaam, TZ-03 Dodoma, TZ-04 Iringa, TZ-05 Kagera, TZ-06 Pemba North, TZ-07 Zanzibar North, TZ-08 Kigoma, TZ-09 Kilimanjaro, TZ-10 Pemba South, TZ-11 Zanzibar South, TZ-12 Lindi, TZ-13 Mara, TZ-14 Mbeya, TZ-15 Zanzibar West, TZ-16 Morogoro, TZ-17 Mtwara, TZ-18 Mwanza, TZ-19 Coast, TZ-20 Rukwa, TZ-21 Ruvuma, TZ-22 Shinyanga, TZ-23 Singida, TZ-24 Tabora, TZ-25 Tanga, TZ-26 Manyara, TZ-27 Geita, TZ-28 Katavi, TZ-29 Njombe, TZ-30 Simiyu, TZ-31 Songwe
Uganda (UG) — 4
UG-C Central, UG-E Eastern, UG-N Northern, UG-W Western
Ethiopia (ET) — 13
ET-AA Addis Ababa, ET-AF Afar, ET-AM Amara, ET-BE Benshangul-Gumaz, ET-DD Dire Dawa, ET-GA Gambela Peoples, ET-HA Harari People, ET-OR Oromia, ET-SI Sidama, ET-SN Southern Nations, Nationalities and Peoples, ET-SO Somali, ET-SW Southwest Ethiopia Peoples, ET-TI Tigrai
Morocco (MA) — 12
MA-01 Tanger-Tétouan-Al Hoceïma, MA-02 L'Oriental, MA-03 Fès-Meknès, MA-04 Rabat-Salé-Kénitra, MA-05 Béni Mellal-Khénifra, MA-06 Casablanca-Settat, MA-07 Marrakech-Safi, MA-08 Drâa-Tafilalet, MA-09 Souss-Massa, MA-10 Guelmim-Oued Noun (EH-partial), MA-11 Laâyoune-Sakia El Hamra (EH-partial), MA-12 Dakhla-Oued Ed-Dahab (EH)
Algeria (DZ) — 58
DZ-01 Adrar, DZ-02 Chlef, DZ-03 Laghouat, DZ-04 Oum el Bouaghi, DZ-05 Batna, DZ-06 Béjaïa, DZ-07 Biskra, DZ-08 Béchar, DZ-09 Blida, DZ-10 Bouira, DZ-11 Tamanrasset, DZ-12 Tébessa, DZ-13 Tlemcen, DZ-14 Tiaret, DZ-15 Tizi Ouzou, DZ-16 Alger, DZ-17 Djelfa, DZ-18 Jijel, DZ-19 Sétif, DZ-20 Saïda, DZ-21 Skikda, DZ-22 Sidi Bel Abbès, DZ-23 Annaba, DZ-24 Guelma, DZ-25 Constantine, DZ-26 Médéa, DZ-27 Mostaganem, DZ-28 M'sila, DZ-29 Mascara, DZ-30 Ouargla, DZ-31 Oran, DZ-32 El Bayadh, DZ-33 Illizi, DZ-34 Bordj Bou Arréridj, DZ-35 Boumerdès, DZ-36 El Tarf, DZ-37 Tindouf, DZ-38 Tissemsilt, DZ-39 El Oued, DZ-40 Khenchela, DZ-41 Souk Ahras, DZ-42 Tipaza, DZ-43 Mila, DZ-44 Aïn Defla, DZ-45 Naama, DZ-46 Aïn Témouchent, DZ-47 Ghardaïa, DZ-48 Relizane, DZ-49 Timimoun, DZ-50 Bordj Badji Mokhtar, DZ-51 Ouled Djellal, DZ-52 Béni Abbès, DZ-53 In Salah, DZ-54 In Guezzam, DZ-55 Touggourt, DZ-56 Djanet, DZ-57 El Meghaier, DZ-58 El Meniaa
Tunisia (TN) — 24
TN-11 Tunis, TN-12 L'Ariana, TN-13 Ben Arous, TN-14 La Manouba, TN-21 Nabeul, TN-22 Zaghouan, TN-23 Bizerte, TN-31 Béja, TN-32 Jendouba, TN-33 Le Kef, TN-34 Siliana, TN-41 Kairouan, TN-42 Kasserine, TN-43 Sidi Bouzid, TN-51 Sousse, TN-52 Monastir, TN-53 Mahdia, TN-61 Sfax, TN-71 Gafsa, TN-72 Tozeur, TN-73 Kébili, TN-81 Gabès, TN-82 Médenine, TN-83 Tataouine
Cameroon (CM) — 10
CM-AD Adamaoua, CM-CE Centre, CM-EN Far North, CM-ES East, CM-LT Littoral, CM-NO North, CM-NW North-West, CM-OU West, CM-SU South, CM-SW South-West
DR Congo (CD) — 26
CD-BC Kongo Central, CD-BU Bas-Uélé, CD-EQ Équateur, CD-HK Haut-Katanga, CD-HL Haut-Lomami, CD-HU Haut-Uélé, CD-IT Ituri, CD-KC Kasaï Central, CD-KE Kasaï Oriental, CD-KG Kwango, CD-KL Kwilu, CD-KN Kinshasa, CD-KS Kasaï, CD-LO Lomami, CD-LU Lualaba, CD-MA Maniema, CD-MN Mai-Ndombe, CD-MO Mongala, CD-NK Nord-Kivu, CD-NU Nord-Ubangi, CD-SA Sankuru, CD-SK Sud-Kivu, CD-SU Sud-Ubangi, CD-TA Tanganyika, CD-TO Tshopo, CD-TU Tshuapa
Congo (CG) — 12
CG-11 Bouenza, CG-12 Pool, CG-13 Sangha, CG-14 Plateaux, CG-15 Cuvette-Ouest, CG-16 Pointe-Noire, CG-2 Lékoumou, CG-5 Kouilou, CG-7 Likouala, CG-8 Cuvette, CG-9 Niari, CG-BZV Brazzaville
Benin (BJ) — 12
BJ-AK Atacora, BJ-AL Alibori, BJ-AQ Atlantique, BJ-BO Borgou, BJ-CO Collines, BJ-DO Donga, BJ-KO Couffo, BJ-LI Littoral, BJ-MO Mono, BJ-OU Ouémé, BJ-PL Plateau, BJ-ZO Zou
Burkina Faso (BF) — 13
BF-01 Boucle du Mouhoun, BF-02 Cascades, BF-03 Centre, BF-04 Centre-Est, BF-05 Centre-Nord, BF-06 Centre-Ouest, BF-07 Centre-Sud, BF-08 Est, BF-09 Hauts-Bassins, BF-10 Nord, BF-11 Plateau-Central, BF-12 Sahel, BF-13 Sud-Ouest
Mali (ML) — 11
ML-1 Kayes, ML-10 Taoudénit, ML-2 Koulikoro, ML-3 Sikasso, ML-4 Ségou, ML-5 Mopti, ML-6 Tombouctou, ML-7 Gao, ML-8 Kidal, ML-9 Ménaka, ML-BKO Bamako
Niger (NE) — 8
NE-1 Agadez, NE-2 Diffa, NE-3 Dosso, NE-4 Maradi, NE-5 Tahoua, NE-6 Tillabéri, NE-7 Zinder, NE-8 Niamey
Togo (TG) — 5
TG-C Centrale, TG-K Kara, TG-M Maritime (Région), TG-P Plateaux, TG-S Savanes
Guinea (GN) — 8
GN-B Boké, GN-C Conakry, GN-D Kindia, GN-F Faranah, GN-K Kankan, GN-L Labé, GN-M Mamou, GN-N Nzérékoré
Djibouti (DJ) — 6
DJ-AR Arta, DJ-AS Ali Sabieh, DJ-DI Dikhil, DJ-DJ Djibouti, DJ-OB Obock, DJ-TA Tadjourah
Comoros (KM) — 3
KM-A Anjouan, KM-G Grande Comore, KM-M Mohéli
Burundi (BI) — 18
BI-BB Bubanza, BI-BL Bujumbura Rural, BI-BM Bujumbura Mairie, BI-BR Bururi, BI-CA Cankuzo, BI-CI Cibitoke, BI-GI Gitega, BI-KI Kirundo, BI-KR Karuzi, BI-KY Kayanza, BI-MA Makamba, BI-MU Muramvya, BI-MW Mwaro, BI-MY Muyinga, BI-NG Ngozi, BI-RM Rumonge, BI-RT Rutana, BI-RY Ruyigi
Local divisions — Lagos sample
Imported only while Administrative-division hierarchy is on (All Sales Channels). They hang below the state Lagos (NG-LA), which must exist — the states are imported first in the same run.
| Code | Name | Type | Below |
|---|---|---|---|
NG-LA-IKEJA | Ikeja | LGA | Lagos |
NG-LA-ETIOSA | Eti-Osa | LGA | Lagos |
NG-LA-SURULERE | Surulere | LGA | Lagos |
NG-LA-IKEJA-OJODU | Ojodu | Ward | Ikeja |
NG-LA-IKEJA-ALAUSA | Alausa | Ward | Ikeja |
This is a sample that shows divisions nesting; it is not a complete list of Lagos LGAs. The import also re-activates these five divisions and restores their names. There is no Administration screen for divisions in 0.1.0 — developers can add more through the API or a custom dataset, see Developer docs.
Merchant override
To stop the import from changing a record, tick Merchant override (do not auto-import) on it. The import then counts it as Overridden and leaves it exactly as it is — even if it no longer matches the dataset.
- Country: Settings → Shop → Countries → country, card Custom fields (set African Commerce Foundation for Shopware 6), tick the box, Save.
- Currency: Settings → Shop → Currencies → currency, card Custom fields, tick the box, Save.
- State or local division: the field exists, but Shopware's state dialog and the plugin show no custom fields, so it can only be set through the Admin API (
customFields.kmh_af_merchant_override: true).

The marker counts in any language: it is enough to tick it while editing in one content language.
Unticking it hands the record back to the import; the next run corrects it again.