SMARTicket V5 (ST5) CTS SOAP API Specification
Version: 1.5.0
Last Modified: 21 Apr 2025
Status: Beta
Introduction
The CTS SOAP API is exposed at /v3_ws_cts.svc. It includes the shared ticketing operations plus CTS-specific response formats and additional operations for destination lookup, trip lookup, ticket rescheduling, and reschedule seat confirmation.
Base URL
Demo URL: https://test-api.smarticket.my/{tenant}/v3_ws_cts.svc
Live URL: https://api.smarticket.my/{tenant}/v3_ws_cts.svc
Communication Requirements
| Item | Description |
|---|---|
| Protocol | SOAP over HTTP |
| Binding | BasicHttpBinding |
| Message Format | XML |
| Contract Name | TicketService |
| Header | Value |
|---|---|
| Content-Type | text/xml; charset=utf-8 |
| Signature | MD5(Operator Code + Date + Secret Key) |
| WSDL | /v3_ws_cts.svc?wsdl |
Authentication Signature Format:
MD5(Operator Code + Request Date + Secret Key)
current_date is used for queryDestination, while depart_date is used for the other date-based operations.
Supported Operations
| Operation | Available on CTS | Remarks |
|---|---|---|
| querySeat | Yes | CTS-specific response includes bus layout and seat coordinates |
| seatBlock | Yes | Blocks selected seats and returns a block identifier |
| seatConfirm | Yes | CTS-specific response groups tickets by trip |
| seatCancel | Yes | Cancels seats or tickets using cancellation detail items |
| queryTicket | Yes | Returns passenger, trip, fare, and seat details for one ticket |
| collectTicket | Yes | Marks a ticket as collected |
| transRelease | Yes | Releases a queue transaction by queue id |
| queryManifest | Yes | Returns passenger totals grouped by destination |
| queryDestination | Yes | Returns available counters and supported origin-destination pairs for the operator |
| queryTrip | Yes | Returns available trips, seat counts, and fare details for a selected route and date |
| queryRescheduleTicket | Yes | Validates tickets for rescheduling and returns fee and eligibility details |
| rescheduleSeatConfirm | Yes | Creates the replacement booking and returns the new trip and ticket mapping |
CTS-Specific API Specification
SOAP querySeat
Query seat availability with CTS layout details
Returns standard seat availability plus bus layout, deck information, seat coordinates, and price per seat type.
Request Parameters
| Name | Required | Description |
|---|---|---|
| signature, operator_code | Y | Authentication fields |
| route_id, trip_no, depart_date | Y | Trip identification |
| counter_from, counter_to | Y | Travel counters |
| bus_type | Y | Bus type |
| origin_trip_date | Conditional | Required for specific sales channels |
Response Parameters
| Name | Description |
|---|---|
| querySeat_status@code, msg, depart_time, coach_category | Status and trip header |
| busLayout/deck@deck_no | Deck number |
| busLayout/deck@total_col, total_row | Total layout dimensions |
| details/detail@seat_no | Seat number |
| details/detail@col, row, deck_no | Seat coordinates and deck |
| details/detail@available | Seat availability |
| details/detail@price_adult, price_child, price_senior, price_others | Seat fares |
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">
<busLayout>
<deck deck_no="1" total_col="5" total_row="10" />
<deck deck_no="2" total_col="5" total_row="10" />
</busLayout>
<details>
<detail seat_no="1A" col="1" row="1" deck_no="1" available="Y" price_adult="37.30" price_child="37.30" price_senior="37.30" price_others="37.30" />
</details>
</querySeat_status>
SOAP seatConfirm
Confirm seats with CTS trip response
Confirms blocked seats and returns a CTS response grouped by trip and ticket.
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, queue_id | Y | Booking references |
| confirm_details | Y | Passenger and seat detail list |
| origin_trip_date, depart_time | Conditional | Additional trip fields |
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]" />
</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, msg | Status information |
| trip@route_id, trip_no, date, boarding_code | Confirmed trip information |
| trip@coach_category | Coach category |
| ticket@ticket_no | Generated ticket number |
| ticket@seat_no | Confirmed seat number |
SOAP queryDestination
Query counters and destinations
Request Parameters
| Name | Required | Description |
|---|---|---|
| signature | Y | MD5 signature using current_date |
| operator_code | Y | Operator code |
| current_date | Y | Current date |
Response Parameters
| Name | Description |
|---|---|
| queryDestination_status@code, msg | Status information |
| counters/counter@code | Counter code |
| counters/counter@desc | Counter description |
| counters/counter@landmark, address, latitude, longitude | Counter location details |
| destinations/destination@from, to | Origin and destination pairing |
Sample Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<queryDestination signature="md5(operator_code + current_date + secret_key)">
<operator_code>BAYU</operator_code>
<current_date>08/05/2025</current_date>
</queryDestination>
</soapenv:Body>
</soapenv:Envelope>
Sample Response
<queryDestination_status code="200" msg="Success">
<counters>
<counter code="SHA" desc="Shah Alam" landmark="Terminal" address="Section 13" latitude="3.07" longitude="101.51" />
</counters>
<destinations>
<destination from="SHA" to="HGM" />
</destinations>
</queryDestination_status>
SOAP queryTrip
Query available trips
Request Parameters
| Name | Required | Description |
|---|---|---|
| signature | Y | MD5 signature |
| operator_code | Y | Operator code |
| counter_from | Y | Origin counter |
| counter_to | Y | Destination counter |
| depart_date | Y | Departure date |
Sample Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<queryTrip signature="9428aa99eae6cd4e753fd850f58ee241">
<operator_code>BAYU</operator_code>
<counter_from>SHA</counter_from>
<counter_to>HGM</counter_to>
<depart_date>08/05/2025</depart_date>
</queryTrip>
</soapenv:Body>
</soapenv:Envelope>
Response Parameters
| Name | Description |
|---|---|
| queryTrip_status@code, msg | Status information |
| trip@route_id | Route id |
| trip@origin_trip_date | Original trip date |
| trip@trip_time, trip_no, bus_type | Trip schedule details |
| trip@seat_available | Available seat count |
| trip@coach_category | Coach category |
| price_details/price@seat_type, seat_price | Fare by seat type |
SOAP queryRescheduleTicket
Validate tickets for rescheduling
Request Parameters
| Name | Required | Description |
|---|---|---|
| signature | Y | MD5 signature |
| operator_code | Y | Operator code |
| depart_date | Y | Departure date |
| reschedule_tickets/ticket@ticket_no | Y | Ticket number list to validate |
Sample Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<queryRescheduleTicket signature="9428aa99eae6cd4e753fd850f58ee241">
<operator_code>BAYU</operator_code>
<depart_date>08/05/2025</depart_date>
<reschedule_tickets>
<ticket ticket_no="BYU25050000039" />
<ticket ticket_no="BYU25050000040" />
</reschedule_tickets>
</queryRescheduleTicket>
</soapenv:Body>
</soapenv:Envelope>
Response Parameters
| Name | Description |
|---|---|
| queryRescheduleTicket_status@code, msg | Status information |
| queryRescheduleTicket_status@reschedule_fee | Applicable reschedule fee |
| ticket_details@tickp | Internal ticket pointer |
| ticket_details@ticket_no | Ticket number |
| ticket_details@status, status_text | Reschedule eligibility status |
| ticket_details@price, is_collected | Fare and collection state |
SOAP rescheduleSeatConfirm
Confirm a ticket reschedule
Creates the replacement booking for tickets previously validated through queryRescheduleTicket.
The CTS contract operation name is rescheduleSeatConfirm, while the request body element remains rescheduleConfirm.
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, queue_id | Y | Booking references |
| origin_trip_date, depart_time | Y | Trip schedule values |
| reschedule_fee | Y | Applicable fee |
| reschedule_confirm_details/detail@old_ticket_no | Y | Original ticket number |
| reschedule_confirm_details/detail@seat_no | Y | New seat number |
| reschedule_confirm_details/detail@seat_type | Y | Seat type |
| reschedule_confirm_details/detail@selling_price | Y | New selling price |
| reschedule_confirm_details/detail@cust_name, contact, ic, email | Optional | Passenger detail |
Sample Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<rescheduleConfirm 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>TSL25050000081</block_id>
<queue_id>293001</queue_id>
<origin_trip_date>08/05/2025</origin_trip_date>
<depart_time>103500</depart_time>
<reschedule_fee>5.00</reschedule_fee>
<reschedule_confirm_details>
<detail old_ticket_no="BYU25050000039" seat_no="2A" seat_type="A" selling_price="38.00" cust_name="Ahmad" contact="01234456" ic="900101015555" email="[email protected]" />
</reschedule_confirm_details>
</rescheduleConfirm>
</soapenv:Body>
</soapenv:Envelope>
Response Parameters
| Name | Description |
|---|---|
| rescheduleConfirm_status@code, msg | Status information |
| trip@route_id, trip_no, date, boarding_code | New confirmed trip details |
| ticket@ticket_no, seat_no | New ticket number and seat mapping |
Additional CTS Ticketing Operations
SOAP seatBlock
Block seats
Temporarily blocks one or more seats and returns a block identifier for later confirmation.
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 when required by sales channel |
| 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 id |
SOAP seatCancel
Cancel seats or tickets
Cancels one or more seats or ticket references for a selected trip.
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
Returns passenger, trip, fare, and seat information for a single ticket number.
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 | Fare and seat information |
SOAP collectTicket
Collect ticket
Marks a ticket as collected on the CTS endpoint.
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 transaction
Releases a pending queue transaction using the queue identifier.
Request Parameters
| Name | Required | Description |
|---|---|---|
| signature | Y | MD5 signature |
| operator_code | Y | Operator code |
| depart_date | Y | Departure date |
| queue_id | Y | Queue id |
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 manifest summary
Returns passenger totals grouped by destination for a selected trip.
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 description |
| queryManifest_details/detail@qty | Passenger quantity |