## Onboarding Before being allowed access to the production environment, clients must demonstrate they can handle all messages as defined in the specification. This process is called the BTCS FIX certification process. The client schedules an online meeting with a BTCS technician, which will walk the client through the test cases and ask the client to submit messages for verification. ## FIX 4.4 Certification Please demonstrate correct handling of the below cases against our FIX Sandbox environment; i.e. `BTCSMDT` and `BTCSOMT`. You are required to submit the FIX messages sent and received together with a list of the tested cases to `tss@bitcoinsuisse.com` for verification. If possible, please include the `CaseId` in the `QuoteReqID` or `ClOrderID` fields for easier verification. ### 1. Session | Tested | CaseId | Description | | --- | --- | --- | | | 1.1 | Logon correctly and handle Logon | | | 1.2 | Logon incorrectly and handle Reject | | | 1.3 | Logout correctly | | | 1.4 | Handle unexpected connection reset (for instance simulated broken with tcpview) | ### 2. Quotes #### 2.1 Quotes - Error Cases | Tested | CaseId | Description | | --- | --- | --- | | | 2.1.1 | QuoteRequest with missing required fields and handle Reject | | | 2.1.2 | QuoteRequest with invalid values and handle QuoteRequestReject | #### 2.2 Quotes - Happy Path Submit QuoteRequest, for instance in BTC/USD, and handle Quote. | Tested | CaseId | Description | | --- | --- | --- | | | 2.2.1 | QuoteRequest with side in base-amount, BTC 0.3 | | | 2.2.2 | QuoteRequest with side in quote-amount, USD 16000 | | | 2.3.1 | QuoteRequest without side in base-amount, BTC 0.3 | | | 2.3.2 | QuoteRequest without side in quote-amount, USD 16000 | ### 3. Orders #### 3.1 Orders - Error Cases | Tested | CaseId | Description | | --- | --- | --- | | | 3.1.1 | NewOrderSingle with missing required fields and handle Reject | | | 3.1.2 | NewOrderSingle with invalid values and handle ExecutionReport(Rejected) | #### 3.2 Orders (Instant Execution) - Happy Path Submit NewOrderSingle, for instance in BTC/USD, and handle ExecutionReport(New). | Tested | CaseId | Description | | --- | --- | --- | | | 3.2.1.1 | NewOrderSingle(PreviouslyQuoted, FOK, Buy, Base-amount) BTC 0.3 | | | 3.2.1.2 | NewOrderSingle(PreviouslyQuoted, FOK, Buy, Quote-amount) USD 16000 | | | 3.2.1.3 | NewOrderSingle(PreviouslyQuoted, FOK, Sell, Base-amount) BTC 0.3 | | | 3.2.1.4 | NewOrderSingle(PreviouslyQuoted, FOK, Sell, Quote-amount) USD 16000 | | | 3.2.2.1 | NewOrderSingle(Market, FOK, Buy, Base-amount) BTC 0.3 | | | 3.2.2.2 | NewOrderSingle(Market, FOK, Buy, Quote-amount) USD 16000 | | | 3.2.2.3 | NewOrderSingle(Market, FOK, Sell, Base-amount) BTC 0.3 | | | 3.2.2.4 | NewOrderSingle(Market, FOK, Sell, Quote-amount) USD 16000 | | | 3.2.3.1 | NewOrderSingle(Limit, FOK, Buy, Base-amount) BTC 0.3 | | | 3.2.3.2 | NewOrderSingle(Limit, FOK, Buy, Quote-amount) USD 16000 | | | 3.2.3.3 | NewOrderSingle(Limit, FOK, Sell, Base-amount) BTC 0.3 | | | 3.2.3.4 | NewOrderSingle(Limit, FOK, Sell, Quote-amount) USD 16000 | #### 3.3 Orders - Happy Path Submit NewOrderSingle, for instance in BTC/USD, and handle ExecutionReport(New). | Tested | CaseId | Description | | --- | --- | --- | | | 3.3.1.1 | NewOrderSingle(Limit, GTC, Buy, Base-amount) BTC 0.3 | | | 3.3.1.2 | NewOrderSingle(Limit, GTC, Buy, Quote-amount) USD 16000 | | | 3.3.1.3 | NewOrderSingle(Limit, GTC, Sell, Base-amount) BTC 0.3 | | | 3.3.1.4 | NewOrderSingle(Limit, GTC, Sell, Quote-amount) USD 16000 | | | 3.3.2.1 | NewOrderSingle(Stop, GTC, Buy, Base-amount) BTC 0.3 | | | 3.3.2.2 | NewOrderSingle(Stop, GTC, Buy, Quote-amount) USD 16000 | | | 3.3.2.3 | NewOrderSingle(Stop, GTC, Sell, Base-amount) BTC 0.3 | | | 3.3.2.4 | NewOrderSingle(Stop, GTC, Sell, Quote-amount) USD 16000 | #### 3.4 Orders (Strategy) - Happy Path Submit NewOrderSingle, for instance in BTC/USD, and handle ExecutionReport(New). | Tested | CaseId | Description | | --- | --- | --- | | | 3.4.2.1 | NewOrderSingle(Market, GTC, Smart, Buy, Base-amount) BTC 0.3 | | | 3.4.2.2 | NewOrderSingle(Market, GTC, Smart, Buy, Quote-amount) USD 16000 | | | 3.4.2.3 | NewOrderSingle(Market, GTC, Smart, Sell, Base-amount) BTC 0.3 | | | 3.4.2.4 | NewOrderSingle(Market, GTC, Smart, Sell, Quote-amount) USD 16000 | #### 3.5 Orders Filled - Happy Path | Tested | CaseId | Description | | --- | --- | --- | | | 3.5.1 | ExecutionReport(PartiallyFilled, Base-amount) | | | 3.5.2 | ExecutionReport(PartiallyFilled, Quote-amount) | | | 3.5.1 | ExecutionReport(Filled, Base-amount) | | | 3.5.2 | ExecutionReport(Filled, Quote-amount) | Please submit records from your booking / position system to show that you have correctly handled: - traded quantity in traded currency - commission #### 3.6 Orders Status | Tested | CaseId | Description | | --- | --- | --- | | | 3.6.1 | OrderStatusRequest with unknown order and handle Reject | | | 3.6.2 | OrderStatusRequest with known recent order and handle ExecutionReport | | | 3.6.3 | OrderMassStatusRequest with no open orders and handle empty ExecutionReport | | | 3.6.4 | OrderMassStatusRequest with one open order and handle one ExecutionReport | | | 3.6.5 | OrderMassStatusRequest with two open order and handle two ExecutionReports | #### 3.7 Orders Cancellation | Tested | CaseId | Description | | --- | --- | --- | | | 3.7.1 | OrderCancelRequest with unknown order and handle OrderCancelReject | | | 3.7.2 | OrderCancelRequest with known closed order and handle OrderCancelReject | | | 3.7.3 | OrderCancelRequest with known open order and handle:- ExecutionReport(PendingCancel)- ExecutionReport(Cancelled) | ### 4. Market Data | Tested | CaseId | Description | | --- | --- | --- | | | 4.1.1 | MarketDataRequest with unknown symbol and handle MarketDataRequestReject | | | 4.1.2 | MarketDataRequest with more than one symbol and handle MarketDataRequestReject | | | 4.1.3 | MarketDataRequest(Subscribe) with one symbol and handle a stream of MarketDataSnapshotFullRefresh | | | 4.1.4 | MarketDataRequest(Unsubscribe) with one symbol | | | 4.1.5 | How does your system handle an empty MarketDataSnapshotFullRefresh? | ### 5. TLSv1.3 Encryption | Tested | CaseId | Description | | --- | --- | --- | | | 5.1.1 | Do you plan to use TLSv1.3 encryption | | | 5.1.2 | Please attach the public part (in PEM format) of the client certificate together with this report |