Feature Request: API Access to Payment Accounts & Card Charging
Y
Yair Burowski
started a topic
15 days ago
Use Case
Building an automation agent to charge OTA Virtual Credit Cards at the correct time:
Non-refundable bookings → charge immediately
Standard bookings → charge when cancellation policy window passes
The Data Already Exists
Rover already receives VCC information from OTAs via the channel manager. For example, from Booking.com:
<GuaranteeDescription>
<Text>GuaranteeType: VIRTUAL CREDITCARD, Type: PrePay,
Description: payment_on_Booking.com (Payout type: Virtual credit card)</Text>
</GuaranteeDescription>
<Comments>
<Text>You received a virtual credit card for this reservation.
You can charge it from 2025-12-13.</Text>
</Comments>
Optional filter: GET /payment_accounts?hotel_id=123&reservation_id=456&is_virtual=true
Request 3: Endpoint to Charge a Specific Payment Account
POST /bills/{bill_id}/payments/by-payment-account
A reservation may have multiple cards on file (e.g., OTA VCC + guest's personal card). The API must allow selecting which card to charge by payment_account_id.
Use Case
Building an automation agent to charge OTA Virtual Credit Cards at the correct time:
The Data Already Exists
Rover already receives VCC information from OTAs via the channel manager. For example, from Booking.com:
<GuaranteeDescription> <Text>GuaranteeType: VIRTUAL CREDITCARD, Type: PrePay, Description: payment_on_Booking.com (Payout type: Virtual credit card)</Text> </GuaranteeDescription> <Comments> <Text>You received a virtual credit card for this reservation. You can charge it from 2025-12-13.</Text> </Comments>This tells us:
GuaranteeType: VIRTUAL CREDITCARD)from 2025-12-13)Request 1: Expose Payment Account Details
GET /reservations/{id}should return:{ "payment_accounts": [ { "id": "PA_123456", "card_holder": "Bookingcom Agent", "card_type": "MC", "last_four": "1111", "expiry_month": "09", "expiry_year": "2025", "is_virtual": true, "activation_date": "2025-12-13", "guarantee_type": "VIRTUAL CREDITCARD" }, { "id": "PA_789012", "card_holder": "Jane Doe", "card_type": "VISA", "last_four": "4242", "expiry_month": "03", "expiry_year": "2027", "is_virtual": false, "activation_date": null, "guarantee_type": "CREDIT CARD" } ] }At minimum expose:
id– unique identifier to select which card to chargecard_holder– to identify VCCs by name patternis_virtual– to filter VCCs from guest cardsactivation_date– already in incoming OTA dataguarantee_type– already parsed from OTA messageRequest 2: Endpoint to List Payment Accounts
GET /payment_accounts?hotel_id=123&reservation_id=456{ "results": [ { "id": "PA_123456", "reservation_id": 456, "card_holder": "Bookingcom Agent", "card_type": "MC", "last_four": "1111", "is_virtual": true, "activation_date": "2025-12-13" }, { "id": "PA_789012", "reservation_id": 456, "card_holder": "Jane Doe", "card_type": "VISA", "last_four": "4242", "is_virtual": false, "activation_date": null } ] }Optional filter:
GET /payment_accounts?hotel_id=123&reservation_id=456&is_virtual=trueRequest 3: Endpoint to Charge a Specific Payment Account
POST /bills/{bill_id}/payments/by-payment-accountA reservation may have multiple cards on file (e.g., OTA VCC + guest's personal card). The API must allow selecting which card to charge by
payment_account_id.Request:
{ "payment_account_id": "PA_123456", // Specify which card to charge "amount": { "amount": 450.00, "currency": "PLN" }, "reference": "VCC charge - nonref policy" }Response (success):
{ "transaction_id": "TXN_789456", "status": "APPROVED", "authorization_code": "AUTH123", "amount_charged": 450.00, "charged_at": "2025-12-13T10:30:00Z", "payment_account_id": "PA_123456", "card_last_four": "1111" }Response (declined):
{ "transaction_id": "TXN_789457", "status": "DECLINED", "decline_reason": "Card not yet active", "decline_code": "NOT_ACTIVE", "payment_account_id": "PA_123456" }Summary
Is this on the roadmap?