You can get this result using a python script that loops twice through the point layer, fetch the two points and construct a line. The solution below removes duplicates (that it, line A -> B is consider the same as B -> A). The output has the same CRS as the input. Make sure to edit the constant with the proper point ID column name [![Point connector output][1]][1] from PyQt4.QtCore import QVariant #Purpose: using the selected point layer, create a new scratch layer # containing a line between each pair of points and record the point ID #***********Constants # SOURCEID = 'ID' LINEID = 'lineID' POINTID1 = 'pointID1' POINTID2 = 'pointID2' # #*********** srclayer = iface.activeLayer() crs = srclayer.crs().toWkt() # Create the output layer outLayer = QgsVectorLayer('Linestring?crs='+ crs, 'connector_lines' , 'memory') outdp = outLayer.dataProvider() #add the two point ID field outdp.addAttributes([QgsField(LINEID, QVariant.Int),QgsField(POINTID1, QVariant.Int),QgsField(POINTID2, QVariant.Int)]) outLayer.updateFields() #get the field index srcIDfldidx = srclayer.dataProvider().fieldNameIndex(SOURCEID) outLineIDfldidx = outdp.fieldNameIndex(LINEID) outID1fldidx = outdp.fieldNameIndex(POINTID1) outID2fldidx = outdp.fieldNameIndex(POINTID2) lineIDcnt = 0 #loop through the points (1st point) for feat1 in srclayer.getFeatures(): geom1 = feat1.geometry() #statement for selecting the 2nd points with a greater ID to avoid duplicates # to keep them, change the expresion to ' <> ' exp = QgsExpression(SOURCEID + ' > ' + str(feat1.attributes()[srcIDfldidx])) request = QgsFeatureRequest(exp) #Select only the points having the specified value feat2lst=srclayer.getFeatures(request) #loop through the points (2nd point) for feat2 in feat2lst: lineIDcnt += 1 geom2 = feat2.geometry() #create the line connector = QgsFeature(outLayer.pendingFields()) connector.setGeometry(QgsGeometry.fromPolyline([geom1.asPoint(), geom2.asPoint()])) #record the IDs res = connector.setAttribute(outLineIDfldidx, lineIDcnt) res = connector.setAttribute(outID1fldidx, feat1[srcIDfldidx]) res = connector.setAttribute(outID2fldidx, feat2[srcIDfldidx]) #add the feature to the layer res = outdp.addFeatures([connector]) # Add the layer to the Layers panel QgsMapLayerRegistry.instance().addMapLayer(outLayer) print "Done .. " [1]: https://i.sstatic.net/KDXIi.png