Revolut · Schema

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.

CompanyFintechPaymentsBankingOpen BankingMerchant AcquiringCryptocurrencyCardsConsumer Banking

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
View JSON Schema on GitHub

JSON Schema

revolut-order-v7-schema.json Raw ↑
{
  "$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.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/revolut-order-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.