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

TestedCaseIdDescription
1.1Logon correctly and handle Logon
1.2Logon incorrectly and handle Reject
1.3Logout correctly
1.4Handle unexpected connection reset (for instance simulated broken with tcpview)

2. Quotes

2.1 Quotes - Error Cases

TestedCaseIdDescription
2.1.1QuoteRequest with missing required fields and handle Reject
2.1.2QuoteRequest with invalid values and handle QuoteRequestReject

2.2 Quotes - Happy Path

Submit QuoteRequest, for instance in BTC/USD, and handle Quote.

TestedCaseIdDescription
2.2.1QuoteRequest with side in base-amount, BTC 0.3
2.2.2QuoteRequest with side in quote-amount, USD 16000
2.3.1QuoteRequest without side in base-amount, BTC 0.3
2.3.2QuoteRequest without side in quote-amount, USD 16000

3. Orders

3.1 Orders - Error Cases

TestedCaseIdDescription
3.1.1NewOrderSingle with missing required fields and handle Reject
3.1.2NewOrderSingle 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).

TestedCaseIdDescription
3.2.1.1NewOrderSingle(PreviouslyQuoted, FOK, Buy, Base-amount) BTC 0.3
3.2.1.2NewOrderSingle(PreviouslyQuoted, FOK, Buy, Quote-amount) USD 16000
3.2.1.3NewOrderSingle(PreviouslyQuoted, FOK, Sell, Base-amount) BTC 0.3
3.2.1.4NewOrderSingle(PreviouslyQuoted, FOK, Sell, Quote-amount) USD 16000
3.2.2.1NewOrderSingle(Market, FOK, Buy, Base-amount) BTC 0.3
3.2.2.2NewOrderSingle(Market, FOK, Buy, Quote-amount) USD 16000
3.2.2.3NewOrderSingle(Market, FOK, Sell, Base-amount) BTC 0.3
3.2.2.4NewOrderSingle(Market, FOK, Sell, Quote-amount) USD 16000
3.2.3.1NewOrderSingle(Limit, FOK, Buy, Base-amount) BTC 0.3
3.2.3.2NewOrderSingle(Limit, FOK, Buy, Quote-amount) USD 16000
3.2.3.3NewOrderSingle(Limit, FOK, Sell, Base-amount) BTC 0.3
3.2.3.4NewOrderSingle(Limit, FOK, Sell, Quote-amount) USD 16000

3.3 Orders - Happy Path

Submit NewOrderSingle, for instance in BTC/USD, and handle ExecutionReport(New).

TestedCaseIdDescription
3.3.1.1NewOrderSingle(Limit, GTC, Buy, Base-amount) BTC 0.3
3.3.1.2NewOrderSingle(Limit, GTC, Buy, Quote-amount) USD 16000
3.3.1.3NewOrderSingle(Limit, GTC, Sell, Base-amount) BTC 0.3
3.3.1.4NewOrderSingle(Limit, GTC, Sell, Quote-amount) USD 16000
3.3.2.1NewOrderSingle(Stop, GTC, Buy, Base-amount) BTC 0.3
3.3.2.2NewOrderSingle(Stop, GTC, Buy, Quote-amount) USD 16000
3.3.2.3NewOrderSingle(Stop, GTC, Sell, Base-amount) BTC 0.3
3.3.2.4NewOrderSingle(Stop, GTC, Sell, Quote-amount) USD 16000

3.4 Orders (Strategy) - Happy Path

Submit NewOrderSingle, for instance in BTC/USD, and handle ExecutionReport(New).

TestedCaseIdDescription
3.4.2.1NewOrderSingle(Market, GTC, Smart, Buy, Base-amount) BTC 0.3
3.4.2.2NewOrderSingle(Market, GTC, Smart, Buy, Quote-amount) USD 16000
3.4.2.3NewOrderSingle(Market, GTC, Smart, Sell, Base-amount) BTC 0.3
3.4.2.4NewOrderSingle(Market, GTC, Smart, Sell, Quote-amount) USD 16000

3.5 Orders Filled - Happy Path

TestedCaseIdDescription
3.5.1ExecutionReport(PartiallyFilled, Base-amount)
3.5.2ExecutionReport(PartiallyFilled, Quote-amount)
3.5.1ExecutionReport(Filled, Base-amount)
3.5.2ExecutionReport(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

TestedCaseIdDescription
3.6.1OrderStatusRequest with unknown order and handle Reject
3.6.2OrderStatusRequest with known recent order and handle ExecutionReport
3.6.3OrderMassStatusRequest with no open orders and handle empty ExecutionReport
3.6.4OrderMassStatusRequest with one open order and handle one ExecutionReport
3.6.5OrderMassStatusRequest with two open order and handle two ExecutionReports

3.7 Orders Cancellation

TestedCaseIdDescription
3.7.1OrderCancelRequest with unknown order and handle OrderCancelReject
3.7.2OrderCancelRequest with known closed order and handle OrderCancelReject
3.7.3OrderCancelRequest with known open order and handle:- ExecutionReport(PendingCancel)- ExecutionReport(Cancelled)

4. Market Data

TestedCaseIdDescription
4.1.1MarketDataRequest with unknown symbol and handle MarketDataRequestReject
4.1.2MarketDataRequest with more than one symbol and handle MarketDataRequestReject
4.1.3MarketDataRequest(Subscribe) with one symbol and handle a stream of MarketDataSnapshotFullRefresh
4.1.4MarketDataRequest(Unsubscribe) with one symbol
4.1.5How does your system handle an empty MarketDataSnapshotFullRefresh?

5. TLSv1.3 Encryption

TestedCaseIdDescription
5.1.1Do you plan to use TLSv1.3 encryption
5.1.2Please attach the public part (in PEM format) of the client certificate together with this report