Booking.com Deposit Imports
Convert Booking.com payout CSV formats into VRPlatform deposits
Last Updated: 2026-07-21
Version: 1.0
Use one Booking.com payout ID or statement descriptor as the boundary for one
VRPlatform deposit. Booking.com has several payout CSV formats; detect the
format from its headers before mapping rows.
Result
For each payout group, submit one deposit with:
type: deposit- the payout ID or statement descriptor as
uniqueRef - the payout date and lowercase currency
- reservation gross lines
- separate commission, payment-fee, city-tax, and VAT lines when the source format exposes them
- reservation-number matching hints on every reservation-related line
Booking.com CSV amounts are decimal major units. Convert them to integer minor units after parsing localized separators.
Detect the CSV Format
Apply the formats in this order:
| Format | Required identifying headers | Deposit boundary |
|---|---|---|
| V4 | Transaction type, Statement Descriptor | Statement descriptor |
| V3 | Type/Transaction type, Statement Descriptor | Statement descriptor |
| V1 | Type/Transaction type without descriptor | Payout ID |
| V2 | Type | Payout ID |
Do not combine rows from different payout IDs or statement descriptors even when their payout dates match.
Header Mapping
| Booking.com value | VRPlatform field |
|---|---|
Payout ID or Statement Descriptor | Transaction uniqueRef |
Payout date | Transaction date |
Currency or Payout currency | Lowercase transaction currency |
| Format-specific reservation reference | matchReservationConfirmationCode |
V4 also contains Bank Name and Bank Account. The current composition keeps
those values as source metadata but does not send matchBankAccountLast4.
Only add a bank match when the account value has been normalized to the actual
destination account's last four digits.
V1 and V3 Lines
Find the payout summary row whose Type/Transaction type contains payout.
Skip the entire group when that row is absent. Do not turn the payout summary
row into a deposit line.
For each other row, create the applicable lines:
| Source amount | Classification |
|---|---|
Reservation Gross amount | reservation |
City tax | bookingCom_cityTax |
Commission | bookingCom_commission |
| Payment fee variant | bookingCom_paymentFee |
V3 Tax/VAT, Tax, or VAT | bookingCom_tax_vat |
V2 Lines
Use Reference number, falling back to Booking number, as the reservation
reference. Skip rows without a transaction Type, including a payout summary
row that contains only Net.
- For
Reservation, useAmountand classificationreservation. - For other transaction types, use
Amount; when it is absent, useNet. - Add separate commission, payment charge or service fee, and VAT lines.
The classifications for those additional lines are
bookingCom_commission, bookingCom_paymentFee, and bookingCom_vat.
V4 Lines
V4 groups every row by Statement Descriptor. Skip rows whose normalized
Transaction type is payout.
Create a main line from Total amount (gross) for every other row:
- use
reservationwhen the transaction type isreservation - otherwise use
bookingCom_${camelCase(transactionType)}
Then add bookingCom_paymentFee and bookingCom_vat lines when the respective
columns contain non-zero values.
Identity and Reconciliation
Build line identities from the payout identity, reservation reference, source type, field purpose, and, for V4, property ID plus row index. Stable identities allow the same CSV payout to be retried safely.
The current Booking.com formats do not all expose an equivalent authoritative payout total. Do not synthesize a balancing line. For formats that do expose a payout amount, compare it with the line sum and surface any difference before submission.
End-to-End V4 Example
{
"Payout date": "2026-07-10",
"Property ID": "14473764",
"Transaction type": "RESERVATION",
"Reservation number": "5691360725",
"Total amount (gross)": "100.00",
"Currency": "USD",
"Statement Descriptor": "ST-Q1Z2F1B6Y7V9",
"Payments Service Fee": "-2.00",
"VAT for online platform services": "-0.40"
}{
"connectionId": "00000000-0000-0000-0000-000000000002",
"data": [
{
"type": "deposit",
"currency": "usd",
"date": "2026-07-10",
"description": "Booking.com Payout (ST-Q1Z2F1B6Y7V9)",
"uniqueRef": "ST-Q1Z2F1B6Y7V9",
"lines": [
{
"uniqueRef": "reservation-ST-Q1Z2F1B6Y7V9-5691360725-14473764-0",
"amount": 10000,
"description": "RESERVATION",
"matchReservationConfirmationCode": "5691360725",
"matchLineTypeClassification": "reservation"
},
{
"uniqueRef": "reservation-ST-Q1Z2F1B6Y7V9-5691360725-14473764-0-paymentFee",
"amount": -200,
"description": "Payments Service Fee",
"matchReservationConfirmationCode": "5691360725",
"matchLineTypeClassification": "bookingCom_paymentFee"
},
{
"uniqueRef": "reservation-ST-Q1Z2F1B6Y7V9-5691360725-14473764-0-vat",
"amount": -40,
"description": "VAT for online platform services",
"matchReservationConfirmationCode": "5691360725",
"matchLineTypeClassification": "bookingCom_vat"
}
]
}
]
}Implementation Checklist
- Detect V4 before V3, then V1, then V2.
- Keep each payout ID or statement descriptor isolated.
- Parse localized decimal values before converting to minor units.
- Preserve Booking.com fee and tax signs.
- Match lines with the format's reservation-number field.
- Keep property ID in stable V4 line identities.
- Do not invent a balancing line when the CSV lacks an authoritative total.
