Managing booking charges with Stripe payments for White Label

You can manage reservation charges and refunds via API methods. Access to payment API methods is restricted and must be enabled before use. To enable access, contact the Support Team.

Charge reservation

Use the Push_PutReservationCharge_RQ method to charge a guest's tokenized card. Credit card tokenization occurs automatically during the reservation creation process in Rentals United.

Request:

XML Path Data Type Type Description
Push_PutReservationCharge_RQ   C Root element
Push_PutReservationCharge_RQ/Authentication   C, M Authentication details
Push_PutReservationCharge_RQ/Authentication/AccessKey String M Access key
Push_PutReservationCharge_RQ/Authentication/SecretKey String M Secret key
Push_PutReservationCharge_RQ/ReservationID Integer M The unique RU identifier of the reservation
Push_PutReservationCharge_RQ/Amount Decimal O* The specific amount to charge
Push_PutReservationCharge_RQ/PercentageAmount Decimal O* Percentage of the total reservation value (0.00 to 100.00)

Note: Provide either Amount or PercentageAmount. Do not provide both in a single request.

<Push_PutReservationCharge_RQ>
    <Authentication>
        <AccessKey>[AccessKey]</AccessKey>
        <SecretKey>[SecretKey]</SecretKey>
    </Authentication>
    <ReservationID>123456</ReservationID>
    <Amount>10.29</Amount>
</Push_PutReservationCharge_RQ>

Response:

XML Path Data Type Type Description
Push_PutReservationCharge_RS   C Root element
Push_PutReservationCharge_RS/Status String M Result of the operation 
Push_PutReservationCharge_RS/Status/@ID Integer M Status ID 
Push_PutReservationCharge_RS/ResponseID String M Unique ID of the response 
Push_PutReservationCharge_RS/TransactionID String M Stripe Transaction or PaymentIntent ID
Push_PutReservationCharge_RS/AmountProcessed Decimal O Amount to be charged in this transaction.
Push_PutReservationCharge_RS/RemainingBalance Decimal O Remaining outstanding balance for the reservation
Push_PutReservationCharge_RS/PaymentAuthenticationUrl String O URL for 3DS verification (if Status ID="403")
Push_PutReservationCharge_RS/Note String O Additional information or error details

 Success response (immediate charge):

<Push_PutReservationCharge_RS>
    <Status ID="0">Success</Status>
    <ResponseID>0855309b8c4544989c2739e5bf78156a</ResponseID>
    <TransactionID>ch_6T3rtiOGXrchHklk0ANtmL8n</TransactionID>
    <AmountProcessed>60.00</AmountProcessed>
    <RemainingBalance>40.00</RemainingBalance>
</Push_PutReservationCharge_RS>

Pending Authentication (3DS Required):

Stripe may challenge the transaction for additional authorization. This occurs when the cardholder's bank requires 3D Secure (3DS) verification to authorize the transaction.

If Stripe returns an authentication_required challenge, the response includes a PaymentAuthenticationUrl hosted under the Rentals United domain. Redirect the guest to this URL to complete 3DS verification.

<Push_PutReservationCharge_RS>
    <Status>Pending Authentication</Status>
    <TransactionID>pi_6T3rtiOGXrchHklk0ANtmL8n</TransactionID>
    <PaymentAuthenticationUrl>https://rentalsunited.com/verify/unique_token</PaymentAuthenticationUrl>
    <Note>User must complete 3DS verification</Note>
</Push_PutReservationCharge_RS>

Post-Authentication Notification (webhook):

When a guest completes a deferred (3DS) payment, Rentals United will asynchronously notify your system via a webhook.

{
  "ChangeType ": "PaymentStatusUpdatedChange",
  "Timestamp": "2024-06-01T12:00:00Z",
  "Data": {
    "ReservationId": 123456,
    "IsSuccess": true,
    "TransactionId ": "tzn_hgjkg456",
    "Amount ": 60.00,
    "Currency ": "USD"
  }
}

Refund transaction

Use the Push_PutReservationRefund_RQ method to refund the transaction If you charge a reservation in multiple transactions, you can refund each of the transactions separately. Each transaction can be refunded only once.

Request:

XML Path Data Type Type Description
Push_PutReservationRefund_RQ   C Root element
Push_PutReservationRefund_RQ/Authentication   C,M Authentication details
Push_PutReservationRefund_RQ/Authentication/AccessKey String(100) M Access key
Push_PutReservationRefund_RQ/Authentication/SecretKey String(100) M Secret key
Push_PutReservationRefund_RQ/ReservationID  Integer M Unique reservation ID
Push_PutReservationRefund_RQ/TransactionID String(32) M Unique Stripe transaction ID
<Push_PutReservationRefund_RQ>
    <Authentication>
        <AccessKey>[AccessKey]</AccessKey>
        <SecretKey>[SecretKey]</SecretKey>
    </Authentication>
    <ReservationID>123456</ReservationID>
    <TransactionID>tzn_hgjkg456</TransactionID>
</Push_PutReservationRefund_RQ>

Response:

XML Path Data Type Type Description
Push_PutReservationRefund_RS   C Root element
Push_PutReservationRefund_RS/Status String   M See [`ListStatuses`](#list-statuses) 
Push_PutReservationRefund_RS/Status@ID Integer M See [`ListStatuses`](#list-statuses) 
Push_PutReservationRefund_RS/ResponseID String(32) M Unique response ID 

Success response:

<Push_PutReservationRefund_RS>
   <Status ID="0">Success</Status>
   <ResponseID>0123456789ABCDEF0123456789ABCDEF</ResponseID>
</Push_PutReservationRefund_RS>

Retrieve payment history

Use the Pull_ListTransactions_RS method to retrieve a detailed history of all payment attempts and current transaction statuses for a specific reservation.

Request:

XML Path Data Type Type Description
Pull_ListTransactions_RQ   C Root element
Pull_ListTransactions_RQ/Authentication   C, M Authentication details
Pull_ListTransactions_RQ/Authentication/AccessKey String M Access key
Pull_ListTransactions_RQ/Authentication/SecretKey String M Secret key
Pull_ListTransactions_RQ/ReservationID Integer M The unique RU identifier of the reservation
<Pull_ListTransactions_RQ>
    <Authentication>
        <AccessKey>[AccessKey]</AccessKey>
        <SecretKey>[SecretKey]</SecretKey>
    </Authentication>
    <ReservationID>12345678</ReservationID>
</Pull_ListTransactions_RQ>

Response:

XML Path Data Type Type Description
Pull_ListTransactions_RS   C Root element
Pull_ListTransactions_RS/Status String M Result of the operation 
Pull_ListTransactions_RS/Status/@ID Integer M Status ID 
Pull_ListTransactions_RS/ResponseID String M Unique ID of the response 
Pull_ListTransactions_RS/Reservation   C, M Details of the reservation the transactions belong to
Pull_ListTransactions_RS/Reservation/ReservationID Integer M Unique reservation ID
Pull_ListTransactions_RS/Reservation/RemainingBalance Decimal M Remaining outstanding balance for the reservation
Pull_ListTransactions_RS/Reservation/CurrencyCode String M Currency code of the remaining balance (e.g., EUR)
Pull_ListTransactions_RS/Transactions   C, M Collection of transaction records
Pull_ListTransactions_RS/Transactions/Transaction   C, O Individual transaction details
Pull_ListTransactions_RS/Transactions/Transaction/TransactionID String M Stripe Transaction ID
Pull_ListTransactions_RS/Transactions/Transaction/TransactionDate DateTime M Date and time when the transaction occurred
Pull_ListTransactions_RS/Transactions/Transaction/Amount Decimal M Amount processed in this specific transaction
Pull_ListTransactions_RS/Transactions/Transaction/CurrencyCode String M Currency code of the transaction
Pull_ListTransactions_RS/Transactions/Transaction/Status String M Current status of the transaction (e.g., Success, Deferred)
Pull_ListTransactions_RS/Transactions/Transaction/Type String M Type of transaction (e.g., PayIn)
<Pull_ListTransactions_RS>
    <Status ID="0">Success</Status>
    <ResponseID>daf280680c3542f8a98485e873112c51</ResponseID>
    <Reservation>
        <ReservationID>12345678</ReservationID>
        <RemainingBalance>45.5000</RemainingBalance>
        <CurrencyCode>EUR</CurrencyCode>
    </Reservation>
    <Transactions>
        <Transaction>
            <TransactionID>ch_3TCcamEwrhSRv1Kq1mpQtquT</TransactionID>
            <TransactionDate>2026-01-01 09:10:12</TransactionDate>
            <Amount>50.0000</Amount>
            <CurrencyCode>EUR</CurrencyCode>
            <Status>Success</Status>
            <Type>PayIn</Type>
        </Transaction>
        <Transaction>
            <TransactionID>pi_3T7vHYEwrhSRv1Kq1V3CEUMh</TransactionID>
            <TransactionDate>2026-01-01 10:06:56</TransactionDate>
            <Amount>30.0000</Amount>
            <CurrencyCode>EUR</CurrencyCode>
            <Status>Deferred</Status>
            <Type>PayIn</Type>
        </Transaction>
        <Transaction>
            <TransactionID>ch_3TCdBIEwrhSRv1Kq0yk3ptBj</TransactionID>
            <TransactionDate>2026-01-01 11:47:56</TransactionDate>
            <Amount>4.5000</Amount>
            <CurrencyCode>EUR</CurrencyCode>
            <Status>Success</Status>
            <Type>PayIn</Type>
        </Transaction>
    </Transactions>
</Pull_ListTransactions_RS>

FAQ

We're considering charging the full amount 30 days before the stay. Is there any constraint from the channel side we should be aware of? Or are we fully free to define our own charge timing rules? Expedia and Booking.com very often activate virtual credit cards on the day of the check in. So if you attempt to charge 30 days before arrival, the charge will be rejected. After a reservation is made, our RLNM notification includes details about the VCC activation date, so you can design appropriate rules.  See Viewing credit card details for non-PCI compliant partners.

Is the refund always for the full transaction amount or are partial refunds supported? You must provide the Transaction ID when processing refunds. If one booking was split into two charges - 50% at the moment of booking and 50% at 10 days before arrival, then these are two separate transactions and you must refund them separately (they will have two separate Transaction IDs). However you can’t partially refund the first charge (for example refund only 25%). 

If a reservation is modified and the total price changes, how should we handle it? You should make the new charge. The system will not allow you to charge more than the reservation value. 

Will the API be available in a staging environment so we can test the integration before going live? It won’t be available in staging, but you can create test bookings on the channel to test the integration and then proceed with the refunds. 


 

Was this article helpful?
0 out of 0 found this helpful