# Trade

Every price or size values should be represented with Finery Markets internal corresponding types.

A description of all the types can be found [here](https://faq.finerymarkets.com/api-reference/data-types).

## **New Order Single\<D>**

Sent by the client to submit a new order. **Execution Report<8>** sent to the client to provide information about the order execution.

<table><thead><tr><th width="150" align="center">Tag</th><th width="200" align="center">Name</th><th width="150" align="center">Required</th><th align="center">Example</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">11</td><td align="center">ClOrdID</td><td align="center">Y</td><td align="center">123</td><td align="center">Unique identifier of the order as assigned by the client, should be integral number, >0</td></tr><tr><td align="center">55</td><td align="center">Symbol</td><td align="center">Y</td><td align="center">BTC-USD</td><td align="center">Instrument name</td></tr><tr><td align="center">44</td><td align="center">Price</td><td align="center">N</td><td align="center">1</td><td align="center">Price, value of type Price</td></tr><tr><td align="center">38</td><td align="center">OrderQty</td><td align="center">N</td><td align="center">1</td><td align="center">Size of the order(if the order is by size), value of type Size</td></tr><tr><td align="center">152</td><td align="center">CashOrderQty</td><td align="center">N</td><td align="center">1</td><td align="center">Volume of the order(if the order is by volume), value of type Size</td></tr><tr><td align="center">40</td><td align="center">OrdType</td><td align="center">Y</td><td align="center">1</td><td align="center">Order Type(see below)</td></tr><tr><td align="center">54</td><td align="center">Side</td><td align="center">Y</td><td align="center">1</td><td align="center">Side of the order(see below)</td></tr><tr><td align="center">59</td><td align="center">TimeInForce</td><td align="center">Y</td><td align="center">1</td><td align="center">Specifies how long the order remains in effect(see below)</td></tr><tr><td align="center">60</td><td align="center">TransactTime</td><td align="center">Y</td><td align="center">20230530-09:29:52.722</td><td align="center">UTC Timestamp of the order creation</td></tr><tr><td align="center">20006</td><td align="center">QsEnabled</td><td align="center">N</td><td align="center">Y</td><td align="center">If true, adds QS as potential sources of liquidity for the order execution. If false or omitted, only Firm Book is considered. Can only be used by takers.</td></tr><tr><td align="center">20004</td><td align="center">FirmBookEnabled</td><td align="center">N</td><td align="center">Y</td><td align="center">If true adds Firm Book as a potential source of liquidity for the order execution. If false, only QS are considered. False by default. Taken into account <em><strong>only</strong></em> if QsEnabled&#x3C;20006> == true. Can only be used by takers.</td></tr><tr><td align="center">20001</td><td align="center">NoCounterparties</td><td align="center">N</td><td align="center">1</td><td align="center">List of LPs to consider QS from. If empty or omitted, all available LPs considered. Taken into account <em><strong>only</strong></em> if QsEnabled&#x3C;20006> == True and does not affect the Firm Book execution. Can only be used by takers.</td></tr><tr><td align="center">20002</td><td align="center">⇒ LpID</td><td align="center">N</td><td align="center">1234</td><td align="center">FM id of an LP</td></tr></tbody></table>

| Order Type |     Description     |
| :--------: | :-----------------: |
|      1     | Market (Taker only) |
|      2     |        Limit        |

| Order Side | Description |
| :--------: | :---------: |
|      1     |     Buy     |
|      2     |     Sell    |

| Time In Force |            Description            |
| :-----------: | :-------------------------------: |
|       1       |   Good Till Cancel (GTC) - Maker  |
|       3       | Immediate or Cancel (IOC) - Taker |
|       4       |     Fill or Kill (FOK) - Taker    |
|       P       |          PostOnly - Maker         |

Either **OrderQty<38>** or **CashOrderQty<152>** field should present.

## **Execution Report<8>**

Sent by the server whenever an order receives a fill, whenever the status of an order changes, or in response to a **NewOrderSingle\<D>**, **OrderCancelRequest\<F>** and **OrderCancel/Replace Request\<G>** message from the client.

<table><thead><tr><th width="150" align="center">Tag</th><th width="200" align="center">Name</th><th width="150" align="center">Required</th><th align="center">Example</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">37</td><td align="center">OrderID</td><td align="center">Y</td><td align="center">1</td><td align="center">Unique order Id, generated by the server</td></tr><tr><td align="center">11</td><td align="center">ClOrdID</td><td align="center">Y</td><td align="center">2</td><td align="center">Unique identifier of the order as assigned by the client. ClOrdID&#x3C;11> of the canceled order if OrdStatus&#x3C;39> == 4 (canceled), ClOrdID&#x3C;11> from the NewOrderSingle&#x3C;D> or OrderCancel/ReplaceRequest&#x3C;G> otherwise</td></tr><tr><td align="center">151</td><td align="center">LeavesQty</td><td align="center">Y</td><td align="center">1</td><td align="center">Quantity open for further execution, value of type Size</td></tr><tr><td align="center">17</td><td align="center">ExecID</td><td align="center">N</td><td align="center">123</td><td align="center">Deal id in case of ExecType&#x3C;150> == TRADE. Same as OrderID&#x3C;37> otherwise.</td></tr><tr><td align="center">55</td><td align="center">Symbol</td><td align="center">N</td><td align="center">BTC-USD</td><td align="center">Instrument name</td></tr><tr><td align="center">54</td><td align="center">Side</td><td align="center">N</td><td align="center">1</td><td align="center">“1” - Buy, “2” - Sell</td></tr><tr><td align="center">38</td><td align="center">OrderQty</td><td align="center">N</td><td align="center">1</td><td align="center">Order quantity, value of type Size. If ExecType&#x3C;150> == 5, quantity of the new order</td></tr><tr><td align="center">44</td><td align="center">Price</td><td align="center">N</td><td align="center">10</td><td align="center">Order Price, value of type Price. If ExecType&#x3C;150> == 5, price of the new order</td></tr><tr><td align="center">31</td><td align="center">LastPx</td><td align="center">N</td><td align="center">1000</td><td align="center">Current fill price. Only present if this message was the result of a fill, value of type Price</td></tr><tr><td align="center">32</td><td align="center">LastQty</td><td align="center">N</td><td align="center">2</td><td align="center">Current fill quantity. Only present if this message was the result of a fill, value of type Size</td></tr><tr><td align="center">39</td><td align="center">OrdStatus</td><td align="center">Y</td><td align="center">2</td><td align="center">Identifies current status of order(see below)</td></tr><tr><td align="center">150</td><td align="center">ExecType</td><td align="center">Y</td><td align="center">2</td><td align="center">Describes the specific Execution Report(see below)</td></tr><tr><td align="center">58</td><td align="center">Text</td><td align="center">N</td><td align="center">79</td><td align="center">In case the order was declined by the Finery Markets, this field contains Finery Markets error code</td></tr><tr><td align="center">136</td><td align="center">NoMiscFees</td><td align="center">N</td><td align="center">1</td><td align="center">If present should always be 1 Following group describes markup applied to the deal</td></tr><tr><td align="center">137</td><td align="center">=> MiscFeeAmt</td><td align="center">N</td><td align="center">10</td><td align="center">Required if NoMiscFees&#x3C;136> is present. Markup size.</td></tr><tr><td align="center">139</td><td align="center">=> MiscFeeType</td><td align="center">N</td><td align="center">8</td><td align="center">Required if NoMiscFees&#x3C;136> is present. Should always be 8 for Markup.</td></tr><tr><td align="center">958</td><td align="center">CounterpartyID</td><td align="center">N</td><td align="center">1234</td><td align="center">FineryMarkets id of the counterparty</td></tr><tr><td align="center">41</td><td align="center">OrigClOrdID</td><td align="center">N</td><td align="center">42</td><td align="center">ClOrdID&#x3C;11> of the replaced order, if ExecType&#x3C;150> = 5(Replaced).</td></tr><tr><td align="center">20005</td><td align="center">LiquiditySource</td><td align="center">N</td><td align="center">'1'</td><td align="center">Liquidity source for the trade when ExecType&#x3C;150> = F (Trade). Field of type CHAR. Defaults to the firm book if the tag is absent.</td></tr><tr><td align="center">60</td><td align="center">TransactTime</td><td align="center">Y</td><td align="center">20230530-09:29:52.722</td><td align="center">UTC Timestamp of the Execution Report&#x3C;8></td></tr></tbody></table>

| Order Status |    Description   |
| :----------: | :--------------: |
|       0      |        New       |
|       1      | Partially filled |
|       2      |      Filled      |
|       4      |     Canceled     |
|       5      |     Replaced     |
|       8      |     Rejected     |

| Exec Type | Description |
| :-------: | :---------: |
|     0     |     New     |
|     F     |    Trade    |
|     4     |   Canceled  |
|     5     |   Replaced  |
|     8     |   Rejected  |

| LiquiditySource |  Description  |
| :-------------: | :-----------: |
|       '0'       |   Firm Book   |
|       '1'       |      RFQ      |
|       '2'       | Quote Streams |
|       '3'       | Not Available |

**ExecType<150>** indicates the reason why the **Execution Report<8>** message was sent. And Order Status indicates the current state of the order.

For every order **Execution Report<8>** with **ExecType<150>** == **0** should be generated.

When no further execution is possible **Execution Report<8>** with either **ExecType<150>** == **F** and **OrderStatus<39>** == **2** or **ExecType<150>** == **4** and **OrderStatus<39>** == **4** should be generated.

## **Order Cancel Request\<F>**

The **Order Cancel Request\<F>** message requests the cancellation of all of the remaining quantity of an existing order. Note that the **Order Cancel/Replace Request\<G>** should be used to partially cancel (reduce) an order).

<table><thead><tr><th width="150" align="center">Tag</th><th width="200" align="center">Name</th><th width="150" align="center">Required</th><th align="center">Example</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">37</td><td align="center">OrderID</td><td align="center">N</td><td align="center">1</td><td align="center">Unique order Id, generated by the server, of the order to cancel</td></tr><tr><td align="center">11</td><td align="center">ClOrdID</td><td align="center">Y</td><td align="center">2</td><td align="center">Unique identifier of the request as assigned by the client</td></tr><tr><td align="center">41</td><td align="center">OrigClOrdID</td><td align="center">N</td><td align="center">3</td><td align="center">ClOrdID &#x3C;11> of the order to cancel</td></tr><tr><td align="center">54</td><td align="center">Side</td><td align="center">Y</td><td align="center">1</td><td align="center">Side of the order(see above)</td></tr><tr><td align="center">60</td><td align="center">TransactTime</td><td align="center">Y</td><td align="center">20230530-09:29:52.722</td><td align="center">UTC Timestamp of the order creation</td></tr></tbody></table>

Either **OrderID<37>** or **OrigClOrdID<41>** should be present.

## **Order Cancel Reject<9>**

The **Order Cancel Reject <9>** message is issued by the server upon receipt of a **Order Cancel Request\<F>** or **Order Cancel/Replace Request\<G>** message which cannot be honored.

<table><thead><tr><th width="150" align="center">Tag</th><th width="200" align="center">Name</th><th width="150" align="center">Required</th><th align="center">Example</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">37</td><td align="center">OrderID</td><td align="center">N</td><td align="center">1</td><td align="center">Unique order Id, generated by the server, copied from request message</td></tr><tr><td align="center">11</td><td align="center">ClOrdID</td><td align="center">Y</td><td align="center">2</td><td align="center">Request Id assigned by the client, copied from request message</td></tr><tr><td align="center">41</td><td align="center">OrigClOrdID</td><td align="center">N</td><td align="center">3</td><td align="center">ClOrdID &#x3C;11> of the previous non-rejected order, copied from request message</td></tr><tr><td align="center">434</td><td align="center">CxlRejResponseTo</td><td align="center">Y</td><td align="center">1</td><td align="center">Identifies the type of request that a Cancel Reject &#x3C;9> is in response to(see below)</td></tr><tr><td align="center">102</td><td align="center">CxlRejReason</td><td align="center">N</td><td align="center">99</td><td align="center">Reject Reason Code. If CxlRejReason == 99, Text&#x3C;58> field contains FineryMarkets error code.</td></tr><tr><td align="center">58</td><td align="center">Text</td><td align="center">N</td><td align="center">Invalid OrderID.</td><td align="center">Human-readable reject reason</td></tr><tr><td align="center">39</td><td align="center">OrdStatus</td><td align="center">Y</td><td align="center">0</td><td align="center">Reserved for future use. Always 0.</td></tr></tbody></table>

| CxlRejResponseTo |                  Description                  |
| :--------------: | :-------------------------------------------: |
|         1        |     Order Cancel Request\<F> was rejected     |
|         2        | Order Cancel/Replace Request\<G> was rejected |

## **Order Cancel/Replace Request\<G>**

The **Order Cancel/Replace Request\<G>** (a.k.a. Order Modification Request) is used to change the parameters of an existing order. Do not use this message to cancel the remaining quantity of an outstanding order, use the **Order Cancel Request\<F>** message for this purpose.

It is possible, that the "Cancel" part succeeds and "Replace" part fails. In this case ExecutionReport<8> with OrdStatus<39> == 4 (Canceled) issued for the canceled order as well as the OrderCancelReject<9> referencing the OrderCancel/ReplaceRequest\<G> with the "Replace" failure reason.

<table><thead><tr><th width="150" align="center">Tag</th><th width="200" align="center">Name</th><th width="150" align="center">Required</th><th align="center">Example</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">37</td><td align="center">OrderID</td><td align="center">Y</td><td align="center">1</td><td align="center">Unique order Id, generated by the server, of the order to cancel/replace</td></tr><tr><td align="center">11</td><td align="center">ClOrdID</td><td align="center">Y</td><td align="center">2</td><td align="center">Request Id assigned by the client</td></tr><tr><td align="center">41</td><td align="center">OrigClOrdID</td><td align="center">Y</td><td align="center">1</td><td align="center">Request Id assigned by the client for the original order</td></tr><tr><td align="center">44</td><td align="center">Price</td><td align="center">Y</td><td align="center">3</td><td align="center">Price, value of type Price</td></tr><tr><td align="center">38</td><td align="center">OrderQty</td><td align="center">Y</td><td align="center">4</td><td align="center">Initial size of replace result will be OrderQty - (old order initial size - old order remaining size)</td></tr><tr><td align="center">40</td><td align="center">OrdType</td><td align="center">Y</td><td align="center">1</td><td align="center">Order Type (see above) should be the same as in the original order</td></tr><tr><td align="center">54</td><td align="center">Side</td><td align="center">Y</td><td align="center">1</td><td align="center">Side of the order(see above) should be the same as in the original order</td></tr><tr><td align="center">60</td><td align="center">TransactTime</td><td align="center">Y</td><td align="center">20230530-09:29:52.722</td><td align="center">UTC Timestamp of the order creation</td></tr></tbody></table>
