SMARTicket V5 (ST5) TMS SOAP API Specification

Version: 1.5.0

Last Modified: 21 Apr 2025

Status: Beta

Need to test a request quickly?

Open the built-in SOAP tester to pick a tenant, load a sample envelope, and submit the request directly to this API.

Open SOAP Tester

Introduction

This document covers the two TMS SOAP integrations exposed by ST5.Api:

TMS API and TMS NS SOAP API both provide the full ticketing contract for seat query, blocking, confirmation, cancellation, ticket lookup, collection, transaction release, manifest query, and cancel collected ticket. TMS NS SOAP API uses the namespace urn:TicketService and explicit SOAPAction headers.

Base URL

Demo URL: https://test-api.smarticket.my/{tenant}/v3_ws.svc
Demo NS URL: https://test-api.smarticket.my/{tenant}/v5_wsns.svc
Live URL: https://api.smarticket.my/{tenant}/v3_ws.svc
Live NS URL: https://api.smarticket.my/{tenant}/v5_wsns.svc

Communication Requirements

Item Description
Protocol SOAP over HTTP
Binding BasicHttpBinding
Message Format XML
SOAP Version 1.1
Header Value
Content-Type text/xml; charset=utf-8
TMS SOAPAction Optional / default BasicHttp SOAP action
TMS NS SOAPAction urn:TicketService/{operationName}
WSDL ?wsdl

Authentication Signature Format:

MD5(Operator Code + Date + Secret Key)

The date component is normally depart_date.

Example:
Input: BAYU08/05/2025D3MB4YU
MD5 Hash: 9428aa99eae6cd4e753fd850f58ee241

TMS API vs TMS NS SOAP API

Item TMS API TMS NS SOAP API
Endpoint /v3_ws.svc /v5_wsns.svc
Namespace Empty urn:TicketService
SOAPAction Standard BasicHttp urn:TicketService/{operationName}
Operations querySeat, seatBlock, seatConfirm, seatCancel, queryTicket, collectTicket, transRelease, queryManifest, cancelCollectedTicket querySeat, seatBlock, seatConfirm, seatCancel, queryTicket, collectTicket, transRelease, queryManifest, cancelCollectedTicket
Request / Response XML Operation element without service namespace, with request and response fields defined by the ticketing message contracts. Use the same XML body shape as TMS API, but send the matching SOAPAction in the urn:TicketService/{operationName} namespace.

API Specification

SOAP querySeat

Query seat availability

Returns departure time, coach category, fare information, and seat availability.

Request Parameters

NameRequiredDescription
signatureYMD5 signature
operator_codeYOperator code
route_idYRoute id
trip_noYTrip number
depart_dateYDeparture date
counter_fromYOrigin counter code
counter_toYDestination counter code
bus_typeYBus type
origin_trip_dateConditionalRequired for specific sales channels

Response Parameters

NameDescription
querySeat_status@codeStatus code
querySeat_status@msgStatus message
querySeat_status@depart_timeDeparture time
querySeat_status@coach_categoryCoach category
details/detail@seat_noSeat number
details/detail@availableSeat availability
pricing/price@adult, child, senior, others, insuranceFare attributes

Sample Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <querySeat signature="9428aa99eae6cd4e753fd850f58ee241">
      <operator_code>BAYU</operator_code>
      <route_id>SHAHGM01</route_id>
      <trip_no>3F</trip_no>
      <depart_date>08/05/2025</depart_date>
      <counter_from>SHA</counter_from>
      <counter_to>HGM</counter_to>
      <bus_type>EXP</bus_type>
      <origin_trip_date>08/05/2025</origin_trip_date>
    </querySeat>
  </soapenv:Body>
</soapenv:Envelope>

Sample Response

<querySeat_status code="200" msg="Success" depart_time="103500" coach_category="SVIP">
  <details>
    <detail seat_no="1A" available="Y" />
    <detail seat_no="1B" available="N" />
  </details>
  <pricing>
    <price adult="37.30" child="37.30" senior="37.30" others="37.30" insurance="0.50" />
  </pricing>
</querySeat_status>

SOAP seatBlock

Block seats

Temporarily blocks one or more seats and returns a block identifier.

Request Parameters

NameRequiredDescription
signatureYMD5 signature
operator_code, route_id, trip_no, depart_dateYTrip identification
counter_from, counter_toYTravel counters
block_details/details/detail@seat_noYSeat number
block_details/details/detail@seat_typeYSeat type
block_details/details/detail@selling_priceYSelling price
origin_trip_dateConditionalOriginal trip date
depart_timeOptionalDeparture time

Sample Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <seatBlock signature="9428aa99eae6cd4e753fd850f58ee241">
      <operator_code>BAYU</operator_code>
      <route_id>SHAHGM01</route_id>
      <trip_no>3F</trip_no>
      <depart_date>08/05/2025</depart_date>
      <counter_from>SHA</counter_from>
      <counter_to>HGM</counter_to>
      <block_details>
        <details>
          <detail seat_no="1A" seat_type="A" selling_price="38.00" />
        </details>
      </block_details>
      <origin_trip_date>08/05/2025</origin_trip_date>
      <depart_time>103500</depart_time>
    </seatBlock>
  </soapenv:Body>
</soapenv:Envelope>

Response Parameters

NameDescription
seatBlock_status@codeStatus code
seatBlock_status@msgStatus message
seatBlock_status@block_idBlock reference returned as block_id

SOAP seatConfirm

Confirm blocked seats

Finalizes booking and returns ticket references for the confirmed seats.

Request Parameters

NameRequiredDescription
signatureYMD5 signature
operator_code, route_id, trip_no, depart_dateYTrip identification
counter_from, counter_toYTravel counters
block_idYBlock reference
queue_idYQueue / reference identifier
confirm_details/details/detail@seat_noYSeat number
confirm_details/details/detail@seat_typeYSeat type
confirm_details/details/detail@selling_priceYSelling price
confirm_details/details/detail@cust_nameOptionalPassenger name
confirm_details/details/detail@contactOptionalPassenger contact
confirm_details/details/detail@icOptionalPassenger IC
confirm_details/details/detail@emailOptionalPassenger email
confirm_details/details/detail@coach_categoryOptionalCoach category
origin_trip_dateConditionalOriginal trip date
depart_timeConditionalRequired for specific sales channels

Sample Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <seatConfirm signature="9428aa99eae6cd4e753fd850f58ee241">
      <operator_code>BAYU</operator_code>
      <route_id>SHAHGM01</route_id>
      <trip_no>3F</trip_no>
      <depart_date>08/05/2025</depart_date>
      <counter_from>SHA</counter_from>
      <counter_to>HGM</counter_to>
      <block_id>TSL25050000080</block_id>
      <queue_id>283941</queue_id>
      <confirm_details>
        <details>
          <detail seat_no="1A" seat_type="A" selling_price="38.00" cust_name="Ahmad" contact="01234456" ic="900101015555" email="[email protected]" coach_category="SVIP" />
        </details>
      </confirm_details>
      <origin_trip_date>08/05/2025</origin_trip_date>
      <depart_time>103500</depart_time>
    </seatConfirm>
  </soapenv:Body>
</soapenv:Envelope>

Response Parameters

NameDescription
seatConfirm_status@codeStatus code
seatConfirm_status@msgStatus message
details/detail@refnGenerated ticket number
details/detail@seat_noConfirmed seat number

SOAP seatCancel

Cancel tickets or seats

Request Parameters

NameRequiredDescription
signatureYMD5 signature
operator_code, route_id, trip_no, depart_dateYTrip identification
counter_from, counter_toYTravel counters
canceltypeYCancellation type
cancel_details/details/detail@seat_noYSeat number
cancel_details/details/detail@ticknOptionalTerminal ticket number
cancel_details/details/detail@refnOptionalSmarticket ticket number

Sample Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <seatCancel signature="9428aa99eae6cd4e753fd850f58ee241">
      <operator_code>BAYU</operator_code>
      <route_id>SHAHGM01</route_id>
      <trip_no>3F</trip_no>
      <depart_date>08/05/2025</depart_date>
      <counter_from>SHA</counter_from>
      <counter_to>HGM</counter_to>
      <canceltype>C</canceltype>
      <cancel_details>
        <details>
          <detail seat_no="1A" tickn="TERM0001" refn="BYU25050000039" />
        </details>
      </cancel_details>
    </seatCancel>
  </soapenv:Body>
</soapenv:Envelope>

Response Parameters

NameDescription
seatCancel_status@codeStatus code
seatCancel_status@msgStatus message

SOAP queryTicket

Query ticket details

Request Parameters

NameRequiredDescription
signatureYMD5 signature
operator_codeYOperator code
ticket_noYTicket number
depart_dateYDeparture date

Sample Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <queryTicket signature="9428aa99eae6cd4e753fd850f58ee241">
      <operator_code>BAYU</operator_code>
      <ticket_no>BYU25050000039</ticket_no>
      <depart_date>08/05/2025</depart_date>
    </queryTicket>
  </soapenv:Body>
</soapenv:Envelope>

Response Parameters

NameDescription
queryTicket_status@code, msgStatus information
queryTicket_status@cust_name, contactPassenger details
queryTicket_status@route_id, trip_no, trip_dateTrip details
queryTicket_status@counter_from, counter_toCounter details
queryTicket_status@selling_price, seat_no, seat_type, coach_categoryTicket fare and seat details

SOAP collectTicket

Mark a ticket as collected

Request Parameters

NameRequiredDescription
signatureYMD5 signature
operator_codeYOperator code
ticket_noYTicket number
depart_dateYDeparture date

Sample Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <collectTicket signature="9428aa99eae6cd4e753fd850f58ee241">
      <operator_code>BAYU</operator_code>
      <ticket_no>BYU25050000039</ticket_no>
      <depart_date>08/05/2025</depart_date>
    </collectTicket>
  </soapenv:Body>
</soapenv:Envelope>

Response Parameters

NameDescription
collectTicket_status@codeStatus code
collectTicket_status@msgStatus message

SOAP transRelease

Release queue transaction

Request Parameters

NameRequiredDescription
signatureYMD5 signature
operator_codeYOperator code
depart_dateYDeparture date
queue_idYQueue id to release

Sample Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <transRelease signature="9428aa99eae6cd4e753fd850f58ee241">
      <operator_code>BAYU</operator_code>
      <depart_date>08/05/2025</depart_date>
      <queue_id>283941</queue_id>
    </transRelease>
  </soapenv:Body>
</soapenv:Envelope>

Response Parameters

NameDescription
transRelease_status@codeStatus code
transRelease_status@msgStatus message

SOAP queryManifest

Query trip manifest summary

Request Parameters

NameRequiredDescription
signatureYMD5 signature
operator_codeYOperator code
route_idYRoute id
trip_noYTrip number
depart_dateYDeparture date

Sample Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <queryManifest signature="9428aa99eae6cd4e753fd850f58ee241">
      <operator_code>BAYU</operator_code>
      <route_id>SHAHGM01</route_id>
      <trip_no>3F</trip_no>
      <depart_date>08/05/2025</depart_date>
    </queryManifest>
  </soapenv:Body>
</soapenv:Envelope>

Response Parameters

NameDescription
queryManifest_status@codeStatus code
queryManifest_status@msgStatus message
queryManifest_details/detail@desnDestination name
queryManifest_details/detail@qtyTotal passenger quantity

SOAP cancelCollectedTicket

Cancel previously collected tickets

Request Parameters

NameRequiredDescription
signatureYMD5 signature
operator_code, route_id, trip_no, depart_dateYTrip identification
counter_from, counter_toYTravel counters
cancel_details/details/detail@seat_noYSeat number
cancel_details/details/detail@ticknOptionalTerminal ticket number
cancel_details/details/detail@refnOptionalSmarticket ticket number

Sample Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <cancelCollectedTicket signature="9428aa99eae6cd4e753fd850f58ee241">
      <operator_code>BAYU</operator_code>
      <route_id>SHAHGM01</route_id>
      <trip_no>3F</trip_no>
      <depart_date>08/05/2025</depart_date>
      <counter_from>SHA</counter_from>
      <counter_to>HGM</counter_to>
      <cancel_details>
        <details>
          <detail seat_no="1A" tickn="TERM0001" refn="BYU25050000039" />
        </details>
      </cancel_details>
    </cancelCollectedTicket>
  </soapenv:Body>
</soapenv:Envelope>

Response Parameters

NameDescription
cancelCollectedTicket_status@codeStatus code
cancelCollectedTicket_status@msgStatus message

TMS NS SOAP API Request Example

Use the same body fields as TMS API and send the matching SOAPAction. For the current `ST5.Api` XML contract, the operation element itself stays unqualified.

SOAPAction: urn:TicketService/querySeat

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header />
  <soapenv:Body>
    <querySeat signature="9428aa99eae6cd4e753fd850f58ee241">
      <operator_code>BAYU</operator_code>
      <route_id>SHAHGM01</route_id>
      <trip_no>3F</trip_no>
      <depart_date>08/05/2025</depart_date>
      <counter_from>SHA</counter_from>
      <counter_to>HGM</counter_to>
      <bus_type>EXP</bus_type>
      <origin_trip_date>08/05/2025</origin_trip_date>
    </querySeat>
  </soapenv:Body>
</soapenv:Envelope>