Revolut Tax rates API

Manage tax rates for your business. Create, retrieve, update, and delete tax rates that can be assigned to your financial records such as [expenses](https://developer.revolut.com/docs/guides/manage-accounts/accounts-and-transactions/retrieve-expenses) or bills. For more information, see the guides: [Manage accounting settings](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-accounting-settings) and [Manage tax rates](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-tax-rates). See also the Revolut Help Centre: [Expenses](https://help.revolut.com/business/help/managing-my-business/expenses/) and [BillPay](https://help.revolut.com/business/help/integrating-with-external-apps/introduction-to-billpay/).

OpenAPI Specification

revolut-tax-rates-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  version: '1.0'
  title: Business Accounting Tax rates API
  description: "As a Revolut Business customer with a Business Account, you can use the Business API to automate your own business processes.\nSave time, reduce your costs, and avoid errors by using the Business API. \n\n:::tip[Before you get started]\nTo learn more about the Business API and its features, check the [**user guides**](https://developer.revolut.com/docs/guides/manage-accounts/introduction).\n\nYou can reach them at any time from the main navigation bar **→ Guides → Business**.\n:::\n\nYou can view accounts, manage counterparties, make payments or currency exchanges without manual effort in the Web UI:\n\n- Accounting: [Account management](https://developer.revolut.com/docs/api/business#get-account), [Accounting settings](https://developer.revolut.com/docs/api/business#tag-accounting), [Expense management](https://developer.revolut.com/docs/api/business#get-expense), [Transactions](https://developer.revolut.com/docs/api/business#get-transactions) \n- Payments: \n  - [Counterparty management](https://developer.revolut.com/docs/api/business#get-counterparties)\n  - Payment management: [Payment drafts](https://developer.revolut.com/docs/api/business#delete-payment-draft), [Payout links](https://developer.revolut.com/docs/api/business#get-payout-link), [Transfers](https://developer.revolut.com/docs/api/business#tag-transfers)\n  - [Foreign exchange](https://developer.revolut.com/docs/api/business#tag-foreign-exchange)\n- Business team: [Card management](https://developer.revolut.com/docs/api/business#delete-card), [Card invitation management](https://developer.revolut.com/docs/api/business#update-card-invitation), [Team member management](https://developer.revolut.com/docs/api/business#delete-team-member)\n- Developer tools: [Sandbox simulations](https://developer.revolut.com/docs/api/business#tag-simulations), [Webhook management](https://developer.revolut.com/docs/api/business#tag-webhooks-v2)\n\nTo see the reference for the specific endpoints and operations of this API, browse the menu on the left.\n\n### Test the Business API\n\nYou can test the Business API in Postman by forking this collection:\n\n[![View in Postman](https://run.pstmn.io/button.svg)](https://www.postman.com/revolut-api/workspace/revolut-developers/overview)"
  contact: {}
servers:
- url: https://b2b.revolut.com/api/1.0
  description: Production server (uses live data)
- url: https://sandbox-b2b.revolut.com/api/1.0
  description: Sandbox server (uses test data)
tags:
- name: Tax rates
  description: 'Manage tax rates for your business.

    Create, retrieve, update, and delete tax rates that can be assigned to your financial records such as [expenses](https://developer.revolut.com/docs/guides/manage-accounts/accounts-and-transactions/retrieve-expenses) or bills.


    For more information, see the guides: [Manage accounting settings](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-accounting-settings) and [Manage tax rates](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-tax-rates).


    See also the Revolut Help Centre: [Expenses](https://help.revolut.com/business/help/managing-my-business/expenses/) and [BillPay](https://help.revolut.com/business/help/integrating-with-external-apps/introduction-to-billpay/).'
paths:
  /tax-rates:
    post:
      summary: Create a new tax rate
      operationId: createTaxRate
      description: 'Add a new tax rate to the list of tax rates that can be applied to your financial records, such as expenses.


        :::note

        This operation is not supported for [externally managed tax rates](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-tax-rates#externally-managed-settings).

        :::


        For more details, see the guides: [Manage accounting settings](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-accounting-settings) and [Manage tax rates](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-tax-rates).'
      security:
      - AccessToken:
        - WRITE
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTaxRateRequest'
            example:
              name: 20% (VAT on Expenses)
              percentage: 20
      responses:
        '201':
          description: 'Resource created


            On successful creation, the response returns only the ID of the new resource (i.e. the tax rate), even if the resource has more properties.

            To get all the details of the tax rate, use the returned resource ID with a [GET request](https://developer.revolut.com/docs/api/business#get-tax-rate).'
          $ref: '#/components/responses/ResourceCreatedResponse'
        '400':
          description: 'Bad Request


            Returned, for example, when a required parameter is missing or malformatted.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
              examples:
                param_required:
                  summary: Required parameter is missing
                  value:
                    error_id: fa12f45e-0ebf-4f7c-88e0-ebb7a1441a18
                    code: 2101
                    message: '''percentage'' is required'
                bad_param_type:
                  summary: Incorrect parameter type
                  value:
                    error_id: 29146977-8042-446f-b362-675e2921d71c
                    code: 2101
                    message: '''percentage'' must be a number'
                param_value_too_low:
                  summary: Parameter value too low
                  value:
                    error_id: b5a51cd1-9d0f-4074-adae-af224b14c830
                    code: 2101
                    message: '''percentage'' must be at least 0'
                param_value_too_high:
                  summary: Parameter value too high
                  value:
                    error_id: 89ceb92e-4633-4f78-8d40-42dadc380511
                    code: 2101
                    message: '''percentage'' must be at most 100'
                invalid_json:
                  summary: Invalid JSON
                  value:
                    error_id: df7b76b2-1313-42f0-8c0b-3673c665f135
                    code: 2101
                    message: Request body is not valid JSON
                param_value_too_short:
                  summary: Parameter value too short
                  value:
                    error_id: 7acc6073-5290-45f8-8956-c79d487ef1e5
                    code: 2101
                    message: '''name'' must be at least 1 character'
                param_value_too_long:
                  summary: Parameter value too long
                  value:
                    error_id: c4da2d3c-1cd8-4bbc-ac43-233575e471b7
                    code: 2101
                    message: '''name'' must be at most 20 characters'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          description: 'Conflict


            Request conflicts with the current state of the resource.

            Returned, for example, when a tax rate with the provided name already exists.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
              example:
                error_id: 8c08b656-4e57-4768-ab6e-f281da25aa2b
                code: 3505
                message: Tax rate with name My Unique Rate already exists
        '422':
          description: "Unprocessable entity - tax rate cannot be created due to business rules \n\nReturned, for example, when you have an accounting software integration connected to your Revolut Business account, and tax rates are managed by that integration.\n\nThe request is well-formed and the server understands it, but the operation cannot be performed because the resource state doesn't permit it.\nRetrying the same request won't succeed."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
              examples:
                cannot_modify_externally_managed_resource:
                  summary: Tax rates are managed by integration, cannot be created manually
                  value:
                    error_id: e950c41e-cfd6-4e04-bd79-2d57a3951774
                    code: 3514
                    message: Tax rates are managed by your connected accounting integration and cannot be modified manually
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
      tags:
      - Tax rates
    get:
      summary: Retrieve a list of tax rates
      operationId: getTaxRates
      description: "Get available tax rates based on the provided query criteria.\n\n:::note\nThe API returns a maximum of 500 tax rates per request. \nThe default page size is 100.\n:::\n\nThe tax rates are sorted by the `created_at` date in reverse chronological order, and they're **paginated**.\nThe page size, that is, the maximum number of tax rates returned per page is specified by the `limit` parameter. \n- If the number of results exceeds the page size, the response also returns a cursor for the next page under `next_page_token`.        \n  To get the next page of results, make a new request using that `next_page_token` value in `page_token`.\n- If the number of results is smaller than the page size, `next_page_token` is not returned.\n\nFor more details, see the guides: [Manage accounting settings](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-accounting-settings) and [Manage tax rates](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-tax-rates)."
      security:
      - AccessToken:
        - READ
      parameters:
      - name: limit
        in: query
        required: false
        description: 'The page size, that is, the maximum number of tax rates to return per page.


          To get the next page of results, use `page_token`.'
        schema:
          type: integer
          minimum: 1
          maximum: 500
          default: 100
          example: 10
      - $ref: '#/components/parameters/PageToken'
      responses:
        '200':
          description: List of tax rates
          content:
            application/json:
              schema:
                type: object
                properties:
                  next_page_token:
                    $ref: '#/components/schemas/PageToken'
                  tax_rates:
                    type: array
                    items:
                      $ref: '#/components/schemas/TaxRateResponse'
                required:
                - tax_rates
              examples:
                results_with_next_page:
                  summary: Results exceed page size (when limit=5) & next page available
                  value:
                    next_page_token: MjAyNi0wMS0wMVQwOToxMzoxNS40MDZaN2RhNTFjZGY0LTZiYjctNDRkNi04OWU1LTc2OWEzZGYxZDc5ZA
                    tax_rates:
                    - id: f0e1d2c3-b4a5-4678-9012-3456789abcde
                      name: Import Duty Surcharge
                      created_at: '2026-03-19T07:15:00.000000Z'
                      updated_at: '2026-03-19T08:45:22.111444Z'
                      percentage: 12.75
                    - id: f09ad1ad3-a1c0-4c09-b8f8-24b439e72690
                      name: 20% (VAT on Expenses)
                      created_at: '2026-03-11T10:33:51.121090Z'
                      updated_at: '2026-03-11T10:33:51.121090Z'
                      percentage: 20
                    - id: a1b2c3d4-e5f6-4a5b-bc6d-7e8f9a0b1c2d
                      name: Reduced Rate Food & Beverage
                      created_at: '2026-02-01T08:00:00.000000Z'
                      updated_at: '2026-02-01T08:00:00.000000Z'
                      percentage: 5.5
                    - id: 5f4e3d2c-1b0a-4987-8765-43210fedcba9
                      name: Standard Output Tax (High)
                      created_at: '2026-01-15T10:20:30.123456Z'
                      updated_at: '2026-03-10T14:45:12.987654Z'
                      percentage: 20
                    - id: 98765432-abcd-ef01-2345-67890abcdef0
                      name: Exempt Financial Services
                      created_at: '2025-12-20T11:11:11.000Z'
                      updated_at: '2026-03-15T09:30:00.555222Z'
                      percentage: 0
                results_single_page:
                  summary: Results fit within page size, no more pages available
                  value:
                    tax_rates:
                    - id: 7e6d5c4b-3a2b-1c0d-9e8f-7a6b5c4d3e2f
                      name: Luxury Goods Tax
                      created_at: '2026-03-23T14:30:00.000000Z'
                      updated_at: '2026-03-23T14:30:00.000000Z'
                      percentage: 25
                    - id: 8a7b6c5d-4e3f-2g1h-0i9j-8k7l6m5n4o3p
                      name: Environmental Levy
                      created_at: '2026-03-22T09:15:22.000000Z'
                      updated_at: '2026-03-22T10:00:00.000000Z'
                      percentage: 3.5
                    - id: 1f2e3d4c-5b6a-7988-7766-554433221100
                      name: Digital Services Tax
                      created_at: '2026-03-21T11:45:00.000000Z'
                      updated_at: '2026-03-21T11:45:00.000000Z'
                      percentage: 7
        '400':
          description: 'Bad Request


            Returned, for example, when a required parameter is missing or malformatted.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
              examples:
                bad_param_type:
                  summary: Incorrect query parameter type
                  value:
                    error_id: 29146977-8042-446f-b362-af224b14c830
                    code: 2101
                    message: Query parameter 'limit' must be an integer
                param_value_too_low:
                  summary: Query parameter value too low
                  value:
                    error_id: b5a51cd1-9d0f-4074-adae-675e2921d71c
                    code: 2101
                    message: Query parameter 'limit' must be at least 1
                param_value_too_high:
                  summary: Query parameter value too high
                  value:
                    error_id: fa12f45e-4633-4f78-8d40-42dadc380511
                    code: 2101
                    message: Query parameter 'limit' must be at most 500
                multiple_values_not_allowed:
                  summary: Multiple values provided for a single-value query parameter
                  value:
                    error_id: c4da2d3c-1cd8-4bbc-ac43-233575e471b7
                    code: 2101
                    message: Query parameter 'limit' must have a single value
                param_cannot_be_empty:
                  summary: Query parameter provided without a value
                  value:
                    error_id: fa12f45e-0ebf-4f7c-88e0-3673c665f135
                    code: 2101
                    message: Query parameter 'limit' must not be empty
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
      tags:
      - Tax rates
  /tax-rates/{tax_rate_id}:
    get:
      summary: Retrieve tax rate details
      operationId: getTaxRate
      description: 'Get the details of a specific tax rate based on the tax rate ID.


        The details include the tax rate name and percentage, as well as when the tax rate was added to your settings, and when it was last updated.


        For more details, see the guides: [Manage accounting settings](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-accounting-settings) and [Manage tax rates](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-tax-rates).'
      security:
      - AccessToken:
        - READ
      parameters:
      - name: tax_rate_id
        in: path
        description: The ID of the tax rate to retrieve.
        required: true
        schema:
          type: string
          format: uuid
          example: 09ad1ad3-a1c0-4c09-b8f8-24b439e72690
      responses:
        '200':
          description: Tax rate details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxRateResponse'
              example:
                id: 09ad1ad3-a1c0-4c09-b8f8-24b439e72690
                name: 20% (VAT on Expenses)
                created_at: '2026-03-11T10:33:51.121090Z'
                updated_at: '2026-03-11T10:33:51.121090Z'
                percentage: 20
        '400':
          description: 'Bad Request


            Returned, for example, when a required parameter is missing or malformatted.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
              examples:
                bad_param_format:
                  summary: Incorrect path parameter format
                  value:
                    error_id: f70973ea-c939-41f8-a106-1656ab5fae2f
                    code: 2101
                    message: Path parameter 'id' must be a valid UUID
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: 'Not found


            Returned when the tax rate that you''re trying to retrieve cannot be found.

            This can happen, for example, when the tax rate has been deleted, or the provided tax rate ID is incorrect.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
              example:
                error_id: cbb15721-5f51-4588-a959-7494bb7ba827
                code: 3006
                message: Tax rate with id 8945879d-6854-4e10-88d6-ce92c5f010ac not found
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
      tags:
      - Tax rates
    patch:
      summary: Update tax rate settings
      operationId: updateTaxRate
      description: 'Update settings for a specific tax rate, based on its ID.


        :::note

        This operation is not supported for [externally managed tax rates](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-tax-rates#externally-managed-settings).

        :::


        For more details, see the guides: [Manage accounting settings](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-accounting-settings) and [Manage tax rates](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-tax-rates).'
      security:
      - AccessToken:
        - WRITE
      parameters:
      - name: tax_rate_id
        in: path
        description: The ID of the tax rate to update.
        required: true
        schema:
          type: string
          format: uuid
          example: 09ad1ad3-a1c0-4c09-b8f8-24b439e72690
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTaxRateRequest'
            example:
              name: 20% VAT
      responses:
        '204':
          description: Tax rate updated
        '400':
          description: 'Bad Request


            Returned, for example, when a required parameter is missing or malformatted.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
              examples:
                param_required:
                  summary: Body is empty
                  value:
                    error_id: f1059c4b-4278-45d3-a17f-bd433ab33c15
                    code: 2101
                    message: Request body must not be empty
                bad_param_format:
                  summary: Incorrect parameter format
                  value:
                    error_id: f70973ea-c939-41f8-a106-1656ab5fae2f
                    code: 2101
                    message: Path parameter 'id' must be a valid UUID
                invalid_json:
                  summary: Invalid JSON
                  value:
                    error_id: 36f3cec5-b4b9-431f-9c28-afd3899bc64f
                    code: 2101
                    message: Request body is not valid JSON
                param_value_too_short:
                  summary: Parameter value too short
                  value:
                    error_id: 32fd0697-2f3f-4308-b25d-c9230f99c589
                    code: 2101
                    message: '''name'' must be at least 1 character'
                param_value_too_long:
                  summary: Parameter value too long
                  value:
                    error_id: d8d919b5-d667-4058-9bb3-17b6f7bcd6c8
                    code: 2101
                    message: '''name'' must be at most 20 characters'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: 'Not found


            Returned when the tax rate that you''re trying to update cannot be found.

            This can happen, for example, when the tax rate doesn''t exist, or the provided tax rate ID is incorrect.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
              example:
                error_id: ca73d8a4-a5cb-4f03-9a95-4d53aa1731b0
                code: 3006
                message: Tax rate with id be6c9d90-df25-458a-b559-be61896c94b8 not found
        '409':
          description: 'Conflict


            Request conflicts with the current state of the resource.

            Returned, for example, when a tax rate with the provided name already exists.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
              example:
                error_id: 8c08b656-4e57-4768-ab6e-f281da25aa2b
                code: 3505
                message: Tax rate with name My Unique Rate already exists
        '422':
          description: "Unprocessable entity - tax rate cannot be updated due to business rules \n\nReturned, for example, when you have an accounting software integration connected to your Revolut Business account, and tax rates are managed by that integration.\n\nThe request is well-formed and the server understands it, but the operation cannot be performed because the resource state doesn't permit it.\nRetrying the same request won't succeed."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
              examples:
                cannot_update_externally_managed_resource:
                  summary: Tax rate managed by integration, cannot be updated
                  value:
                    error_id: e950c41e-cfd6-4e04-bd79-2d57a3951774
                    code: 3514
                    message: Tax rates are managed by your connected accounting integration and cannot be modified manually
                state_mismatch:
                  summary: Tax rate is no longer available
                  value:
                    error_id: f1059c4b-4278-45d3-a17f-bd433ab33c15
                    code: 3100
                    message: Invalid request
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
      tags:
      - Tax rates
    delete:
      summary: Delete a tax rate
      operationId: deleteTaxRate
      description: "Delete a specific tax rate, based on its ID.\n\n:::note\nThis operation is not supported for [externally managed tax rates](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-tax-rates#externally-managed-settings).\n:::\n\nOnce the tax rate is deleted, it will not be returned by the API or in the Revolut Business app, and:\n- You will not be able to apply it to new financial records (e.g. expenses). \n- Existing records with this tax rate that have not been completed will be marked as invalid, and you'll need to update them to use a different tax rate.\n- Completed records will not be affected by the change. \n\nA successful response does not get any content in return.\n\nFor more details, see the guides: [Manage accounting settings](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-accounting-settings) and [Manage tax rates](https://developer.revolut.com/docs/guides/manage-accounts/accounting/manage-tax-rates)."
      security:
      - AccessToken:
        - WRITE
      parameters:
      - name: tax_rate_id
        description: The ID of the tax rate to delete.
        in: path
        required: true
        schema:
          type: string
          format: uuid
          example: 09ad1ad3-a1c0-4c09-b8f8-24b439e72690
      responses:
        '204':
          description: Tax rate deleted
        '400':
          description: 'Bad Request


            Returned, for example, when a required parameter is missing or malformatted.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
              examples:
                bad_param_format:
                  summary: Incorrect path parameter format
                  value:
                    error_id: f70973ea-c939-41f8-a106-1656ab5fae2f
                    code: 2101
                    message: Path parameter 'id' must be a valid UUID
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: 'Not found


            Returned when the tax rate that you''re trying to delete cannot be found.

            This can happen, for example, when the tax rate doesn''t exist, or the provided tax rate ID is incorrect.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
              example:
                error_id: ca73d8a4-a5cb-4f03-9a95-4d53aa1731b0
                code: 3006
                message: Tax rate with id be6c9d90-df25-458a-b559-be61896c94b8 not found
        '422':
          description: "Unprocessable entity - tax rate cannot be deleted due to business rules \n\nReturned, for example, when you have an accounting software integration connected to your Revolut Business account, and tax rates are managed by that integration.\n\nThe request is well-formed and the server understands it, but the operation cannot be performed because the resource state doesn't permit it.\nRetrying the same request won't succeed."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
              examples:
                cannot_delete_externally_managed_resource:
                  summary: Tax rate managed by integration, cannot be deleted
                  value:
                    error_id: e950c41e-cfd6-4e04-bd79-2d57a3951774
                    code: 3514
                    message: Tax rates are managed by your connected accounting integration and cannot be modified manually
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithId'
      tags:
      - Tax rates
components:
  responses:
    ServiceUnavailable:
      description: 'Service Unavailable


        The system is temporarily unavailable.

        If the response includes the `Retry-After` header instruction, please respect it and refrain from earlier retry attempts.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorWithId'
          examples:
            service_unavailable:
              summary: System temporarily unavailable
              value:
                error_id: 201768bc-c5cd-4db8-8898-7ae96b9d89ab
                code: 5003
                message: The service is temporarily unavailable. Try again in a few moments. If the issue persists, please contact support
    InternalServerError:
      description: 'Internal server error


        An unexpected application error occurred.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorWithId'
          example:
            error_id: 7f96652e-7518-4229-872b-4e4c867fb4da
            code: 5000
            message: An unexpected error occurred while processing your request. If the issue persists, please contact support
    Unauthorized:
      description: 'Unauthorized – authentication credentials are missing or invalid


        Returned when the request was not fulfilled because authentication has failed or has not been provided.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorWithId'
          examples:
            access_token_invalid_or_expired:
              summary: Access token invalid or expired
              value:
                error_id: 9d66499d-3fc5-45e9-92f6-3ddcad4793c6
                code: 1000
                message: Access token is invalid or has expired. Please refresh your access token or generate a new one following the 'Get a new access token' guide in the Revolut API docs.
            invalid_token:
              summary: Invalid token
              value:
                error_id: 7835beae-98ed-42dc-b993-95f4ded951a1
                code: 1000
                message: Invalid token. The authorization header must follow the 'Bearer <token>' format.
    TooManyRequests:
      description: 'Too many requests


        Returned, for example, when the rate limit has been exceeded.

        If the response includes the `Retry-After` instruction, please respect it and refrain from earlier retry attempts.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorWithId'
          examples:
            rateLimitExceededNoRetryAfter:
              summary: Rate limit exceeded (no Retry-After)
              value:
                error_id: 06153eec-c5cd-4db8-8898-7ae96b9d89ab
                code: 3162
                message: Request rate limit has been reached. Try again later.
            rateLimitExceededWithRetryAfter:
              summary: Rate limit exceeded (with Retry-After)
              value:
                error_id: 06153eec-c5cd-4db8-8898-7ae96b9d89ab
               

# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/revolut/refs/heads/main/openapi/revolut-tax-rates-api-openapi.yml