Public preview
Industry metadata Public preview
Learn how to provide data specific to travel and entertainment purchases.
Available with public preview header
You can use this public preview feature by including the version header 2026-07-29.preview or a later preview version header in your API request.
Use industry metadata in the Payment Intents API to provide required industry-specific data for transactions in supported travel and entertainment industries.
Providing industry-specific data is required for certain merchant category codes to comply with card network requirements and might improve authorisation rates and risk assessment on Klarna transactions.
Implement industry metadata for card payments if your business operates under specific travel and entertainment merchant category codes (MCCs), such as car rental, lodging, travel agency, or airline codes listed in Availability.
Availability
Providing industry-specific data is only available to users of PaymentIntents and is limited to the following Merchant Category Codes (MCCs).
- Car Rental : 3351-3441, 7512, 7513, 7519
- Lodging : 3501-3999, 7011
- Travel Agency : 4722
- Flight : 4511
You can submit industry metadata for payments with specific card brands (Visa, Mastercard, Amex and Discover) and Klarna.
Klarna-specific verticals
In addition to car rentals, lodging, and flights, Klarna supports additional industry-specific verticals that aren’t available for card payments, including:
- Events (concerts, festivals, sports and conferences)
- Insurance (standalone insurance policies)
- Train, bus and ferry transportation
- Organised trips and tours
- Vouchers
- Marketplace sellers
Learn more about these Klarna-exclusive verticals in the Klarna supplementary purchase data documentation.
Private preview for cards
Industry Metadata is in private preview for card transactions and public preview only for Klarna. Additionally, card transactions don’t support passing cruise data.
Send industry-specific data
You send industry-specific data through the payment_details parameter when you create, update or confirm a PaymentIntent.
The payment_details hash contains an array of hashes for each vertical (industry category): car_rental_data, lodging_data, and flight_data.
Each hash in these arrays represents an individual car rental, lodging stay or flight ticket.
Refer to Create a PaymentIntent to learn more about passing data.
Array processing behaviour
Payment methods handle multiple bookings differently:
- Cards: Only the first entry in each array (
car_rental_data[0],lodging_data[0],flight_data[0]) is sent to card networks. Additional entries are ignored and aren’t used for card network compliance. - Klarna: All entries in each array are processed and used in Klarna’s risk assessment and authorisation decisions.
For card transactions with multiple bookings (such as multiple hotel stays or car rentals), create separate PaymentIntents for each booking to ensure all transaction data is properly sent to card networks.
This section is organised into three property categories for each vertical:
- General supported properties : Base fields that all payment methods support. These fields define the core API structure.
- Additional supported properties for cards : Extra fields that card networks use in addition to general properties. When processing card payments, use fields from both the “General” and “Cards” categories.
- Additional supported properties for Klarna : Extra fields that Klarna uses in addition to the general properties. When processing Klarna payments, use fields from both the “General” and “Klarna” sections.
Cards and Klarna use different properties and validation rules. Properties sent to one payment method that aren’t supported are ignored.
The following tabs describe the car_rental_data, lodging_data and flight_data hashes:
General supported properties
The Stripe API supports the following properties, which all card and Klarna transactions use.
The fields listed below are nested under payment_details.car_rental_data. See the full code example for how to structure your API request.
Required fields for car rentals
The following are the minimum required fields for all car rental transactions:
- pickup. address. line1
- pickup. address. city
- pickup. address. postal _ code
- pickup. address. country
- pickup. time
- drop _ off. address. line1
- drop _ off. address. city
- drop _ off. address. postal _ code
- drop _ off. address. country
- drop _ off. time
- total. amount
These are additional fields that are required for card transactions:
- pickup. address. state (when applicable to the country)
- drop _ off. address. state (when applicable to the country)
- booking _ number
- days _ rented
- customer _ service _ phone _ number
- renter _ name
- vehicle. type
- vehicle. make
- vehicle. model
| Property name | Type | Description | Format |
|---|---|---|---|
pickup.address.line1 | String | First line of the car pickup address (street, PO Box, or company name) | Required property Alphanumeric Maximum length: 99 characters |
pickup.address.postal_code | String | Postal code of the car pickup address | Required property Alphanumeric Maximum length: 10 characters |
pickup.address.city | String | City, district, suburb, town or village of the car pickup address | Required property Alphanumeric Maximum length: 99 characters |
pickup.address.country | String | Country code of the car pickup address | Required property Must be a valid ISO 3166-1 alpha-2 country code |
pickup.time | Timestamp | Car pickup time | Required property Seconds since the Unix epoch Must be between 2 years ago and 2 years from now |
drop_off.address.line1 | String | First line of the car drop off address (street, PO Box, or company name) | Required property Alphanumeric Maximum length: 99 characters |
drop_off.address.postal_code | String | Postal code of the car drop off address | Required property Alphanumeric Maximum length: 10 characters |
drop_off.address.city | String | City, district, suburb, town or village of the car drop off address | Required property Alphanumeric Maximum length: 99 characters |
drop_off.address.country | String | Country code of the car drop off address | Required property Must be a valid ISO 3166-1 alpha-2 country code |
drop_off.time | Timestamp | Car drop off time | Required property Seconds since the Unix epoch Must be between 2 years ago and 2 years from now |
total.amount | Integer | Price of the overall car rental in the smallest currency unit | Required property Minimum: 0 |
pickup.address.state | String | State, county, province or region of the car pickup address | Required for cards Conditional validation 1 Alphanumeric Maximum length: 99 characters |
drop_off.address.state | String | State, county, province or region of the car drop off address | Required for cards Conditional validation 2 Alphanumeric Maximum length: 99 characters |
pickup.address.line2 | String | Second line of the car pickup address (street, PO Box or company name) | Alphanumeric Maximum length: 99 characters |
drop_off.address.line2 | String | Second line of the car drop off address (street, PO Box, or company name) | Alphanumeric Maximum length: 99 characters |
carrier_name | String | Name of the car rental company | Alphanumeric Maximum length: 255 characters |
vehicle.vehicle_class | String | Tier of rented vehicle | One of economy, premium_economy, business or first_class |
affiliate.name | String | Name of the affiliate that initiated the purchase | Alphanumeric Maximum length: 255 characters |
1 pickup.address.state must be a valid state in pickup.address.country for card transactions
2 drop_off.address.state must be a valid state in drop_off.address.country for card transactions
Additional supported properties for cards
Cards support the general supported properties and also use the following properties. Klarna won’t see these properties and they won’t improve authorisation rates or risk assessment for Klarna transactions.
| Property name | Type | Description | Format |
|---|---|---|---|
booking_number | String | Booking confirmation number for the car rental | Required for cards Alphanumeric Maximum length: 255 characters |
days_rented | Integer | Number of days the car was rented | Required for cards Minimum: 1 Maximum: 999 |
customer_service_phone_number | String | Phone number for the car rental company’s customer service | Required for cards In live mode, you must use a valid phone number. Begin non-US numbers with + and include the country code. If a US number begins with +, use country code 1 followed by the 10-digit number. In a sandbox, you can also use all zeros ( 0000000000) |
renter_name | String | Name of the person renting the vehicle | Required for cards Maximum length: 198 characters |
vehicle.type | String | Code indicating the vehicle’s class | Required for cards One of mini, subcompact, economy, compact, midsize, intermediate, standard, full_size, luxury, premium, minivan, twelve_passenger_van, moving_van, fifteen_passenger_van, cargo_van, twelve_foot_truck, twenty_foot_truck, twenty_four_foot_truck, twenty_six_foot_truck, moped, stretch, regular, unique, exotic, small_medium_truck, large_truck, small_suv, medium_suv, large_suv, exotic_suv, four_wheel_drive, special, taxi, or miscellaneous |
vehicle.make | String | Brand of car that was rented | Required for cards Alphanumeric Maximum length: 40 characters |
vehicle.model | String | Model of car that was rented | Required for cards Alphanumeric Maximum length: 40 characters |
distance.amount | Integer | Distance travelled during the car rental period | Conditionally required property 1 Minimum: 0 |
distance.unit | String | Unit of distance for the distance travelled | Conditionally required property 1 One of miles or kilometers |
no_show_indicator | Boolean | Indicates if the customer failed to show up for their booking | true or false |
pickup.location_name | String | Location where the car rental was picked up | Alphanumeric Maximum length: 38 characters |
drop_off.location_name | String | Location where the car rental was dropped off | Alphanumeric Maximum length: 38 characters |
drivers[].driver_identification_number | String | Driver’s license or ID number belonging to the authorised driver in the car rental agreement | Alphanumeric Maximum length: 20 characters This personally identifiable property isn’t required |
drivers[].driver_tax_number | String | Tax identification number of the authorised driver in the car rental agreement | Alphanumeric Maximum length: 20 characters This personally identifiable property isn’t required |
total.rate_per_unit | Integer | Rate charged for each unit of distance or time travelled | Minimum: 0 |
total.rate_unit | String | Unit used to calculate the rate per unit travelled | One of miles, kilometers, days, weeks, or months |
total.tax.tax_exempt_indicator | Boolean | Indicates if the car rental was tax-exempt or tax wasn’t collected | true or false |
total.tax.tax_items[].rate | Integer | Percentage used to calculate this tax amount | Minimum: 0 |
total.tax.tax_items[].amount | Integer | Amount of this tax charged for the car rental | Minimum: 0 |
total.tax.tax_items[].type | String | Type of tax applied to the car rental | Alphanumeric Maximum length: 40 characters |
total.extra_charges[].amount | Integer | Amounts of extra charge incurred during the car rental | Minimum: 0 |
total.extra_charges[].type | String | Types of extra charge incurred during the car rental | One of one_way_drop_off, regular_mileage, extra_mileage, late_charge, parking, towing, gps, phone, gas, or other |
total.discounts.maximum_free_miles_or_kilometers | Integer | Number of free miles or kilometres allowed during the car rental | Minimum: 0 Maximum: 9999 |
total.discounts.corporate_client_code | String | Code assigned to a business entity used for corporate rates or discounts | Alphanumeric Maximum length: 20 characters |
total.discounts.coupon | String | Coupon code used to discount the rate of the car rental agreement | Maximum length: 25 characters |
vehicle.vehicle_identification_number | String | Registration number of the rented vehicle | Alphanumeric Maximum length: 20 characters |
vehicle.odometer | Integer | Odometer reading when the car was first rented | Minimum: 0 |
affiliate.code | String | Code of the affiliate that initiated the purchase | Alphanumeric Maximum length: 20 characters |
1 The distance property is optional. distance.amount and distance.unit are required if distance is provided.
Additional Klarna supported properties
Klarna supports the general supported properties and also uses the following properties. The card networks won’t see these properties and they won’t impact compliance with card network requirements for card transactions.
| Property name | Type | Description | Format |
|---|---|---|---|
drivers[].name | String | Full name of the authorised driver in the car rental agreement | Conditionally required 1 Alphanumeric Maximum length: 198 characters |
drivers[].date_of_birth.day | Integer | Date of birth of the authorised driver in the car rental agreement | Conditionally required 2 Minimum: 1 Maximum: 31 date_of_birth must be a valid date in the past |
drivers[].date_of_birth.month | Integer | Date of birth of the authorised driver in the car rental agreement | Conditionally required 2 Minimum: 1 Maximum: 12 date_of_birth must be a valid date in the past |
drivers[].date_of_birth.year | Integer | Date of birth of the authorised driver in the car rental agreement | Conditionally required 2 Minimum: 1901 date_of_birth must be a valid date in the past |
carrier_name | String | Name of the car rental company | Alphanumeric Maximum length: 255 characters |
total.currency | String | Currency of the price of the overall car rental | Must be a valid ISO 4217 3-letter code |
insurances[].insurance_type | String | Type of insurance coverage provided for the car rental | Conditionally required 3 One of liability_supplement, loss_damage_waiver, partial_damage_waiver, personal_accident, personal_effects, or other |
insurances[].amount | Integer | Price of the insurance provided for the car rental in the smallest currency unit | Conditionally required 3 Minimum: 0 |
insurances[].currency | String | Currency of the insurance provided for the car rental | Must be a valid ISO 4217 3-letter code |
insurances[].insurance_company_name | String | Name of the company providing insurance for the car rental | Maximum length: 255 characters |
1 The drivers array is optional. The drivers[].name is required for each driver provided.
2 The drivers[].date_of_birth property is optional. drivers[].date_of_birth.day, drivers[].date_of_birth.month, and drivers[].date_of_birth.year are all required if drivers[].date_of_birth is provided.
3 The insurances array is optional. insurances[].insurance_type and insurances[].amount are required for each insurance provided.
Note
For certain properties, the lengths might be truncated to comply with various payment method requirements that accept different property sizes.
Use PaymentIntents
Include payment_details data when you create, update, confirm or capture a PaymentIntent.
The steps below highlight manual confirmation and capture to show how to update payment_details throughout the PaymentIntent lifecycle. You can provide payment_details for automatic confirmation or automatic capture use cases.
Create a PaymentIntent
Create an unconfirmed and uncaptured PaymentIntent with payment_details. Use the update method to update payment_details before confirming the PaymentIntent. All payment_details updates are a full hash replacement and must be valid for your payment method.
Command Line
cURL
Confirm a PaymentIntent
You can update payment_details when confirming the PaymentIntent. All payment_details updates are a full hash replacement and must be valid for your payment method. See sending industry-specific data for more information on what each property represents.
Command Line
cURL
Capture a PaymentIntent
You can include and update payment_details when capturing the PaymentIntent. Make sure the data you provide is complete because payment_details can’t be modified after a PaymentIntent is captured. See sending industry-specific data for more information on what each property represents.
Command Line
cURL
Multiple travel methods
You can also add multiple types of industry data to a single payment_details object to provide information about transactions involving several legs of travel. See sending industry-specific data for more information on what each property represents.
Command Line
cURL
Testing
Test that your integration works correctly for your customers. You can simulate API calls in a Stripe Sandbox using a sandbox key. For additional information, see Testing.
During testing, you can verify the following:
- Your industry metadata is properly formatted and accepted by the API
- Required fields are present for your payment method (cards or Klarna)
- The PaymentIntent successfully processes with your metadata
Sandbox testing verifies that your integration is technically correct, but doesn’t simulate card network interchange qualification decisions or Klarna’s authorisation rates and risk assessment outcomes.