These are all the Czech rail border crossings as of 2007. Crossings in italics are abandoned. The year of opening is in brackets.
Note that all of these railway lines were built in Austria-Hungary and became border crossings after the creation of Czechoslovakia in 1918.
Břeclav - Bernhardsthal (1839), see North railway
Novosedly - Laa an der Thaya (1872-1930)
Hevlín - Laa an der Thaya (1870-1945)
Znojmo - Retz (1871)
Slavonice - Fratres (1903-1945)
České Velenice - Breitensee (1900-1950), narrow gauge
České Velenice - Gmünd (1869), see Franz Josef Railway
České Velenice - Gmünd (1902-1950), narrow gauge Waldviertelbahn to Groß Gerungs, remaining bridge across Lužnice leads to a border crossing for pedestrians
Horní Dvořiště - Summerau (1871)
Stožec - Haidmühle (1910-1945), currently 105 m long heritage railway only
Železná Ruda - Bayerisch Eisenstein (1877-1953, 1992), passenger transport only
Česká Kubice - Furth im Wald (1861)
Cheb - Waldsassen (1865-1945), currently a biking trail
Cheb - Schirnding (1883)
Aš - Selb - Plößberg (1865), reopened for passenger transport in December 2015
Hranice v Čechách - Adorf (1906-1945)
Vojtanov - Bad Brambach (1856)
Kraslice - Klingenthal (1886-1952, 2000), passenger transport only
Potůčky - Johanngeorgenstadt (1889-1945, 2003)
Vejprty - Bärenstein (1872-1945, 1993)
Křimov - Reitzenhain (1875-1947)
Moldava v Krušných Horách - Holzhau (1884-1945)
Děčín - Bad Schandau (1851)
Dolní Poustevna - Sebnitz (1905-1945), reopened in 2014
Rumburk - Ebersbach (1873)
Varnsdorf - Seifhennersdorf (1871), passenger transport only
Varnsdorf - Großschönau (1871), passenger transport only
Hrádek nad Nisou - Zittau (1859-1945, 1951), currently through Polish territory
Czech Republic - Poland
Note that all these railway lines were built before recreation of Poland, so some of them originally went to Germany, others were within the Austro-Hungarian empire.
Heřmanice - Bogatynia (Reichenau) (1900-1945), narrow gauge, see Frýdlant-Heřmanice Railway
Frýdlant v Čechách - Zawidów (Seidenberg) (1875), transport of goods only
Jindřichovice pod Smrkem - Mirsk (Friedeberg) (1902-1945)
Harrachov - Jakuszyce (1902-1945, 2010–present), see Cog railway Tanvald-Harrachov and Izera railway
Královec - Lubawka (1869), regular season traffic
Meziměstí - Mieroszów (1877)
Otovice - Tłumaczów (Tuntschendorf) (1889-1945)
Náchod-Běloves - Kudowa Zdrój (-1945)
Lichkov - Międzylesie (1875)
Bernartice - Dziewiętlice (-1945)
Vidnava - Kałków (1911-1945)
Mikulovice - Głuchołazy (1888)
Jindřichov ve Slezsku - Głuchołazy (1875)
Krnov - Głubczyce (1873-1945)
Opava - Pilszcz (1909-1945)
Chuchelná - Krzanowice (1895-1945)
Bohumín - Chałupki (1848)
Petrovice u Karviné - Zebrzydowice (1855)
Albrechtice - Marklowice (1914-1931), abolished after enactment of border with Poland, only base of bridge across Olza remained
Český Těšín - Cieszyn (1888), no passenger traffic
Note that all of these railway lines were built before the dissolution of Czechoslovakia in 1993 and became border crossings in that year.
Mosty u Jablunkova - Čadca (1871)
Horní Lideč - Lúky pod Makytou (1937)
Vlárský průsmyk - Horné Srnie (1888)
Velká nad Veličkou - Vrbovce (1929)
Sudoměřice - Skalica (1893), no regular traffic
Hodonín - Holíč (1891), currently no regular traffic, used for diversions in case of temporary closures on Lanžhot - Kúty line
Lanžhot - Kúty (1900)
Nová Bystřice - Litschau (gauge 760 mm)
Moldava - Hermsdorf-Rehefeld, narrow gauge Pöbel Railway to Schmiedeberg on Weisseritz Railway
Dolní Světlá - Jonsdorf, extension of narrow gauge Zittau-Jonsdorf line
Hlučín - Chałupki (Annaberg)