API Documentation

API Documentation

API Documentation

Introduction

RTS Ticketing has created an open interface to accommodate third-party access to our sales engine. In order to allow access, we have created an HTTPS server that accepts XML packets.

Credit card payments are processed either through the POS locations’ credit card processing account or through your own processing account. So a separate shopping cart or credit card processing account is not needed, but you have the option of building your own.

Purchased tickets can be redeemed at the location's POS for actual tickets. These tickets can be redeemed using any of three methods:

The credit card that was used to purchase the tickets
The receipt number assigned to the purchase
The bar code that is provided by the purchase response packet.
Notes
Note: Some locations do not have bar code readers or the bar code may be illegible when printed on a low-quality printer. It is strongly suggested that the confirmation number is also printed with the bar code.

Communication

Communications with the locations POS server are done using an HTTPS Post of an XML packet. Basic authentication is performed for each Post.

The URL for posting data is:
Notes
Note: The listening port is 2235 (not the default web server port 80)

Test Server Information

It is a good idea to develop your application against a test server, and not against a live theatre server. Below is the information for the RTS Test Servers:
Notes
!! NOTE: These are not web pages, they cannot be viewed in a browser !!
WorldPay Non-E2E Server (also known as Mercury Classic Server):

WorldPay E2E Server (also known as Mercury EMV Server):

Heartland Secure Server:

TSYS Secure Server:

The credentials for these servers are:

Schedule and Selling Username: test
Schedule and Selling Password: test

Test Card Information

Notes
!! NOTE: The <ChargeAmount> for the test WorldPay cards cannot exceed $10 !!
The test credit card information for the WorldPay Non-E2E server is:
Number 6011-0009-9091-1111

The test credit card information for the WorldPay E2E server is:
Number 6011-0009-9091-1111

The test credit card information for the Heartland Secure server is:
Number 4012-0020-0006-0016

The test credit card information for the TSYS Secure server is:
Number 4012-0000-9876-5439

To obtain a test gift card number, purchase a new gift card, and then use the returned number as your future test gift card number. See Gift Card / Loyalty Card Information in this Knowledge Base for details on purchasing new gift cards.

Performance Schedule

Notes
!! NOTE: GZIP Compression is required when requesting schedule data !!
Notes
!! NOTE: Sending in <ShowAvalTickets> and <ShowSales> values that do not match the settings on the locations configured schedule API account will result in a 401 – Unauthorized error !!

Performance Schedule - Sample Request Packet

<Request>
    <Version>1</Version>
    <Command>ShowTimeXml</Command>
    <ShowAvalTickets>1</ShowAvalTickets>
    <ShowSales>1</ShowSales>
    <ShowSaleLinks>1</ShowSaleLinks>
</Request>

Performance Schedule - Sample Response Packet

<Response>
    <ShowSchedule>
        <FileVersion>1.1</FileVersion>
        <RtsVersion>7.0.7238.0</RtsVersion>
</LinkPrefix>
        <Tickets>
            <Ticket>
                <Code>1</Code>
                <Name>Adult</Name>
                <Price>7.5</Price>
                <Tax>.5</Tax>
            </Ticket>
            <Ticket>
                <Code>2</Code>
                <Name>Child</Name>
                <Price>7</Price>
                <Tax>.43</Tax>
            </Ticket>
        </Tickets>
        <Films>
            <Film>
                <Title>+21 STRANGE TITLE</Title>
                <TitleShort>+21 STRANGE TITLE</TitleShort>
                <Length>120</Length>
                <Rating>NC17</Rating>
                <WebSite>http://www.rts-solutions.com</WebSite>
                <FilmCode>+24230</FilmCode>
                <MtFilmCode></MtFilmCode>
                <Shows>
                    <Show>
                        <DT>200811261235</DT>
                        <Aud>1</Aud>
                        <ID>+24230|200811261235|1</ID>
                        <Link>12345</Link>
                        <RE>225</RE>
                        <Sold>22</Sold>
                        <SO>0</SO>
                        <LI>0</LI>
                        <TIs>
                            <TI>
                                <C>1|1</C>
                            </TI>
                            <TI>
                                <C>1|2</C>
                            </TI>
                        </TIs>
                    </Show>
                </Shows>
            </Film>
        </Films>
    </ShowSchedule>
</Response>
 
Node Child Node Type Required Description <Request>
Version None Char Yes 1
Command None Char Yes ShowTimeXml
ShowAvalTickets None Integer No
Not 1 = Do not return available tickets (default)

1 = Return available tickets

ShowSales None Integer No
Not 1 = Do not return sales (default)

1 = Return sales

Node Child Node Type Required
Description <ShowSchedule>
FileVersion None String Yes 1.1
RtsVersion None String Yes Version of the POS
LinkPrefix None String Yes Used to construct a direct ticketing link for a performance
Tickets Ticket Sub Node Maybe Lists available tickets
Films Film Sub Node Yes Lists films scheduled
Node Child Node Type Required
Description <Ticket>                             
Code None String Yes Ticket code used in purchase transactions
Name None String Yes Ticket name as it should be displayed on the Internet
Price None Decimal Yes Total ticket price
Tax None Decimal Maybe Any tax included in the ticket price
Node Child Node Type Required Description <Film>               
Title None String Yes Film title name
Length None String Yes Film length (minutes)
WebSite None String Maybe URL associated with the film in the POS
FilmCode None String Maybe RTS Film Code setup in the POS
Shows Show Sub Node Yes List of available shows for a film
Node Child Node Type Required Description <Show>
DT None String Yes Showing time (yyyyMMddhhmm)
Aud None String Yes Auditorium name
ID None String Yes Performance ID, used in purchase transactions
Link None String Maybe URL to purchase tickets page. The <LinkPrefix> is inserted before this tag when creating the complete URL
RE None Integer Maybe Number of seats remaining in the auditorium
Sold None Integer Maybe Number of seats sold in the auditorium
SO None Integer Maybe 1 if show is sold out (internet) state
SOGen None Integer Maybe 1 if show is sold out (general) state
LI None Integer Maybe 1 if show is in low seats state
TIs TI Sub Node Maybe List of tickets available for this show

Selling - Fees and Adjustments

The Open Interface API currently allows for 2 different types of Fees, and an Adjustment.

The <TicketFee> item is a single charge added to the transaction.

The <TransactionFee> item is a single charge added to the transaction.

The <Adjust> item is an adjustment used to modify the charge amount. If you sell 3 tickets with -$1 in this item, it will deduct $1 from your transaction amount. This amount can be positive or negative, depending on how you wish to adjust the transaction.

All three of these items are placed inside the <Fees> tags inside the purchase packet.  These items can be used in any purchase packet: tickets, items, gift cards, etc.

Gift Card / Loyalty Card Information

Gift Card / Loyalty Card - Sample Request Packet

<Request>
    <Version>1</Version>
    <Command>GiftInformation</Command>
    <Data>
        <Packet>
            <GiftCards>
                <GiftCard>1234123412341234</GiftCard>
            </GiftCards>
        </Packet>
    </Data>
</Request> 
Node Child Node Type Required CollapseDescription <Show>
Version None Char Yes 1
Command None String Yes GiftInformation
Data Packet Sub Node Yes
Packet GiftCards Sub Node Yes
GiftCards GiftCard Sub Node Yes
GiftCard None String Yes Gift card number

Gift Card / Loyalty Card - Sample Response Packet – Non-Registered Card

<Response>
    <Version>1</Version>
    <Code>-1</Code>
    <Packet>
        <GiftCard>
            <GiftNumber>1234123412341234</GiftNumber>
            <DebitRemain>1061.16</DebitRemain>
            <Registered>0</Registered>
        </GiftCard>
    </Packet>
</Response> 

Gift Card / Loyalty Card (With PIN) - Sample Request Packet

<Request>
    <Version>1</Version>
    <Command>GiftInformationWithPIN</Command>
    <Data>
        <Packet>
            <GiftCards>
                <GiftCard>
                    <CardNumber>1234123412341234</CardNumber>
                    <CardPIN>1234</CardPIN>
                </GiftCard>
            </GiftCards>
        </Packet>
    </Data>
</Request> 
Node Child Node Type Required Description <Request>
Version None Char Yes 1
Command None String Yes GiftInformation
Data Packet Sub Node Yes
Packet GiftCards Sub Node Yes
GiftCards GiftCard Sub Node Yes
GiftCard None String Yes One <GiftCard> node for each card in request
CardNumber None String Yes Gift card number
CardPIN None String Yes Gift card PIN

Gift Card / Loyalty Card (With PIN) - Sample Response Packet – Non-Registered Card

<Response>
    <Version>1</Version>
    <Code>-1</Code>
    <Packet>
        <GiftCard>
            <GiftNumber>1234123412341234</GiftNumber>
            <DebitRemain>1061.16</DebitRemain>
            <Registered>0</Registered>
        </GiftCard>
    </Packet>
</Response> 

Gift Card / Loyalty Card - Sample Response Packet – Registered Card

Notes
!! NOTE: RTS mag cards are the only type that will return registration data !!
<Response>
    <Version>1</Version>
    <Code>-1</Code>
    <Packet>
        <GiftCard>
            <GiftNumber>2012700000745808</GiftNumber>
            <DebitRemain>1061.16</DebitRemain>
            <Registered>1</Registered>
            <RegisteredInfo>
                <FirstName>JOHN</FirstName>
                <LastName>DOE</LastName>
                <Address1>4 DOE ROAD</Address1>
                <Address2/>
                <City>DOEVILLE</City>
                <State>DO</State>
                <Postal>11111</Postal>
            </RegisteredInfo>
            <CardCredits>
                <TicketCredit>
                    <Expiration>None</Expiration>
                    <StartDate>None</StartDate>
                    <Amount>1</Amount>
                    <TitleRestriction/>
                    <TicketRestriction/>
                </TicketCredit>
                <TicketCredit>
                    <Expiration>20130405000000</Expiration>
                    <StartDate>20130405000000</StartDate>
                    <Amount>1</Amount>
                    <TitleRestriction>WORLD WAR Z</TitleRestriction>
                    <TicketRestriction/>
                </TicketCredit>
                <ItemCredit>
                    <Expiration>None</Expiration>
                    <StartDate>20130426000000</StartDate>
                    <Amount>1</Amount>
                    <Item>SM POPCORN</Item>
                </ItemCredit>
            </CardCredits>
        </GiftCard>
    </Packet>
</Response> 
 
Node Child Node Type Required Description <Response>
Version None Char Yes 1
Code None Integer Yes -1
Packet GiftCard Sub Node Yes
GiftCard RegisteredInfo Sub Node Yes
GiftCard CardCredits Sub Node Yes
GiftNumber None String Yes Gift card number
DebitRemain None Decimal Yes Gift card remaining balance
Registered None Integer Yes 0 = not registered, 1 = registered
Node Child Node Type Required Description <RegisteredInfo>
FirstName None String Yes Customer first name
LastName None String Yes Customer last name
Address1 None String Yes Customer street address 1
Address2 None String Yes Customer street address 2
City None String Yes Customer city
State None String Yes Customer state
Postal None String Yes Customer postal code
Node Child Node Type Required Description <CardCredits>
TicketCredit None Sub Node No
ItemCredit None Sub Node No

Node Child Node Type Required Description <TicketCredit>
Expiration None String Yes None = No expiration date, or date of expiration (yyyyMMddhhmmss)
StartDate None String Yes None = No start date, or date ticket credit becomes valid (yyyyMMddhhmmss)
Amount None Integer Yes Amount of tickets available
TitleRestriction None String Yes Empty node = no restriction, or title of movie this credit is good for
TicketRestriction None String Yes Empty node = no restriction, or name of ticket this credit is good for
Node Child Node Type Required
Description <ItemCredit>                                      
Expiration None String Yes None = No expiration date, or date of expiration (yyyyMMddhhmmss)
StartDate None String Yes None = No start date, or date item credit becomes valid (yyyyMMddhhmmss)
Amount None Integer Yes Amount of item available
Item None String Yes Name of item credit is good for

Gift Certificate Generation

New Gift Card Generation - Sample Request Packet

<Request>
   <Version>1</Version>
   <Command>Buy</Command>
   <Data>
      <Packet>
         <PurchaseGifts>
            <PurchaseGift>
               <Amount>0</Amount>
            </PurchaseGift>
         </PurchaseGifts>
         <Payments>
            <Payment></Payment>
         </Payments>
      </Packet>
   </Data>
</Request>

Gift Certificate Purchasing

New Gift Card Purchase - Sample Request Packet

<Request>
    <Version>1</Version>
    <Command>Buy</Command>
    <Data>
        <Packet>
            <PurchaseGifts>
                <PurchaseGift>
                    <Amount>25</Amount>
                </PurchaseGift>
            </PurchaseGifts>
            <Payments>
                <Payment>
                    <Type>CreditCard</Type>
                    <Number>5499990123456781</Number>
                    <Expiration>0513</Expiration>
                    <AvsStreet>4 Main St</AvsStreet>
                    <AvsPostal>30329</AvsPostal>
                    <CID>123</CID>
                    <NameOnCard>John Doe</NameOnCard>
                    <ChargeAmount>7.5</ChargeAmount>
                </Payment>
            </Payments>
        </Packet>
    </Data>
</Request> 

Add Money to Existing Gift Card Purchase - Sample Request Packet

<Request>
    <Version>1</Version>
    <Command>Buy</Command>
    <Data>
        <Packet>
            <PurchaseGifts>
                <PurchaseGift>
                    <GiftCard>1234-1234-1234-1234</GiftCard>
                    <Amount>25</Amount>
                </PurchaseGift>
            </PurchaseGifts>
            <Payments>
                <Payment>
                    <Type>CreditCard</Type>
                    <Number>5499990123456781</Number>
                    <Expiration>0513</Expiration>
                    <AvsStreet>4 Main St</AvsStreet>
                    <AvsPostal>30329</AvsPostal>
                    <CID>123</CID>
                    <NameOnCard>John Doe</NameOnCard>
                    <ChargeAmount>7.5</ChargeAmount>
                </Payment>
            </Payments>
        </Packet>
    </Data>
</Request> 
Node Child Node Type Required Description <PurchaseGifts>
PurchaseGifts   PurchaseGift Sub Node No Contains one or more gift card purchases
Amount None Decimal Yes Amount to add to the gift card
GiftCard None String No If specified, amount will be added to the gift card. If not specified, a new number will be generated and the amount added to the new number

Gift Card Purchase - Sample Response Packet

<Response>
    <Version>1</Version>
    <Code>-1</Code>
    <Packet>
        <Response>
            <Code>0</Code>
            <ResponseText>OK</ResponseText>
            <TransactionID>1476206</TransactionID>
            <GiftPurchases>
                <GiftPurchase>
                    <GiftNumber>1234-1234-1234-1234</GiftNumber>
                    <Amount>1</Amount>
                </GiftPurchase>
            </GiftPurchases>
        </Response>
    </Packet>
</Response> 

Loyalty Card Information

Registering a Loyalty Card – Sample Request Packet

<Request>
    <Version>1</Version>
    <Command>GIFTINFORMATION</Command>
    <Data>
        <RegisterCards>
            <RegisterCard>
                <CardNumber>12345</CardNumber>
                <FirstName>Jon</FirstName>
                <LastName>Doe</LastName>
                <Address1>Address Line 1</Address1>
                <Address2>Address Line 2</Address2>
                <City>The City</City>
                <State>The State</State>
                <Postal>Postal Code</Postal>
                <RegisteredID>Reg ID</RegisteredID>
                <Email>Support@rts-solutions.com</Email>
                <DOB>19710323</DOB>
                <DoNotEmail>1</DoNotEmail>
            </RegisterCard>
        </RegisterCards>
    </Data>
</Request> 

You can register multiple cards by passing in additional <RegisterCard> nodes.
You can have RTS generate a new card number by passing ASSIGNNEW as the card number

Node Child Node Type Required CollapseDescription <Request>
Version None integer Yes 1
Command None String Yes GIFTINFORMATION
Data RegisterCards Sub Node Yes
RegisterCards RegisterCard Sub Node Yes
CardNumber None String Yes Card number to register
FirstName None String Yes Customer first name
LastName None String Yes Customer last name
Address1 None String Yes Customer street address 1
Address2 None String Yes Customer street address 2
City None String Yes Customer city
State None String Yes Customer state
Postal None String Yes Customer postal code
RegisteredID None String Yes ????
Email None String Yes Customer email address
DOB None String Yes Customer date of birth
DoNotEmail None String Yes 0 = email, 1 = do not email


Ticket Purchasing – Check Sold Out

Checking Performance Sold / Remaining / SoldOut Levels – Sample Request Packet

<Request>
    <Version>1</Version>
    <Command>CheckSoldOut</Command>
    <Data>
        <Packet>
            <PerformanceID>013732000045</PerformanceID>
        </Packet>
    </Data>
</Request> 
Node Child Node Type Required CollapseDescription <Request>
Version None Char Yes 1
Command None String Yes CheckSoldOut
PerformanceID None String Yes The PerformanceID for the show to check

Checking Performance Sold / Remaining / SoldOut Levels – Sample Response Packet

<Response>
    <Version>1</Version>
    <Sold>3</Sold>
    <IsReserved>0</IsReserved>
    <TotalSeats>500</TotalSeats>
    <SoldOut_General>2</SoldOut_General>
    <SoldOut_Internet>5</SoldOut_Internet>
</Response> 
Node Child Node Type Required CollapseDescription <Response>
Version None Char Yes 1
Sold None Integer No Number of tickets sold to this performance
IsReserved None Integer No 0 = General Admission, 1 = Reserved
TotalSeats None Integer No Total number of seats for the show
SoldOut_General None Integer No General sold out seats remaining level
SoldOut_Internet None Integer No Internet sold out seats remaining level

An example of the levels meaning is: 500 seats total, Internet Sold Out happens with 5 seats remaining. Internet Sold Out happens when Sold hits 495.
If the number of tickets in a transaction is greater than the number seats remaining until Internet Sold Out happens, the transaction will fail.

Ticket Purchasing – Check Redeem

This call allows you to see the status of a ticket redemption. If the tickets have not yet been redeemed, the transaction could be refunded or reversed. If the tickets have already been redeemed by the customer, the transaction cannot be altered.

This command will only find tickets whose pickup times is between Now - The Pickup Ticket Block Time and Now + 180 Days. The Pickup Ticket Block Time can be set via Setup -> Tickets -> Options - Block Pickup Tickets After Minutes

Checking Ticket Redemption Status – Sample Request Packet

<Request>
    <Version>1</Version>
    <Command>CheckRedeem</Command>
    <Data>
        <Packet>
            <PickupNumber>558722177437</PickupNumber>
        </Packet>
    </Data>
</Request>

Node Child Node Type Required Description <Request>
Version None Char Yes 1
Command None String Yes CheckRedeem
PickupNumber None String Yes The PickupNumber from the sale transaction

Checking Ticket Redemption Status – Sample Response Packet

<Response>
    <Version>1</Version>
    <Redeemed>1</Redeemed>
</Response> 
Node Child Node Type Required Description <Response>
Version None Char Yes 1
Redeemed None Boolean Yes 0 = Not Redeemed, 1 = Redeemed


Ticket Purchasing – Verify Transaction

This call allows you to see if a transaction was successfully received and processed. If, for example, you passed in a buy request (that uses the <ThirdPartyID> node) and never received a response from the point-of-sale, this call can be used to see if the transaction was received and processed.

Found transactions will return the <PickupNumber> associated with the purchase.

Verify Transaction Status – Sample Request Packet

<Request>
    <Version>1</Version>
    <Command>VERIFYTRANSACTION</Command>
    <Data>
        <Packet>
            <ThirdPartyID>63a96a1c66d44b568b3115aeeadc6b12</ThirdPartyID>
            <TransactionDateTimeUTC>20161024153500</TransactionDateTimeUTC>
        </Packet>
    </Data>
</Request> 
 
Node Child Node Type Required Description <Request>
Version None Char Yes 1
Command None String Yes VerifyTransaction
ThirdPartyID None String Yes Your ID for the sale transaction (must have been passed in with the original sale)
TransactionDateTimeUTC None String Yes The sale transaction date/time in UTC (format:yyyyMMddhhmmss).

Verify Transaction Status – Sample Response Packet

<Response>
    <Version>1</Version>
    <TransactionFound>1</TransactionFound>
    <PickupNumber>728722814391</PickupNumber>
</Response> 
Node Child Node Type Required Description <Response>
Version None Char Yes 1
TransactionFound None Boolean Yes 0 = Not Found, 1 = Found
PickupNumber None String No If transaction found, this will be the pickup number for the customer redemption.

Ticket Purchasing – Transaction Details

This call lets you retrieve the details of a previous transaction by the PickupNumber associated with the purchase.

Transaction Details – Sample Request Packet

<Request>
    <Version>1</Version>
    <Command>TRANSACTIONDETAILS</Command>
    <Data>
        <Packet>
            <PickupNumber>249728765499</PickupNumber>
        </Packet>
    </Data>
</Request>
Node Child Node Type Required Description <Request>
Version None Char Yes 1
Command None String Yes TransactionDetails
PickupNumber None String Yes The PickupNumber from the sale transaction

Transaction Details – Sample Response Packet

<Response>
    <Version>1</Version>
    <TransactionFound>1</TransactionFound>
    <Performances>
        <Performance>
            <Title>ALIEN: COVENANT</Title>
            <DateTime>052920182115</DateTime>
            <Auditorium>2</Auditorium>
            <Tickets>
                <Ticket>
                    <Status>Redeemed - Online</Status>
                    <PickupDateTime>052920181119</PickupDateTime>
                    <Type>senior</Type>
                    <IsReserved>1</IsReserved>
                    <Section>Ruby</Section>
                    <RowDesc>H</RowDesc>
                    <ColDesc>15</ColDesc>
                </Ticket>
            </Tickets>
        </Performance>
    </Performances>
</Response> 
Node Child Node Type Required Description <Response>
Version None Char Yes 1
TransactionFound None Boolean Yes 0 = Not Found, 1 = Found
Performances Performance Sub Node No If transaction found, this will contain the Performance(s) in the transaction.
Node Child Node Type Required Description <Performances>
Performance None Sub Node No If transaction found, there will be 1 or more Performance nodes,depending on the transaction contents
Node Child Node Type Required Description <Performance>
Title None String Yes The title for this performance
DateTime None String Yes Performance start time (MMddyyyyhhmm)
Auditorium None String Yes The auditorium this performance is in
Tickets Ticket Sub Node Yes The tickets for this performance
Node Child Node Type Required Description <Tickets>
Ticket None Sub Node No If transaction found, there will be 1 or more Performance nodes, depending on the transaction contents

Node Child Node Type Required Description <Ticket>
Status None String Yes The current status of the ticket pickup:
Valid - Ticket is available for redemption
Expired - Ticket has expired
Refunded - Transaction was refunded via the API
Reversed - Transaction was reversed via the API
Redeemed - Online - Ticket was picked up via the API
Redeemed - Printed - Ticket was picked up in theatre
PickupDateTime None String Yes Will be present if the ticket is not "Valid" or "Expired" (MMddyyyyhhmm)
PickupLocation None String Yes Will be present if the ticket was picked up in theatre
PickupUser None String Yes Will be present if the ticket was picked up in theatre
Type None String Yes The type of ticket purchased
IsReserved None Boolean Yes 0 = Not reserved, 1 = Reserved
Section None String Yes Will be present if the ticket is reserved, indicates the section name the reserved seat is in
RowDesc None String Yes Will be present if the ticket is reserved, indicates the Row description
ColDesc None String Yes Will be present if the ticket is reserved, indicates the Column (or Seat) description

Ticket Purchasing – Redeem Tickets

This call lets you tell the POS system that you have redeemed tickets via a 3rd party app.

Redeem – Sample Request Packet

<Request>
    <Version>1</Version>
    <Command>REDEEM</Command>
    <Data>
        <Packet>
            <PickupNumber>249728765499</PickupNumber>
        </Packet>
    </Data>
</Request> 
Node Child Node Type Required Description <Request>
Version None Char Yes 1
Command None String Yes TransactionDetails
PickupNumber None String Yes The PickupNumber from the sale transaction

Redeem – Sample Request Packet

<Response>
    <Version>1</Version>
    <HasRedemptions>1</HasRedemptions>
    <HasExpirations>0</HasExpirations>
    <HasPickedUp>0</HasPickedUp>
    <ValidTickets>
        <Ticket>
            <Type>senior</Type>
            <IsReserved>1</IsReserved>
            <Section>Ruby</Section>
            <RowDesc>H</RowDesc>
            <ColDesc>15</ColDesc>
        </Ticket>
    </ValidTickets>
</Response> 
Node Child Node Type Required Description <Response>
Version None Char Yes 1
HasRedemptions None Boolean Yes Whether or not the transaction has tickets available for pickup - 0 = False, 1 = True
HasExpirations None Boolean Yes Whether or not the transaction contains tickets to shows at a prior date/time - 0 = False, 1 = True
HasPickedUp None Boolean Yes Whether or not the transaction has tickets that have been picked up - 0 = False, 1 = True
ValidTickets Ticket Sub Node No If there are redemptions, this node will indicate the tickets being redeemed
ExpiredTickets Ticket Sub Node No If there are expirations, this node will indicate the tickets that have expired
PickedUpTickets Ticket Sub Node No If there are already redeemed tickets, this node will indicate the tickets already redeemed

Node Child Node Type Required Description <Ticket>
Type None String Yes The type of ticket purchased
IsReserved None Boolean Yes 0 = Not reserved, 1 = Reserved
Section None String Yes Will be present if the ticket is reserved, indicates the section name the reserved seat is in
RowDesc None String Yes Will be present if the ticket is reserved, indicates the Row description
ColDesc None String Yes Will be present if the ticket is reserved, indicates the Column (or Seat) description

Ticket Purchasing – Refunds

Warning
Only use this call if you are processing the credit card transactions outside of the point-of-sale system!

Whole Transaction Refund – Sample Request Packet

<Request>
    <Version>1</Version>
    <Command>Refund</Command>
    <Data>
        <Packet>
            <Fees>
                <TicketFee>2</TicketFee>
                <TransactionFee>1</TransactionFee>
                <Adjust>3.50</Adjust>
            </Fees>
            <PickupNumber>220000528377</PickupNumber>
        </Packet>
    </Data>
</Request> 
Node Child Node Type Required CollapseDescription <Request>
Version None Char Yes 1
Command None String Yes Refund
Fees None Sub Node Yes
TicketFee None Decimal Yes The ticket fee from the sale transaction
TransactionFee None Decimal Yes The transaction fee from the sale transaction
Adjust None Decimal Yes The sale transaction total (positive amount).
PickupNumber None String Yes The PickupNumber from the sale transaction

Partial Transaction Refund - Sample Request Packet

<Request>
    <Version>1</Version>
    <Command>Refund</Command>
    <Data>
        <Packet>
            <Fees>
                <TicketFee>-3.4</TicketFee>
                <TransactionFee>0</TransactionFee>
                <Adjust>0</Adjust>
            </Fees>
            <PickupNumber>312729628817</PickupNumber>
            <PartialRefunds>
                <!-- option 1: whole performance from a ticket day -->
                <PartialRefund>
                    <PerformanceID>017988000012</PerformanceID>
                </PartialRefund>
                <!-- option 2: reserved partial ticket for performance-->
                <PartialRefund>
                    <PerformanceID>017988000012</PerformanceID>
                    <Tickets>
                        <Ticket>
                            <Amount>1</Amount>
                            <TypeCode>6</TypeCode>
                            <Seat>
                                <Section>21</Section>
                                <Row>7</Row>
                                <Col>10</Col>
                            </Seat>
                        </Ticket>
                    </Tickets>
                </PartialRefund>
                <!-- option 3: general admission partial ticket for performance-->
                <PartialRefund>
                    <PerformanceID>017988000012</PerformanceID>
                    <Tickets>
                        <Ticket>
                            <Amount>1</Amount>
                            <TypeCode>6</TypeCode>
                        </Ticket>
                    </Tickets>
                </PartialRefund>
            </PartialRefunds>
        </Packet>
    </Data>
</Request> 




Node Child Node Type Required Description <Request>
Version None Char Yes 1
Command None String Yes Refund
Fees None Sub Node Yes
TicketFee None Decimal Yes The ticket fee from the sale transaction
TransactionFee None Decimal Yes The transaction fee from the sale transaction
Adjust None Decimal Yes The sale transaction total (positive amount).
PickupNumber None String Yes The PickupNumber from the sale transaction, from any <TicketDay> in the purchase response
PartialRefunds PartialRefund Sub Node Yes
Node Child Node Type Required Description <PartialRefunds>
PartialRefund None Sub Node Yes Include this node for each partial refund action you want to take
Node Child Node Type Required Description <PartialRefund>
PerformanceID None String Yes The performance ID for the performance you want to refund against
Tickets Ticket Sub Node No If not present, will refund all tickets for this performance
Node Child Node Type Required Description <Ticket>
Amount None Integer Yes General Admission: The number of tickets to refund. Reserved Seating: Will be 1 and <Seat> is required
TypeCode None String No The ID of the ticket type being refunded
Seat None Sub Node No If performance is reserved seating this is where you specify the seat to be refunded
Node Child Node Type Required Description <Seat>
Section None String Yes The section ID for the seat being refunded
Row None Integer Yes The row index for the seat being refunded
Col None Integer Yes The col index for the seat being refunded

Refund – Sample Response Packet

<Response>
    <Version>1</Version>
    <Code>-1</Code>
    <Packet>
        <Response>
            <ResponseText>OK</ResponseText>
            <TransactionID>14722824</TransactionID>
        </Response>
    </Packet>
</Response> 
Node Child Node Type Required Description <Response>
Version None Char Yes 1
Code None Char Yes -1
TransactionFound None Boolean Yes 0 = Not Found, 1 = Found
PickupNumber None String No If transaction found, this will be the pickup number for the customer redemption.

Ticket Purchasing – Reverse Transaction

Warning
Only use this call if you are processing the credit card transactions outside of the point-of-sale system!
Allows for reversal of a sale transaction by ThirdPartyID, in the event that you never received a response with a PickupNumber. It will be allowed as long as the tickets from the sale have not already been redeemed, and the show is still scheduled. Should be used in conjunction with “VerifyTransaction” to establish the state of the sale.
Node Child Node Type Required Description <Request>
Version None Char Yes 1
Command None String Yes Refund
Fees None Sub Node Yes
TicketFee None Decimal Yes The ticket fee from the sale transaction
TransactionFee None Decimal Yes The transaction fee from the sale transaction
Adjust None Decimal Yes The sale transaction total (positive amount).
ThirdPartyID None String Yes Your ID for the sale transaction (must have been passed in with the original sale)

ReverseTransaction – Sample Response Packet

<Response>
    <Version>1</Version>
    <Code>-1</Code>
    <Packet>
        <Response>
            <ResponseText>OK</ResponseText>
            <TransactionID>14722826</TransactionID>
        </Response>
    </Packet>
</Response> 
Node Child Node Type Required Description <Response>
Version None Char Yes 1
TransactionFound None Boolean Yes 0 = Not Found, 1 = Found
PickupNumber None String No If transaction found, this will be the pickup number for the customer redemption.

WorldPay E2E - Credit Card Payment Overview

The introduction of End-to-End Encryption to the credit card processing system has changed the way credit cards are processed by the software. Instead of the software processing the transaction, it is processed directly at the processor via a HostedCheckout system. This means the customer needs to be redirected to a secure credit card entry page that is provided by the credit card processing company.

To summarize the process:
1. A request is sent into the software to create a payment at the processor. This request contains the charge amount to authorize and 2 URLs: a ProcessCompleteUrl, and a ReturnUrl. Be sure to URL Encode your URLs.
2. The software will return a create payment response which indicates if the create was successful, a TransactionId, a RedirectURL to send the customer to for credit card information entry, and the PostData to send into the processor page you redirect the customer to. If the create was unsuccessful there will be an ErrorMsg present to indicate the issue.
3. The customer will then need to be redirected to the RedirectURL in the create payment response, posting in the PostData in the create payment response. If the customer completes the process the processor will redirect back to the ProcessCompleteURL from step 1, which will contain the processor response in the PostData. If the customer cancels the process, the processor will redirect back to the ReturnURL.
4. If the payment was successful, a Buy request is then sent back to the software with the TransactionId, ProcessCompletePostData included in the Payment node. The software will then validate the payment and return either a failure or a success.
It is important to note that you could repeat steps 1 – 3 for multiple credit cards if needed, then simply include multiple Payment nodes in step 4. Be sure to authorize each payment for only the amount needed, not the total transaction amount.

Credit Card Payments (WorldPay E2E)

Create a HostedCheckout Payment – Sample Request

<Request>
    <Version>1</Version>
    <Command>CreatePayment</Command>
    <Data>
        <Packet>
            <ChargeAmount>0.62</ChargeAmount>
            <ProcessCompleteUrl>
        http%3A%2F%2Flocal.formovietickets.com%2FT.asp%3FWCI%3DBT%26Page%3DConfirm%26Mode%3DCCPAYRESPONSE
            </ProcessCompleteUrl>
            
            <ReturnUrl>
        http%3A%2F%2Flocal.formovietickets.com%2FT.asp%3FWCI%3DBT%26Page%3DConfirm%26Mode%3DPayments
            </ReturnUrl>
        </Packet>
    </Data>
</Request>  
Node Child Node Type Required Description <Request>
ChargeAmount None Decimal Yes The amount this payment will authorize for.
ProcessCompleteUrl None String Yes The URL the customer will be redirected back to after they complete the credit card entry process
ReturnUrl None String Yes The URL the customer will be redirected back to if they cancel the credit card entry process

Create a HostedCheckout Payment – Sample Response

<Response>
    <Version>1</Version>
    <Packet>
        <CreatePayment>
            <Worked>1</Worked>
            <TransactionId>3abac539-1731-421d-9291-989dffb65688</TransactionId>
            <RedirectUrl>https%3A%2F%2Fhc.mercurydev.net%2FCheckout.aspx</RedirectUrl>
            <PostData>587c7d7d-d990-4f29-8ff6-d121ddd98d6f</PostData>
        </CreatePayment>
    </Packet>
</Response> 
 

Ticket Purchase (WorldPay E2E) – Sample Request – PerformanceID

Notes
Note: See Ticket Purchasing – General Admission and Ticket Purchasing – Reserved Seating for additional information on the Buy packet nodes
<Request>
    <Version>1</Version>
    <Command>Buy</Command>
    <Data>
        <Packet>
            <PurchaseTitles>
                <PurchaseTitle>
                    <PerformanceID>000166000023</PerformanceID>
                    <Tickets>
                        <Ticket>
                            <Amount>2</Amount>
                            <TypeCode>5</TypeCode>
                        </Ticket>
                    </Tickets>
                </PurchaseTitle>
            </PurchaseTitles>
            <Fees>
                <TicketFee>0</TicketFee>
                <TransactionFee>0</TransactionFee>
                <Adjust>0</Adjust>
            </Fees>
            <Payments>
                <Payment>
                    <Type>CreditCard</Type>
                    <TransactionId>5f627c67-8f5e-4f41-b26b-e8d2c8080167</TransactionId>
                    <ProcessCompletePostData>
                PaymentID=cf679a14-dd17-4c0a-b151-be0fdcb27dfd&ReturnCode=0&ReturnMessage=Your+transaction+has+been+approved.
                    </ProcessCompletePostData>
                    <ChargeAmount>0.62</ChargeAmount>
                </Payment>
            </Payments>
            <CustomerInfo>
                <EmailAddress>testemail@yahoo.com</EmailAddress>
            </CustomerInfo>
        </Packet>
    </Data>
</Request> 

Ticket Purchase (WorldPay E2E) – Sample Response

<Response>
    <Version>1</Version>
    <Code>-1</Code>
    <Packet>
        <Response>
            <Code>0</Code>
            <ResponseText>OK</ResponseText>
            <TransactionID>1524289</TransactionID>
            <Pickups>
                <Pickup>
                    <TicketDay>20101213</TicketDay>
                    <PickupNumber/>
                    <BarCodes>
                        <BarCode>
                            <Type>Transaction</Type>
                            <CodeType>UPC</CodeType>
                            <BarCodeData>525524289675</BarCodeData>
                        </BarCode>
                    </BarCodes>
                </Pickup>
            </Pickups>
        </Response>
    </Packet>
</Response> 
 

Heartland Secure - Credit Card Payment Overview

Heartland Secure utilizes JavaScript to replace <div> elements in your payment form with secure hosted iframe fields, to ensure that no card data passes through your server (or the RTS server).
The customer enters their card data into these iframe fields and submits to Heartland. They will issue a single-use token and some safe card information (masked card number, card type, card last 4) returning it as JSON to the script. This data is then posted to your server via the form action on the page.
When attempting the sale, the single-use token and the safe card data is submitted in the buy request to RTS in the <Payment> node. We will validate the credit account data and either proceed with the sale, or return an error indicating the issue with the card.

A sample payment page can be found here: http://www.readyticket.net/download/heartland_hc_example.html
Be sure to read the comments in the sample payment page for additional information!
The script utilizes a Public Key, which will change for each RTS location. You will need to contact RTS to get this key when needed, you can email the request to: support@rts-solutions.com.  Be sure to include the location name and address in the request.

Below is sample of the post data from the form: 
billingStreet=6860+Dallas+Pkwy&billingZip=75024&paymentReference=supt_htOWF0W14NdVKt6DAHi1HbM3&maskedCard=464069***4998&cardLast4=4998&cardType=visa

Below is a sample <Payment> node for a Heartland Secure buy request:
<Payment>
    <Type>CreditCard</Type>
    <SingleUseToken>supt_ycyDB65WX8B2TCWvaSOGIz4j</SingleUseToken>
    <MaskedCardNumber>464069***4998</MaskedCardNumber>
    <CardType>visa</CardType>
    <CardLast4>4998</CardLast4>
    <ChargeAmount>91.01</ChargeAmount>
    <BillingStreet>6860 Dallas Pkwy</BillingStreet>
    <BillingZip>75024</BillingZip>
</Payment>

The <SingleUseToken>, <MaskedCardNumber>, <CardType>, <CardLast4>, <BillingStreet>, and <BillingZip> values come from the data returned by the Heartland JavaScript.
Notes
Note: In the case that both Address and Zip do not match the account, you will receive a DO NOT HONOR message from Heartland's Gateway

Ticket Purchasing (3rd Party Credit Card Processing / TSYS - E2E)

1. Integrator sends in a CreatePayment request, provides their complete url and cancel URL:

<Request>
    <Version>1</Version>
    <Command>CreatePayment</Command>
    <Data>
        <Packet>
            <ChargeAmount>5</ChargeAmount>
            <CustomerEmail></CustomerEmail>
            <CustomerName></CustomerName>
            <StreetAddress></StreetAddress>
            <ZipCode></ZipCode>
            <ProcessCompleteUrl>http%3A%2F%2F809261.formovietickets.com%3A2265%2FTSYS.asp%3FreqType%3DCOMPLETE</ProcessCompleteUrl>
            <ReturnUrl>http%3A%2F%2F890261.formovietickets.com%3A2265%2FTSYS.asp%3FreqType%3DCANCEL</ReturnUrl>
        </Packet>
    </Data>
</Request>

2. RTS creates a transactionID, stores the request data.

3. RTS returns transactionID, redirectUrl

<Response>
    <Version>1</Version>
    <Packet>
        <CreatePayment>
            <Worked>1</Worked>
            <TransactionId>e9fb3f66-4dc8-4745-b354-b74900e32010</TransactionId>
            <RedirectUrl>https%3a%2f%2f809261.formovietickets.com%3a2265%2fTSYS.ASP%3freqType%3dREDIRECT%26transactionId%3de9fb3f66-4dc8-4745-b354-b74900e32010</RedirectUrl>
        </CreatePayment>
    </Packet>
</Response>

4. Integrator redirects customer to the redirectUrl, which provides the stand-alone payment page

 a. Continue - RTS attempts payment, posting return data to the integrators ProcessCompleteURL
 b. Cancel - RTS redirects the customer to the integrators ReturnURL

5. Integrator receives response based on status of credit card processing:

 a. if good sale, send back the masked card number, cardlast4, cardtype, transactionid, and paymentid

   POST Data:
     maskedCardNumber=<appropriate_masked_card_num>&cardLastFour=<appropriate_card_last_four>&cardType=<appropriate_card_type>&transactionId=<appropriate_transactionid>&paymentId=<appropriate_paymentid>

 b. if bad cardverification or sale, send back the appropriate response

6. If integrator wants to continue with transaction, posts in the appropriate buy request, with the <payment> node as follows:
 
<Payment>
    <Type>CreditCard</Type>
    <TransactionId></TransactionId>
    <PaymentId></PaymentId>
    <ChargeAmount></ChargeAmount>
</Payment>

7. RTS attempts to complete the transaction, and returns the appropriate response

Ticket Purchasing (3rd Party Credit Card Processing / TSYS - Non E2E)

This method of ticketing purchasing is to be used when the RTS software is not handling anything in the credit card processing chain.

Ticket Purchase (3rd Party) – Sample Request – PerformanceID

Notes
Note: The key differences between a 3rd party buy and a normal buy is the use of the <Adjust> node inside <Fees> to offset the amount charged by the 3rd party, and the <ChargeAmount> being zero.
<Request>
    <Version>1</Version>
    <Command>Buy</Command>
    <Data>
        <Packet>
            <PurchaseTitles>
                <PurchaseTitle>
                    <PerformanceID>000158000012</PerformanceID>
                    <Tickets>
                        <Ticket>
                            <Amount>1</Amount>
                            <TypeCode>5</TypeCode>
                        </Ticket>
                    </Tickets>
                </PurchaseTitle>
            </PurchaseTitles>
            <Fees>
                <TicketFee>1</TicketFee>
                <TransactionFee>0</TransactionFee>
                <Adjust>-1.31</Adjust>
            </Fees>
            <Payments>
                <Payment>
                    <ChargeAmount>0</ChargeAmount>
                </Payment>
            </Payments>
            <ThirdPartyID>3677745fb2cb4e20bc6f289fd65753aa</ThirdPartyID>
            <CustomerInfo>
                <EmailAddress>testemail@yahoo.com</EmailAddress>
            </CustomerInfo>
        </Packet>
    </Data>
</Request>

Ticket Purchasing – General Admission

The performance you wish to purchase can be specified in 3 different ways:
  1. Title, ShowTime, and AuditoriumID
  2. PerformanceID
  3. MtFilmCode, MTPerformanceID, and ShowTime

Ticket Purchase - Sample Request – Title, ShowTime, and AuditoriumID

<Request>
    <Version>1</Version>
    <Command>Buy</Command>
    <Data>
        <Packet>
            <PurchaseTitles>
                <PurchaseTitle>
                    <Title>The Title</Title>
                    <ShowTime>200812051235</ShowTime>
                    <Auditorium>1</Auditorium>
                    <Tickets>
                        <Ticket>
                            <Amount>1</Amount>
                            <TypeCode>1|1</TypeCode>
                        </Ticket>
                    </Tickets>
                </PurchaseTitle>
            </PurchaseTitles>
            <Fees>
                <TicketFee>1</TicketFee>
                <TransactionFee>1</TransactionFee>
                <Adjust>0</Adjust>
            </Fees>
            <Payments>
                <Payment>
                    <Type>CreditCard</Type>
                    <Number>5499990123456781</Number>
                    <Expiration>0513</Expiration>
                    <AvsStreet>4 Main St</AvsStreet>
                    <AvsPostal>30329</AvsPostal>
                    <CID>123</CID>
                    <NameOnCard>John Doe</NameOnCard>
                    <ChargeAmount>9.5</ChargeAmount>
                </Payment>
            </Payments>
            <Loyalty>
                <Cards>
                    <Type>Earn</Type>
                    <CardNumber>12345</CardNumber>
                </Cards>
            </Loyalty>
            <ThirdPartyID>3677745fb2cb4e20bc6f289fd65753aa</ThirdPartyID>
            <CustomerInfo>
                <EmailAddress>testemail@yahoo.com</EmailAddress>
            </CustomerInfo>
        </Packet>
    </Data>
</Request> 
Node Child Node Type Required Description <PurchaseTitle>
Title None String Yes Performance Title
ShowTime None String Yes Performance start time (yyyyMMddhhmm)
Auditorium None String Yes Performance auditorium number
Tickets Ticket Sub Node Yes One or more ticket types to purchase

Ticket Purchase - Sample Request – PerformanceID

<Request>
    <Version>1</Version>
    <Command>Buy</Command>
    <Data>
        <Packet>
            <PurchaseTitles>
                <PurchaseTitle>
                    <PerformanceID>+3934kd|392372374|23784237</PerformanceID>
                    <Tickets>
                        <Ticket>
                            <Amount>1</Amount>
                            <TypeCode>1|1</TypeCode>
                        </Ticket>
                    </Tickets>
                </PurchaseTitle>
            </PurchaseTitles>
            <Fees>
                <TicketFee>1</TicketFee>
                <TransactionFee>1</TransactionFee>
                <Adjust>0</Adjust>
            </Fees>
            <Payments>
                <Payment>
                    <Type>CreditCard</Type>
                    <Number>5499990123456781</Number>
                    <Expiration>0513</Expiration>
                    <AvsStreet>4 Main St</AvsStreet>
                    <AvsPostal>30329</AvsPostal>
                    <CID>123</CID>
                    <NameOnCard>John Doe</NameOnCard>
                    <ChargeAmount>9.5</ChargeAmount>
                </Payment>
            </Payments>
            <Loyalty>
                <Cards>
                    <Type>Earn</Type>
                    <CardNumber>12345</CardNumber>
                </Cards>
            </Loyalty>
            <ThirdPartyID>3677745fb2cb4e20bc6f289fd65753aa</ThirdPartyID>
            <CustomerInfo>
                <EmailAddress>testemail@yahoo.com</EmailAddress>
            </CustomerInfo>
        </Packet>
    </Data>
</Request>
Node Child Node Type Required Description <PurchaseTitle>
PerformanceID None String Yes The PerformanceID
Tickets Ticket Sub Node Yes One or more ticket types to purchase

Ticket Purchase - Sample Request – MtFilmCode, MtPerformanceID, and ShowTime

<Request>
    <Version>1</Version>
    <Command>Buy</Command>
    <Data>
        <Packet>
            <PurchaseTitles>
                <PurchaseTitle>
                    <PerformanceID>93j2kd902j42d</PerformanceID>
                    <ShowTime>200812051235</ShowTime>
                    <MtFilmCode>TH12345</MtFilmCode>
                    <Tickets>
                        <Ticket>
                            <Amount>1</Amount>
                            <TypeCode>1|1</TypeCode>
                        </Ticket>
                    </Tickets>
                </PurchaseTitle>
            </PurchaseTitles>
            <Fees>
                <TicketFee>1</TicketFee>
                <TransactionFee>1</TransactionFee>
                <Adjust>0</Adjust>
            </Fees>
            <Payments>
                <Payment>
                    <Type>CreditCard</Type>
                    <Number>5499990123456781</Number>
                    <Expiration>0513</Expiration>
                    <AvsStreet>4 Main St</AvsStreet>
                    <AvsPostal>30329</AvsPostal>
                    <CID>123</CID>
                    <NameOnCard>John Doe</NameOnCard>
                    <ChargeAmount>9.5</ChargeAmount>
                </Payment>
            </Payments>
            <Loyalty>
                <Cards>
                    <Type>Earn</Type>
                    <CardNumber>12345</CardNumber>
                </Cards>
            </Loyalty>
            <CustomerInfo>
                <EmailAddress>testemail@yahoo.com</EmailAddress>
            </CustomerInfo>
        </Packet>
    </Data>
</Request> 
Node Child Node Type Required Description <PurchaseTitle>
MtFilmCode None String Yes Movietickets.com film code
MtPerformanceID None String Yes Movietickets.com PerformanceID
ShowTime None String Yes Performance start time (yyyyMMddhhmm)
Tickets Ticket Sub Node Yes One or more ticket types to purchase
To sell multiple tickets in the same transaction, duplicate the <Ticket> node for each type and specify the amount of each ticket.
For example, to sell 3 tickets of 2 different types, your <Tickets> node would look like:
<Tickets>
    <Ticket>
        <Amount>2</Amount>
        <TypeCode>1|1</TypeCode>
    </Ticket>
    <Ticket>
        <Amount>1</Amount>
        <TypeCode>1|2</TypeCode>
    </Ticket>
</Tickets> 

To accept multiple payment types in the same transaction, duplicate the <Payment> node for each type of payment, and specify the appropriate information.
For example, to take credit card and gift card, your <Payment> node would look like:
<Payments>
    <Payment>
        <Type>CreditCard</Type>
        <Number>5499990123456781</Number>
        <Expiration>0513</Expiration>
        <AvsStreet>4 Main St</AvsStreet>
        <AvsPostal>30329</AvsPostal>
        <CID>123</CID>
        <NameOnCard>John Doe</NameOnCard>
        <ChargeAmount>9.5</ChargeAmount>
    </Payment>
    <Payment>
        <Payment>
            <Type>Gift</Type>
            <ChargeAmount>1.00</ChargeAmount>
            <GiftNumber>1234123412341234</GiftNumber>
            <GiftCardPIN>12345</GiftCardPIN>
        </Payment>
    </Payments> 
Node Child Node Type Required Description <Ticket>
Amount None Integer Yes Number of this type of ticket to purchase
TypeCode None String Yes Ticket type code (from schedule XML)
Node Child Node Type Required Description <Fees>
TicketFee None Decimal No Amount to charge for ticket fees in the transaction. Recorded in the POS as the configured 'Ticket Fee' item.
TransactionFee None Decimal No Amount to charge for the transaction fees in the transaction. Recorded in the POS as the configured 'Transaction Fee' item.
Adjust None Decimal No Allows for positive or negative adjustment to the charge amount. Recorded in the POS as the configured 'Adjust' item.
Node Child Node Type Required Description <Payments>
Payments Payment Sub Node Yes Contains one or more payment types for a transaction
Node Child Node Type Required Description <Payment>
Type None String Yes Specifies the payment type: CreditCard or Gift
Number None String Yes Credit card number
GiftNumber None String Yes Gift card number
GiftCardPIN None String Maybe Certain gift card processors in RTS can be marked as requiring a PIN during purchase. If this is enabled, this node is required.
Expiration None String Yes Credit card expiration date (MMyy)
AvsStreet None String No Credit card billing street address
AvsPostal None String No Credit card billing postal code
CID None String No Credit card CID (CVV, Security Code) number
NameOnCard None String No Credit card customer name
ChargeAmount None Decimal Yes Amount to charge on the credit or gift card
Node Child Node Type Required Description <ThirdPartyID>
ThirdPartyID None Sub Node No Allows you to specify a transaction ID to the purchase, this can be used with “VerifyTransaction” to check for completion of the sale if normal response is not received.
Node Child Node Type Required Description <Loyalty>
Loyalty Cards Sub Node No
Type None String No Earn
CardNumber None String No Card number to use for loyalty earn. Multiple cards can be passed in via additional <CardNumber> tags
Node Child Node Type Required Description <CustomerInfo>
EmailAddress None String No Customer email address. Can be used to look-up transactions in the POS. NOTE: There is an option on the API selling account to have RTS send a confirmation email on a successful purchase. This email is NOT customizable.

Ticket Purchase - Sample Response

<Response>
    <Version>1</Version>
    <Code>-1</Code>
    <Packet>
        <Response>
            <Code>0</Code>
            <ResponseText>OK</ResponseText>
            <TransactionID>1524289</TransactionID>
            <Pickups>
                <Pickup>
                    <TicketDay>20101213</TicketDay>
                    <PickupNumber/>
                    <BarCodes>
                        <BarCode>
                            <Type>Transaction</Type>
                            <CodeType>UPC</CodeType>
                            <BarCodeData>525524289675</BarCodeData>
                        </BarCode>
                    </BarCodes>
                </Pickup>
            </Pickups>
        </Response>
    </Packet>
</Response>
Node Child Node Type Required Description <Response>
Version None Integer Yes 1
Code None Integer Yes -1
Packet Response Sub Node Yes
ResponseText None String Yes OK
TransactionID None String Yes Transaction receipt number
Pickups Pickup Sub Node Yes
TicketDay None String Yes Date of performance (yyyyMMdd)
PickupNumber None String Yes Not currently used
BarCodes BarCode Sub Node Yes
Type None String Yes Transaction
CodeType None String Yes The bar code type: UPC
BarCodeData None String Yes The confirmation number to be encoded.
BAR CODE IMAGE IS NOT PROVIDED BY THE POS.

Seating Charts

All RTS layouts are built around the grid size provided in the <GridRef> node. Using these values in conjunction with your own known grid values, you can determine the ratio needed to convert each seat xpos, ypos, width, and height, to your own values, for example:

Your grid width divided by our grid width = your X ratio
Your grid height divided by our grid height = your Y ratio
Our Xpos multiplied by X ratio = your Xpos
Our Ypos multiplied by Y ratio = your Ypos
Our Width multiplied by X ratio = your width
Our Height multiplied by Y ration = your height

Get Seat Layouts – Sample Request

<Request>
    <Version>1</Version>
    <Command>GetSeatLayouts</Command>
</Request> 

This call allows you to pull the reserved seating layouts for all of the auditoriums in the point-of-sale system. It also includes a list of seat types configured in the system, so that any custom seat types are available to you.

Get Seat Layouts – Sample Response

<Response>
    <Code>-1</Code>
    <ResponseText>OK</ResponseText>
    <GridRef>
        <Width>10000</Width>
        <Height>10000</Height>
    </GridRef>
    <SeatTypes>
        <Type>
            <ID>0</ID>
            <CustomerName>Normal</CustomerName>
        </Type>
 ......
 
        <Type>
            <ID>17</ID>
            <CustomerName>CompanionLeft</CustomerName>
        </Type>
    </SeatTypes>
    <Layouts>
        <Layout>
            <LayoutName>Reserved Auditorium 13</LayoutName>
            <SectionName>Section 1</SectionName>
            <SectionID>8</SectionID>
            <Seats>
                <Seat>
                    <HideOnInternet>0</HideOnInternet>
                    <HideRowDesc>0</HideRowDesc>
                    <HideSeparator>0</HideSeparator>
                    <RowIndex>1</RowIndex>
                    <ColIndex>1</ColIndex>
                    <RowDesc>A</RowDesc>
                    <ColDesc>1</ColDesc>
                    <TypeID>0</TypeID>
                    <GroupID>1</GroupID>
                    <GroupDesc>1</GroupDesc>
                    <GroupPos>1</GroupPos>
                    <XPos>2539</XPos>
                    <YPos>2659</YPos>
                    <Width>456</Width>
                    <Height>740</Height>
                    <Angle>0</Angle>
                </Seat>
                ......
                <Seat>
                    <HideOnInternet>0</HideOnInternet>
                    <HideRowDesc>0</HideRowDesc>
                    <HideSeparator>0</HideSeparator>
                    <RowIndex>3</RowIndex>
                    <ColIndex>13</ColIndex>
                    <RowDesc>C</RowDesc>
                    <ColDesc>13</ColDesc>
                    <TypeID>0</TypeID>
                    <GroupID>3</GroupID>
                    <GroupDesc>13</GroupDesc>
                    <GroupPos>13</GroupPos>
                    <XPos>8193</XPos>
                    <YPos>5305</YPos>
                    <Width>442</Width>
                    <Height>740</Height>
                    <Angle>0</Angle>
                </Seat>
            </Seats>
        </Layout>
    </Layouts>
</Response> 
Node Child Node Type Required Description <GridRef>
Width None Integer Yes The relative grid width
Height None Integer Yes The relative grid height
Node Child Node Type Required Description <SeatTypes>
Type None Sub Node Yes
ID None Integer Yes The ID of the SeatType
CustomerName None String Yes The customer name for the SeatType
Node Child Node Type Required Description <Layouts>
Layout None Sub Node Yes There will be a <Layout> node for each system layout
LayoutName None String Yes The name of the layout
SectionName None String Yes The name of the section
SectionID None Integer Yes The ID of the section
Seats Seat Sub Node Yes
Node Child Node Type Required Description <Seat>
HideOnInternet None Boolean Yes 0 = Do not hide, 1 = Needs to be hidden
HideRowDesc None Boolean Yes 0 = Do not hide row desc., 1 = hide row desc.
HideSeparator None Boolean Yes 0 = Do not hide row/col separator, 1 = hide separator
RowIndex None Integer Yes The row index of the seat
ColIndex None Integer Yes The column index of the seat
RowDesc None String Yes The row descriptor of the seat
ColDesc None String Yes The column descriptor of the seat
TypeID None Integer Yes The SeatType ID for the seat
GroupID None Integer Yes The group ID for the seat
GroupDesc None String Yes The group description for the seat
GroupPos None Integer Yes The seat position in the group
Xpos None Integer Yes The relative X position of the seat in the layout
Ypos None Integer Yes The relative Y position of the seat in the layout
Width None Integer Yes The relative width position of the seat in the layout
Height None Integer Yes The relative height position of the seat in the layout
Angle None Integer Yes The angle of the seat in the layout
!! NOTE: This call has been slightly modified to support locations that use custom seat pricing, these are locations that have different prices on specific seats in an auditorium. Due to this pricing not being known until the seat selection has been made, this call will return the pricing group for each seat, and a list of pricing groups and tickets. In order to access this data, this call should be made using the SCHEDULE credentials, not the SELLING credentials. Making this call with the selling credentials will not return any pricing data. !!

Get Seat Plan For Performance – Sample Request

<Request>
    <Version>1</Version>
    <Command>GETSEATPLANFORPERF</Command>
    <Data>
        <Packet>
            <PerformanceID>008180000166</PerformanceID>
        </Packet>
    </Data>
</Request> 

This call allows you to pull the reserved seating layouts for a specific performance, including the status of each seat. It also returns a list of seat types used in the layout.

Get Seat Plan For Performance – Sample Response (made with SCHEDULE credentials)

<Response>
    <Version>1</Version>
    <Code>-1</Code>
    <Packet>
        <Response>
            <Code>-1</Code>
            <ResponseText>OK</ResponseText>
            <GridRef>
                <Width>10000</Width>
                <Height>10000</Height>
            </GridRef>
            <Layout>
                <Pricing>
                    <Tickets>
                        <Ticket>
                            <Code>7</Code>
                            <Name>Student</Name>
                            <Price>0.71</Price>
                            <Tax>0.01</Tax>
                            <Points>8</Points>
                        </Ticket>
                        ...
                        <Ticket>
                            <Code>3</Code>
                            <Name>Senior</Name>
                            <Price>0.31</Price>
                            <Tax>0.01</Tax>
                            <Points>7</Points>
                        </Ticket>
                    </Tickets>
                    <PriceGroups>
                        <PriceGroup>
                            <Code>1</Code>
                            <Tickets>
                                <Ticket>
                                    <Code>7</Code>
                                </Ticket>
                                ...
                                <Ticket>
                                    <Code>3</Code>
                                </Ticket>
                            </Tickets>
                        </PriceGroup>
                    </PriceGroups>
                </Pricing>
                <SeatTypes>
                    <SeatType>
                        <ID>10</ID>
                        <CustomerName>Recliner</CustomerName>
                    </SeatType>
                     ... 
                    <SeatType>
                        <ID>1</ID>
                        <CustomerName>Wheelchair</CustomerName>
                    </SeatType>
                </SeatTypes>
                <Seats>
                    <Seat>
                        <ColDes>6</ColDes>
                        <ColNum>7</ColNum>
                        <RowDes>A</RowDes>
                        <RowNum>0</RowNum>
                        <Section>4</Section>
                        <Type>9</Type>
                        <GroupID>4</GroupID>
                        <Status>0</Status>
                        <XPos>3172</XPos>
                        <YPos>2833</YPos>
                        <Width>473</Width>
                        <Height>706</Height>
                        <Angle>0</Angle>
                        <PriceGroupCode>1</PriceGroupCode>
                    </Seat>
                    ...
                    <Seat>
                        <ColDes>20</ColDes>
                        <ColNum>20</ColNum>
                        <RowDes>H</RowDes>
                        <RowNum>7</RowNum>
                        <Section>4</Section>
                        <Type>10</Type>
                        <GroupID>59</GroupID>
                        <Status>0</Status>
                        <XPos>9061</XPos>
                        <YPos>8475</YPos>
                        <Width>453</Width>
                        <Height>598</Height>
                        <Angle>0</Angle>
                        <PriceGroupCode>1</PriceGroupCode>
                    </Seat>
                </Seats>
            </Layout>
        </Response>
    </Packet>
</Response> 

Get Seat Plan For Performance – Sample Response (made with SELLING credentials)

<Response>
    <Version>1</Version>
    <Code>-1</Code>
    <Packet>
        <Response>
            <Code>-1</Code>
            <ResponseText>OK</ResponseText>
            <GridRef>
                <Width>10000</Width>
                <Height>10000</Height>
            </GridRef>
            <Layout>
                <SeatTypes>
                    <SeatType>
                        <ID>0</ID>
                        <CustomerName>Normal</CustomerName>
                    </SeatType>
                </SeatTypes>
                <Seats>
                    <Seat>
                        <ColDes>1</ColDes>
                        <ColNum>0</ColNum>
                        <RowDes>E</RowDes>
                        <RowNum>2</RowNum>
                        <Section>21</Section>
                        <Type>0</Type>
                        <GroupID>2</GroupID>
                        <Status>0</Status>
                        <XPos>1627</XPos>
                        <YPos>3057</YPos>
                        <Width>448</Width>
                        <Height>780</Height>
                        <Angle>0</Angle>
                    </Seat>
                     ......
                    <Seat>
                        <ColDes>1</ColDes>
                        <ColNum>0</ColNum>
                        <RowDes>D</RowDes>
                        <RowNum>4</RowNum>
                        <Section>21</Section>
                        <Type>0</Type>
                        <GroupID>3</GroupID>
                        <Status>0</Status>
                        <XPos>1627</XPos>
                        <YPos>4013</YPos>
                        <Width>448</Width>
                        <Height>780</Height>
                        <Angle>0</Angle>
                    </Seat>
                </Seats>
            </Layout>
        </Response>
    </Packet>
</Response>
Node Child Node Type Required Description <GridRef>
Width None Integer Yes The relative grid width
Height None Integer Yes The relative grid height
Node Child Node Type Required Description <Layouts>
Layout None Sub Node Yes
Pricing Tickets, PriceGroups Sub Node Maybe If request was made using SCHEDULE credentials: The <Pricing> node will contain a <Tickets> node and a <PriceGroups> node.
Tickets Ticket Sub Node Maybe If request was made using SCHEDULE credentials: The <Tickets> node will contain a number of <Ticket> nodes that are the tickets in use in this layout.
PriceGroups PriceGroup Sub Node Maybe If request was made using SCHEDULE credentials: There will be a <PriceGroup> node for each unique price group in the layout
SeatTypes SeatType Sub Node Yes There will be a <SeatType> node for each type used in this layout
Seats Seat Sub Node Yes
Node Child Node Type Required Description <Ticket>
Code None String Yes Ticket code used in purchase transactions
Name None String Yes Ticket name as it should be displayed on the Internet
Price None Decimal Yes Total ticket price
Tax None Decimal Maybe Any tax included in the ticket price
Points None Integer Maybe Any points that are earned when buying this ticket type
Node Child Node Type Required Description <PriceGroup>
Code None Integer Yes The unique ID for this PriceGroup node, this ID is what links the <Seat> to the <PriceGroup>
Tickets Ticket Sub Node Yes There will be a <Ticket> node for each ticket type that is part of this PriceGroup
Ticket Code Sub Node Yes Each <Ticket>will contain a node that links back to the <Tickets><Ticket> nodes under the <Pricing> node.
Node Child Node Type Required Description <SeatType>
Type None Sub Node Yes
ID None Integer Yes The ID of the SeatType
CustomerName None String Yes The customer name for the SeatType
Node Child Node Type Required Description <SeatType>
RowNum None Integer Yes The row index of the seat
ColNum None Integer Yes The column index of the seat
RowDes None String Yes The row descriptor of the seat
ColDes None String Yes The column descriptor of the seat
Section None String Yes The section ID of the seat
Type None Integer Yes The SeatType ID for the seat
GroupID None String Yes The group ID for the seat
Status None Integer Yes 0 = unsold, 1 = sold, 2 = locked, 3 = held, 4 = open tab, 5 = broken, 6 = buffer
Xpos None Integer Yes The relative X position of the seat in the layout
Ypos None Integer Yes The relative Y position of the seat in the layout
Width None Integer Yes The relative width of the seat in the layout
Height None Integer Yes The relative height of the seat in the layout
Angle None Integer Yes The angle of the seat in the layout
PriceGroupCode None Integer Maybe If the request was made using SCHEDULE credentials: This value links back to the appropriate <PriceGroups><PriceGroup>, which shows what <Tickets><Ticket> are available for this seat.

Reserved Seating – Check Seat Picks

This call allows for you to verify the point-of-sale system will allow the sale of the seats picked. This is in order to stop customer from leaving too many single seats across the auditorium.

Reserved Seating – Check Seat Picks – Sample Request

<Request>
    <Command>CHECKSEATPICKS</Command>
    <Data>
        <Packet>
            <PerformanceID>008691000166</PerformanceID>
            <Seats>
                <Seat>
                    <RowIndex>0</RowIndex>
                    <ColIndex>0</ColIndex>
                </Seat>
            </Seats>
        </Packet>
    </Data>
</Request> 

If there are multiple seats to check, just add the appropriate <Seat></Seat> information.

Node Child Node Type Required Description <Seats>
Seats Seat Sun Node Yes
Node Child Node Type Required Description <Seat>
Row None Integer Yes Row number
Col None Integer Yes Column number

Reserved Seating – Check Seat Picks – Sample Response

<Response>
    <Version>1</Version>
    <ValidSelections>1</ValidSelections>
</Response> 
Node Child Node Type Required Description <Response>
Version None Char Yes 1
ValidSelections None Integer Yes 0 = Invalid, 1 = Valid
InvalidReason None String Maybe If invalid selection, this will be the reason why.

Seating Chart - Sample Request – PerformanceID

<Request>
    <Version>1</Version>
    <Command>SeatChart</Command>
    <Data>
        <Packet>
            <PerformanceID>CA25640|201010222300|9</PerformanceID>
        </Packet>
    </Data>
</Request> 
Node Child Node Type Required Description <Request>
Version None Integer Yes 1
Command None String Yes SeatChart
PerformanceID None String Maybe Performance ID for show

 Seating Chart - Sample Request – MtFilmCode, MtPerformanceID, and ShowTime

<Request>
    <Version>1</Version>
    <Command>SeatChart</Command>
    <Data>
        <Packet>
            <MtPerformanceID>1</MtPerformanceID>
            <MtFilmCode>123</MtFilmCode>
            <ShowTime>201010201430</ShowTime>
        </Packet>
    </Data>
</Request> 
Node Child Node Type Required Description <Request>
Version None Integer Yes 1
Command None String Yes SeatChart
MtPerformanceID None String Yes Movietickets.com performance id for show
MtFilmCode None String Yes Movietickets.com film code for title
ShowTime None String Yes Performance date/time (yyyyMMddhhmm)

Seating Chart - Sample Response

<Response>
    <Code>0</Code>
    <ResponseText>OK</ResponseText>
    <Layout>
        <Seats>
            <Seat>
                <ColDes>11</ColDes>
                <ColNum>1</ColNum>
                <RowDes>D</RowDes>
                <RowNum>3</RowNum>
                <Section>11</Section>
                <Type>0</Type>
                <Status>0</Status>
            </Seat>
            <Seat>
                <ColDes>10</ColDes>
                <ColNum>1</ColNum>
                <RowDes>F</RowDes>
                <RowNum>6</RowNum>
                <Section>11</Section>
                <Type>0</Type>
                <GroupID>20</GroupID>
                <Status>0</Status>
            </Seat>
        </Seats>
    </Layout>
</Response> 
Node Child Node Type Required Description <Seat>
ColDesc None String Yes Column description
ColNum None Integer Yes Column number
RowDesc None String Yes Row description
RowNum None Integer Yes Row number
Section None String Yes Section name
Type None Integer Yes Type of seat (see seat type list)
GroupID None Integer No Grouped seats will have the same GroupID
Status None Integer Yes 0 = unsold, 1 = sold, 2 = locked, 3 = held, 4 = open tab, 5 = broken, 6 = buffer

Holding and Releasing Seats

A hold seat request will hold the requested seats in a pending state for 5 minutes. Held seats can, and should, be released if the customer switches to different seats.

Reserved Seating – Hold Seats – Sample Request

<Request>
    <Version>1</Version>
    <Command>HoldSeats</Command>
    <Data>
        <Packet>
            <Command>Hold</Command>
            <Performances>
                <Performance>
                    <PerformanceID>+21 Strange Title</PerformanceID>
                    <Seats>
                        <Seat>
                            <Row>0</Row>
                            <Col>1</Col>
                            <Section>All</Section>
                        </Seat>
                    </Seats>
                </Performance>
            </Performances>
        </Packet>
    </Data>
</Request> 
If there are multiple seats to hold, just add the appropriate <Seat></Seat> information. Performances can also be identified using PerformanceID.
Node Child Node Type Required Description <Seats>
Seats Seat Sub Node Yes
Node Child Node Type Required Description <Seat>
Row None Integer Yes Row number
Col None Integer Yes Column number
Section None String Yes Section name

Reserved Seating – Hold Seats – Sample Response

<Response>
    <Code>0</Code>
    <ResponseText>OK</ResponseText>
    <TransactionID>80A6F0F0-6747-4717-BF27-E2593E61818C</TransactionID>
</Response> 
Node Child Node Type Required Description <Response>
Code None Integer Yes 0 = success, or an Error Code
ResponseText None String Yes OK
TransactionID None String Yes Used to complete transaction or release seats

Reserved Seating – Release Seats – Sample Request

<Request>
    <Version>1</Version>
    <Command>HoldSeats</Command>
    <Data>
        <Packet>
            <Command>Release</Command>
            <TransactionID>18EEF867-F72E-4B47-9C3E-96CE026475E1</TransactionID>
        </Packet>
    </Data>
</Request> 
Node Child Node Type Required CollapseDescription <Request>
Command None String Yes HoldSeats
Data Packet Sub Node Yes
Command None String Yes Release
TransactionID None String Yes TransactionID from Hold request

Reserved Seating – Release Seats – Sample Response

<Response>
    <Version>1</Version>
    <Code>0</Code>
    <ResponseText>OK</ResponseText>
</Response> 
Node Child Node Type Required Description <Response>
Version None Integer Yes 1
Code None String Yes 0 = success, or an Error Code
ResponseText None String Yes OK


Ticket Purchasing – Reserved Seating

Ticket Purchase (Reserved) – Title, ShowTime, and AuditoriumID - Sample Request

<Request>
    <Version>1</Version>
    <Command>Buy</Command>
    <Data>
        <Packet>
            <PurchaseTitles>
                <PurchaseTitle>
                    <Title>Casino Royale</Title>
                    <ShowTime>201012132335</ShowTime>
                    <Auditorium>1</Auditorium>
                    <Tickets>
                        <Ticket>
                            <Amount>1</Amount>
                            <TypeCode>1|1</TypeCode>
                            <HoldSeatTransactionID>4022547A-9FB1-4D24-956A-D98AEB482BDC</HoldSeatTransactionID>
                            <Seat>
                                <Row>7</Row>
                                <Col>9</Col>
                            </Seat>
                            <Section>1|1</Section>
                        </Ticket>
                        <Ticket>
                            <Amount>1</Amount>
                            <TypeCode>1|1</TypeCode>
                            <HoldSeatTransactionID>4022547A-9FB1-4D24-956A-D98AEB482BDC</HoldSeatTransactionID>
                            <Seat>
                                <Row>7</Row>
                                <Col>10</Col>
                            </Seat>
                            <Section>1|1</Section>
                        </Ticket>
                    </Tickets>
                </PurchaseTitle>
            </PurchaseTitles>
            <Fees>
                <TicketFee>0</TicketFee>
                <TransactionFee>2</TransactionFee>
                <Adjust>0</Adjust>
            </Fees>
            <Payments>
                <Payment>
                    <Type>CreditCard</Type>
                    <Number>5499990123456781</Number>
                    <Expiration>0114</Expiration>
                    <AvsStreet>4 Baum</AvsStreet>
                    <AvsPostal>30329</AvsPostal>
                    <CID>123</CID>
                    <NameOnCard>RTS</NameOnCard>
                    <ChargeAmount>3</ChargeAmount>
                </Payment>
            </Payments>
        </Packet>
    </Data>
</Request>

Ticket Purchase (Reserved) – PerformanceID - Sample Request

<Request>
    <Version>1</Version>
    <Command>Buy</Command>
    <Data>
        <Packet>
            <PurchaseTitles>
                <PurchaseTitle>
                    <PerformanceID>1005233501</PerformanceID>
                    <Tickets>
                        <Ticket>
                            <Amount>1</Amount>
                            <TypeCode>1|1</TypeCode>
                            <HoldSeatTransactionID>4022547A-9FB1-4D24-956A-D98AEB482BDC</HoldSeatTransactionID>
                            <Seat>
                                <Row>7</Row>
                                <Col>9</Col>
                            </Seat>
                            <Section>1|1</Section>
                        </Ticket>
                        <Ticket>
                            <Amount>1</Amount>
                            <TypeCode>1|1</TypeCode>
                            <HoldSeatTransactionID>4022547A-9FB1-4D24-956A-D98AEB482BDC</HoldSeatTransactionID>
                            <Seat>
                                <Row>7</Row>
                                <Col>10</Col>
                            </Seat>
                            <Section>1|1</Section>
                        </Ticket>
                    </Tickets>
                </PurchaseTitle>
            </PurchaseTitles>
            <Fees>
                <TicketFee>0</TicketFee>
                <TransactionFee>2</TransactionFee>
                <Adjust>0</Adjust>
            </Fees>
            <Payments>
                <Payment>
                    <Type>CreditCard</Type>
                    <Number>5499990123456781</Number>
                    <Expiration>0114</Expiration>
                    <AvsStreet>4 Baum</AvsStreet>
                    <AvsPostal>30329</AvsPostal>
                    <CID>123</CID>
                    <NameOnCard>RTS</NameOnCard>
                    <ChargeAmount>3</ChargeAmount>
                </Payment>
            </Payments>
        </Packet>
    </Data>
</Request> 

Ticket Purchase (Reserved) – MtFilmCode, ShowTime, and PerformanceID - Sample Request

<Request>
    <Version>1</Version>
    <Command>Buy</Command>
    <Data>
        <Packet>
            <PurchaseTitles>
                <PurchaseTitle>
                    <PerformanceID>1005233501</PerformanceID>
                    <ShowTime>201010052335</ShowTime>
                    <MtFilmCode>20516</MtFilmCode>
                    <Tickets>
                        <Ticket>
                            <Amount>1</Amount>
                            <TypeCode>1|1</TypeCode>
                            <HoldSeatTransactionID>4022547A-9FB1-4D24-956A-D98AEB482BDC</HoldSeatTransactionID>
                            <Seat>
                                <Row>7</Row>
                                <Col>9</Col>
                            </Seat>
                            <Section>1|1</Section>
                        </Ticket>
                        <Ticket>
                            <Amount>1</Amount>
                            <TypeCode>1|1</TypeCode>
                            <HoldSeatTransactionID>4022547A-9FB1-4D24-956A-D98AEB482BDC</HoldSeatTransactionID>
                            <Seat>
                                <Row>7</Row>
                                <Col>10</Col>
                            </Seat>
                            <Section>1|1</Section>
                        </Ticket>
                    </Tickets>
                </PurchaseTitle>
            </PurchaseTitles>
            <Fees>
                <TicketFee>0</TicketFee>
                <TransactionFee>2</TransactionFee>
                <Adjust>0</Adjust>
            </Fees>
            <Payments>
                <Payment>
                    <Type>CreditCard</Type>
                    <Number>5499990123456781</Number>
                    <Expiration>0114</Expiration>
                    <AvsStreet>4 Baum</AvsStreet>
                    <AvsPostal>303529</AvsPostal>
                    <CID>123</CID>
                    <NameOnCard>RTS</NameOnCard>
                    <ChargeAmount>3</ChargeAmount>
                </Payment>
            </Payments>
        </Packet>
    </Data>
</Request> 

Ticket Purchase (Reserved) - Sample Response

<Response>
    <Version>1</Version>
    <Code>-1</Code>
    <Packet>
        <Response>
            <Code>0</Code>
            <ResponseText>OK</ResponseText>
            <TransactionID>1524291</TransactionID>
            <Pickups>
                <Pickup>
                    <TicketDay>20101213</TicketDay>
                    <PickupNumber/>
                    <BarCodes>
                        <BarCode>
                            <Type>Transaction</Type>
                            <CodeType>UPC</CodeType>
                            <BarCodeData>525524291791</BarCodeData>
                        </BarCode>
                    </BarCodes>
                </Pickup>
            </Pickups>
        </Response>
    </Packet>
</Response>
Node Child Node Type Required CollapseDescription <Response>
Version None Integer Yes 1
Code None Integer Yes -1
Packet Response Sub Node Yes
ResponseText None String Yes OK
TransactionID None String Yes Transaction receipt number
Pickups Pickup String Yes
TicketDay None String Yes Date of performance (yyyyMMddhhmm)
PickupNumber None String Yes Not currently used
BarCodes BarCode String Yes
Type None String Yes Transaction
CodeType None String Yes The bar code type: UPC
BarCodeData None String Yes The confirmation number to be encoded.
IMAGE IS NOT PROVIDED BY THE POS.

Concession Prices and Sales

A list of concession items, Per Cap settings, and prices can be downloaded in XML format, from the theatre, using the following URL:
https://<Theatre RTN Number>.formovietickets.com:2235/concessionprices.xml
When selling concession sales it may be necessary to include sales tax in the <ChargeAmount> tag. Insert additional <PurchaseItem> tags if needed.

Concession Sales – SalesTaxCheck – Sample Request

<Request>
    <Version>1</Version>
    <Command>Buy</Command>
    <Data>
        <Packet>
            <SalesTaxCheck>1</SalesTaxCheck>
            <PurchaseItems>
                <PurchaseItem>
                    <ItemName>Candy Item</ItemName>
                    <Amount>1</Amount>
                </PurchaseItem>
            </PurchaseItems>
        </Packet>
    </Data>
</Request>

Concession Sales – SalesTaxCheck – Sample Response

<Response>
    <Status>0</Status>
    <SalesTax>0.24</SalesTax>
</Response> 
Node Child Node Type Required Description <Response>
Status None Integer Yes 0 = success, or an Error Code
SalesTax None Decimal Yes The amount of sales tax on the items in the Request.

Concession Sales – Purchase – Sample Request

<Request>
    <Version>1</Version>
    <Command>Buy</Command>
    <Data>
        <Packet>
            <PurchaseItems>
                <PurchaseItem>
                    <ItemName>Candy Item</ItemName>
                    <Amount>1</Amount>
                </PurchaseItem>
            </PurchaseItems>
            <Fees>
                <TicketFee>0</TicketFee>
                <TransactionFee>0</TransactionFee>
                <Adjust>0</Adjust>
            </Fees>
            <Payments>
                <Payment>
                    <Type>CreditCard</Type>
                    <Number>5499990123456781</Number>
                    <Expiration>0114</Expiration>
                    <AvsStreet>4 Baum</AvsStreet>
                    <AvsPostal>30329</AvsPostal>
                    <CID>123</CID>
                    <NameOnCard>RTS</NameOnCard>
                    <ChargeAmount>2.00</ChargeAmount>
                </Payment>
            </Payments>
        </Packet>
    </Data>
</Request>
  1. When selling items with a variable price (Amount Entry Items), a <Price> node can be added inside the <PurchaseItem> node after the <Amount>. Example:
<PurchaseItem>
    <ItemName>Donation</ItemName>
    <Amount>1</Amount>
    <Price>2.00</Price>
 </PurchaseItem>

Concession Sales – Purchase – Sample Response

<Response>
    <Version>1</Version>
    <Code>-1</Code>
    <Packet>
        <Response>
            <Code>0</Code>
            <ResponseText>OK</ResponseText>
            <TransactionID>1476432</TransactionID>
        </Response>
    </Packet>
</Response> 
Node Child Node Type Required Description <Response>
Version None Integer Yes 1
Code None Integer Yes -1
Packet Response Sub Node Yes
Code None String Yes 0 = success, or an Error Code
ResponseText None String Yes OK
TransactionID None String Yes Confirmation for purchase


Error Codes

Error Code Error Description

100

No data packet was decrypted (possible encryption error)

101

No <Payment> nodes specified

102

Gift request received, but user does not have rights to sell gifts cards

103

Films request received, but user does not have rights to sell tickets

104

No films, gifts, or items in request

106

Invalid PerformanceID format

107

Could not find film for PerformanceID

108

No tickets for film in request

110

Auditorium is oversold

111

Charge amount does not match calculated amount by POS

113

Bad username or password

114

No gift card prefixes are configured

115

No gift purchase amount in request

116

POS could not allocate gift certificate number

117

Can't add points to a non registered card

118

Invalid gift card number

119

Unable to create HostedCheckout PaymentId

120

Invalid ProcessCompletePostData Format

121

Invalid HostedCheckout Processor

122

HostedCheckout Transaction Expired

123

MPS Payment Not Valid

124

HostedCheckout Purchase Failed

125

Invalid HostedCheckout PaymentId

126

Multiple Payment Validations Error

127

Charge Amount is Neg

128

Ticket fee item not configured

129

Extra fee item not configured

130

Adjust item not configured

131

Unknown Ticket Class In Request

132

Ticket class in not enabled for internet ticketing

133

Zero Priced Ticket in Request

134

Payments are specified during check sales tax request

135

No PickupNumber specified

136

Refund, Reverse, or Redeem error (see message for specific details)

137

Performance is no longer scheduled (or not a reserved seating show)

138

Non-secure payment on tokenized account

139

Ticket not available for performance

140

Reserved ticket purchase error (see message for specific details)

141

Transaction does not balance error

142

Reserved ticket purchase error (see message for specific details)

143

Malformed gift purchase packet (see message for specific details)

144

Unable to validate GiftCardPIN

201

Unknown Secure Processor Type

202

Invalid Parameters In Payment Node

203

VerifyAccount Failed - ResponseText: <Processor ResponseText>

204

VerifyAccount Failed - Invalid AVS/CVV Result

205

CreditSale Failed - ResponseText: <Processor ResponseText>

500

POS could not allocate cash register control (possibly server too busy)

700

Unknown error during sale

701

Not enough money on gift card

702

Invalid credit card number/expiration, or card declined

703

Invalid performance

704

Ticket type is disabled

705

Ticket serial number file is invalid

706

Concession item not setup – check ticket/concession link items

707

Reserved seat sale failed – check the seating chart

5000

Exception Error (see message for details).

9000

POS Not Licensed

9001

Packet Parse Error (see message for extra details)

Reserved Seating Codes

Seat Code CollapseSeat Description

0

Normal Seat

1

Handicapped Seat

2

Aisle (the aisle, NOT an aisle seat)

3

House Seat

4

Companion Seat

5

Pillar

6

Table

7

Beanbag

8

Loveseat

9

Rocker

10

Recliner

Film and Show Bit Field Values

Information is encoded in these values as a bit field. Bit fields work by storing multiple true/false values in the same integer, instead of having multiple integers for each value.

To look up a value in a bitfield, you'll want to make use of Bit Masks.

As an example, my performance has an Info1 value of 7, and I want to see if 3D is set. I know that 3D is bit 12 with a decimal value of 4096. I can check to see if bit 12 is set in my Info1 value by AND'ing it and the decimal value of 4096.

7 / 0000 0000 0000 0111
AND
4096 / 0001 0000 0000 0000
___________________________
0 / 0000 0000 0000 0000

Another performance has an Info1 value of 6051. To check if 3D is set here, I'll again AND it with the decimal value of the 3D bit, 4096.

6151 / 0001 1000 0000 0111
AND
4096 / 0001 0000 0000 0000
___________________________
4096 / 0001 0000 0000 0000


Info1

Bit Decimal Value Setting

0

1 RTN Display

1

2

RTN Sell

2

4 Kiosk Display

3

8 No Passes

4

16 Dolby Digital

5

32 THX

6

64 DLP

7

128 Dubbed in English

8

256 Subtitled in English

9

512 DTS

10

1024 No Discounts

11

2048 Stadium Seating

12

4096 3D

13

8192 16MM

14

16384 35MM

15

32768 Laser Projection

Info2

Bit Decimal Value Setting

0

1 3rd Party Display

1

2 3rd Party Sell

2

4 Rentrak Transfer

3

8 IMAX

4

16 Flat

5

32 Digital

6

64 Descriptive Video Service

7

128 Subtitled in French

8

256 Dubbed in French

9

512 French Language Film

10

1024 70MM

11

2048 Open Caption

12

4096 Closed Caption

13

8192 Special Advanced Screening

14

16384 Adults Only

Info3

Bit Decimal Value Setting

0

1 Sign Display

1

2 RESERVED / UNIMPLEMENTED

2

4 RESERVED / UNIMPLEMENTED

3

8 Director's Hall

4

16 RWC

5

32 Reserved Seating

6

64 Gallery

7

128 Lux Level

8

256 Premier

9

512 Cine Capri

10

1024 Cine Art

11

2048 Showcase Art

12

4096 Surround Sound

13

8192 Scope

14

16384 DBOX

15

32768 PLF

16

65536 Dolby Atmos

17

131072 RealD 3D

18

262144 Sony 4K

19

524228 DTSX

20

1048576 Auro 3D

21

2097152 Fedelio

22

4194304 Captiview

23

8388608 Audio Description

24

16777216 Hearing Impaired Track

25

33554432 Sensory Show

26

67108864 Onyx

27

134217728 Not ADA Accessible

28

268435456 HFR

29

536870912 Spanish Dubbed

30

1073741824 Spanish Subtitled

Info4

Bit Decimal Value Setting

0

1 RESERVED / UNIMPLEMENTED




    • Related Articles

    • RTS API 2

      The latest version of the documentation can be accessed from the following Google Drive: Google Drive Costs As with all RTS API interfaces there are costs involved at the location level. Please contact sales for more information. There is no cost to ...
    • Fandango Deposits

      Fandango Deposits (Weekly) Weekly reports must be from Monday 12 am to Monday 12 am (i.e. 7/17/2023 to 7/24/2023). This is due to Fandango deposits being 10 days behind. RTS releases payments on Tuesdays. Navigate to Reports -> Deposit -> API SALES ...
    • "Deposit - Total" Report

      Deposit Total Report The Deposit Total Report is a comprehensive summary of your location’s most relevant sales data, organized by either Deposit Close or Date Range. Each section of the report covers a different aspect of sales and operational ...
    • Memberships

      Memberships RTS provides a flexible and customizable Membership system that integrates seamlessly with your existing loyalty program. This system allows you to create and manage multiple membership tiers, each with its own set of benefits, including ...
    • Example Websites

      RTS and Example Websites RTS works on the web in two main ways. RTN websites and/or 3rd Party websites. Additionally, if you have a 3rd party website, your web developer has many options to list your showtimes on the 3rd party site. These include ...