LUNA CONTRACTING
LIVE
Check the price. Hold the available space.
Configure rates and selling rules, then check the dates, party and available product. The booking flow rechecks availability at hold and returns the expiry time for confirmation.
Illustrative hold check
Cardiff to Southampton · 1 left
Hold A · example successful hold
Space held for this example. Use the returned expiry time to complete confirmation.
Hold B · example refused hold
Availability changed. Nothing written, nothing half made.
CHECK THE HOLD RESPONSE
Availability is checked again at hold. Read the response and expiry before confirming the booking.
Markup
Allocation
Stop sales
Minimum stay
Net or gross, on every rate row.
Net means you enter the cost and add a markup, a percentage or a fixed amount. Gross means you enter the sell price and record your commission inside it. Both are stored, so cost, sell and margin are always known.
The published API returns sell-side prices and breakdowns. It does not expose the contract’s cost, markup, commission or margin.
One markup for a whole sheet, with a warning if rows use mixed settings
Extras across every family, compulsory or optional, prepaid or paid locally
Only Active contracts sell: draft, active, expired, archived
Rate basis
Villa Aegean · Peak
Row
Basis
You enter
Engine records
Double BB
Net
€162
+22% markup
Sell €197.64
cost, sell, margin
Twin HB
Gross
€217
12% commission
Cost €190.96
sell, commission
Validity
contract
1 May to 31 Oct 2027
Sell window
separate from validity
1 Nov 2026 to 31 Oct 2027
Status
only Active sells
Active
Check prices across the dates you sell.
Review the price breakdown for the product and journey. Include a stay across two seasons in your checks, so you can confirm which rate applies to each night.
If a night was covered only by a wider season, the quote says so, in words, on the quote.
Children by real age band, then free, fixed or a percentage of the adult rate, per night
Supplements with four independent scopes at once
Date surcharges that apply before markup
Quote working
Blue Bay Resort · 5 nights · 2 adults
Wed 29 Apr · Shoulder
£118
Thu 30 Apr · Shoulder
£118
Fri 1 May · Peak
£162
Sat 2 May · Peak · weekend supplement
£182
Sun 3 May · wider season only
£140
Sell total
Illustrative nightly sell prices
£720
Sunday 3 May fell back to the wider season
Load a Peak rate for it, or accept the wider price.
Check the selling price and the booking conditions
A price is only useful when its dates, occupancy, currency and conditions are clear. Use these checks with your own contract before opening the product for sale.
Markup and margin use different starting points
Here is an illustrative calculation: a net cost of £250 with a 20% markup gives a selling price of £300. The £50 difference is 16.67% of the selling price. That is why a markup percentage and a margin percentage should not be used interchangeably.
For a separate gross-rate example, a £300 selling price with 15% commission gives £45 commission and a £255 cost. These are simple examples, before other charges or adjustments. Compare the configured rule with your supplier agreement.
Keep the contract currency visible
The API conventions return amounts in each product’s contract currency and do not convert them. A response can therefore include different currencies. Confirm how your own website displays and collects payment before combining amounts in a total.
Check a cross-season stay and the actual party. Accommodation rules include room capacity, child ages and stay restrictions. Use the returned breakdown to compare the result with the source rates and review any local charge separately.
Understand what reserves inventory
Search results describe what was available when the response was produced. The booking flow checks availability again at hold. Read the returned expiry values and finish confirmation within the permitted window; a displayed price alone does not reserve the product.
The booking reference describes automatic expiry of unconfirmed holds. Follow the returned expiry time instead of building a checkout around an assumed fixed duration.
Test each product’s rules
Availability checks vary by product. The documentation describes accommodation inventory and occupancy controls, while its car-hire section describes contract dates, rate tiers and driver eligibility. Agree the actual capacity controls for the product you intend to sell.
Include a sold-out or closed date, a rejected occupancy and an expired hold in your test plan where applicable. These checks show what the traveller and your team will see when a booking cannot proceed.
Sources reviewed on 20 October 2026: Contracting API conventions, availability and booking flow and product coverage. The calculations and product illustrations on this page are examples, not supplier offers.
Check the inventory rules for each product.
The booking flow checks the selected product again at hold. Capacity and eligibility rules vary by product family.
Accommodation availability
The API reference describes room inventory, reservations, stop-sales, closures and occupancy checks. Review the applicable contract and dates before confirming.
Departure availability
For a tour, coach or train, check the chosen departure and its bookable status. Test a full or closed departure as well as one with available space.
Per-seat holds
Where seat selection is supported, use the returned seat information and check the response to the hold request.
Netted against everything at once
Accommodation availability nets the API holds, the property’s own in-app diary and room closures together.
Abandoned holds release themselves
An unconfirmed hold expires at the returned expiry time and releases its reserved inventory.
Capacity semantics are explicit
Check capacity and eligibility against the relevant product’s documentation and account setup.
Search it exactly like your customer will.
A search screen per product. Put in a date and a party and see what a customer would see: live prices, seats left, passenger type columns, the party total and a working Book button. Open the seat picker and choose a seat.
Price check on accommodation, car hire and transfers runs a real stay and shows the full working line by line, including the margin. Traveller preview shows a property exactly as it appears in a search.
The same engine your website uses
Spot an underprice or a missed child rate before anyone can buy it
Compare the result with your source contract before opening sales.
Coach search
Example journey · 2 adults, 1 child
Pick-up
Adult
Child
Seats left
Cardiff 06:15
£34.50
£22.00
18
Barry 06:40
£27.60
£18.00
18
Bristol 07:30
£24.20
£16.00
18
Party total from Cardiff
2 adults, 1 child
£91.00
Book
Questions people ask
What happens when two people book the last seat?
The booking flow rechecks availability at hold. Handle an availability-changed response by refreshing the quote and asking the traveller to review the available option.
How long does a hold last?
Read the expiry time returned with the hold. Confirm within that window; an expired hold needs a fresh quote and hold.
How are children priced?
By real age band, then by a rule that can be free, a fixed amount or a percentage of the adult rate, recalculated per night. If no band covers a child, the loader tells you before it saves.
Does the engine convert currencies?
No. Each contract prices in its own currency and a single response can contain several. Live contracts in two currencies are flagged on the readiness panel.
Review your rates and availability setup.
Luna Contracting is live for Travelgenix customers. Contact your account manager to switch it on, or book a demo if you are new to Travelgenix.
More about Luna Contracting