309 vs 409
How Atlas ancillary mapping errors 309 and 409 differ, and how to fix stale or mismatched baggage and seat productCode values.
Use this page when ancillary selection fails because the current productCode may be stale or mapped to the wrong segment.
Short answer
309 means the ancillary productCode is invalid or stale.
409 means the baggage productCode does not match the target flight segment.
Both are ancillary mapping problems.
Neither should be retried unchanged.
FAQ
What does 309 usually mean?
It means the selected ancillary is no longer valid in the current booking context.
Use the latest ancillary response and rebuild the request.
What does 409 usually mean?
It means the baggage product is mapped to the wrong segment.
Check segment-level baggage mapping again.
Does a new sessionId or OfferId affect ancillary codes?
Yes.
A new booking context can make old ancillary codes stale.
Core difference
309 — ancillary not found
What it usually means
The selected ancillary code is invalid for the current booking context.
Typical reasons
old
productCodereused after a new verifyold
productCodereused after a new offer lookupitinerary or passenger mix changed
ancillary data was cached too long
Next action
Refresh ancillaries from the current context.
Then use only the returned productCode values.
409 — baggage code does not match the segment
What it usually means
The baggage productCode does not belong to the target flight segment in the order request.
Typical reasons
segment mapping is off
connected-flight baggage was assigned inconsistently
baggage code from one segment was used on another
Next action
Recheck segment mapping.
Then rebuild baggage selection for the correct segment structure.
Quick decision rule
Use this rule in production:
309— refresh ancillary context409— fix baggage-to-segment mapping
What to check first
When these errors appear, check:
latest
sessionIdorOfferIdlatest baggage or seat response
segment structure in the booking request
whether connected segments use a consistent baggage choice per direction
Common mistakes
Reusing ancillaries after a new verify
Do not do this.
A new sessionId can invalidate the old ancillary context.
Reusing baggage codes across different segments
Do not do this.
A valid baggage code for one segment may be invalid for another.
Treating 409 like a generic stale-code error
Do not do this.
It is usually a segment-mapping problem.
Best practice
Keep ancillary lookup close to order.do.
If the booking context changed, rerun ancillary lookup before building the order.
Related pages
Last updated
Was this helpful?

