# System overview

Revolut FIX Gateway is a [FIX 4.4](https://www.onixs.biz/fix-dictionary/4.4/index.html)-compliant gateway that provides a direct connectivity to the Revolut matching engine cluster.

Each FIX API ([Trading](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/supported-fix-messages-trading-overview) and [Market Data](/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/supported-fix-messages-market-data-overview)) is served by its respective Revolut FIX Gateway.

Revolut FIX Gateway operates in the **UTC time zone**.

For more information about FIX, see the [FIX protocol documentation](https://www.onixs.biz/fix-protocol.html).

## Supported FIX messages

### Session-level messages

These messages are **the same** for both the Trading FIX API and Market Data API.

| Trading FIX API                                                                                                                                                  | Market Data FIX API                                                                                                                                                  |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [**`A` Logon**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-A-logon)                                 | [**`A` Logon**](/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-A-logon)                                 |
| [**`0` Heartbeat**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-0-heartbeat)                         | [**`0` Heartbeat**](/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-0-heartbeat)                         |
| [**`1` Test Request**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-1-test-request)                   | [**`1` Test Request**](/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-1-test-request)                   |
| [**`2` Resend Request**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-2-resend-request)               | [**`2` Resend Request**](/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-2-resend-request)               |
| [**`3` Session Level Reject**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-3-session-level-reject)   | [**`3` Session Level Reject**](/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-3-session-level-reject)   |
| [**`4` Sequence Reset**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-4-reset-sequence)               | [**`4` Sequence Reset**](/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-4-reset-sequence)               |
| [**`5` Logout**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-5-logout)                               | [**`5` Logout**](/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-5-logout)                               |

### Application-level messages

| Trading FIX API                                                                                                                                                                      | Market Data FIX API                                                                                                                                                                  |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Requests**                                                                                                                                                                         | **Requests**                                                                                                                                                                         |
| [**`D` New Order - Single**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-D-new-order-single)                         | [**`V` Market Data Request**](/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/message-v-market-data-request)                 |
| [**`F` Order Cancel Request**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-F-order-cancel-request)                   |                                                                                                                                                                                      |
| [**`G` Order Cancel/Replace Request**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-G-order-cancel-replace-request)   |                                                                                                                                                                                      |
| [**`H` Order Status Request**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-H-order-status-request)                   |                                                                                                                                                                                      |
| [**`q` Order Mass Cancel Request**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-q-order-mass-cancel-request)         |                                                                                                                                                                                      |
| **Responses**                                                                                                                                                                        | **Responses**                                                                                                                                                                        |
| [**`8` Execution Report**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-8-execution-report)                           | [**`W` Full Refresh**](/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/message-w-full-refresh)                               |
| [**`9` Order Cancel Reject**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-9-order-cancel-reject)                     | [**`X` Incremental Refresh**](/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/message-x-incremental-refresh)                 |
| [**`j` Business Message Reject**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-j-business-message-reject)             | [**`Y` Market Data Request Reject**](/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/message-y-market-data-request-reject)   |
| [**`r` Order Mass Cancel Report**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-r-order-mass-cancel-report)           |                                                                                                                                                                                      |

### FIX Gateway rate limiter

Once the rate limiter counter reaches the defined value (currently 7500 orders in the 5-second sliding window), FIX Gateway will start sending rejection for **NEW** [(**`D` New Order - Single**)](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-D-new-order-single) and **REPLACE** [(**`G` Order Cancel/Replace Request**)](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-G-order-cancel-replace-request) orders, until the number of recently posted orders reduces below the threshold:

- For a **NEW** order that violates the rate limiter, FIX Gateway will reply with [**`8` (ExecutionReport)**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-8-execution-report):

    | Tag                  | Name               | Value                   |
    | -------------------- | ------------------ | ----------------------- |
    | **103**              | **OrdRejReason**   | `99` - Other            |
    | **58**               | **Text**           | `Rate limit exceeded`   |

- For a **REPLACE** order that violates the rate limiter, FIX Gateway will reply with [**`9` (OrderCancelReject)**](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-9-order-cancel-reject):

    | Tag                  | Name               | Value                   |
    | -------------------- | ------------------ | ----------------------- |
    | **102**              | **CxlRejReason**   | `99` - Other            |
    | **58**               | **Text**           | `Rate limit exceeded`   |
    
The impact of **NEW** and **REPLACE** is the same (weight=1).
There is no rate limiter for **CANCEL** [(**`F` Order Cancel Request**)](/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-F-order-cancel-request) requests (weight=0).

The expected behavior is to tolerate such rejections, wait (for example, ~1 second) and re-send the **ORDER**/**REPLACE** request, with more recent price if necessary.

:::warning
When a **REPLACE** order is rejected by the rate limiter, the order that was supposed to be replaced (previous order) stays intact. 
This means the previous order is not cancelled or modified. 

If it is necessary to remove the previous order, the trading algorithm should send an explicit **CANCEL** request.
:::

:::note
The rate limiter scope is active per FIX session independently, and it is not shared.
If the trading service is connected under two different sessions (or two different gateway nodes), the actual allowed rate will be 2x higher.
:::