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 railwayNovosedly - 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 pedestriansHorní 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 trailCheb - Schirnding (1883)Aš - Selb - Plößberg (1865), reopened for passenger transport in December 2015Hranice v Čechách - Adorf (1906-1945)Vojtanov - Bad Brambach (1856)Kraslice - Klingenthal (1886-1952, 2000), passenger transport onlyPotůč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 2014Rumburk - Ebersbach (1873)Varnsdorf - Seifhennersdorf (1871), passenger transport onlyVarnsdorf - Großschönau (1871), passenger transport onlyHrádek nad Nisou - Zittau (1859-1945, 1951), currently through Polish territoryCzech 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 RailwayFrýdlant v Čechách - Zawidów (Seidenberg) (1875), transport of goods onlyJindřichovice pod Smrkem - Mirsk (Friedeberg) (1902-1945)Harrachov - Jakuszyce (1902-1945, 2010–present), see Cog railway Tanvald-Harrachov and Izera railwayKrálovec - Lubawka (1869), regular season trafficMezimě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 trafficNote 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 trafficHodonín - Holíč (1891), currently no regular traffic, used for diversions in case of temporary closures on Lanžhot - Kúty lineLanžhot - Kúty (1900)Nová Bystřice - Litschau (gauge 760 mm)Moldava - Hermsdorf-Rehefeld, narrow gauge Pöbel Railway to Schmiedeberg on Weisseritz RailwayDolní Světlá - Jonsdorf, extension of narrow gauge Zittau-Jonsdorf lineHlučín - Chałupki (Annaberg)