From 726f18c87b2871f3a01cf236d441e14fd719b108 Mon Sep 17 00:00:00 2001 From: Yannick1712 <52333989+Yannick1712@users.noreply.github.com> Date: Fri, 20 Mar 2026 16:56:41 +0100 Subject: [PATCH 1/5] [NOTASK] refReward refactoring --- .../referral/reward/services/ref-reward.service.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/subdomains/core/referral/reward/services/ref-reward.service.ts b/src/subdomains/core/referral/reward/services/ref-reward.service.ts index e47a2f7295..e76e1b406f 100644 --- a/src/subdomains/core/referral/reward/services/ref-reward.service.ts +++ b/src/subdomains/core/referral/reward/services/ref-reward.service.ts @@ -1,8 +1,8 @@ import { BadRequestException, Injectable, NotFoundException } from '@nestjs/common'; -import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; import { CryptoService } from 'src/integration/blockchain/shared/services/crypto.service'; import { AssetService } from 'src/shared/models/asset/asset.service'; +import { SettingService } from 'src/shared/models/setting/setting.service'; import { Util } from 'src/shared/utils/util'; import { User } from 'src/subdomains/generic/user/models/user/user.entity'; import { UserService } from 'src/subdomains/generic/user/models/user/user.service'; @@ -70,6 +70,7 @@ export class RefRewardService { private readonly pricingService: PricingService, private readonly assetService: AssetService, private readonly transactionService: TransactionService, + private readonly settingService: SettingService, ) {} async createManualRefReward(dto: CreateManualRefRewardDto): Promise { @@ -90,12 +91,14 @@ export class RefRewardService { PriceValidity.VALID_ONLY, ); + const refRewardManualCheckLimit = await this.settingService.getObj('refRewardManualCheckLimit', 3000); + const entity = this.rewardRepo.create({ user, targetAddress: user.address, outputAsset: asset, sourceTransaction, - status: dto.amountInEur > Config.refRewardManualCheckLimit ? RewardStatus.MANUAL_CHECK : RewardStatus.PREPARED, + status: dto.amountInEur > refRewardManualCheckLimit ? RewardStatus.MANUAL_CHECK : RewardStatus.PREPARED, targetBlockchain: asset.blockchain, amountInChf: eurChfPrice.convert(dto.amountInEur, 8), amountInEur: dto.amountInEur, @@ -151,10 +154,12 @@ export class RefRewardService { if (!(refCreditEur >= minCredit)) continue; + const refRewardManualCheckLimit = await this.settingService.getObj('refRewardManualCheckLimit', 3000); + const entity = this.rewardRepo.create({ outputAsset: payoutAsset, user, - status: refCreditEur > Config.refRewardManualCheckLimit ? RewardStatus.MANUAL_CHECK : RewardStatus.PREPARED, + status: refCreditEur > refRewardManualCheckLimit ? RewardStatus.MANUAL_CHECK : RewardStatus.PREPARED, targetAddress: user.address, targetBlockchain: blockchain, amountInChf: eurChfPrice.convert(refCreditEur, 8), From fa36a1a4a63a362245fbb028fa0077fbbec43d31 Mon Sep 17 00:00:00 2001 From: Yannick1712 <52333989+Yannick1712@users.noreply.github.com> Date: Fri, 20 Mar 2026 16:57:14 +0100 Subject: [PATCH 2/5] [NOTASK] kyc refactoring --- .../generic/kyc/services/kyc.service.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/subdomains/generic/kyc/services/kyc.service.ts b/src/subdomains/generic/kyc/services/kyc.service.ts index e0f9abbf06..7c1a3c67ba 100644 --- a/src/subdomains/generic/kyc/services/kyc.service.ts +++ b/src/subdomains/generic/kyc/services/kyc.service.ts @@ -1446,6 +1446,14 @@ export class KycService { } else if (nationality) { const hasOpenSanctions = await this.nameCheckService.hasOpenNameChecks(userData); + if (hasOpenSanctions) { + this.logger.warn( + `Sanctions guard: blocked KYC Level 30 for userData ${userData.id} due to open sanctioned name checks`, + ); + } else if (userData.kycLevel <= KycLevel.LEVEL_30) { + await this.createKycLevelLog(userData, KycLevel.LEVEL_30); + } + await this.userDataService.updateUserDataInternal(userData, { ...(hasOpenSanctions ? {} : { kycLevel: KycLevel.LEVEL_30 }), birthday: data.birthday, @@ -1461,14 +1469,6 @@ export class KycService { nationality, }); - if (hasOpenSanctions) { - this.logger.warn( - `Sanctions guard: blocked KYC Level 30 for userData ${userData.id} due to open sanctioned name checks`, - ); - } else { - await this.createKycLevelLog(userData, KycLevel.LEVEL_30); - } - if (kycStep.isValidCreatingBankData && !DisabledProcess(Process.AUTO_CREATE_BANK_DATA)) await this.bankDataService.createBankDataInternal(kycStep.userData, { name: kycStep.userName, From 618be32001a25489e5b80fd5ef3cef5a181ff661 Mon Sep 17 00:00:00 2001 From: David May Date: Fri, 20 Mar 2026 17:12:53 +0100 Subject: [PATCH 3/5] fix: input amount calculation with min fee --- .../supporting/payment/services/transaction-helper.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/subdomains/supporting/payment/services/transaction-helper.ts b/src/subdomains/supporting/payment/services/transaction-helper.ts index 0e62411183..23121ba12c 100644 --- a/src/subdomains/supporting/payment/services/transaction-helper.ts +++ b/src/subdomains/supporting/payment/services/transaction-helper.ts @@ -843,7 +843,8 @@ export class TransactionHelper implements OnModuleInit { const inputAmountNormal = (outputAmount + dfx.fixed + bank.fixed + partner.fixed + network + networkStart) / (1 - (dfx.rate + bank.rate + partner.rate)); - const inputAmountWithMinFee = outputAmount + network + bank.fixed + partner.fixed + networkStart + min; + const inputAmountWithMinFee = + (outputAmount + network + bank.fixed + partner.fixed + networkStart + min) / (1 - (bank.rate + partner.rate)); return Math.max(inputAmountNormal, inputAmountWithMinFee); } From 4996a70913a4b479a7d0027c1d2e33532174f3a0 Mon Sep 17 00:00:00 2001 From: Yannick1712 <52333989+Yannick1712@users.noreply.github.com> Date: Fri, 20 Mar 2026 17:20:59 +0100 Subject: [PATCH 4/5] [NOTASK] remove unused code --- src/config/config.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config/config.ts b/src/config/config.ts index b2fb04bdb5..2d1db4f2ee 100644 --- a/src/config/config.ts +++ b/src/config/config.ts @@ -49,7 +49,6 @@ export class Configuration { defaultRef = '000-000'; defaultWalletId = 1; transactionRefundExpirySeconds = 300; // 5 minutes - enough time to fill out the refund form - refRewardManualCheckLimit = 3000; // EUR txRequestWaitingExpiryDays = 7; financeLogTotalBalanceChangeLimit = 5000; faucetAmount = 20; //CHF From 6ff2b3dd3991a2831c9476a263a4109b0511c41a Mon Sep 17 00:00:00 2001 From: David May Date: Fri, 20 Mar 2026 17:24:45 +0100 Subject: [PATCH 5/5] fix: custody order amount fallback --- .../core/custody/dto/output/custody-order-list-entry.dto.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/subdomains/core/custody/dto/output/custody-order-list-entry.dto.ts b/src/subdomains/core/custody/dto/output/custody-order-list-entry.dto.ts index 369f13c9e0..f83939db16 100644 --- a/src/subdomains/core/custody/dto/output/custody-order-list-entry.dto.ts +++ b/src/subdomains/core/custody/dto/output/custody-order-list-entry.dto.ts @@ -1,5 +1,5 @@ -import { CustodyOrderStatus, CustodyOrderType } from '../../enums/custody'; import { CustodyOrder } from '../../entities/custody-order.entity'; +import { CustodyOrderStatus, CustodyOrderType } from '../../enums/custody'; export class CustodyOrderListEntry { id: number; @@ -20,9 +20,9 @@ export class CustodyOrderListEntry { id: order.id, type: order.type, status: order.status, - inputAmount: order.inputAmount ?? tr?.amount, + inputAmount: order.inputAmount ?? tr?.estimatedAmount, inputAsset: order.inputAsset?.name, - outputAmount: order.outputAmount ?? tr?.estimatedAmount, + outputAmount: order.outputAmount ?? tr?.amount, outputAsset: order.outputAsset?.name, userDataId: order.user?.userData?.id, userName: order.user?.userData?.verifiedName,