A Thai address does not follow the street-and-city pattern that most European and North American address models assume. It is a four-level administrative nest, written smallest-first, in which the street is optional and the village number is not a street at all.
This article describes the Thai address format, how CDQ represents it in the CDQ address model, and which reference data CDQ maintains so that a Thai address can be validated rather than merely stored. It is the reference for anyone mapping Thai business partner data into CDQ, or consuming curated Thai addresses from CDQ.
In this article, you will understand:
- How a Thai address is structured, and why the structure differs from the European pattern
- How each Thai administrative level maps to a concept in the CDQ address model, and which SAP field it reaches
- Which reference data CDQ holds for Thailand, and what the published values look like
- Which properties of Thai addresses regularly cause integration errors
- Where the current CDQ coverage for Thailand still has gaps
Available in:
- CDQ Wiki: business partner metadata for Thailand: browse the complete published Thai metadata, including every province, district, alternative name and address term
Thai addresses are not a street-and-city model with local spelling. They are a four-level administrative nest, written smallest-first, in which the street is optional and the village number is not a street at all. That is the specific reason a positional mapping (first line to street, remaining lines to address supplements) produces a mangled result.
The decisive structural difference is that Thailand has no separate settlement level. In a European address, a city such as Munich sits inside an administrative region and is a distinct concept from it. Thailand has no equivalent: from the province downwards, every level is simultaneously an administrative subdivision and the address itself. There is no "city" that is separate from the district it sits in.
Written smallest-first, as they appear on a Thai envelope:
| Level | Thai | Romanised | English | Example |
|---|---|---|---|---|
| 4 | หมู่บ้าน; in an address, หมู่ with a number | Muban, Moo | village | หมู่ 1 (Moo 1) |
| 3 | ตำบล | Tambon | subdistrict | สำโรงใต้ (Samrong Tai) |
| 2 | อำเภอ | Amphoe | district | พระประแดง (Phra Pradaeng) |
| 1 | จังหวัด | Changwat | province | Samut Prakan |
A complete address adds the house number, an optional street, and the post code:
186/1 Moo 1, Old Railway Road
Samrong Tai, Phra Pradaeng
Samut Prakan 10130Reading that from the bottom up: province Samut Prakan, district Phra Pradaeng, subdistrict Samrong Tai, village number 1, house 186/1 on Old Railway Road.
Bangkok (กรุงเทพมหานคร) is administratively distinct from the 76 provinces, and its two middle levels carry different names:
| Level | Rest of Thailand | Bangkok |
|---|---|---|
| 2 (district) | อำเภอ Amphoe | เขต Khet |
| 3 (subdistrict) | ตำบล Tambon | แขวง Khwaeng |
The levels are the same; only the words differ.
Any logic that identifies Thai address levels by their marker words has to accept both sets. Recognising only อำเภอ and ตำบล silently misses every Bangkok address, and Bangkok accounts for a large share of Thailand's registered companies.
Bangkok is also written several ways in Thai. The official form is กรุงเทพมหานคร; the short forms กรุงเทพ and กรุงเทพฯ are both in common use, including in official filings. All three resolve to Bangkok in the CDQ reference data.
These are the characteristics that most often break a mapping built on European assumptions.
หมู่ (Moo) followed by a number identifies which village within the subdistrict the address sits in. Geocoding services frequently read Moo 1 as Soi 1 (Soi being a numbered lane) and return an invented street name as a result. Moo must be treated as its own level, never as part of the street or the house number.
Many addresses have no street. Outside urban areas a complete, deliverable Thai address is house number, Moo, tambon, amphoe, changwat, post code. No street is involved. Logic that requires a street, or that promotes some other value into the street field to avoid leaving it empty, will corrupt these addresses.
House numbers are compound. 186/1 means plot 186, sub-plot 1. It is a single value, not a range and not two fields. Splitting it on the slash destroys the meaning.
ถนน (Thanon) is a road; ซอย (Soi) is a numbered lane off a road. In a name such as Soi Sukhumvit 21, the number 21 belongs to the lane name, not to the building. A house-number parser must therefore only accept a number at the start of a line.
The district seat usually carries the district's own name. Tambon Hat Yai sits inside Amphoe Hat Yai. A name on its own cannot tell you which level it belongs to; only the marker word (ตำบล versus อำเภอ) can. Logic that assigns a level by matching a name against a district list will systematically mis-file district seats.
Romanisation is not standardised. สำโรงใต้ appears as Samrong Tai, Samrongtai and Samrong-tai, and all three occur in real filings. Matching a Thai place name by exact string comparison misses most real-world spellings.
District Phra Pradaeng contains the subdistricts Samrong Tai, Samrong and Samrong Klang. Dropping the final word from Samrong Tai does not abbreviate it. It produces the name of a different, neighbouring subdistrict.
The same applies to mechanically generated spelling variants: Sang Khom and Sangkhom are two different districts. A variant is only safe for matching if its normalised form is unique across the whole country.
The CDQ address model has two parallel hierarchies. Administrative areas represent the political containers and support two levels, typed REGION and COUNTY. Localities represent the places themselves and support up to ten levels, typed CITY, DISTRICT, QUARTER or BLOCK. Streets are held as thoroughfares, with the house number in a separate field.
Thailand's four levels are placed as follows:
| Thai level | CDQ concept | Type | SAP field |
|---|---|---|---|
| จังหวัด Changwat (province) | administrative area, level 1 | REGION | region |
| อำเภอ Amphoe / เขต Khet (district) | administrative area, level 2 | COUNTY | county |
| ตำบล Tambon / แขวง Khwaeng (subdistrict) | locality, level 1 | CITY | city |
| หมู่ Moo (village) | locality, level 2 | DISTRICT | district |
| Street | thoroughfare | STREET | street |
| House number | thoroughfare number | n/a | house number |
Four properties drove the placement:
- The two administrative levels stay together, and the two place levels stay together. Splitting one national hierarchy across both CDQ hierarchies produces a structure that is hard to reason about and harder to query.
- Each of the four levels reaches its own distinct SAP field. Nothing collapses onto a shared output field, so no level is lost on export.
- No value is stored twice. The district appears once, as an administrative area.
- No new concept type is required. The model works with the types the CDQ address model already defines.
Two alternatives were considered and rejected:
| Rejected alternative | Why |
|---|---|
| Place the amphoe in the locality hierarchy | Duplicates the district, which is an administrative subdivision, and leaves the village with no level to occupy. |
Type the amphoe as DISTRICT | Conflicts with the definition of that type. In the CDQ address model DISTRICT is a subdivision of a city, whereas an amphoe is a subdivision of a province. DISTRICT is, however, exactly right for the village, which genuinely is a subdivision of the tambon. |
The SAP output reads localities by level, not by type: the city line takes locality level 1 whatever its type, and the district line takes locality level 2. For Thailand this means the subdistrict appears on the city line and the village on the district line.
The address used above, expressed in the CDQ address model:
| Field | Value |
|---|---|
| Country | TH |
Administrative area 1 (REGION) | Samut Prakan |
Administrative area 2 (COUNTY) | Phra Pradaeng |
Locality 1 (CITY) | Samrong Tai |
Locality 2 (DISTRICT) | หมู่ 1 (Moo 1) |
Thoroughfare (STREET) | Old Railway Road |
| Thoroughfare number | 186/1 |
| Post code | 10130 |
Validating a Thai address requires knowing which provinces, districts and marker words exist. CDQ maintains that reference data centrally, so the same lists back address curation and the published metadata.
The examples below show the shape of each dataset, not its full contents. The complete published lists for Thailand, with every province, district, code and alternative name, are on the CDQ Wiki page business partner metadata for Thailand.
78 entries: the 76 changwat, Bangkok, and the special administrative city of Pattaya. Each carries a code, names in Thai and Latin script, and the alternative spellings CDQ will also match.
| Code | Thai | Latin | Also matched as |
|---|---|---|---|
TH-10 | กรุงเทพมหานคร | Bangkok | Krung Thep Maha Nakhon, กรุงเทพ, กรุงเทพฯ |
TH-11 | จังหวัดสมุทรปราการ | Samut Prakan | Chang Wat Samut Prakan, SamutPrakan, Samut-Prakan |
TH-50 | จังหวัดเชียงใหม่ | Chiang Mai | จ.เชียงใหม่, ChiangMai, Chiang-Mai |
TH-83 | จังหวัดภูเก็ต | Phuket | Chang Wat Phuket |
928 entries, one per amphoe and per Bangkok khet, each linked to its province. Note that the alternative names carry the level marker, so a value arriving as อำเภอพระประแดง or Khet Phra Nakhon is matched as readily as the bare name.
| Code | Province | Thai | Latin | Also matched as |
|---|---|---|---|---|
TH-1001 | TH-10 | พระนคร | Phra Nakhon | เขตพระนคร, Khet Phra Nakhon, PhraNakhon, Phra-Nakhon |
TH-1010 | TH-10 | มีนบุรี | Min Buri | เขตมีนบุรี, Khet Min Buri, MinBuri, Min-Buri |
TH-1104 | TH-11 | พระประแดง | Phra Pradaeng | อำเภอพระประแดง, Amphoe Phra Pradaeng, PhraPradaeng, Phra-Pradaeng |
TH-5001 | TH-50 | เมืองเชียงใหม่ | Mueang Chiang Mai | อำเภอเมืองเชียงใหม่, Amphoe Mueang Chiang Mai, MueangChiangMai |
The marker words that identify a level from the address text rather than from its position. Each term is typed to the CDQ concept it identifies, and the Thai abbreviations are recognised alongside the full forms.
| Identifies | Thai | Thai abbreviation | Latin |
|---|---|---|---|
| Province | จังหวัด | จ. | Changwat |
| District | อำเภอ, เขต | อ. | Amphoe, Khet |
| Subdistrict | ตำบล, แขวง | ต. | Tambon, Khwaeng |
| Village | หมู่, หมู่บ้าน | ม. | Moo, Muban |
| Street | ถนน, ซอย, ทางหลวง | ถ., ซ. | Road (Rd), Lane (Ln), Highway (Hwy), Thanon, Soi |
| Post office box | not published | not published | tupo nor |
Romanised Thai is not standardised, so CDQ publishes the common spelling variants as alternative names on the province and district records. A value matches whether it arrives spaced, joined or hyphenated, with or without its level marker.
| Variant kind | Example |
|---|---|
| Joined | SamutPrakan matches Samut Prakan, MinBuri matches Min Buri |
| Hyphenated | Samut-Prakan, Chiang-Mai, Phra-Pradaeng |
| With the level marker written out | Chang Wat Samut Prakan, Amphoe Phra Pradaeng, เขตพระนคร |
| Thai abbreviated marker | จ.เชียงใหม่ matches Chiang Mai |
| Colloquial short form | กรุงเทพ and กรุงเทพฯ both match Bangkok |
A variant is added only when its normalised form is unique nationally. Where a joined spelling would collide with the official name of a different district, no variant is published, because a wrong match is more damaging than a missed one.
District codes follow the official Thai administrative numbering maintained by the Department of Provincial Administration. The codes are hierarchical and fixed-width: two digits for a province, four for a district, six for a subdistrict, with each level prefixed by its parent. TH-1104 is therefore province 11, district 04, which makes the parent-child relationship readable from the code itself.
ISO 3166-2 registers only first-level subdivisions, so for Thailand the registered codes are the 77 province codes. District codes such as TH-1104 are ISO-3166-2-style codes built from the official national district number. They follow the same shape as the registered codes and are used consistently across the CDQ reference data, but they are not themselves registered ISO values.
The CDQ Wiki page business partner metadata for Thailand is the place to browse everything published for Thailand: the provinces with their names and alternative names, the districts, legal forms, identifier types, data quality rules and the integrated data sources.
A Thai address submitted to CDQ has its province and district standardised against reference data: the value is matched, and the canonical name and code are written back. Street terms and level markers are recognised in both scripts, so a street or a district can be identified from the address text rather than from its position in the input.
Where an address provider is enabled, it can additionally enrich the levels CDQ holds no reference list for: the subdistrict and the village.
The Thai coverage described above is deliberately incomplete in places. These are the gaps worth knowing about before designing an integration.
| Limitation | What it means for an integration |
|---|---|
| Subdistricts and villages have no CDQ reference list | CDQ maintains reference data for provinces and districts, but not yet for the tambon or the Moo. Those two levels are therefore not standardised against a CDQ-controlled list. They are never discarded, and they can still be corrected or completed by an enabled address provider (see the row below), but the outcome depends on that provider rather than on CDQ reference data. |
| Provider results for Thai input vary | Where an address provider such as Google Maps or HERE is enabled, CDQ uses it to enrich and correct Thai addresses, and it is currently the main way the subdistrict and village levels get improved. Providers are not equally reliable on Thai input, though: the same address can come back structured differently, and a village number can be returned as an invented street. CDQ therefore constrains provider output rather than adopting it wholesale, which means a provider-derived subdistrict is an improvement, not a guarantee. |
| Post code consistency is not checked | A Thai post code identifies a district, not a subdistrict. CDQ does not currently cross-check a submitted Thai post code against the district on the same address. |
| Spelling variant coverage is partial by design | As described above, a variant is published only where it is unambiguous nationally. A romanised Thai name can therefore still fail to match, and the safe assumption is that an unrecognised spelling is a spelling CDQ does not yet publish rather than an invalid place name. |
Because Thailand has no settlement level, data providers make different choices about what belongs in a city field: some populate it with the province, some with the district, some with the subdistrict. When mapping a Thai address from any external source, check what the field actually contains rather than what it is called.
The safest integration reads the marker words in the address text and validates candidate values against the province and district reference data, rather than trusting the position or the name of the source field.
A Thai address is a four-level administrative nest with an optional street, written smallest-first, and with no separate settlement level. CDQ models it by placing the province and district in the two administrative area levels and the subdistrict and village in the first two locality levels, so that each of the four levels reaches its own distinct output field.
Provinces, districts and the Thai address vocabulary are maintained as CDQ reference data, and the complete published lists can be browsed on the CDQ Wiki. Subdistrict and village validation, and post code consistency checking, are not yet covered.
- Business partner metadata for Thailand
- Thailand Department of Business Development Company Register (TH.CR)
- India Address Standard
- Japan Address Standard
- Korea Address Standard
We are constantly working on providing an outstanding user experience with our products. Please share your opinion about this tutorial!