Revolut · Schema
Order-Creation-v7
Object schema containing information about order creation body request parameters.
CompanyFintechPaymentsBankingOpen BankingMerchant AcquiringCryptocurrencyCardsConsumer Banking
Properties
| Name | Type | Description |
|---|---|---|
| amount | object | |
| currency | object | |
| settlement_currency | object | |
| description | object | |
| customer | object | |
| enforce_challenge | object | |
| line_items | object | |
| shipping | object | |
| capture_mode | object | |
| authorisation_type | object | |
| cancel_authorised_after | object | |
| expire_pending_after | object | |
| location_id | object | |
| metadata | object | |
| industry_data | object | |
| merchant_order_data | object | |
| upcoming_payment_data | object | |
| redirect_url | object | |
| statement_descriptor_suffix | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/revolut/main/json-schema/revolut-order-creation-v7-schema.json",
"title": "Order-Creation-v7",
"description": "Object schema containing information about order creation body request parameters.",
"x-generated": "2026-10-12",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/revolut-orders-api-openapi.yml#/components/schemas/Order-Creation-v7",
"type": "object",
"properties": {
"amount": {
"$ref": "#/$defs/Order-Amount-v2"
},
"currency": {
"$ref": "#/$defs/Currency"
},
"settlement_currency": {
"$ref": "#/$defs/Settlement-Currency"
},
"description": {
"$ref": "#/$defs/Order-Description"
},
"customer": {
"$ref": "#/$defs/Customer-v2"
},
"enforce_challenge": {
"$ref": "#/$defs/Enforce-Challenge-v2"
},
"line_items": {
"$ref": "#/$defs/Line-Items"
},
"shipping": {
"$ref": "#/$defs/Shipping"
},
"capture_mode": {
"$ref": "#/$defs/Capture-Mode-v2"
},
"authorisation_type": {
"$ref": "#/$defs/Authorisation-Type"
},
"cancel_authorised_after": {
"$ref": "#/$defs/Cancel-Authorised-After-v2"
},
"expire_pending_after": {
"$ref": "#/$defs/Expire-Pending-After"
},
"location_id": {
"$ref": "#/$defs/Location-Id"
},
"metadata": {
"$ref": "#/$defs/Metadata"
},
"industry_data": {
"$ref": "#/$defs/Industry-Data-v3"
},
"merchant_order_data": {
"$ref": "#/$defs/Merchant-Order-Data"
},
"upcoming_payment_data": {
"$ref": "#/$defs/Upcoming-Payment"
},
"redirect_url": {
"$ref": "#/$defs/Redirect-Url"
},
"statement_descriptor_suffix": {
"$ref": "#/$defs/Statement-Descriptor-Suffix"
}
},
"required": [
"amount",
"currency"
],
"$defs": {
"Address-v2": {
"type": "object",
"description": "Object containing address details.",
"properties": {
"street_line_1": {
"type": "string",
"description": "Street line 1 information.",
"maxLength": 100
},
"street_line_2": {
"type": "string",
"description": "Street line 2 information.",
"maxLength": 100
},
"region": {
"type": "string",
"description": "The region associated with the address.",
"maxLength": 100
},
"city": {
"type": "string",
"description": "The city associated with the address.",
"maxLength": 100
},
"country_code": {
"type": "string",
"description": "The 2-letter country code of the country associated with the address.",
"maxLength": 2
},
"postcode": {
"type": "string",
"description": "The postcode associated with the address.",
"maxLength": 100
}
},
"required": [
"country_code",
"postcode"
]
},
"Address-v3": {
"type": "object",
"description": "Details of a physical address.",
"properties": {
"street_line_1": {
"type": "string",
"description": "Primary address line.",
"maxLength": 100
},
"street_line_2": {
"type": "string",
"description": "Secondary address line, such as floor and apartment number.",
"maxLength": 100
},
"region": {
"type": "string",
"description": "State or province of the address.",
"maxLength": 100
},
"city": {
"type": "string",
"description": "City of the address.",
"maxLength": 100
},
"country_code": {
"type": "string",
"pattern": "^[A-Z]{2}$",
"description": "ISO 2-letter country code.",
"minLength": 2,
"maxLength": 2
},
"postcode": {
"type": "string",
"description": "Postal code of the address.",
"maxLength": 100
}
},
"required": [
"street_line_1",
"city",
"country_code",
"postcode"
]
},
"Address-v4": {
"type": "object",
"description": "Details of a physical address.",
"properties": {
"street_line_1": {
"type": "string",
"description": "Primary address line.",
"maxLength": 100
},
"street_line_2": {
"type": "string",
"description": "Secondary address line, such as floor and apartment number.",
"maxLength": 100
},
"region": {
"type": "string",
"description": "State or province of the address.",
"maxLength": 100
},
"city": {
"type": "string",
"description": "City of the address.",
"maxLength": 100
},
"country_code": {
"type": "string",
"pattern": "^[A-Z]{2}$",
"description": "ISO 2-letter country code.",
"minLength": 2,
"maxLength": 2
},
"country_subdivision_code": {
"type": "string",
"pattern": "^[A-Z]{2}-[A-Z0-9]{1,3}$",
"description": "The subdivision code represents the state, province, or region within the country, following the [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) standard. This code uniquely identifies subdivisions within a country. \n\nFor example, for London in the United Kingdom, use `GB-LND`.\n\n:::warning\nThe parameter is required for countries listed on the [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) page.\n:::",
"minLength": 5,
"maxLength": 6
},
"postcode": {
"type": "string",
"description": "Postal code of the address.",
"maxLength": 100
}
},
"required": [
"street_line_1",
"city",
"country_code",
"postcode"
]
},
"Airline-Data-v2": {
"type": "object",
"description": "Object containing additional information about an airline booking associated with the order.\n\nUse this object to provide required data to enable **Revolut Flight Alerts**. This feature allows users to receive real-time flight updates such as check-in reminders, boarding alerts, and notifications for cancellations or delays in the Revolut app.\n\nTo enable **Revolut Flight Alerts** functionalities in the Revolut app, the following fields are **required** on order creation or update, before capturing the order:\n ```\n tickets_purchase,\n journey_legs,\n booking_url\n ```\n\n:::note\nThese are the specific data field requirements for merchants who must provide airline data. Note that these requirements can be extended on a case by case basis as decided by Revolut.\n\n| Required for airline/charter merchants | Required for OTA merchants |\n| -------------------------------------- | -------------------------- |\n| <ul><li>`booking_id`</li><li>`fulfillment_date`</li><li>`passengers[].first_name`</li><li>`passengers[].last_name`</li><li>`journey_legs[].pnr`</li><li>`journey_legs[].sequence`</li><li>`journey_legs[].flight_number`</li><li>`journey_legs[].travel_date`</li><li>`journey_legs[].airline_code`</li><li>`journey_legs[].departure_airport_code`</li><li>`journey_legs[].arrival_airport_code`</li></ul> | <ul><li>`booking_id`</li><li>`fulfillment_date`</li><li>`passengers[].first_name`</li><li>`passengers[].last_name`</li><li>`journey_legs[].pnr`</li><li>`journey_legs[].arrival_airport_code`</li></ul> |\n:::",
"properties": {
"booking_id": {
"$ref": "#/$defs/Booking-Id"
},
"fulfillment_date": {
"type": "string",
"format": "date-time",
"description": "The UTC date and time of the final journey leg.\n\n:::warning\nThe following limitations apply:\n - When creating or updating an order, `fulfillment_date` cannot be set to a date in the past.\n - When updating an order, if the current `fulfillment_date` value is already in the past, it cannot be modified. The date must remain as is to maintain data integrity for completed transactions.\n:::"
},
"tickets_purchase": {
"type": "boolean",
"description": "Flag indicating whether the order includes actual ticket purchases. Set to `true` if the order contains ticket purchases, and `false` if it does not (e.g., it **only** contains seat reservations, or baggage upgrades).\n\n:::info\nThis field is required for activating **Revolut Flight Alerts** functionalities within the Revolut app.\n\nProvide the info on order creation or update, before capturing the order.\n:::"
},
"ticket_type": {
"type": "string",
"enum": [
"fixed",
"flexible"
],
"description": "The type of the ticket.\n\n| Parameter value | Description |\n| --------------- | ----------- |\n| `fixed` | Non-modifiable once confirmed. |\n| `flexible` | Allows modifications or cancellations under specified conditions. |"
},
"crs_code": {
"type": "string",
"maxLength": 4,
"description": "The code of the Computer Reservation System (CRS) used to make the booking and purchase the ticket."
},
"ticket_change_indicator": {
"type": "string",
"enum": [
"new",
"modification"
],
"description": "Parameter indicating whether this order is related to a new ticket reservation or a modification of an existing one."
},
"refundability": {
"$ref": "#/$defs/Refundability"
},
"passengers": {
"$ref": "#/$defs/Passengers"
},
"journey_legs": {
"$ref": "#/$defs/Journey-Legs"
},
"booking_url": {
"type": "string",
"format": "uri",
"pattern": "^https?:\\/{2}.+/gi",
"maxLength": 2000,
"description": "URL to the online portal for managing the airline booking, which includes check-in functionality. This URL may be a personalised, pre-populated check-in link specific to the user or a generic link, and it is essential for enabling direct access to booking details within the Revolut app.\n\n:::info\nThis field is required for activating **Revolut Flight Alerts** functionalities within the Revolut app.\n\nProvide the info on order creation or update, before capturing the order.\n:::\n\n:::warning\nRestrictions:\n- Must be a valid URI as defined by [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986)\n- URI scheme is required and must be either `http` or `https`\n- URI host is required and cannot be `localhost` or an IP address\n- Max length: `2000`\n- Reserved or invalid characters must be percent-encoded (for example, use `%20` instead of a space)\n:::"
}
},
"required": [
"booking_id"
]
},
"Authorisation-Type": {
"type": "string",
"description": "The type of authorisation for the order. Used with manual capture mode. If omitted, `final` is used by default.\n\n### Pre-authorisation\n\nPre-authorisation allows you to reserve funds on a customer's card without immediately capturing them. This is useful for scenarios like:\n\n- Hotel bookings where the final amount may vary\n- Car rentals where additional charges may apply\n- Deposits that need to be held temporarily\n\n| Parameter value | Description |\n| --------------- | ----------- |\n| `final` | Standard authorisation for immediate or near-immediate capture. |\n| `pre_authorisation` | Reserve funds for later capture, used with manual capture mode. |\n\n:::note\nPre-authorisation must be used with `capture_mode: manual`. For more information, see [Capture an order](https://developer.revolut.com/docs/api/merchant#capture-order).\n:::",
"default": "final",
"enum": [
"final",
"pre_authorisation"
]
},
"Booking-Id": {
"type": "string",
"description": "A unique identifier provided by the merchant associated with the order. \n\nThis `booking_id` is used to reference and correlate booking information with the Merchant API and the merchant's internal system."
},
"Cancel-Authorised-After-v2": {
"type": "string",
"format": "duration",
"description": "Automatic cancellation period for uncaptured orders, specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.\n\nAfter this period, the authorised payment is automatically cancelled and the order is cancelled.\n\nMaximum period depends on the order's `authorisation_type`:\n- `pre_authorisation`: 30 days = `P30D`\n- `final`: 7 days = `P7D`\n\n:::note\nThe following limitations apply:\n - Cannot be a negative value.\n - Cannot be updated if the new value is less than or equal to the elapsed time since authorisation.\n\n **Failing scenario:**\n - Original value: 7 days\n - Time since authorisation: 3 days\n - Update value: 2 days\n\n In this scenario, an error is returned.\n\n **Successful scenario:**\n - Original value: 7 days\n - Time since authorisation: 3 days\n - Update value: 4 days\n\n In this scenario, the parameter can be updated.\n\n - Cannot be updated if cancellation is ≤ 30 minutes away.\n\n **Failing scenario:**\n - Original value: 12 hours\n - Time since authorisation: 11 hours 40 minutes\n\n In this scenario, an error is returned.\n\n **Successful scenario:**\n - Original value: 12 hours\n - Time since authorisation: 11 hours 20 minutes\n\n In this scenario, the parameter can be updated.\n:::"
},
"Capture-Mode-v2": {
"type": "string",
"description": "The capture mode of the order. `automatic` is used by default.\n\n| Parameter value | Description |\n| --------------- | ----------- |\n| `automatic` | The order is captured automatically after payment authorisation. |\n| `manual` | The order is not captured automatically. You must manually capture the order later. |\n\n:::info\nFor more information, see [Capture an order](https://developer.revolut.com/docs/api/merchant#capture-order).\n:::",
"default": "automatic",
"enum": [
"automatic",
"manual"
]
},
"Car-Rental-v2": {
"type": "object",
"description": "Object containing additional information about a car rental booking associated with the order.\n\n:::info\nThese are the specific data field requirements for merchants offering car rental. Note that these requirements can be extended on a case by case basis as decided by Revolut.\n\n```\nbooking_id\ndrop_off_date\nrefundability\n```\n:::",
"properties": {
"booking_id": {
"$ref": "#/$defs/Booking-Id"
},
"pick_up_date": {
"type": "string",
"format": "date-time",
"description": "The UTC date and time of the pick-up."
},
"pick_up_location": {
"$ref": "#/$defs/Address-v2"
},
"drop_off_date": {
"type": "string",
"format": "date-time",
"description": "The UTC date and time of the drop-off."
},
"drop_off_location": {
"$ref": "#/$defs/Address-v2"
},
"refundability": {
"$ref": "#/$defs/Refundability"
},
"distance_limit": {
"type": "object",
"description": "Object containing distance limit information.",
"properties": {
"limit": {
"type": "integer",
"description": "The maximum distance allowed."
},
"unit": {
"type": "string",
"description": "The unit of distance.",
"enum": [
"miles",
"km"
]
},
"additional_distance_cost": {
"type": "object",
"description": "Cost for exceeding the distance limit.",
"properties": {
"amount": {
"type": "integer",
"description": "The amount of the cost in minor currency units. For example, enter `7034` for €70.34."
},
"currency": {
"$ref": "#/$defs/Currency"
}
}
}
}
}
},
"required": [
"booking_id",
"drop_off_date"
]
},
"Contact": {
"type": "object",
"description": "Contact details for someone responsible for the shipment.\n\n:::warning\nAt least `email` or `phone` is required.\n:::",
"properties": {
"name": {
"type": "string",
"description": "Full name of the contact person.",
"maxLength": 250
},
"email": {
"type": "string",
"format": "email",
"description": "Email address of the contact person."
},
"phone": {
"type": "string",
"description": "Phone number of the contact person."
}
}
},
"Crypto-Transaction": {
"type": "object",
"properties": {
"id": {
"type": "string",
"maxLength": 255,
"description": "The public transaction hash of the crypto transaction."
},
"status": {
"type": "string",
"enum": [
"pending",
"failed",
"cancelled",
"completed"
],
"description": "The status of the crypto transaction."
},
"recipient_wallet_id": {
"type": "string",
"maxLength": 255,
"description": "The wallet ID of the recipient.\n\n:::note\nAt least one of the parameters: `recipient_user_id` or `recipient_wallet_id` is required.\n::: "
},
"recipient_user_id": {
"type": "string",
"maxLength": 255,
"description": "The user ID of the recipient.\n\n:::note\nAt least one of the parameters: `recipient_user_id` or `recipient_wallet_id` is required.\n::: "
}
},
"required": [
"id",
"status",
"recipient"
]
},
"Crypto-Transactions-v3": {
"type": "object",
"description": "Object containing information about crypto transactions associated with the order.\n\n:::info\nProcessing crypto on-ramp transactions with Revolut has additional compliance requirements. Please reach out to your account executive for additional details.\n\n**Required data fields for crypto services:**\n\n```\ntransactions[].id\ntransactions[].status\ntransactions[].recipient_wallet_id\nseller.id\nseller.name\nseller.website\nseller.phone\nseller.address\nseller.mcc\ncustomer.full_name\ncustomer.date_of_birth\n```\n\nNote that these requirements can be extended on a case by case basis as decided by Revolut.\n:::",
"properties": {
"transactions": {
"type": "array",
"description": "Array of crypto transaction data associated with the order.",
"items": {
"$ref": "#/$defs/Crypto-Transaction"
},
"minItems": 1
},
"seller": {
"type": "object",
"description": "Information about the crypto conversion affiliate.\n\nThis should be provided when a customer completes a payment on a subseller's website rather than directly on the merchant's website, providing insight into the type of business conducted by the subseller.\n\n:::note\nThis needs to be provided only by crypto on-ramp providers for payments they are processing for conversion affiliates.\n\nFor their own payments, `seller` can be omitted.\n:::",
"properties": {
"mcc": {
"type": "string",
"description": "A string representing the four-digit [Merchant Category Code (MCC)](https://en.wikipedia.org/wiki/Merchant_category_code) of the conversion affiliate.",
"maxLength": 4,
"minLength": 4,
"pattern": "^\\d{4}$"
},
"id": {
"type": "string",
"description": "The ID of the seller in the merchant's internal system.",
"minLength": 1,
"maxLength": 15
},
"name": {
"type": "string",
"description": "The business or legal name of the seller.",
"minLength": 1,
"maxLength": 50
},
"website": {
"type": "string",
"format": "uri",
"pattern": "^https?:\\/{2}.+/gi",
"maxLength": 255,
"description": "The URL of the website of the seller.\n\n:::warning\nRestrictions:\n- Must be a valid URI as defined by [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986)\n- URI scheme is required and must be either `http` or `https`\n- URI host is required and cannot be `localhost` or an IP address\n- Max length: `255`\n- Reserved or invalid characters must be percent-encoded (for example, use `%20` instead of a space)\n:::"
},
"phone": {
"type": "string",
"description": "The phone number of the seller."
},
"address": {
"$ref": "#/$defs/Address-v4"
}
},
"required": [
"id",
"name",
"website",
"phone",
"address",
"mcc"
]
}
},
"required": [
"transactions"
]
},
"Currency": {
"type": "string",
"format": "ISO 4217",
"minLength": 3,
"maxLength": 3,
"description": "[ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.\n\n:::info\nFor more information about the supported currencies, see: [Help Center](https://help.revolut.com/business/help/merchant-accounts/payments/in-which-currencies-can-i-accept-payments/).\n:::"
},
"Customer-v2": {
"type": "object",
"description": "Object containing information about a customer.\n\nIf you have it, we strongly advise providing at least either `id`, `phone`, or `email`.\n\nUsing the [Customers operations](https://developer.revolut.com/docs/api/merchant#tag-customers), you can manage customer instances.\n\nThe following behaviours apply to different use cases:\n\n | Use case | API behavior |\n | -------- | ------------ |\n | Existing customer | If `id` was provided, we ignore other customer details and associate the customer with the order.<br/><br/>If either `email`, `phone`, or `full_name` was provided (without an existing customer's `id`), we always create a new customer, irrespective of another, existing customer object having the same details. |\n | New customer | If either `email`, `phone`, or `full_name` was provided, we create a new customer, irrespective of another customer object having the same details. <br/><br/>If `id` of a non-existent customer was provided, we return a `404` error, irrespective of other details provided. |\n\n:::note\nTo avoid unintentional duplication of customer records, search for an existing customer by email or phone using the [List customers](https://developer.revolut.com/docs/api/merchant#retrieve-customer-list) endpoint first, then provide `customer.id` in the order.\n:::",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Permanent ID of a customer used to retrieve, update, delete a customer. This ID can also be used to link customer to an order.\n\n:::note\nIf you provide the customer's ID during order creation, no other customer data is required, they will be parsed automatically from the referenced customer object.\n:::"
},
"full_name": {
"$ref": "#/$defs/Full-Name"
},
"phone": {
"$ref": "#/$defs/Phone"
},
"email": {
"$ref": "#/$defs/Email"
},
"date_of_birth": {
"$ref": "#/$defs/Date-Of-Birth"
}
}
},
"Date-Of-Birth": {
"type": "string",
"format": "date",
"description": "The birth date of the customer."
},
"Discount": {
"type": "object",
"description": "Details of a discount applied to the line item, including its name and monetary value.",
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"description": "The specific name or label of the discount applied to the line item."
},
"amount": {
"type": "integer",
"format": "int64",
"minimum": 0,
"description": "The monetary value of the discount. "
}
},
"required": [
"name",
"amount"
]
},
"Email": {
"type": "string",
"format": "email",
"description": "The email address of the customer."
},
"Enforce-Challenge-v2": {
"type": "string",
"description": "The enforce challenge mode. `automatic` is used by default.\n\n| Parameter value | Description |\n| --------------- | ----------- |\n| `automatic` | The payments created for an order will have challenge requirement calculated by our fraud mechanisms. Not all payments will trigger a 3DS challenge. |\n| `forced` | The payments created for an order will always require a 3DS challenge. Currently only supported for card payments. |",
"default": "automatic",
"enum": [
"automatic",
"forced"
]
},
"Event": {
"type": "object",
"description": "Object containing booking information about a specific event. ",
"properties": {
"start_date": {
"type": "string",
"format": "date-time",
"description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time when the event starts."
},
"end_date": {
"type": "string",
"format": "date-time",
"description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time when the event ends."
},
"supplier": {
"type": "string",
"description": "Legal name of the ticket vendor/event organiser."
},
"supplier_payment_date": {
"$ref": "#/$defs/Supplier-Payment-Date"
},
"name": {
"type": "string",
"description": "The name of the event."
},
"location": {
"type": "object",
"description": "The address of the event location.",
"properties": {
"street_line_1": {
"type": "string",
"description": "Primary address line.",
"maxLength": 100
},
"street_line_2": {
"type": "string",
"description": "Secondary address line, such as floor and apartment number.",
"maxLength": 100
},
"region": {
"type": "string",
"description": "State or province of the address.",
"maxLength": 100
},
"city": {
"type": "string",
"description": "City of the address.",
"maxLength": 100
},
"country_code": {
"type": "string",
"pattern": "^[A-Z]{2}$",
"description": "ISO 2-letter country code.",
"minLength": 2,
"maxLength": 2
},
"postcode": {
"type": "string",
"description": "Postal code of the address.",
"maxLength": 100
}
},
"required": [
"street_line_1",
"city",
"country_code",
"postcode"
]
},
"category": {
"type": "string",
"enum": [
"concert",
"conference",
"convention",
"exhibition",
"festival",
"party",
"performance",
"other"
],
"description": "The type of the event."
},
"market": {
"type": "string",
"enum": [
"primary",
"secondary"
],
"description": "Indicates the relationship between the ticket vendor and the event organiser. \n\n| Parameter value | Description |\n| --------------- | ----------- |\n| `primary` | The merchant is the organiser and primary distributor of the tickets. |\n| `secondary` | The merchant is a reseller, only distributing the tickets. |"
},
"tickets": {
"type": "array",
"items": {
"$ref": "#/$defs/Ticket"
},
"description": "A list of tickets associated with the booking."
}
}
},
"Events-v2": {
"type": "object",
"description": "Object containing booking information for a list of event tickets associated with the order.\n\n:::info\nThese are the specific data field requirements for merchants who must provide event data. Note that these requirements can be extended on a case by case basis as decided by Revolut.\n\n```\nbooking_id\nevents[].start_date\nevents[].end_date\nevents[].supplier\nevents[].tickets[].id\n```\n:::",
"properties": {
"booking_id": {
"$ref": "#/$defs/Booking-Id"
},
"events": {
"type": "array",
"description": "A list of events associated with the booking.",
"items": {
"$ref": "#/$defs/Event"
}
}
},
"required": [
"booking_id"
]
},
"Expire-Pending-After": {
"type": "string",
"format": "duration",
"description": "Automatic expiration period for pending orders, specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.\n\nOrders in `pending` state will be automatically failed if they stay unpaid for longer than the period specified.\n\nWhen the order expires, it transitions to the `failed` state and an `ORDER_FAILED` webhook event is triggered.\n\n:::note\n- This field can only be set during order creation and cannot be updated afterward.\n- Must be between `PT1M` (1 minute) and `PT720H` (30 days).\n- Cannot be a negative value.\n:::"
},
"Full-Name": {
"type": "string",
"description": "The full name of the customer."
},
"Guest": {
"type": "object",
"properties": {
"first_name": {
"type": "string",
"description": "Guest's first name."
},
"last_name": {
"type": "string",
"description": "Guest's last name."
}
},
"required": [
"first_name",
"last_name"
]
},
"Guests": {
"type": "array",
"items": {
"$ref": "#/$defs/Guest"
},
"description": "List of guests associated with the booking."
},
"Image-Url": {
"type": "string",
"format": "uri",
"pattern": "^https?:\\/{2}.+/gi",
"maxLength": 2000,
"description": "URL to an image associated with the line item.\n\n:::warning\nRestrictions:\n- Must be a valid URI as defined by [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986)\n- URI scheme is required and must be either `http` or `https`\n- URI host is required and cannot be `localhost` or an IP address\n- Max length: `2000`\n- Reserved or invalid characters must be percent-encoded (for example, use `%20` instead of a space)\n:::"
},
"Industry-Data-v3": {
"type": "object",
"description": "Object containing industry-specific information associated with the order.\n\nYou can provide data for one or multiple industries in a single order.\n\n:::info\nIn the following cases, industry-specific info is required. Omitting this information may trigger additional scrutiny and risk mitigation actions by the Revolut risk team.\n\n | Transaction type | Required for |\n | ---------------- | ----------- |\n | `airline` | Airlines and Online Travel Agencies (OTAs). |\n | `car_rental` | Car Rental Merchants and Online Travel Agencies (OTAs). |\n | `crypto` | Crypto merchants. |\n | `marketplace` | Marketplace merchants. |\n | `event` | Event ticket sellers. |\n | `lodging` | Lodg
# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/revolut/refs/heads/main/json-schema/revolut-order-creation-v7-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/revolut-order-creation-v7"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.