OpenAPI

Background

Depending on the local jurisdiction of Saxo bank users, Saxo will block orders if a user is deemed not appropriate for performing this trade. Factors that are used to determine which orders to block depends on multiple factors, including but not limited to:

  • User's country
  • User's appropriateness level
  • User's classification (retail/professional)
  • Whether the order would increase or decrease exposure (we always allow users to decrease their exposure).

Specific examples of orders that would be blocked at the time of writing this:

  • Order that would increase exposure in a SrdOnStock instrument for a French retail user who hasn't completed their appropriateness test for SRDs. (If the user completes the test they would be allowed to place this order no matter if they are deemed Appropriate or NotAppropriate)

  • Order that would increase exposure in a FxSpot instrument for an Australian retail user who hasn't completed their appropriateness test for FxSpot or who has completed the test but has been deemed not appropriate.

But as regulation around the world changes constantly, so will the rules Saxo uses to block orders. The information above is therefore only to help explain the purpose of this feature and should not be used otherwise. OpenAPI will correctly apply the latest rules to orders and return the correct result.

How to handle this in your OpenAPI application

Since all logic is implemented fully in OpenAPI the only thing your application has to do is to handle the new error code returned when an order is rejected due to user's appropriateness. There is no change to successful orders in any cases!

The new error code returned is "NotSuitable", and the format follow our standard error message format. Below are examples of the error as returned for the precheck endpoint and the order placement endpoint:

Precheck Response

POST https//gateway.saxobank.com/openapi/trade/v2/orders/precheck
{
  "Uic": 16,
  "BuySell": "Buy",
  "AssetType": "FxSpot",
  "Amount": 5000,
  "OrderPrice": 7,
  "OrderType": "Limit",
  "OrderRelation": "StandAlone",
  "ManualOrder": true,
  "OrderDuration": {
    "DurationType": "GoodTillCancel"
  },
  "AccountKey": "fs0QWrM1KrzwOQJc0tYBMQ=="
}

Response:
200 OK
{
  "ErrorInfo": {
    "ErrorCode": "NotSuitable",
    "Message": "The order has been rejected because the instrument is not currently suitable for you or because a suitability test has not been taken."
  },
  "EstimatedCashRequired": 0.0,
  "PreCheckResult": "Error"
}

Order Placement Response

POST https//gateway.saxobank.com/openapi/trade/v2/orders
{
  "Uic": 16,
  "BuySell": "Buy",
  "AssetType": "FxSpot",
  "Amount": 5000,
  "OrderPrice": 7,
  "OrderType": "Limit",
  "OrderRelation": "StandAlone",
  "ManualOrder": true,
  "OrderDuration": {
    "DurationType": "GoodTillCancel"
  },
  "AccountKey": "fs0QWrM1KrzwOQJc0tYBMQ=="
}

Response:
400 Bad Request
{
  "ErrorInfo": {
    "ErrorCode": "NotSuitable",
    "Message": "The order has been rejected because the instrument is not currently suitable for you or because a suitability test has not been taken."
  }
}  


How can the user take the suitability and appropriateness test

Users may take the relevant test from within one of Saxo's platforms.

SaxoInvestor

First click on the user menu and then select Settings:


Inside Settings select the Trading Products menu and click on Take test for the relevant product:

SaxoTrader GO

First click on the user menu and then select Settings:


Inside Settings select the Trading Products menu and click on Take test for the relevant product::