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.
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:
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:
!! 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

!! 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

!! NOTE: GZIP Compression is required when requesting schedule data !!
!! 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>
 
NodeChild NodeTypeRequiredDescription <Request>
VersionNoneCharYes1
CommandNoneCharYesShowTimeXml
ShowAvalTicketsNoneIntegerNo
Not 1 = Do not return available tickets (default)

1 = Return available tickets

ShowSalesNoneIntegerNo
Not 1 = Do not return sales (default)

1 = Return sales

NodeChild NodeTypeRequired
Description <ShowSchedule>
FileVersionNoneStringYes1.1
RtsVersionNoneStringYesVersion of the POS
LinkPrefixNoneStringYesUsed to construct a direct ticketing link for a performance
TicketsTicketSub NodeMaybeLists available tickets
FilmsFilmSub NodeYesLists films scheduled
NodeChild NodeTypeRequired
Description <Ticket>                             
CodeNoneStringYesTicket code used in purchase transactions
NameNoneStringYesTicket name as it should be displayed on the Internet
PriceNoneDecimalYesTotal ticket price
TaxNoneDecimalMaybeAny tax included in the ticket price
NodeChild NodeTypeRequiredDescription <Film>               
TitleNoneStringYesFilm title name
LengthNoneStringYesFilm length (minutes)
WebSiteNoneStringMaybeURL associated with the film in the POS
FilmCodeNoneStringMaybeRTS Film Code setup in the POS
ShowsShowSub NodeYesList of available shows for a film
NodeChild NodeTypeRequiredDescription <Show>
DTNoneStringYesShowing time (yyyyMMddhhmm)
AudNoneStringYesAuditorium name
IDNoneStringYesPerformance ID, used in purchase transactions
LinkNoneStringMaybeURL to purchase tickets page. The <LinkPrefix> is inserted before this tag when creating the complete URL
RENoneIntegerMaybeNumber of seats remaining in the auditorium
SoldNoneIntegerMaybeNumber of seats sold in the auditorium
SONoneIntegerMaybe1 if show is sold out (internet) state
SOGenNoneIntegerMaybe1 if show is sold out (general) state
LINoneIntegerMaybe1 if show is in low seats state
TIsTISub NodeMaybeList 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> 
NodeChild NodeTypeRequiredCollapseDescription <Show>
VersionNoneCharYes1
CommandNoneStringYesGiftInformation
DataPacketSub NodeYes
PacketGiftCardsSub NodeYes
GiftCardsGiftCardSub NodeYes
GiftCardNoneStringYesGift 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> 
NodeChild NodeTypeRequiredDescription <Request>
VersionNoneCharYes1
CommandNoneStringYesGiftInformation
DataPacketSub NodeYes
PacketGiftCardsSub NodeYes
GiftCardsGiftCardSub NodeYes
GiftCardNoneStringYesOne <GiftCard> node for each card in request
CardNumberNoneStringYesGift card number
CardPINNoneStringYesGift 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

!! 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> 
 
NodeChild NodeTypeRequiredDescription <Response>
VersionNoneCharYes1
CodeNoneIntegerYes-1
PacketGiftCardSub NodeYes
GiftCardRegisteredInfoSub NodeYes
GiftCardCardCreditsSub NodeYes
GiftNumberNoneStringYesGift card number
DebitRemainNoneDecimalYesGift card remaining balance
RegisteredNoneIntegerYes0 = not registered, 1 = registered
NodeChild NodeTypeRequiredDescription <RegisteredInfo>
FirstNameNoneStringYesCustomer first name
LastNameNoneStringYesCustomer last name
Address1NoneStringYesCustomer street address 1
Address2NoneStringYesCustomer street address 2
CityNoneStringYesCustomer city
StateNoneStringYesCustomer state
PostalNoneStringYesCustomer postal code
NodeChild NodeTypeRequiredDescription <CardCredits>
TicketCreditNoneSub NodeNo
ItemCreditNoneSub NodeNo

NodeChild NodeTypeRequiredDescription <TicketCredit>
ExpirationNoneStringYesNone = No expiration date, or date of expiration (yyyyMMddhhmmss)
StartDateNoneStringYesNone = No start date, or date ticket credit becomes valid (yyyyMMddhhmmss)
AmountNoneIntegerYesAmount of tickets available
TitleRestrictionNoneStringYesEmpty node = no restriction, or title of movie this credit is good for
TicketRestrictionNoneStringYesEmpty node = no restriction, or name of ticket this credit is good for
NodeChild NodeTypeRequired
Description <ItemCredit>                                      
ExpirationNoneStringYesNone = No expiration date, or date of expiration (yyyyMMddhhmmss)
StartDateNoneStringYesNone = No start date, or date item credit becomes valid (yyyyMMddhhmmss)
AmountNoneIntegerYesAmount of item available
ItemNoneStringYesName 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> 
NodeChild NodeTypeRequiredDescription <PurchaseGifts>
PurchaseGifts  PurchaseGiftSub NodeNoContains one or more gift card purchases
AmountNoneDecimalYesAmount to add to the gift card
GiftCardNoneStringNoIf 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

NodeChild NodeTypeRequiredCollapseDescription <Request>
VersionNoneintegerYes1
CommandNoneStringYesGIFTINFORMATION
DataRegisterCardsSub NodeYes
RegisterCardsRegisterCardSub NodeYes
CardNumberNoneStringYesCard number to register
FirstNameNoneStringYesCustomer first name
LastNameNoneStringYesCustomer last name
Address1NoneStringYesCustomer street address 1
Address2NoneStringYesCustomer street address 2
CityNoneStringYesCustomer city
StateNoneStringYesCustomer state
PostalNoneStringYesCustomer postal code
RegisteredIDNoneStringYes????
EmailNoneStringYesCustomer email address
DOBNoneStringYesCustomer date of birth
DoNotEmailNoneStringYes0 = 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> 
NodeChild NodeTypeRequiredCollapseDescription <Request>
VersionNoneCharYes1
CommandNoneStringYesCheckSoldOut
PerformanceIDNoneStringYesThe 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> 
NodeChild NodeTypeRequiredCollapseDescription <Response>
VersionNoneCharYes1
SoldNoneIntegerNoNumber of tickets sold to this performance
IsReservedNoneIntegerNo0 = General Admission, 1 = Reserved
TotalSeatsNoneIntegerNoTotal number of seats for the show
SoldOut_GeneralNoneIntegerNoGeneral sold out seats remaining level
SoldOut_InternetNoneIntegerNoInternet 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>

NodeChild NodeTypeRequiredDescription <Request>
VersionNoneCharYes1
CommandNoneStringYesCheckRedeem
PickupNumberNoneStringYesThe PickupNumber from the sale transaction

Checking Ticket Redemption Status – Sample Response Packet

<Response>
    <Version>1</Version>
    <Redeemed>1</Redeemed>
</Response> 
NodeChild NodeTypeRequiredDescription <Response>
VersionNoneCharYes1
RedeemedNoneBooleanYes0 = 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> 
 
NodeChild NodeTypeRequiredDescription <Request>
VersionNoneCharYes1
CommandNoneStringYesVerifyTransaction
ThirdPartyIDNoneStringYesYour ID for the sale transaction (must have been passed in with the original sale)
TransactionDateTimeUTCNoneStringYesThe 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> 
NodeChild NodeTypeRequiredDescription <Response>
VersionNoneCharYes1
TransactionFoundNoneBooleanYes0 = Not Found, 1 = Found
PickupNumberNoneStringNoIf 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>
NodeChild NodeTypeRequiredDescription <Request>
VersionNoneCharYes1
CommandNoneStringYesTransactionDetails
PickupNumberNoneStringYesThe 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> 
NodeChild NodeTypeRequiredDescription <Response>
VersionNoneCharYes1
TransactionFoundNoneBooleanYes0 = Not Found, 1 = Found
PerformancesPerformanceSub NodeNoIf transaction found, this will contain the Performance(s) in the transaction.
NodeChild NodeTypeRequiredDescription <Performances>
PerformanceNoneSub NodeNoIf transaction found, there will be 1 or more Performance nodes,depending on the transaction contents
NodeChild NodeTypeRequiredDescription <Performance>
TitleNoneStringYesThe title for this performance
DateTimeNoneStringYesPerformance start time (MMddyyyyhhmm)
AuditoriumNoneStringYesThe auditorium this performance is in
TicketsTicketSub NodeYesThe tickets for this performance
NodeChild NodeTypeRequiredDescription <Tickets>
TicketNoneSub NodeNoIf transaction found, there will be 1 or more Performance nodes, depending on the transaction contents

NodeChild NodeTypeRequiredDescription <Ticket>
StatusNoneStringYesThe 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
PickupDateTimeNoneStringYesWill be present if the ticket is not "Valid" or "Expired" (MMddyyyyhhmm)
PickupLocationNoneStringYesWill be present if the ticket was picked up in theatre
PickupUserNoneStringYesWill be present if the ticket was picked up in theatre
TypeNoneStringYesThe type of ticket purchased
IsReservedNoneBooleanYes0 = Not reserved, 1 = Reserved
SectionNoneStringYesWill be present if the ticket is reserved, indicates the section name the reserved seat is in
RowDescNoneStringYesWill be present if the ticket is reserved, indicates the Row description
ColDescNoneStringYesWill 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> 
NodeChild NodeTypeRequiredDescription <Request>
VersionNoneCharYes1
CommandNoneStringYesTransactionDetails
PickupNumberNoneStringYesThe 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> 
NodeChild NodeTypeRequiredDescription <Response>
VersionNoneCharYes1
HasRedemptionsNoneBooleanYesWhether or not the transaction has tickets available for pickup - 0 = False, 1 = True
HasExpirationsNoneBooleanYesWhether or not the transaction contains tickets to shows at a prior date/time - 0 = False, 1 = True
HasPickedUpNoneBooleanYesWhether or not the transaction has tickets that have been picked up - 0 = False, 1 = True
ValidTicketsTicketSub NodeNoIf there are redemptions, this node will indicate the tickets being redeemed
ExpiredTicketsTicketSub NodeNoIf there are expirations, this node will indicate the tickets that have expired
PickedUpTicketsTicketSub NodeNoIf there are already redeemed tickets, this node will indicate the tickets already redeemed

NodeChild NodeTypeRequiredDescription <Ticket>
TypeNoneStringYesThe type of ticket purchased
IsReservedNoneBooleanYes0 = Not reserved, 1 = Reserved
SectionNoneStringYesWill be present if the ticket is reserved, indicates the section name the reserved seat is in
RowDescNoneStringYesWill be present if the ticket is reserved, indicates the Row description
ColDescNoneStringYesWill be present if the ticket is reserved, indicates the Column (or Seat) description

Ticket Purchasing – Refunds

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> 
NodeChild NodeTypeRequiredCollapseDescription <Request>
VersionNoneCharYes1
CommandNoneStringYesRefund
FeesNoneSub NodeYes
TicketFeeNoneDecimalYesThe ticket fee from the sale transaction
TransactionFeeNoneDecimalYesThe transaction fee from the sale transaction
AdjustNoneDecimalYesThe sale transaction total (positive amount).
PickupNumberNoneStringYesThe 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> 




NodeChild NodeTypeRequiredDescription <Request>
VersionNoneCharYes1
CommandNoneStringYesRefund
FeesNoneSub NodeYes
TicketFeeNoneDecimalYesThe ticket fee from the sale transaction
TransactionFeeNoneDecimalYesThe transaction fee from the sale transaction
AdjustNoneDecimalYesThe sale transaction total (positive amount).
PickupNumberNoneStringYesThe PickupNumber from the sale transaction, from any <TicketDay> in the purchase response
PartialRefundsPartialRefundSub NodeYes
NodeChild NodeTypeRequiredDescription <PartialRefunds>
PartialRefundNoneSub NodeYesInclude this node for each partial refund action you want to take
NodeChild NodeTypeRequiredDescription <PartialRefund>
PerformanceIDNoneStringYesThe performance ID for the performance you want to refund against
TicketsTicketSub NodeNoIf not present, will refund all tickets for this performance
NodeChild NodeTypeRequiredDescription <Ticket>
AmountNoneIntegerYesGeneral Admission: The number of tickets to refund. Reserved Seating: Will be 1 and <Seat> is required
TypeCodeNoneStringNoThe ID of the ticket type being refunded
SeatNoneSub NodeNoIf performance is reserved seating this is where you specify the seat to be refunded
NodeChild NodeTypeRequiredDescription <Seat>
SectionNoneStringYesThe section ID for the seat being refunded
RowNoneIntegerYesThe row index for the seat being refunded
ColNoneIntegerYesThe 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> 
NodeChild NodeTypeRequiredDescription <Response>
VersionNoneCharYes1
CodeNoneCharYes-1
TransactionFoundNoneBooleanYes0 = Not Found, 1 = Found
PickupNumberNoneStringNoIf transaction found, this will be the pickup number for the customer redemption.

Ticket Purchasing – Reverse Transaction

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.
NodeChild NodeTypeRequiredDescription <Request>
VersionNoneCharYes1
CommandNoneStringYesRefund
FeesNoneSub NodeYes
TicketFeeNoneDecimalYesThe ticket fee from the sale transaction
TransactionFeeNoneDecimalYesThe transaction fee from the sale transaction
AdjustNoneDecimalYesThe sale transaction total (positive amount).
ThirdPartyIDNoneStringYesYour 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> 
NodeChild NodeTypeRequiredDescription <Response>
VersionNoneCharYes1
TransactionFoundNoneBooleanYes0 = Not Found, 1 = Found
PickupNumberNoneStringNoIf 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>  
NodeChild NodeTypeRequiredDescription <Request>
ChargeAmountNoneDecimalYesThe amount this payment will authorize for.
ProcessCompleteUrlNoneStringYesThe URL the customer will be redirected back to after they complete the credit card entry process
ReturnUrlNoneStringYesThe 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

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.
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

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> 
NodeChild NodeTypeRequiredDescription <PurchaseTitle>
TitleNoneStringYesPerformance Title
ShowTimeNoneStringYesPerformance start time (yyyyMMddhhmm)
AuditoriumNoneStringYesPerformance auditorium number
TicketsTicketSub NodeYesOne 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>
NodeChild NodeTypeRequiredDescription <PurchaseTitle>
PerformanceIDNoneStringYesThe PerformanceID
TicketsTicketSub NodeYesOne 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> 
NodeChild NodeTypeRequiredDescription <PurchaseTitle>
MtFilmCodeNoneStringYesMovietickets.com film code
MtPerformanceIDNoneStringYesMovietickets.com PerformanceID
ShowTimeNoneStringYesPerformance start time (yyyyMMddhhmm)
TicketsTicketSub NodeYesOne 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> 
NodeChild NodeTypeRequiredDescription <Ticket>
AmountNoneIntegerYesNumber of this type of ticket to purchase
TypeCodeNoneStringYesTicket type code (from schedule XML)
NodeChild NodeTypeRequiredDescription <Fees>
TicketFeeNoneDecimalNoAmount to charge for ticket fees in the transaction. Recorded in the POS as the configured 'Ticket Fee' item.
TransactionFeeNoneDecimalNoAmount to charge for the transaction fees in the transaction. Recorded in the POS as the configured 'Transaction Fee' item.
AdjustNoneDecimalNoAllows for positive or negative adjustment to the charge amount. Recorded in the POS as the configured 'Adjust' item.
NodeChild NodeTypeRequiredDescription <Payments>
PaymentsPaymentSub NodeYesContains one or more payment types for a transaction
NodeChild NodeTypeRequiredDescription <Payment>
TypeNoneStringYesSpecifies the payment type: CreditCard or Gift
NumberNoneStringYesCredit card number
GiftNumberNoneStringYesGift card number
GiftCardPINNoneStringMaybeCertain gift card processors in RTS can be marked as requiring a PIN during purchase. If this is enabled, this node is required.
ExpirationNoneStringYesCredit card expiration date (MMyy)
AvsStreetNoneStringNoCredit card billing street address
AvsPostalNoneStringNoCredit card billing postal code
CIDNoneStringNoCredit card CID (CVV, Security Code) number
NameOnCardNoneStringNoCredit card customer name
ChargeAmountNoneDecimalYesAmount to charge on the credit or gift card
NodeChild NodeTypeRequiredDescription <ThirdPartyID>
ThirdPartyIDNoneSub NodeNoAllows 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.
NodeChild NodeTypeRequiredDescription <Loyalty>
LoyaltyCardsSub NodeNo
TypeNoneStringNoEarn
CardNumberNoneStringNoCard number to use for loyalty earn. Multiple cards can be passed in via additional <CardNumber> tags
NodeChild NodeTypeRequiredDescription <CustomerInfo>
EmailAddressNoneStringNoCustomer 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>
NodeChild NodeTypeRequiredDescription <Response>
VersionNoneIntegerYes1
CodeNoneIntegerYes-1
PacketResponseSub NodeYes
ResponseTextNoneStringYesOK
TransactionIDNoneStringYesTransaction receipt number
PickupsPickupSub NodeYes
TicketDayNoneStringYesDate of performance (yyyyMMdd)
PickupNumberNoneStringYesNot currently used
BarCodesBarCodeSub NodeYes
TypeNoneStringYesTransaction
CodeTypeNoneStringYesThe bar code type: UPC
BarCodeDataNoneStringYesThe 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> 
NodeChild NodeTypeRequiredDescription <GridRef>
WidthNoneIntegerYesThe relative grid width
HeightNoneIntegerYesThe relative grid height
NodeChild NodeTypeRequiredDescription <SeatTypes>
TypeNoneSub NodeYes
IDNoneIntegerYesThe ID of the SeatType
CustomerNameNoneStringYesThe customer name for the SeatType
NodeChild NodeTypeRequiredDescription <Layouts>
LayoutNoneSub NodeYesThere will be a <Layout> node for each system layout
LayoutNameNoneStringYesThe name of the layout
SectionNameNoneStringYesThe name of the section
SectionIDNoneIntegerYesThe ID of the section
SeatsSeatSub NodeYes
NodeChild NodeTypeRequiredDescription <Seat>
HideOnInternetNoneBooleanYes0 = Do not hide, 1 = Needs to be hidden
HideRowDescNoneBooleanYes0 = Do not hide row desc., 1 = hide row desc.
HideSeparatorNoneBooleanYes0 = Do not hide row/col separator, 1 = hide separator
RowIndexNoneIntegerYesThe row index of the seat
ColIndexNoneIntegerYesThe column index of the seat
RowDescNoneStringYesThe row descriptor of the seat
ColDescNoneStringYesThe column descriptor of the seat
TypeIDNoneIntegerYesThe SeatType ID for the seat
GroupIDNoneIntegerYesThe group ID for the seat
GroupDescNoneStringYesThe group description for the seat
GroupPosNoneIntegerYesThe seat position in the group
XposNoneIntegerYesThe relative X position of the seat in the layout
YposNoneIntegerYesThe relative Y position of the seat in the layout
WidthNoneIntegerYesThe relative width position of the seat in the layout
HeightNoneIntegerYesThe relative height position of the seat in the layout
AngleNoneIntegerYesThe 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>
NodeChild NodeTypeRequiredDescription <GridRef>
WidthNoneIntegerYesThe relative grid width
HeightNoneIntegerYesThe relative grid height
NodeChild NodeTypeRequiredDescription <Layouts>
LayoutNoneSub NodeYes
PricingTickets, PriceGroupsSub NodeMaybeIf request was made using SCHEDULE credentials: The <Pricing> node will contain a <Tickets> node and a <PriceGroups> node.
TicketsTicketSub NodeMaybeIf 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.
PriceGroupsPriceGroupSub NodeMaybeIf request was made using SCHEDULE credentials: There will be a <PriceGroup> node for each unique price group in the layout
SeatTypesSeatTypeSub NodeYesThere will be a <SeatType> node for each type used in this layout
SeatsSeatSub NodeYes
NodeChild NodeTypeRequiredDescription <Ticket>
CodeNoneStringYesTicket code used in purchase transactions
NameNoneStringYesTicket name as it should be displayed on the Internet
PriceNoneDecimalYesTotal ticket price
TaxNoneDecimalMaybeAny tax included in the ticket price
PointsNoneIntegerMaybeAny points that are earned when buying this ticket type
NodeChild NodeTypeRequiredDescription <PriceGroup>
CodeNoneIntegerYesThe unique ID for this PriceGroup node, this ID is what links the <Seat> to the <PriceGroup>
TicketsTicketSub NodeYesThere will be a <Ticket> node for each ticket type that is part of this PriceGroup
TicketCodeSub NodeYesEach <Ticket>will contain a node that links back to the <Tickets><Ticket> nodes under the <Pricing> node.
NodeChild NodeTypeRequiredDescription <SeatType>
TypeNoneSub NodeYes
IDNoneIntegerYesThe ID of the SeatType
CustomerNameNoneStringYesThe customer name for the SeatType
NodeChild NodeTypeRequiredDescription <SeatType>
RowNumNoneIntegerYesThe row index of the seat
ColNumNoneIntegerYesThe column index of the seat
RowDesNoneStringYesThe row descriptor of the seat
ColDesNoneStringYesThe column descriptor of the seat
SectionNoneStringYesThe section ID of the seat
TypeNoneIntegerYesThe SeatType ID for the seat
GroupIDNoneStringYesThe group ID for the seat
StatusNoneIntegerYes0 = unsold, 1 = sold, 2 = locked, 3 = held, 4 = open tab, 5 = broken, 6 = buffer
XposNoneIntegerYesThe relative X position of the seat in the layout
YposNoneIntegerYesThe relative Y position of the seat in the layout
WidthNoneIntegerYesThe relative width of the seat in the layout
HeightNoneIntegerYesThe relative height of the seat in the layout
AngleNoneIntegerYesThe angle of the seat in the layout
PriceGroupCodeNoneIntegerMaybeIf 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.

NodeChild NodeTypeRequiredDescription <Seats>
SeatsSeatSun NodeYes
NodeChild NodeTypeRequiredDescription <Seat>
RowNoneIntegerYesRow number
ColNoneIntegerYesColumn number

Reserved Seating – Check Seat Picks – Sample Response

<Response>
    <Version>1</Version>
    <ValidSelections>1</ValidSelections>
</Response> 
NodeChild NodeTypeRequiredDescription <Response>
VersionNoneCharYes1
ValidSelectionsNoneIntegerYes0 = Invalid, 1 = Valid
InvalidReasonNoneStringMaybeIf 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> 
NodeChild NodeTypeRequiredDescription <Request>
VersionNoneIntegerYes1
CommandNoneStringYesSeatChart
PerformanceIDNoneStringMaybePerformance 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> 
NodeChild NodeTypeRequiredDescription <Request>
VersionNoneIntegerYes1
CommandNoneStringYesSeatChart
MtPerformanceIDNoneStringYesMovietickets.com performance id for show
MtFilmCodeNoneStringYesMovietickets.com film code for title
ShowTimeNoneStringYesPerformance 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> 
NodeChild NodeTypeRequiredDescription <Seat>
ColDescNoneStringYesColumn description
ColNumNoneIntegerYesColumn number
RowDescNoneStringYesRow description
RowNumNoneIntegerYesRow number
SectionNoneStringYesSection name
TypeNoneIntegerYesType of seat (see seat type list)
GroupIDNoneIntegerNoGrouped seats will have the same GroupID
StatusNoneIntegerYes0 = 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.
NodeChild NodeTypeRequiredDescription <Seats>
SeatsSeatSub NodeYes
NodeChild NodeTypeRequiredDescription <Seat>
RowNoneIntegerYesRow number
ColNoneIntegerYesColumn number
SectionNoneStringYesSection name

Reserved Seating – Hold Seats – Sample Response

<Response>
    <Code>0</Code>
    <ResponseText>OK</ResponseText>
    <TransactionID>80A6F0F0-6747-4717-BF27-E2593E61818C</TransactionID>
</Response> 
NodeChild NodeTypeRequiredDescription <Response>
CodeNoneIntegerYes0 = success, or an Error Code
ResponseTextNoneStringYesOK
TransactionIDNoneStringYesUsed 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> 
NodeChild NodeTypeRequiredCollapseDescription <Request>
CommandNoneStringYesHoldSeats
DataPacketSub NodeYes
CommandNoneStringYesRelease
TransactionIDNoneStringYesTransactionID from Hold request

Reserved Seating – Release Seats – Sample Response

<Response>
    <Version>1</Version>
    <Code>0</Code>
    <ResponseText>OK</ResponseText>
</Response> 
NodeChild NodeTypeRequiredDescription <Response>
VersionNoneIntegerYes1
CodeNoneStringYes0 = success, or an Error Code
ResponseTextNoneStringYesOK


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>
NodeChild NodeTypeRequiredCollapseDescription <Response>
VersionNoneIntegerYes1
CodeNoneIntegerYes-1
PacketResponseSub NodeYes
ResponseTextNoneStringYesOK
TransactionIDNoneStringYesTransaction receipt number
PickupsPickupStringYes
TicketDayNoneStringYesDate of performance (yyyyMMddhhmm)
PickupNumberNoneStringYesNot currently used
BarCodesBarCodeStringYes
TypeNoneStringYesTransaction
CodeTypeNoneStringYesThe bar code type: UPC
BarCodeDataNoneStringYesThe 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> 
NodeChild NodeTypeRequiredDescription <Response>
StatusNoneIntegerYes0 = success, or an Error Code
SalesTaxNoneDecimalYesThe 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> 
NodeChild NodeTypeRequiredDescription <Response>
VersionNoneIntegerYes1
CodeNoneIntegerYes-1
PacketResponseSub NodeYes
CodeNoneStringYes0 = success, or an Error Code
ResponseTextNoneStringYesOK
TransactionIDNoneStringYesConfirmation for purchase


Error Codes

Error CodeError 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 CodeCollapseSeat 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

BitDecimal ValueSetting

0

1RTN Display

1

2

RTN Sell

2

4Kiosk Display

3

8No Passes

4

16Dolby Digital

5

32THX

6

64DLP

7

128Dubbed in English

8

256Subtitled in English

9

512DTS

10

1024No Discounts

11

2048Stadium Seating

12

40963D

13

819216MM

14

1638435MM

Info2

BitDecimal ValueSetting

0

13rd Party Display

1

23rd Party Sell

2

4Rentrak Transfer

3

8IMAX

4

16Flat

5

32Digital

6

64Descriptive Video Service

7

128Subtitled in French

8

256Dubbed in French

9

512French Language Film

10

102470MM

11

2048Open Caption

12

4096Closed Caption

13

8192Special Advanced Screening

14

16384Adults Only

Info3

BitDecimal ValueSetting

0

1Sign Display

1

2RESERVED / UNIMPLEMENTED

2

4RESERVED / UNIMPLEMENTED

3

8Director's Hall

4

16RWC

5

32Reserved Seating

6

64Gallery

7

128Lux Level

8

256Premier

9

512Cine Capri

10

1024Cine Art

11

2048Showcase Art

12

4096Surround Sound

13

8192Scope

14

16384DBOX

15

32768PLF

16

65536Dolby Atmos

17

131072RealD 3D

18

262144Sony 4K

19

524228DTSX

20

1048576Auro 3D

21

2097152Fedelio

22

4194304Captiview

23

8388608Audio Description

24

16777216Hearing Impaired Track

25

33554432Sensory Show

26

67108864Onyx

27

134217728Not ADA Accessible

28

268435456HFR

29

536870912Spanish Dubbed

30

1073741824Spanish Subtitled

Info4

BitDecimal ValueSetting

0

1RESERVED / 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 ...
    • Example Websites

      RTS and Example Websites RTS works on the web in two main ways. RTN websites and/or 3rd Party websites. RTN sites are sites provided with your RTS software. Your RTS server is also a web server which is one of the reasons we require port forwarding. ...
    • Getting Started with RTS: Everything you need to know

      Below is a list of links, articles and information on helping you get started with RTS and setting up your RTS Software If you click the link below you will find everything you need to know about RTS and getting started with us. You will find all of ...
    • National Cinema Day Ticket Setup Instructions

      National Cinema Day Here are step by step instructions for setting up a one-day ticket for National Cinema Day. 1. Create the Price Category and Ticket 1a). Navigate to Setup > Tickets > Price. 1b). From the Setup Ticket Price Category press ADD. ...
    • Restarting The Internet Server - How To And Why

      Restarting The Internet Server Certain actions in RTS will require, or be quickened, by a restart of the internet server. This process restarts a background service that runs in Windows on your RTS Server computer and does not actually restart the ...