diff --git a/.vscode/settings.json b/.vscode/settings.json
index 8c167a488..02db64b75 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,5 +1,7 @@
{
- "editor.codeActionsOnSave": { "source.fixAll.eslint": true },
+ "editor.codeActionsOnSave": {
+ "source.fixAll.eslint": "explicit"
+ },
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
}
diff --git a/config/v3/cashier/send.json b/config/v3/cashier/send.json
index 46d7f2ae2..534691c8b 100644
--- a/config/v3/cashier/send.json
+++ b/config/v3/cashier/send.json
@@ -47,7 +47,7 @@
]
},
"provider": {
- "description": "[Optional] Cashier provider. `crypto` will be default option for crypto currency accounts.",
+ "description": "[Optional] Cashier provider.",
"type": "string",
"default": "doughflow",
"enum": [
diff --git a/config/v3/get_settings/receive.json b/config/v3/get_settings/receive.json
index 5f95ee6c6..0f819ad13 100644
--- a/config/v3/get_settings/receive.json
+++ b/config/v3/get_settings/receive.json
@@ -278,6 +278,10 @@
"string"
]
},
+ "tnc_status": {
+ "description": "Terms and condition status tells us whether all the accounts of this user has accepted the latest T&C version.",
+ "type": "object"
+ },
"trading_hub": {
"description": "Boolean value 1 or 0, indicating if client has enabled the Trading Hub dashboard",
"type": "integer"
diff --git a/config/v3/landing_company/receive.json b/config/v3/landing_company/receive.json
index f87a41e19..a7a69dbd1 100644
--- a/config/v3/landing_company/receive.json
+++ b/config/v3/landing_company/receive.json
@@ -965,338 +965,12 @@
"additionalProperties": false,
"properties": {
"financial": {
- "description": "Contain details for landing company for financial subtype. The Financial account is suitable for a wide range of traders, both new and experienced. It gives you mid-range leverage and variable spreads that give you a great deal of flexibility for whatever position you wish to take in the market.",
- "type": [
- "null",
- "object"
- ],
- "additionalProperties": false,
- "properties": {
- "address": {
- "description": "Landing Company address",
- "type": [
- "array",
- "null"
- ],
- "items": {
- "type": "string"
- }
- },
- "changeable_fields": {
- "description": "Special conditions for changing sensitive fields",
- "type": "object"
- },
- "country": {
- "description": "Landing Company country of incorporation",
- "type": "string"
- },
- "currency_config": {
- "title": "Currency Config Structure",
- "description": "The configuration of each currency.",
- "type": "object"
- },
- "has_reality_check": {
- "description": "Flag to indicate whether reality check is applicable for this Landing Company. `1`: applicable, `0`: not applicable. The Reality Check is a feature that gives a summary of the client's trades and account balances on a regular basis throughout his session, and is a regulatory requirement for certain Landing Companies.",
- "type": "integer",
- "enum": [
- 0,
- 1
- ]
- },
- "legal_allowed_contract_categories": {
- "description": "Allowed contract types for this Landing Company",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "legal_allowed_currencies": {
- "description": "Allowed account currencies for this Landing Company",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "legal_allowed_markets": {
- "description": "Allowed markets for this Landing Company",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "legal_default_currency": {
- "description": "Default account currency",
- "type": "string"
- },
- "name": {
- "description": "Landing Company legal name",
- "type": "string"
- },
- "requirements": {
- "description": "Legal requirements for the Landing Company",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "after_first_deposit": {
- "description": "After first deposit requirements",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "financial_assessment": {
- "description": "Financial assessment requirements",
- "type": "array",
- "items": {
- "type": "string",
- "examples": [
- "financial_information",
- "trading_experience"
- ]
- }
- }
- }
- },
- "compliance": {
- "description": "Compliance requirements",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "mt5": {
- "description": "Compliance MT5 requirements",
- "type": "array",
- "items": {
- "type": "string",
- "examples": [
- "expiration_check",
- "fully_authenticated"
- ]
- }
- },
- "tax_information": {
- "description": "Compliance tax information requirements",
- "type": "array",
- "items": {
- "type": "string",
- "examples": [
- "tax_identification_number",
- "tax_residence"
- ]
- }
- }
- }
- },
- "signup": {
- "description": "Sign up requirements",
- "type": "array",
- "items": {
- "type": "string",
- "examples": [
- "first_name",
- "residence",
- "salutation"
- ]
- }
- },
- "withdrawal": {
- "description": "Withdrawal requirements",
- "type": "array",
- "items": {
- "type": "string",
- "examples": [
- "address_city",
- "address_line_1"
- ]
- }
- }
- }
- },
- "shortcode": {
- "description": "Landing Company short code",
- "type": "string"
- },
- "support_professional_client": {
- "description": "Flag that indicates whether the landing company supports professional accounts or not",
- "type": "integer",
- "enum": [
- 0,
- 1
- ]
- },
- "tin_not_mandatory": {
- "description": "Flag that indicates whether tax identifier number is not mandatory for the current country and landing company.",
- "type": "integer",
- "enum": [
- 0,
- 1
- ]
- }
- }
+ "$ref": "#/$defs/landingCompanyDetails",
+ "description": "Contain details for landing company for financial subtype. The Financial account is suitable for a wide range of traders, both new and experienced. It gives you mid-range leverage and variable spreads that give you a great deal of flexibility for whatever position you wish to take in the market."
},
"financial_stp": {
- "description": "Contain details for landing company for Financial STP subtype. The Financial STP account provides you with tight spreads, higher ticket size and offers a variety of FX pairs from majors to exotics. It is a straight through processing (STP) account with direct access to FX liquidity from various providers.",
- "type": [
- "null",
- "object"
- ],
- "additionalProperties": false,
- "properties": {
- "address": {
- "description": "Landing Company address",
- "type": [
- "array",
- "null"
- ],
- "items": {
- "type": "string"
- }
- },
- "changeable_fields": {
- "description": "Special conditions for changing sensitive fields",
- "type": "object"
- },
- "country": {
- "description": "Landing Company country of incorporation",
- "type": "string"
- },
- "currency_config": {
- "title": "Currency Config Structure",
- "description": "The configuration of each currency.",
- "type": "object"
- },
- "has_reality_check": {
- "description": "Flag to indicate whether reality check is applicable for this Landing Company. `1`: applicable, `0`: not applicable. The Reality Check is a feature that gives a summary of the client's trades and account balances on a regular basis throughout his session, and is a regulatory requirement for certain Landing Companies.",
- "type": "integer",
- "enum": [
- 0,
- 1
- ]
- },
- "legal_allowed_contract_categories": {
- "description": "Allowed contract types for this Landing Company",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "legal_allowed_currencies": {
- "description": "Allowed account currencies for this Landing Company",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "legal_allowed_markets": {
- "description": "Allowed markets for this Landing Company",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "legal_default_currency": {
- "description": "Default account currency",
- "type": "string"
- },
- "name": {
- "description": "Landing Company legal name",
- "type": "string"
- },
- "requirements": {
- "description": "Legal requirements for the Landing Company",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "after_first_deposit": {
- "description": "After first deposit requirements",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "financial_assessment": {
- "description": "Financial assessment requirements",
- "type": "array",
- "items": {
- "type": "string",
- "examples": [
- "financial_information",
- "trading_experience"
- ]
- }
- }
- }
- },
- "compliance": {
- "description": "Compliance requirements",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "mt5": {
- "description": "Compliance MT5 requirements",
- "type": "array",
- "items": {
- "type": "string",
- "examples": [
- "expiration_check",
- "fully_authenticated"
- ]
- }
- },
- "tax_information": {
- "description": "Compliance tax information requirements",
- "type": "array",
- "items": {
- "type": "string",
- "examples": [
- "tax_identification_number",
- "tax_residence"
- ]
- }
- }
- }
- },
- "signup": {
- "description": "Sign up requirements",
- "type": "array",
- "items": {
- "type": "string",
- "examples": [
- "first_name",
- "residence",
- "salutation"
- ]
- }
- },
- "withdrawal": {
- "description": "Withdrawal requirements",
- "type": "array",
- "items": {
- "type": "string",
- "examples": [
- "address_city",
- "address_line_1"
- ]
- }
- }
- }
- },
- "shortcode": {
- "description": "Landing Company short code",
- "type": "string"
- },
- "support_professional_client": {
- "description": "Flag that indicates whether the landing company supports professional accounts or not",
- "type": "integer",
- "enum": [
- 0,
- 1
- ]
- },
- "tin_not_mandatory": {
- "description": "Flag that indicates whether tax identifier number is not mandatory for the current country and landing company.",
- "type": "integer",
- "enum": [
- 0,
- 1
- ]
- }
- }
+ "$ref": "#/$defs/landingCompanyDetails",
+ "description": "Contain details for landing company for Financial STP subtype. The Financial STP account provides you with tight spreads, higher ticket size and offers a variety of FX pairs from majors to exotics. It is a straight through processing (STP) account with direct access to FX liquidity from various providers."
}
}
},
@@ -1578,6 +1252,49 @@
}
}
},
+ "clientKycStatusRequirements": {
+ "description": "[Optional] Pertains to client KYC. Returned only if the client fails to meet the requirements, including proof of identity (POI), validity of the tax identification number (TIN), and proof of address (POA).",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "poa_status",
+ "poi_status",
+ "valid_tin"
+ ],
+ "properties": {
+ "poa_status": {
+ "description": "Status of proof of address (POA).",
+ "type": "string",
+ "enum": [
+ "none",
+ "pending",
+ "expired",
+ "verified",
+ "rejected"
+ ]
+ },
+ "poi_status": {
+ "description": "Status of proof of identity (POI).",
+ "type": "string",
+ "enum": [
+ "none",
+ "pending",
+ "verified",
+ "suspected",
+ "rejected",
+ "expired"
+ ]
+ },
+ "valid_tin": {
+ "description": "Indicates whether the tax identification number (TIN) is valid (1) or not (0).",
+ "type": "integer",
+ "enum": [
+ 1,
+ 0
+ ]
+ }
+ }
+ },
"complianceRequirements": {
"description": "Compliance requirements",
"type": "object",
@@ -1628,6 +1345,10 @@
"description": "Special conditions for changing sensitive fields",
"type": "object"
},
+ "client_kyc_status": {
+ "$ref": "#/$defs/clientKycStatusRequirements",
+ "description": "Client kyc statusequirements"
+ },
"country": {
"description": "Landing Company country of incorporation",
"type": "string"
diff --git a/config/v3/mt5_login_list/receive.json b/config/v3/mt5_login_list/receive.json
index 6cbb08a56..0296852b3 100644
--- a/config/v3/mt5_login_list/receive.json
+++ b/config/v3/mt5_login_list/receive.json
@@ -29,6 +29,44 @@
"description": "Balance of the MT5 account.",
"type": "number"
},
+ "client_kyc_status": {
+ "description": "[Optional] Pertains to client KYC. Returned only if the client fails to meet the requirements, including proof of identity (POI), validity of the tax identification number (TIN), and proof of address (POA).",
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "poa_status": {
+ "description": "Status of proof of address (POA).",
+ "type": "string",
+ "enum": [
+ "none",
+ "pending",
+ "expired",
+ "verified",
+ "rejected"
+ ]
+ },
+ "poi_status": {
+ "description": "Status of proof of identity (POI).",
+ "type": "string",
+ "enum": [
+ "none",
+ "pending",
+ "verified",
+ "suspected",
+ "rejected",
+ "expired"
+ ]
+ },
+ "valid_tin": {
+ "description": "Indicates whether the tax identification number (TIN) is valid (1) or not (0).",
+ "type": "integer",
+ "enum": [
+ 1,
+ 0
+ ]
+ }
+ }
+ },
"country": {
"description": "Residence of the MT5 account.",
"type": "string"
@@ -164,6 +202,10 @@
"description": "Group type of the MT5 account, e.g. `demo\\svg_financial`",
"type": "string"
},
+ "is_main_agent": {
+ "description": "Indicate if the account is a main agent - an IB account",
+ "type": "boolean"
+ },
"landing_company": {
"description": "Broker name",
"type": "string"
diff --git a/config/v3/new_account_maltainvest/example.json b/config/v3/new_account_maltainvest/example.json
index 3c3e68673..67e8535e4 100644
--- a/config/v3/new_account_maltainvest/example.json
+++ b/config/v3/new_account_maltainvest/example.json
@@ -38,6 +38,7 @@
"source_of_wealth": "Company Ownership",
"tax_identification_number": "111-222-333",
"tax_residence": "de,nl",
+ "tnc_acceptance": 1,
"trading_experience_financial_instruments": "Less than a year",
"trading_frequency_financial_instruments": "1 - 5 transactions in the past 12 months"
}
diff --git a/config/v3/new_account_maltainvest/send.json b/config/v3/new_account_maltainvest/send.json
index aacddeed3..c7e6ac39e 100644
--- a/config/v3/new_account_maltainvest/send.json
+++ b/config/v3/new_account_maltainvest/send.json
@@ -390,6 +390,14 @@
"type": "string",
"pattern": "^[a-z]{0,2}(?:,[a-z]{2})*$"
},
+ "tnc_acceptance": {
+ "description": "The tnc acceptance status of the user.",
+ "type": "integer",
+ "enum": [
+ 0,
+ 1
+ ]
+ },
"trading_experience_financial_instruments": {
"description": "How much experience do you have with other financial instruments?",
"type": "string",
diff --git a/config/v3/new_account_real/example.json b/config/v3/new_account_real/example.json
index 9f57aa049..94455b731 100644
--- a/config/v3/new_account_real/example.json
+++ b/config/v3/new_account_real/example.json
@@ -19,5 +19,6 @@
"secret_answer": "Jones",
"secret_question": "Mother's maiden name",
"tax_identification_number": "012142545",
- "tax_residence": "ar,sg"
+ "tax_residence": "ar,sg",
+ "tnc_acceptance": 1
}
diff --git a/config/v3/new_account_real/send.json b/config/v3/new_account_real/send.json
index bdf9dee5d..6041a02df 100644
--- a/config/v3/new_account_real/send.json
+++ b/config/v3/new_account_real/send.json
@@ -183,6 +183,14 @@
"type": "string",
"pattern": "^[a-z]{0,2}(?:,[a-z]{2})*$"
},
+ "tnc_acceptance": {
+ "description": "The tnc acceptance status of the user.",
+ "type": "integer",
+ "enum": [
+ 0,
+ 1
+ ]
+ },
"loginid": {
"description": "[Optional] The login id of the user. Mandatory when multiple tokens were provided during authorize.",
"type": "string",
diff --git a/config/v3/tnc_approval/send.json b/config/v3/tnc_approval/send.json
index dabf87767..d64e141bc 100644
--- a/config/v3/tnc_approval/send.json
+++ b/config/v3/tnc_approval/send.json
@@ -19,13 +19,6 @@
1
]
},
- "affiliate_coc_agreement": {
- "description": "[Optional] For Affiliate's Code of Conduct Agreement.",
- "type": "integer",
- "enum": [
- 1
- ]
- },
"loginid": {
"description": "[Optional] The login id of the user. Mandatory when multiple tokens were provided during authorize.",
"type": "string",
diff --git a/src/components/Footer/__tests__/Footer.test.tsx b/src/components/Footer/__tests__/Footer.test.tsx
index e45285386..9c7aba159 100644
--- a/src/components/Footer/__tests__/Footer.test.tsx
+++ b/src/components/Footer/__tests__/Footer.test.tsx
@@ -21,13 +21,14 @@ describe('Footer Component', () => {
render();
const telegramButton = screen.getByText(/Telegram/);
fireEvent.click(telegramButton);
- expect(window.open).toHaveBeenCalledWith('https://t.me/derivdotcomofficial', '_blank');
+ expect(window.open).toHaveBeenCalledWith('https://t.me/+g6FV5tFY1u9lZGE1', '_blank');
});
it('opens respective email in a new tab when email button is clicked', () => {
window.open = jest.fn();
render();
const emailButton = screen.getByText(/Send an email/);
+ expect(emailButton).toBeInTheDocument();
fireEvent.click(emailButton);
expect(window.open).toHaveBeenCalledWith('mailto:api-support@deriv.com', '_blank');
});
diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx
index 76763e254..2e13e27fe 100644
--- a/src/components/Footer/index.tsx
+++ b/src/components/Footer/index.tsx
@@ -193,7 +193,7 @@ const Footer = () => {
variant='outlined'
className={styles.PaddedButton}
onClick={() => {
- window.open('https://t.me/derivdotcomofficial', '_blank');
+ window.open('https://t.me/+g6FV5tFY1u9lZGE1', '_blank');
}}
>