Payment: Industry Data - airlineData
Some payment partners require additional, industry-specific details about the purchase — for example, flight details for air-travel transactions. These are submitted in the optional top-level industryData object of the Create an Intent request.
- The object is the same for both integration options — H2H and Checkout — and sits at the intent level, next to
payments/paymentIntent. - It is payment-method-agnostic: any payment method may require it, depending on the partner.
- Currently it contains
airlineData; support for other industries that require additional fields (e.g. hotels) may be added later.
| Endpoint | POST /processing/api/v1/intents |
| Integration flows | H2H and Checkout |
When it is required
industryData is optional at the schema level. Existing integrations are not affected: no field becomes globally mandatory.
It becomes mandatory when both conditions are met:
- Your merchant account is configured as a specific industry seller (set up by your account manager), and
- The intent involves a payment method that requires industry data:
- H2H — the payment is created with such a method.
- Checkout — such a method is offered on the payment form: it is listed in
paymentIntent.formDetails.displayedPaymentMethods, or it is available to your account by default when the list is omitted.
If your account is not configured for specific industry fields, you may still submit industryData — it is validated against the schema, accepted, and stored.
Which payment methods require airline data depends on your account configuration. Confirm the list with your account manager.
Validation
When the requirement applies and airlineData (or any of its required fields) is missing or invalid, the request is rejected with the standard error response and the intent is not created. Conditional requiredness is enforced even though the fields are optional in the schema.
Persistence
Airline data is stored when the intent is created and is immutable afterwards — it cannot be updated on the intent. It is not echoed in the Create an Intent response; retrieve it with Get an Intent by Id.
Object reference
industryData
| Field | Type | Required | Description |
|---|---|---|---|
airlineData | object | Conditional | Air-travel data for the intent. See when it is required. |
airlineData
| Field | Type | Required | Description |
|---|---|---|---|
pnr | string | No | Booking record locator (PNR). 5–8 uppercase alphanumeric characters, e.g. ABC123. |
passenger | object | Yes* | Passenger details. |
ticketDetails | object | Yes* | Ticket issuance details. |
tripLegs | array of objects | Yes* | Trip legs; 1–4 items. |
"Yes*" Required whenever airlineData is submitted.
passenger
| Field | Type | Required | Description |
|---|---|---|---|
firstName | string | Yes | First name. |
middleName | string | No | Middle name. |
lastName | string | Yes | Last name. |
email | string | No | Email address. |
phone | string | No | Phone number in E.164 format, e.g. +14155552671. |
dateOfBirth | date | No | Date of birth, YYYY-MM-DD. |
ticketDetails
| Field | Type | Required | Description |
|---|---|---|---|
ticketNumber | string | Yes | Ticket number. |
system | string | No | Issuing system. |
agencyCode | string | No | Agency code. |
agencyName | string | No | Agency name. |
restricted | string | Yes | Restriction code: "0" — refundable, "1" — non-refundable. |
direction | string | No | Trip direction code: "0" — one-way, "1" — round trip, "2" — multi-city (complex itinerary). |
tripLegs[]
| Field | Type | Required | Description |
|---|---|---|---|
date | date | Yes | Departure date, YYYY-MM-DD. |
time | object | No | Departure time: { "hour": 0–23, "minute": 0–59 }. |
carrier | string | Yes | Carrier code, e.g. BA. |
travelClass | string | No | Booking class code, e.g. J. |
from | string | Yes | Origin airport IATA code, e.g. LHR. |
to | string | Yes | Destination airport IATA code, e.g. LAX. |
stopover | string | No | "O" (the letter O, not zero) — stopover allowed, "X" — no stopover (connection). |
fareBasisCode | string | No | Fare basis code, e.g. SPRSVR. |
flightNumber | string | No | Flight number, e.g. 101. |
legIndex | integer | No | Position of the leg within the trip, 1–4. |
Example
H2H intent with airline data:
curl --request POST \
--url https://sandbox.carusell.world/processing/api/v1/intents \
--header 'Authorization: Bearer <token>' \
--header 'settlement-account-id: <settlement-account-id>' \
--header 'content-type: application/json' \
--data '
{
"useCheckoutForm": false,
"clientReferenceId": "1234",
"payments": [
{
"payer": {
"firstname": "Jake",
"lastname": "Yellow",
"email": "[email protected]",
"countryIsoCode": "PH"
},
"paymentInstrument": {
"paymentMethodName": "BANK_CARD_RU"
},
"submittedAmount": {
"value": 100.05,
"currency": "RUB"
},
"authCurrencyCode": "RUB",
"description": "Vertex - INTENT 1234",
"webhookUrl": "https://merchant.example.com/webhook"
}
],
"merchant": {
"name": "Mustermann",
"website": "website.io"
},
"industryData": {
"airlineData": {
"pnr": "ABC123",
"passenger": {
"firstName": "Ivan",
"middleName": "Sergeevich",
"lastName": "Petrov",
"email": "[email protected]",
"phone": "+14155552671",
"dateOfBirth": "1985-03-21"
},
"ticketDetails": {
"ticketNumber": "5552214567890",
"system": "GDS",
"agencyCode": "12345678",
"agencyName": "Example Travel",
"restricted": "0",
"direction": "OW"
},
"tripLegs": [
{
"date": "2026-08-19",
"time": {
"hour": 15,
"minute": 30
},
"carrier": "BA",
"travelClass": "J",
"from": "LHR",
"to": "LAX",
"stopover": "O",
"fareBasisCode": "SPRSVR",
"flightNumber": "101",
"legIndex": 1
}
]
}
}
}
'{
"id": "8a3f1e2d-4b5c-4f6a-9d8e-7c6b5a4f3e2d",
"clientReferenceIntentId": "1234",
"intentStatus": "CREATED",
"processingStatusCode": "CODE_PI0000",
"statusMessage": "Success",
"payments": [
{
"id": "c1d2e3f4-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"paymentMethodId": "PMCsXbOnnWmZ7TzBQ0nq0Z",
"paymentMethodName": "BankCardRU",
"submittedAmount": {
"value": 100.05,
"currency": "USD"
},
"authAmount": {
"value": 100.05,
"currency": "USD"
},
"payer": {
"id": "b7e6d5c4-3a2b-4c1d-9e8f-7a6b5c4d3e2f",
"firstname": "Jake",
"lastname": "Yellow",
"email": "[email protected]",
"countryIsoCode": "PH"
},
"paymentInstrument": {
"id": "PIhg75FfhIJl6Gxwyljh3S",
"paymentMethodId": "PMCsXbOnnWmZ7TzBQ0nq0Z",
"paymentMethodName": "BankCardRU"
},
"processingStatusCode": "CODE_PT0000",
"statusMessage": "Success",
"status": "ACCEPTED"
}
],
"industryData": {
"airlineData": {
"pnr": "ABC123",
"passenger": {
"firstName": "Ivan",
"middleName": "Sergeevich",
"lastName": "Petrov",
"email": "[email protected]",
"phone": "+14155552671",
"dateOfBirth": "1985-03-21"
},
"ticketDetails": {
"ticketNumber": "5552214567890",
"system": "GDS",
"agencyCode": "12345678",
"agencyName": "Example Travel",
"restricted": "0",
"direction": "OW"
},
"tripLegs": [
{
"date": "2026-08-19",
"time": {
"hour": 15,
"minute": 30
},
"carrier": "BA",
"travelClass": "J",
"from": "LHR",
"to": "LAX",
"stopover": "O",
"fareBasisCode": "SPRSVR",
"flightNumber": "101",
"legIndex": 1
}
]
}
}
}
The Create an Intent response does not echoindustryData. The stored data is returned by Get an Intent by Id, as shown above.
Updated 1 day ago
