A price that is looked up and a price that is calculated look identical on a screen. Everything else about them is different: how long they last, what they depend on, whether they can be compared, and what happens when the traveller takes ten minutes to make up their mind.
In short
Dynamic offer pricing means an offer is built for each request rather than looked up from a published table. The price reflects the itinerary, the timing, and the context of the request at the moment it is made. That makes offers more relevant, and also shorter lived and harder to compare.
Looked up, or constructed
The traditional model is a filing. Prices and rules are published ahead of time, distributed, and read by everyone downstream. The price for a given route, cabin, and date band exists before anyone asks for it, and it stays put until the next refresh.
The constructed model inverts that. Nothing exists until the request arrives. A system takes the itinerary, the passenger context, the channel, and current conditions, then returns an offer that was assembled for that request and no other.
| What differs | Filed and looked up | Constructed per request |
|---|---|---|
| Where the price comes from | A filed table, refreshed on a schedule | A calculation run at request time |
| What it accounts for | Route, cabin, booking class, date bands | The specific itinerary, timing, and context |
| Number of distinct prices | A fixed grid | Effectively continuous |
| How long it holds | Until the next refresh | Seconds to minutes |
| Comparing two sellers | Straightforward | Only meaningful at the same instant |
| Caching | Safe and worthwhile | Risky beyond a short window |
| Reconstructing a past price | Reproducible from the filing | Only from what you recorded |
Why the industry is moving this way
Three pressures push in the same direction, and none of them is a technology argument.
The first is granularity. A filed grid has a fixed number of rungs, and revenue management has wanted more rungs than the grid allows for a long time. Continuous pricing is what you get when the grid is removed entirely and the price becomes a function rather than a lookup.
The second is combinatorial. Unbundling created so many permutations of fare, brand, and extra that publishing every combination in advance stopped being sensible. It is easier to compute the answer for the case in front of you than to enumerate every case in advance.
The third is retailing language. Airlines increasingly describe themselves as retailers rather than as transport providers, and retailers construct offers. Standards such as NDC were designed around a request producing an offer, which makes the constructed model the natural shape rather than an awkward one.
What it changes for an intermediary
If you display offers you did not construct, dynamic pricing moves work onto your side of the boundary. The offer arrives with a shelf life, and a shelf life is a user interface problem before it is an engineering one.
Treat expiry as content, not as an error state
If the offer has a validity window, the traveller should be able to see it. An offer that quietly stops being real is worse than one that visibly counts down.
Re-price immediately before taking money
The check that matters is the last one. Anything earlier is an estimate, however recent it feels.
Record the offer you actually showed
A constructed price cannot be reconstructed later from the filing, because there is no filing. If you did not store what you displayed, you cannot answer a dispute about it.
Fail forward, not silently
When the price has moved, show the new one and say so. Silently substituting a different number is the behaviour that destroys trust in a post-booking cart.
The honest trade-offs
Constructed offers are better for relevance and worse for almost everything that depends on stability.
Comparison suffers first. A traveller who opens two tabs is not comparing two prices for one product, they are comparing two snapshots taken at different instants. Neither seller is being dishonest and the traveller still ends up confused.
Explaining a price gets harder. When a figure comes from a filing, you can point at the filing. When it comes from a calculation, the honest answer to why it changed is that the inputs changed, which is true and deeply unsatisfying.
Testing gets harder too. A grid can be enumerated. A function has to be sampled, and the interesting behaviour tends to live in the parts nobody sampled.
What it does not change
The traveller still has to understand what they are buying, still has to be shown a total that includes everything, and still has to end up with a booking that reflects the purchase. Dynamic offer pricing changes where the number comes from. It does not lower the bar for presenting it clearly, and if anything it raises it, because the traveller has less ability to check the number for themselves.
Frequently asked questions
What is dynamic offer pricing?
It is pricing where an offer is constructed at the moment it is requested, using the specific itinerary and context, rather than read from a table that was filed in advance and refreshed on a schedule.
How is it different from dynamic pricing generally?
Dynamic pricing describes a price that moves. Dynamic offer pricing describes where the price comes from: a calculation run per request, producing an offer that exists for that request and then expires.
How long does a dynamically priced offer stay valid?
Long enough to decide, not long enough to shop around. Validity is set by whoever built the offer and is usually measured in minutes, which is why an expiry has to be part of how the offer is displayed.
Can you cache a dynamically priced offer?
Only inside its stated validity, and only for the request it was built for. Anything longer risks showing a price that no longer exists, which becomes a failure at payment rather than a failure in the display.
Does dynamic offer pricing make comparison impossible?
Not impossible, but much harder. Two constructed offers are comparable only if they were built at close to the same moment for close to the same context, which no comparison screen can promise.