Order v7
To process the order from a credit or debit card, you create an `Order` object. You can then retrieve, capture, cancel, refund, or pay an order using its unique `id`. Alternatively, you can use its unique `token` to process a card payment with the Revolut Checkout Widget.
Properties
| Name | Type | Description |
|---|---|---|
| id | object | |
| token | object | |
| type | object | |
| state | object | |
| created_at | string | The date and time the order was created. |
| updated_at | string | The date and time the order was last updated. |
| description | object | |
| capture_mode | object | |
| authorisation_type | object | |
| cancel_authorised_after | object | |
| amount | object | |
| outstanding_amount | object | |
| refunded_amount | object | |
| currency | object | |
| settlement_currency | object | |
| customer | object | |
| payments | array | The details of all the payments that have been made towards this order (successful or unsuccessful). |
| incremental_authorisations | object | |
| location_id | object | |
| metadata | object | |
| industry_data | object | |
| merchant_order_data | object | |
| upcoming_payment_data | object | |
| checkout_url | object | |
| redirect_url | object | |
| shipping | object | |
| enforce_challenge | object | |
| line_items | object | |
| statement_descriptor_suffix | object | |
| related_order_id | object | |
| subscription_data | 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-v7-schema.json",
"title": "Order v7",
"description": "To process the order from a credit or debit card, you create an `Order` object. You can then retrieve, capture, cancel, refund, or pay an order using its unique `id`. Alternatively, you can use its unique `token` to process a card payment with the Revolut Checkout Widget.",
"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-v7",
"type": "object",
"properties": {
"id": {
"$ref": "#/$defs/Order-Id"
},
"token": {
"$ref": "#/$defs/Order-Token"
},
"type": {
"$ref": "#/$defs/Order-Type-v2"
},
"state": {
"$ref": "#/$defs/Order-State"
},
"created_at": {
"type": "string",
"description": "The date and time the order was created.",
"format": "date-time"
},
"updated_at": {
"type": "string",
"description": "The date and time the order was last updated.",
"format": "date-time"
},
"description": {
"$ref": "#/$defs/Order-Description"
},
"capture_mode": {
"$ref": "#/$defs/Capture-Mode-v2"
},
"authorisation_type": {
"$ref": "#/$defs/Authorisation-Type"
},
"cancel_authorised_after": {
"$ref": "#/$defs/Cancel-Authorised-After"
},
"amount": {
"$ref": "#/$defs/Order-Amount-v2"
},
"outstanding_amount": {
"$ref": "#/$defs/Outstanding-Amount"
},
"refunded_amount": {
"$ref": "#/$defs/Refunded-Amount"
},
"currency": {
"$ref": "#/$defs/Currency"
},
"settlement_currency": {
"$ref": "#/$defs/Settlement-Currency"
},
"customer": {
"$ref": "#/$defs/Customer-v2"
},
"payments": {
"type": "array",
"description": "The details of all the payments that have been made towards this order (successful or unsuccessful).",
"items": {
"$ref": "#/$defs/Payment-v3"
}
},
"incremental_authorisations": {
"$ref": "#/$defs/Incremental-Authorisations"
},
"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"
},
"checkout_url": {
"$ref": "#/$defs/Checkout-Url"
},
"redirect_url": {
"$ref": "#/$defs/Redirect-Url"
},
"shipping": {
"$ref": "#/$defs/Shipping"
},
"enforce_challenge": {
"$ref": "#/$defs/Enforce-Challenge-v2"
},
"line_items": {
"$ref": "#/$defs/Line-Items"
},
"statement_descriptor_suffix": {
"$ref": "#/$defs/Statement-Descriptor-Suffix"
},
"related_order_id": {
"$ref": "#/$defs/Related-Order-Id"
},
"subscription_data": {
"$ref": "#/$defs/Subscription-Data"
}
},
"$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"
]
},
"Apple-Pay": {
"type": "object",
"description": "Object containing details of a card used via Apple Pay.",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the saved payment method.\n\n:::note\nThe `id` parameter is only returned when the payment method is saved.\n:::"
},
"type": {
"$ref": "#/$defs/Payment-Method-Type"
},
"card_brand": {
"type": "string",
"description": "The type of the card.",
"enum": [
"visa",
"mastercard",
"american_express"
]
},
"funding": {
"type": "string",
"description": "The type of card funding.",
"enum": [
"credit",
"debit",
"prepaid"
]
},
"card_country_code": {
"type": "string",
"description": "The 2-letter country code of the country where the card was issued."
},
"card_bin": {
"type": "string",
"description": "The BIN of the card.",
"minLength": 6,
"maxLength": 6
},
"card_last_four": {
"type": "string",
"description": "The last four digits of the card number.",
"minLength": 4,
"maxLength": 4
},
"card_expiry": {
"type": "string",
"format": "MM/YY",
"description": "The expiry date of the card in the format of MM/YY."
},
"cardholder_name": {
"type": "string",
"description": "The name of the cardholder."
},
"checks": {
"$ref": "#/$defs/Card-Checks-v2"
},
"authorisation_code": {
"$ref": "#/$defs/Authorisation-Code"
},
"arn": {
"$ref": "#/$defs/Arn"
},
"capture_deadline": {
"$ref": "#/$defs/Capture-Deadline"
},
"terminal_hardware_id": {
"$ref": "#/$defs/Terminal-Hardware-Id"
},
"fingerprint": {
"$ref": "#/$defs/Fingerprint"
},
"network_transaction_id": {
"$ref": "#/$defs/Network-Transaction-Id"
}
},
"required": [
"type"
]
},
"Arn": {
"type": "string",
"description": "Acquirer Reference Number (ARN) of the payment.\n\n:::note\nOnly returned for refund payments made by a card.\n:::",
"minLength": 23,
"maxLength": 23
},
"Authentication-Challenge-Type": {
"type": "string",
"enum": [
"three_ds",
"three_ds_fingerprint"
],
"description": "Type of the authentication challenge the payment triggers."
},
"Authentication-Challenge-v2": {
"type": "object",
"description": "Details about the authentication challenge that should be performed to complete the authentication process. For more information about Revolut's 3DS solution, see: [3D Secure overview](https://developer.revolut.com/docs/guides/merchant/reference/3d-secure).\n\nOnly returned if the payment's state is `authentication_challenge`.",
"oneOf": [
{
"$ref": "#/$defs/Three-Ds"
},
{
"$ref": "#/$defs/Three-Ds-Fingerprint-v2"
}
]
},
"Authorisation-Code": {
"type": "string",
"description": "The authorisation code (or auth code) is a short, alphanumeric code returned by the cardholder's issuing bank to the merchant's terminal or payment gateway.\n\nIt serves as confirmation that the transaction has been approved and funds are available.",
"pattern": "^[a-zA-Z0-9]{2,6}$",
"minLength": 2,
"maxLength": 6
},
"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"
]
},
"Bank-Message": {
"type": "string",
"description": "The reason for a `failed` or `declined` payment, sent by the financial institution processing the payment."
},
"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": {
"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. Maximum: 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-Deadline": {
"type": "string",
"format": "date-time",
"description": "The date and time by which the payment must be captured.\n\nAfter this deadline, the authorised funds may be automatically released by the card issuer."
},
"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"
]
},
"Card": {
"type": "object",
"description": "Object containing details of the card used for the payment.",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the saved payment method.\n\n:::note\nThe `id` parameter is only returned when the payment method is saved.\n:::"
},
"type": {
"$ref": "#/$defs/Payment-Method-Type"
},
"card_brand": {
"type": "string",
"description": "The type of the card.",
"enum": [
"visa",
"mastercard",
"american_express"
]
},
"funding": {
"type": "string",
"description": "The type of card funding.",
"enum": [
"credit",
"debit",
"prepaid"
]
},
"card_country_code": {
"type": "string",
"description": "The 2-letter country code of the country where the card was issued."
},
"card_bin": {
"type": "string",
"description": "The BIN of the card.",
"minLength": 6,
"maxLength": 6
},
"card_last_four": {
"type": "string",
"description": "The last four digits of the card number.",
"minLength": 4,
"maxLength": 4
},
"card_expiry": {
"type": "string",
"format": "MM/YY",
"description": "The expiry date of the card in the format of MM/YY."
},
"cardholder_name": {
"type": "string",
"description": "The name of the cardholder."
},
"checks": {
"$ref": "#/$defs/Card-Checks-v2"
},
"authorisation_code": {
"$ref": "#/$defs/Authorisation-Code"
},
"arn": {
"$ref": "#/$defs/Arn"
},
"capture_deadline": {
"$ref": "#/$defs/Capture-Deadline"
},
"terminal_hardware_id": {
"$ref": "#/$defs/Terminal-Hardware-Id"
},
"fingerprint": {
"$ref": "#/$defs/Fingerprint"
},
"network_transaction_id": {
"$ref": "#/$defs/Network-Transaction-Id"
}
},
"required": [
"type"
]
},
"Card-Checks-v2": {
"type": "object",
"description": "The details of the check for card payment. Only for orders with successful payments.",
"properties": {
"three_ds": {
"type": "object",
"description": "The details of the 3D Secure check. Only for orders with successful payments.\n\n:::note\nNot returned for Apple Pay and Google Pay payments.\n:::",
"properties": {
"eci": {
"type": "string",
"description": "The Electronic Commerce Indicator (ECI) value corresponds to the authentication result and indicates the level of security used when the payment information was provided."
},
"state": {
"type": "string",
"description": "The result of 3D Secure check.",
"enum": [
"verified",
"failed",
"challenge"
]
},
"version": {
"type": "integer",
"description": "The 3D Secure version."
}
}
},
"cvv_verification": {
"type": "string",
"description": "The result of CVV verification.\n\n| Parameter value | Description |\n| ----- | ----------- |\n| `match` | CVV matches the card's CVV |\n| `not_match` | CVV does not match the card's CVV |\n| `incorrect` | CVV format is incorrect for this type of card |\n| `not_processed` | CVV verification was not performed |",
"enum": [
"match",
"not_match",
"incorrect",
"not_processed"
]
},
"address": {
"type": "string",
"description": "The result of address verification.",
"enum": [
"match",
"not_match",
"n_a",
"invalid"
]
},
"postcode": {
"type": "string",
"description": "The result of postcode verification.",
"enum": [
"match",
"not_match",
"n_a",
"invalid"
]
},
"cardholder": {
"type": "string",
"description": "The result of cardholder verification.",
"enum": [
"match",
"not_match",
"n_a",
"invalid"
]
}
}
},
"Checkout-Url": {
"type": "string",
"description": "Link to a checkout page hosted by Revolut.",
"format": "uri"
},
"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
# --- truncated at 32 KB (96 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/revolut/refs/heads/main/json-schema/revolut-order-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
curl "https://apis.io/api/v1/json-schemas/revolut-order-v7"
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.