Hotel guides
Money, currency and commission
Prices are integers in minor units, you settle in your wallet currency, and bookings are paid from your agency's credit. Commissionable rates also tell you what you'll earn.
Amounts are integers in minor units
Every amount is a whole number in the currency's smallest unit, next to its currency code. 48230 with USD is $482.30. Integers avoid floating-point rounding; keep them as integers until you format them for display.
// Minor units → display string. Let Intl pick the right decimals per currency.
function formatMoney(amountMinor, currency, locale = 'en-GB') {
const digits = new Intl.NumberFormat(locale, { style: 'currency', currency })
.resolvedOptions().maximumFractionDigits;
return new Intl.NumberFormat(locale, { style: 'currency', currency })
.format(amountMinor / 10 ** digits);
}
formatMoney(48230, 'USD'); // "US$482.30"You'll meet amounts in two shapes:
- Flat fields on search rows:
sellAmountMinorwithsellCurrency. - Money objects everywhere else, such as
breakdown.sell:amountMinorandcurrency. Money objects carry a few more bookkeeping fields (fxRate,roundingRuleand so on) that you can ignore.
What a price includes
| Field | Meaning |
|---|---|
breakdown.sell | The price for the rooms, dates and party you searched. On net rates this is what your agency pays. On commissionable rates you pay the published price instead (agencyCommission.grossMinor, below). |
breakdown.taxesAndFees | An estimate of the taxes and fees within sell, for display. It's already included, and it isn't the property's itemised tax bill. |
breakdown.serviceFee | Informational, and can be 0. It isn't added to the amount you're charged. |
excludedTaxes | Taxes and fees the property collects directly, such as city or tourism tax. Never included in sell. Show them to the traveller as payable at the hotel. |
Use the totals as returned. Don't rebuild a total from nightly prices or apply your own rounding. The amount you're charged is breakdown.sell on net rates and agencyCommission.grossMinor on commissionable rates, exactly.
Search in your wallet currency
Your agency's wallet has one currency, and bookings settle in it. The wallet doesn't convert between currencies, and a booking in a different currency returns 409 wallet_currency_mismatch.
- Hotels: rates that can't be priced in the currency you searched in are left out of search results.
- Flights, activities and transfers: results can come back in the inventory's own currency even when you asked for another. Check each row's
sellCurrencyand don't offer rows that differ from your wallet currency — they can't be paid from credit.
So send your wallet currency as currency on every search. To show travellers local prices, convert for display on your side and settle in the wallet currency.
Paying for bookings
Through the API, bookings are paid from your agency's credit: send paymentMethod: "credit". The amount is reserved when you book and settled against your wallet.
| Response | Meaning | Fix |
|---|---|---|
402 credit_limit_exceeded | Available credit doesn't cover this booking. | Top up your wallet or ask for a higher limit. |
403 credit_disabled | Credit payment is switched off for your agency. | Contact support. |
409 wallet_currency_mismatch | Booking and wallet currencies differ. | Search in your wallet currency. |
Net and commissionable rates
Hotels can be sold on two models:
| Model | You pay | You earn |
|---|---|---|
| Net | The net price, breakdown.sell. | Whatever margin you add when you set your client's price. |
| Commissionable | The published price, agencyCommission.grossMinor. | A commission by your agency's tier — Silver 8%, Gold 10%, Platinum 12% — which becomes payable after the guest checks out. |
Your agency's settings decide the model. If your agency lets advisors choose per booking, send rateMode: "net" or "commissionable" on the search and price-check; otherwise the field is ignored and your agency's default applies.
On commissionable hotel rates, search rows (as summary.agencyCommission) and price-checks include agencyCommission. Commission is a percentage of the published (gross) price, and its amounts are plain integers in minor units:
"agencyCommission": {
"tier": "gold",
"percent": 10,
"grossMinor": 53590,
"commissionMinor": 5359
}On a commissionable rate, grossMinor is the amount you're charged when you book. When commission doesn't apply, agencyCommission is null and agencyCommissionUnavailableReason on the price-check says why. Flights, activities and transfers are always sold net.