Revolut · Schema
TransactionPaymentRequest
CompanyFintechPaymentsBankingOpen BankingMerchant AcquiringCryptocurrencyCardsConsumer Banking
Properties
| Name | Type | Description |
|---|---|---|
| request_id | string | A unique identifier for the transaction, provided by you. This is used for idempotency to prevent duplicate payments. There are no strict format requirements, but we recommend using UUID v4 values. :: |
| account_id | string | The ID of the account that you send the funds from. |
| receiver | object | |
| amount | number | The amount to transfer. |
| currency | object | |
| reference | string | The reference for the payment. - For **BRL**/**KRW**/**VND**/**COP**/**LKR**/**CLP**/**NPR** company transfers, and all **INR** transfers: This field must specify the commercial invoice number. - For |
| charge_bearer | object | |
| transfer_reason_code | object | |
| exchange_reason_code | object | |
| fiscal_code | string | Fiscal code of the payer, required for payments to Romanian tax authority beneficiaries (counterparty BIC: `TREZROBUXXX`). The business's own tax identification number (TIN) is attached automatically |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/revolut/main/json-schema/revolut-transaction-payment-request-schema.json",
"title": "TransactionPaymentRequest",
"x-generated": "2026-10-12",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/revolut-transfers-api-openapi.yml#/components/schemas/TransactionPaymentRequest",
"type": "object",
"properties": {
"request_id": {
"type": "string",
"description": "A unique identifier for the transaction, provided by you. \nThis is used for idempotency to prevent duplicate payments. \nThere are no strict format requirements, but we recommend using UUID v4 values.\n\n:::tip[Retrying requests safely with idempotency]\nIf you do not receive a response (for example, due to a network error or timeout), you can safely retry the request using the same `request_id`. \n\nIf a transaction with the same `request_id` was already created, the API will not create a duplicate transaction.\n\n:::warning[Idempotency expiry]\nIdempotency checks apply only to transactions created **within the last 2 weeks**. \nReusing a `request_id` **after this period** may result in a **new transaction being created**.\n:::",
"maxLength": 40
},
"account_id": {
"type": "string",
"format": "uuid",
"description": "The ID of the account that you send the funds from."
},
"receiver": {
"$ref": "#/$defs/PaymentReceiver"
},
"amount": {
"type": "number",
"format": "double",
"description": "The amount to transfer."
},
"currency": {
"$ref": "#/$defs/Currency"
},
"reference": {
"type": "string",
"maxLength": 140,
"description": "The reference for the payment.\n\n- For **BRL**/**KRW**/**VND**/**COP**/**LKR**/**CLP**/**NPR** company transfers, and all **INR** transfers:\n \n This field must specify the commercial invoice number.\n\n- For other corridors:\n\n A piece of text or number you provide to help identify what the payment relates to.\n It can be used, for example, for reconciliation or tracking purposes.\n\n You might include an invoice number, account or transaction ID, or any other reference meaningful to you.\n\nIf the provided reference is longer than 140 characters, it will be truncated.\nNote that some recipient banks might truncate the reference even further."
},
"charge_bearer": {
"$ref": "#/$defs/ChargeBearer"
},
"transfer_reason_code": {
"$ref": "#/$defs/TransferReasonCode"
},
"exchange_reason_code": {
"$ref": "#/$defs/ExchangeReasonCode"
},
"fiscal_code": {
"type": "string",
"maxLength": 50,
"pattern": "^[a-zA-Z0-9]+$",
"description": "Fiscal code of the payer, required for payments to Romanian tax authority beneficiaries (counterparty BIC: `TREZROBUXXX`).\n\nThe business's own tax identification number (TIN) is attached automatically from the business profile."
}
},
"required": [
"request_id",
"account_id",
"receiver",
"amount",
"currency"
],
"$defs": {
"ChargeBearer": {
"type": "string",
"enum": [
"shared",
"debtor"
],
"description": "The party to which any transaction fees are charged if the resulting transaction route has associated fees: \n- `shared`: Also known as **SHA**. The transaction route fees are split between the sender and the recipient. \n The sender pays the fees charged by their bank, while the recipient pays the fees charged by the receiving and any intermediary banks.\n- `debtor`: Also known as **OUR**. The sender pays all explicit transaction fees.\nSome transactions with fees might not be possible with the specified option, in which case error `3287` is returned."
},
"Currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "[ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case."
},
"ExchangeReasonCode": {
"type": "string",
"description": "The reason code for the exchange.\nDepending on the country and the amount of funds to be exchanged, you might be required to provide an exchange reason. \nYou can check available reason codes with the [`GET /exchange-reasons` operation](https://developer.revolut.com/docs/api/business#get-exchange-reasons).\n\nIf an exchange reason is not required, this field is ignored."
},
"PaymentReceiver": {
"type": "object",
"description": "The details of the transfer recipient.\n\nIf the counterparty has multiple payment methods available (e.g. 2 accounts, or 1 account and 1 card), you must specify the account (`account_id`) or card (`card_id`) to which you want to transfer the money.",
"properties": {
"counterparty_id": {
"type": "string",
"format": "uuid",
"description": "The ID of the receiving counterparty."
},
"account_id": {
"type": "string",
"format": "uuid",
"description": "The ID of the receiving counterparty's account. Used for bank transfers.\n\nIf the counterparty has multiple payment methods available, use it to specify the account to which you want to send the money."
},
"card_id": {
"type": "string",
"format": "uuid",
"description": "The ID of the receiving counterparty's card.\nUsed for card transfers.\n\nIf the counterparty has multiple payment methods available, use it to specify the card to which you want to send the money."
}
},
"required": [
"counterparty_id"
]
},
"TransferReasonCode": {
"type": "string",
"description": "The reason code for the transaction. Transactions to certain countries and currencies might require you to provide a transfer reason. \nYou can check available reason codes with the [`GET /transfer-reasons` operation](https://developer.revolut.com/docs/api/business#get-transfer-reasons).\n\nIf a transfer reason is not required for the given currency and country, this field is ignored."
}
}
}
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-transaction-payment-request"
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.