Index: applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssistantValidatorTest.java
===================================================================
--- applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssistantValidatorTest.java	(revision 33464)
+++ applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssistantValidatorTest.java	(revision 33465)
@@ -44,4 +44,5 @@
 public class PTAssistantValidatorTest extends Test {
 
+    public static final int ERROR_CODE_FROM_TO_ROUTE_TAG = 3701;
     public static final int ERROR_CODE_SORTING = 3711;
     public static final int ERROR_CODE_PARTIAL_SORTING = 3712;
@@ -352,4 +353,7 @@
         // Check if the relation is correct, or only has a wrong sorting order:
         RouteChecker routeChecker = new RouteChecker(r, this);
+        routeChecker.setManager(manager);
+        routeChecker.setAssigner(assigner);
+        routeChecker.performFromToTagsTest();
         routeChecker.performSortingTest();
         List<TestError> routeCheckerErrors = routeChecker.getErrors();
Index: applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/RouteChecker.java
===================================================================
--- applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/RouteChecker.java	(revision 33464)
+++ applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/RouteChecker.java	(revision 33465)
@@ -21,5 +21,8 @@
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionTypeCalculator;
+import org.openstreetmap.josm.plugins.pt_assistant.data.PTRouteDataManager;
+import org.openstreetmap.josm.plugins.pt_assistant.data.PTStop;
 import org.openstreetmap.josm.plugins.pt_assistant.utils.RouteUtils;
+import org.openstreetmap.josm.plugins.pt_assistant.utils.StopToWayAssigner;
 
 /**
@@ -35,4 +38,10 @@
     List<RelationMember> sortedMembers;
 
+    /* Manager of the PTStops and PTWays of the current route */
+    private PTRouteDataManager manager;
+
+    /* Assigns PTStops to nearest PTWays and stores that correspondence */
+    private StopToWayAssigner assigner;
+
     public RouteChecker(Relation relation, Test test) {
 
@@ -43,5 +52,5 @@
     }
 
-   protected void performSortingTest() {
+    protected void performSortingTest() {
 
         final List<RelationMember> waysToCheck = new ArrayList<>();
@@ -82,4 +91,58 @@
             }
         }
+    }
+
+    protected void performFromToTagsTest() {
+
+        String from = relation.get("from");
+        String to = relation.get("to");
+        if (from == null || to == null || manager.getPTStopCount() == 0) {
+            return;
+        }
+
+        PTStop stop = manager.getFirstStop();
+        OsmPrimitive primitive = checkPTStopName(stop, from);
+
+        if (primitive != null) {
+            Builder builder = TestError.builder(this.test, Severity.WARNING,
+                    PTAssistantValidatorTest.ERROR_CODE_FROM_TO_ROUTE_TAG);
+            builder.message(tr("PT: The name of the first stop does not match the \"from\" tag of the route relation"));
+            builder.primitives(primitive);
+            TestError e = builder.build();
+            this.errors.add(e);
+        }
+
+        stop = manager.getLastStop();
+        primitive = checkPTStopName(stop, to);
+
+        if (primitive != null) {
+            Builder builder = TestError.builder(this.test, Severity.WARNING,
+                    PTAssistantValidatorTest.ERROR_CODE_FROM_TO_ROUTE_TAG);
+            builder.message(tr("PT: The name of the last stop does not match the \"to\" tag of the route relation"));
+            builder.primitives(primitive);
+            TestError e = builder.build();
+            this.errors.add(e);
+        }
+    }
+
+    //given a PTStop and a name, check whether one of its primitives have a
+    //different name from the one passed. if so, it returns the primitive.
+    //it returns null if the names match
+    private OsmPrimitive checkPTStopName(PTStop stop, String name) {
+        OsmPrimitive primitive = null;
+        String toCheck = null;
+        if (stop.getPlatform() != null) {
+            toCheck = stop.getPlatform().getName();
+            primitive = stop.getPlatform();
+        }
+        if (toCheck == null && stop.getStopPosition() != null) {
+            toCheck = stop.getStopPosition().getName();
+            primitive = stop.getStopPosition();
+        }
+
+        if (toCheck != null && !toCheck.equals(name))
+            return primitive;
+
+        return null;
     }
 
@@ -185,3 +248,19 @@
         return new ChangeCommand(originalRelation, sortedRelation);
     }
+
+    public PTRouteDataManager getManager() {
+        return manager;
+    }
+
+    public void setManager(PTRouteDataManager manager) {
+        this.manager = manager;
+    }
+
+    public StopToWayAssigner getAssigner() {
+        return assigner;
+    }
+
+    public void setAssigner(StopToWayAssigner assigner) {
+        this.assigner = assigner;
+    }
 }
