Skip to main content
On this page

DEUNA treats airline booking data as part of the order—not as an opaque metadata blob. Preserve the commercial and travel context used by payment providers, fraud controls, reconciliation, and customer operations.

Complete airline order payload#

Use AIRLINE_ORDER and include airline_information.booking_items. The example mirrors the airline model supported by the order and payment services.

Complete order payload

Airlines

PNR, passenger, ticket, itinerary, fare, tax, and ancillary data in a typed airline order.

airline_informationbooking_itemslegsancillaries
Request bodyJSON
{
  "order_type": "AIRLINE_ORDER",
  "order": {
    "order_id": "pnr-N7K4Q2",
    "store_code": "web-eu",
    "currency": "EUR",
    "items_total_amount": 52000,
    "sub_total": 52000,
    "total_tax_amount": 9200,
    "total_amount": 61200,
    "items": [
      {
        "id": "ticket-0741234567890",
        "name": "Madrid to Paris",
        "description": "Economy Flex airfare with one checked bag",
        "quantity": 1,
        "category": "airfare",
        "taxable": true,
        "unit_price": {
          "amount": 52000,
          "currency": "EUR",
          "currency_symbol": "€"
        },
        "total_amount": {
          "amount": 52000,
          "original_amount": 52000,
          "currency": "EUR",
          "currency_symbol": "€",
          "total_discount": 0
        },
        "tax_amount": {
          "amount": 9200,
          "currency": "EUR",
          "currency_symbol": "€"
        }
      }
    ],
    "airline_information": {
      "booking_items": [
        {
          "pnr": "N7K4Q2",
          "ticket_number": "0741234567890",
          "e_ticket": true,
          "airline_3_digit_code": "074",
          "airline_iata_designator": "UX",
          "reservation_system_code": "AMADEUS",
          "ticketing_travel_agency": {
            "iata_code": "91234567",
            "name": "DEUNA Travel",
            "agency_invoice_number": "INV-2026-00421"
          },
          "passenger": {
            "user_id": "traveler-8821",
            "first_name": "Alex",
            "middle_name": "",
            "last_name": "Morgan",
            "title": "Mx",
            "date_of_birth": "1990-06-25",
            "document_type": "passport",
            "identity_document_number": "PA1234567",
            "document_number": "PA1234567",
            "email": "alex@example.com",
            "phone": "+34600000000",
            "frequent_flyer_code": "UX008821",
            "country_code": "ES",
            "type": "ADT"
          },
          "legs": [
            {
              "origin": {
                "iata_code": "MAD",
                "date": "2026-11-14",
                "time": "09:10",
                "city": "Madrid",
                "country_code": "ES"
              },
              "destination": {
                "iata_code": "ORY",
                "date": "2026-11-14",
                "time": "11:05",
                "city": "Paris",
                "country_code": "FR"
              },
              "carrier_code": "UX",
              "carrier_name": "Air Europa",
              "flight_number": "UX1027",
              "seat_location": "12A",
              "fare_basis_code": "YFLEX",
              "stopover_code": "O",
              "sub_total_amount": 48500,
              "tax_amount": 9200,
              "total_amount": 57700,
              "service_class": "Y",
              "airport_tax_amount": 4700
            }
          ],
          "ancillaries": [
            {
              "type": "BAGGAGE",
              "ticket_number": "0741234567890",
              "total_amount": 3500,
              "service_category": "baggage",
              "description": "One checked bag",
              "category_code": "BG",
              "sub_category_code": "23K",
              "fee_code": "0CC",
              "unit_price": 3500
            }
          ]
        }
      ]
    },
    "payer_info": {
      "email": "alex@example.com",
      "date_of_birth": "1990-06-25T00:00:00Z"
    },
    "description": "N7K4Q2 · MAD–ORY",
    "statement_descriptor": "DEUNA TRAVEL",
    "channel_type": "desktop_web",
    "metadata": {
      "vertical": "airline",
      "sales_channel": "direct",
      "loyalty_tier": "gold"
    },
    "callback_urls": {
      "on_success": "https://merchant.example.com/payments/success",
      "on_pending": "https://merchant.example.com/payments/pending",
      "on_reject": "https://merchant.example.com/payments/rejected",
      "on_canceled": "https://merchant.example.com/payments/canceled",
      "on_failed": "https://merchant.example.com/payments/failed"
    }
  }
}

Model the business context#

RequirementOrder fields
Booking and ticketpnr, ticket_number, e_ticket, reservation_system_code
Passengerpassenger identity, contact, type, and frequent-flyer fields
Flightlegs[].origin, destination, carrier_code, flight_number, service_class
Fare and taxesLeg and order subtotal, tax, airport tax, and total amounts
Ancillariesancillaries[] type, service category, ticket, fee code, and amount

Production checklist#

  • Map one booking_item per passenger and ticket relationship used by your reservation system.
  • Use IATA airport and airline designators consistently.
  • Reconcile order, leg, tax, ancillary, and grand totals in minor currency units.
  • Keep personally identifiable passenger data limited to the fields required by the flow.
  • Test authorization, 3DS, delayed capture, cancellation, refund, and itinerary-change scenarios.

Continue with 3DS authentication, capture and refund workflows, and Process an order payment.