diff --git a/mutalyzer/models.py b/mutalyzer/models.py
index 7ebade7f8fa429b92845cac6f3f13a784474bb69..133fc6d84662e665bb61a217280fe80ff22313ee 100644
--- a/mutalyzer/models.py
+++ b/mutalyzer/models.py
@@ -310,6 +310,7 @@ class TranscriptMappingInfo(ComplexModel):
     """
     __namespace__ = SOAP_NAMESPACE
 
+    transcript = Mandatory.Unicode
     name = Mandatory.Unicode
     version = Mandatory.Integer
     gene = Mandatory.Unicode
diff --git a/mutalyzer/services/rpc.py b/mutalyzer/services/rpc.py
index ce2287a8d929100509e36ae0d624aca1ba3e8e7a..93ca06898087fb1273e2cfc6aeb506fe84190187 100644
--- a/mutalyzer/services/rpc.py
+++ b/mutalyzer/services/rpc.py
@@ -458,6 +458,7 @@ class MutalyzerService(ServiceBase):
             - 1 ; Return all hit transcripts.
 
         @return: Array of TranscriptMappingInfo objects with fields:
+                 - transcript
                  - name
                  - version
                  - gene
@@ -526,9 +527,22 @@ class MutalyzerService(ServiceBase):
 
         for mapping in mappings:
             t = TranscriptMappingInfo()
-            # TODO: This doesn't work so well for mappings with select_transcript
-            # set, for example LRG and mtDNA mappings, but it's not so easy to
-            # fix in a backwards compatible way.
+
+            if mapping.version:
+                accession = '%s.%i' % (mapping.accession, mapping.version)
+            else:
+                accession = mapping.accession
+            if mapping.select_transcript:
+                if mapping.reference_type == 'lrg':
+                    selector = 't%d' % mapping.transcript
+                elif mapping.transcript:
+                    selector = '(%s_v%.3i)' % (mapping.gene, mapping.transcript)
+                else:
+                    selector = '(%s)' % mapping.gene
+            else:
+                selector = ''
+            t.transcript = '%s%s' % (accession, selector)
+
             t.name = mapping.accession
             t.version = mapping.version
             t.gene = mapping.gene
diff --git a/tests/test_services_json.py b/tests/test_services_json.py
index e47e306e30fe8fef28ecc84f13493efa03e4536e..76bcb8c4dc8294d3ec5fe20542beb0bfff93e745 100644
--- a/tests/test_services_json.py
+++ b/tests/test_services_json.py
@@ -220,6 +220,7 @@ def test_get_transcripts_mapping(api):
     r = api('getTranscriptsMapping', 'hg19', 'chr11', 111955524, 111966518)
     assert r == [{'cds_start': 111957492,
                   'cds_stop': 111956019,
+                  'transcript': 'NM_012459.2',
                   'name': 'NM_012459',
                   'stop': 111955524,
                   'start': 111957522,
@@ -228,6 +229,7 @@ def test_get_transcripts_mapping(api):
                   'orientation': '-'},
                  {'cds_start': None,
                   'cds_stop': None,
+                  'transcript': 'NR_028383.1',
                   'name': 'NR_028383',
                   'stop': 111955524,
                   'start': 111957522,
@@ -236,6 +238,7 @@ def test_get_transcripts_mapping(api):
                   'orientation': '-'},
                  {'cds_start': 111957632,
                   'cds_stop': 111965694,
+                  'transcript': 'NM_003002.2',
                   'name': 'NM_003002',
                   'stop': 111966518,
                   'start': 111957571,
diff --git a/tests/test_services_soap.py b/tests/test_services_soap.py
index a02146da3b1b353d97caad85b3a4d53b4c37bb45..83792b7f54d3571b362f9cb310ffc2deafead2c8 100644
--- a/tests/test_services_soap.py
+++ b/tests/test_services_soap.py
@@ -258,6 +258,22 @@ def test_gettranscriptsbygenename_invalid(api):
     assert not r
 
 
+@pytest.mark.usefixtures('hg19_transcript_mappings')
+def test_gettranscriptsmapping_mtdna(api):
+    """
+    Running getTranscriptsMapping on mtDNA should give a list of transcripts
+    including their complete identification in the transcript attribute.
+    """
+    r = api('getTranscriptsMapping', 'hg19', 'chrM', 10765, 10765, 1)
+    assert type(r.TranscriptMappingInfo) == list
+    assert len(r.TranscriptMappingInfo) == 1
+    info = r.TranscriptMappingInfo[0]
+    assert 'NC_012920' == info.name
+    assert 1 == info.version
+    assert 'ND4' == info.gene
+    assert 'NC_012920.1(ND4_v001)' == info.transcript
+
+
 @with_references('AF230870.1')
 def test_gettranscriptsandinfo_valid(api):
     """
@@ -804,6 +820,7 @@ def test_get_transcripts_mapping(api):
                for t_real, t_expected in
                zip(r.TranscriptMappingInfo, [{'cds_start': 111957492,
                                               'cds_stop': 111956019,
+                                              'transcript': 'NM_012459.2',
                                               'name': 'NM_012459',
                                               'stop': 111955524,
                                               'start': 111957522,
@@ -812,6 +829,7 @@ def test_get_transcripts_mapping(api):
                                               'orientation': '-'},
                                              {'cds_start': None,
                                               'cds_stop': None,
+                                              'transcript': 'NR_028383.1',
                                               'name': 'NR_028383',
                                               'stop': 111955524,
                                               'start': 111957522,
@@ -820,6 +838,7 @@ def test_get_transcripts_mapping(api):
                                               'orientation': '-'},
                                              {'cds_start': 111957632,
                                               'cds_stop': 111965694,
+                                              'transcript': 'NM_003002.2',
                                               'name': 'NM_003002',
                                               'stop': 111966518,
                                               'start': 111957571,