Purpose
This article will outline what is needed to replace your
existing Vault integration with a VostroPay (Till Payments) integration. You will have the choice
of either taking a payment at the time of booking or saving card details to be
charged in the future (like your existing Vault implementation).
We have two options to choose from:
- Simple Integration - our API will do most of the work for you (saving card details for future payments, no payments can be taken yet using this integration)
- Full Control Integration - you will integrate directly with the Payment Gateway and have full control over styling, display and event handling, and be able to take a payment at the time of booking.
OPTION 1 - Simple Integration
This option is the quickest and easiest way to get up and running with VostroPay in your website. Note that this option will create a credit card registration token which will allow you to create payments and authorisations via RCM later in the booking process. This option will not take a payment.
1. Start the Transaction
After your API booking call has succeeded, call our v3.2 API method createpaymenttransaction with the following parameters:
- var jsonStr = JSON.stringify({
- "method": "createpaymenttransaction"
- , "reservationref": rcmReservationRef //the reservationref field that is returned from the booking API method
- , "paymentgatewaytype": "VOSTROPAY"
- , "transactiontype": "cardregistration"
- , "amount": 0
- , "payscenario": "1" //1=card registration taken at the time of booking, 2=card registration when quotation converted to booking, 3=card registration at any other time
- , "paysource": "your payment source here" //descriptive text for the source of this card registration, e.g. your website
- , "emailoption": "1" //0=no email, 1=default behaviour, 2=always send - if card registration is successful then the confirmation email will be sent to the customer
- });
This API method will return various fields, the one that you are interested in is the "RedirectUrl". See sample response below:

2. Load the Credit Card Input Page
Using our API response, find the "RedirectUrl" output. This is an HTML page that will have all the card entry fields. You will need to host this page within an IFrame on your own page.
e.g. HTML:
- <iframe src="about:blank" id="paymentIFrame" style="width: 100%; height: 600px;"></iframe>
e.g. Javascript:
- document.getElementById('paymentIFrame').src = data.results.RedirectUrl;
Your IFrame will display the credit card input screen as follows:

3. Listen for the Result
Your page that hosts the IFrame will need to register an event listener. The event type will be "VostroPayCallback", and the event.data will have a "result" of one of the following:
- "success" - card has been registered successfully, and recorded in RCM. Confirmation email has been sent where required.
- "error" - the card was invalid or unable to be verified. The booking remains in RCM but it may not be in its final state, e.g. depending on your system settings, it may remain as a quotation. No email is sent to the customer.
- "cancel" - the user cancelled out of the process, as above the booking may not be in its final state.
- window.addEventListener("message", receiveMessage, false);
- function receiveMessage(event) {
- if (event.data.type && event.data.type === 'VostroPayCallback') {
- var result = event.data.result;
- if (result === 'success') {
- GoToConfirmation(); //booking process has ended successfully, show a nice summary screen
- } else {
- GoToBookedWithProblem(); //card registration was unsuccessful, but the booking still exists so provide a message asking customer to (perhaps) contact you to confirm next steps
- }
- }
- }
OPTION 2 - Full Control Integration
For advanced development - you will have full control over the display, styling and event handling by interacting directly with the payment gateway APIs. You will need to call our API once the card registration/payment has been finalised.
Website Changes
We recommend reviewing Till Payment's
Gateway Documentation as a starting point. This will familiarise you with the high level concepts of the Till Payments API and prepare you for the technical integration. For API specifics, please see Till's
API Reference V3 documentation.
Till Payments Integration Options
We recommend using Till’s Javascript Integration which will
let you embed a card entry form in your website and give you the most control
over payments/collecting card details. You also have the options of Full-Page Redirect and Hosted Payment Form integrations which may be simpler to implement but won't provide as seamless of a customer experience as the Javascript integration.
- Javascript integration - The most seamless experience for customers and the most flexible integration method in terms of styling/design.
- Hosted Payment Form - The card form is embedded in an iframe and hosted by Till, keeps users in your checkout but less flexible styling options.
- Full-Page Redirect - Redirects the customer from your checkout to a Till hosted page to collect card details. The user is then redirected back to your site after the transaction is complete.
Saving Cards for Future Charges
3D Secure
RCM API Calls
You will need to pass the results from Till to RCM to
record any payments and add any collected card details for use in RCM.
Payment
To save a Till payment call the “confirmpayment” RCM API
method and pass in the following Till details:
Parameter | Value |
reservationref | Booking reference code returned from method booking. |
amount | Payment amount. |
success | Indicate if payment was successful. |
paytype | Payment type, like Visa or Mastercard. |
paydate | Payment date. |
supplierid | |
transactid | The Till transaction UUID (e.g., “abcde12345abcde12345”). |
dpstxnref | The Till transaction UUID (e.g., “abcde12345abcde12345”). |
cardholder | The cardholder’s name. |
paysource | Optional Payment Source eq. 'Payment from Web API3.x'. |
cardnumber | The last 4 digits of the card as returned by Till. |
cardexpiry | The card expiry returned by Till in the format of “MM/YY”. |
transtype | The transaction type, in this case “Payment”. |
merchfeeid | Optional Merchant Fee ID corresponding to a Merchant Fee ID setup within the system. |
payscenario | Payment scenario when calling this method, possible values are: 1= at time of original booking (default), 2=convertquote, 3=prehire e.g. editbooking. |
emailoption | Email option, 0=never send email, 1=default behaviour, 2=always send email.
|
Example request body:
{
"method": "confirmpayment",
"reservationref": "43F355C1223",
"amount": 500,
"success": true,
"paytype": "Credit Card",
"paydate": "01/01/2022",
"supplierid": 0,
"transactid": "abcde12345abcde12345",
"dpstxnref": "abcde12345abcde12345",
"cardnumber": "9969",
"cardexpiry": "01/25",
"cardholder": "John Doe",
"transtype": "Payment"
}
Card Registration Only (No Payment)
If you are only collecting the customer’s payment details for future usage, call the
“rebillingtoken” method with the following parameters:
Parameter | Value |
reservationref | Booking reference code returned from method booking |
paytype | Payment type, like visa or mastercard |
supplierid | |
paysource | Optional Payment Source eq. 'Payment from Web API3.x' |
rebillingtoken | The Till transaction UUID (e.g., “abcde12345abcde12345”). |
cardnumber | The last 4 digits of the card as returned by Till. |
cardexpiry | The card expiry returned by Till in the format of “MM/YY”. |
cardholder | The cardholder’s name. |
Example request body:
{
"method": "rebillingtoken",
"reservationref": "43F355C1223",
"paytype": "Credit Card",
"supplierid": 0,
"paysource": "Website",
"rebillingtoken": "abcde12345abcde12345",
"cardnumber": "9969",
"cardexpiry": "01/25",
"cardholder": "John Doe"
}