For the complete documentation index, see llms.txt. This page is also available as Markdown.

309 vs 409

How Atlas ancillary mapping errors 309 and 409 differ, and how to fix stale or mismatched baggage and seat productCode values.

💬 Need help? If you're stuck, ask Eva in the Help Center for instant diagnostics.

Ask Eva

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 productCode reused after a new verify

  • old productCode reused after a new offer lookup

  • itinerary 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 context

  • 409 — fix baggage-to-segment mapping

What to check first

When these errors appear, check:

  • latest sessionId or OfferId

  • latest 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.

Last updated

Was this helpful?