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 TesterIntroduction
This document covers the two TMS SOAP integrations exposed by ST5.Api:
- TMS API at
/v3_ws.svc - TMS NS SOAP API at
/v5_wsns.svc
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
| Name | Required | Description |
|---|---|---|
| signature | Y | MD5 signature |
| operator_code | Y | Operator code |
| route_id | Y | Route id |
| trip_no | Y | Trip number |
| depart_date | Y | Departure date |
| counter_from | Y | Origin counter code |
| counter_to | Y | Destination counter code |
| bus_type | Y | Bus type |
| origin_trip_date | Conditional | Required for specific sales channels |
Response Parameters
| Name | Description |
|---|---|
| querySeat_status@code | Status code |
| querySeat_status@msg | Status message |
| querySeat_status@depart_time | Departure time |
| querySeat_status@coach_category | Coach category |
| details/detail@seat_no | Seat number |
| details/detail@available | Seat availability |
| pricing/price@adult, child, senior, others, insurance | Fare 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
| Name | Required | Description |
|---|---|---|
| signature | Y | MD5 signature |
| operator_code, route_id, trip_no, depart_date | Y | Trip identification |
| counter_from, counter_to | Y | Travel counters |
| block_details/details/detail@seat_no | Y | Seat number |
| block_details/details/detail@seat_type | Y | Seat type |
| block_details/details/detail@selling_price | Y | Selling price |
| origin_trip_date | Conditional | Original trip date |
| depart_time | Optional | Departure 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
| Name | Description |
|---|---|
| seatBlock_status@code | Status code |
| seatBlock_status@msg | Status message |
| seatBlock_status@block_id | Block reference returned as block_id |
SOAP seatConfirm
Confirm blocked seats
Finalizes booking and returns ticket references for the confirmed seats.
Request Parameters
| Name | Required | Description |
|---|---|---|
| signature | Y | MD5 signature |
| operator_code, route_id, trip_no, depart_date | Y | Trip identification |
| counter_from, counter_to | Y | Travel counters |
| block_id | Y | Block reference |
| queue_id | Y | Queue / reference identifier |
| confirm_details/details/detail@seat_no | Y | Seat number |
| confirm_details/details/detail@seat_type | Y | Seat type |
| confirm_details/details/detail@selling_price | Y | Selling price |
| confirm_details/details/detail@cust_name | Optional | Passenger name |
| confirm_details/details/detail@contact | Optional | Passenger contact |
| confirm_details/details/detail@ic | Optional | Passenger IC |
| confirm_details/details/detail@email | Optional | Passenger email |
| confirm_details/details/detail@coach_category | Optional | Coach category |
| origin_trip_date | Conditional | Original trip date |
| depart_time | Conditional | Required 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
| Name | Description |
|---|---|
| seatConfirm_status@code | Status code |
| seatConfirm_status@msg | Status message |
| details/detail@refn | Generated ticket number |
| details/detail@seat_no | Confirmed seat number |
SOAP seatCancel
Cancel tickets or seats
Request Parameters
| Name | Required | Description |
|---|---|---|
| signature | Y | MD5 signature |
| operator_code, route_id, trip_no, depart_date | Y | Trip identification |
| counter_from, counter_to | Y | Travel counters |
| canceltype | Y | Cancellation type |
| cancel_details/details/detail@seat_no | Y | Seat number |
| cancel_details/details/detail@tickn | Optional | Terminal ticket number |
| cancel_details/details/detail@refn | Optional | Smarticket 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
| Name | Description |
|---|---|
| seatCancel_status@code | Status code |
| seatCancel_status@msg | Status message |
SOAP queryTicket
Query ticket details
Request Parameters
| Name | Required | Description |
|---|---|---|
| signature | Y | MD5 signature |
| operator_code | Y | Operator code |
| ticket_no | Y | Ticket number |
| depart_date | Y | Departure 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
| Name | Description |
|---|---|
| queryTicket_status@code, msg | Status information |
| queryTicket_status@cust_name, contact | Passenger details |
| queryTicket_status@route_id, trip_no, trip_date | Trip details |
| queryTicket_status@counter_from, counter_to | Counter details |
| queryTicket_status@selling_price, seat_no, seat_type, coach_category | Ticket fare and seat details |
SOAP collectTicket
Mark a ticket as collected
Request Parameters
| Name | Required | Description |
|---|---|---|
| signature | Y | MD5 signature |
| operator_code | Y | Operator code |
| ticket_no | Y | Ticket number |
| depart_date | Y | Departure 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
| Name | Description |
|---|---|
| collectTicket_status@code | Status code |
| collectTicket_status@msg | Status message |
SOAP transRelease
Release queue transaction
Request Parameters
| Name | Required | Description |
|---|---|---|
| signature | Y | MD5 signature |
| operator_code | Y | Operator code |
| depart_date | Y | Departure date |
| queue_id | Y | Queue 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
| Name | Description |
|---|---|
| transRelease_status@code | Status code |
| transRelease_status@msg | Status message |
SOAP queryManifest
Query trip manifest summary
Request Parameters
| Name | Required | Description |
|---|---|---|
| signature | Y | MD5 signature |
| operator_code | Y | Operator code |
| route_id | Y | Route id |
| trip_no | Y | Trip number |
| depart_date | Y | Departure 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
| Name | Description |
|---|---|
| queryManifest_status@code | Status code |
| queryManifest_status@msg | Status message |
| queryManifest_details/detail@desn | Destination name |
| queryManifest_details/detail@qty | Total passenger quantity |
SOAP cancelCollectedTicket
Cancel previously collected tickets
Request Parameters
| Name | Required | Description |
|---|---|---|
| signature | Y | MD5 signature |
| operator_code, route_id, trip_no, depart_date | Y | Trip identification |
| counter_from, counter_to | Y | Travel counters |
| cancel_details/details/detail@seat_no | Y | Seat number |
| cancel_details/details/detail@tickn | Optional | Terminal ticket number |
| cancel_details/details/detail@refn | Optional | Smarticket 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
| Name | Description |
|---|---|
| cancelCollectedTicket_status@code | Status code |
| cancelCollectedTicket_status@msg | Status 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>