diff --git a/src/subdomains/core/buy-crypto/routes/buy/buy.service.ts b/src/subdomains/core/buy-crypto/routes/buy/buy.service.ts index 5031a1702e..b52c3c59e2 100644 --- a/src/subdomains/core/buy-crypto/routes/buy/buy.service.ts +++ b/src/subdomains/core/buy-crypto/routes/buy/buy.service.ts @@ -355,6 +355,35 @@ export class BuyService { asset?: Asset, wallet?: Wallet, ): Promise { + // EUR: VIBAN is mandatory + if (selector.currency === 'EUR') { + if (selector.userData.kycLevel < KycLevel.LEVEL_50) { + throw new BadRequestException('KycRequired'); + } + + let virtualIban = await this.virtualIbanService.getActiveForUserAndCurrency(selector.userData, selector.currency); + + if (!virtualIban) { + virtualIban = await this.virtualIbanService.createForUser(selector.userData, selector.currency); + } + + const { address } = selector.userData; + return { + name: selector.userData.completeName, + street: address.street, + ...(address.houseNumber && { number: address.houseNumber }), + zip: address.zip, + city: address.city, + country: address.country?.name, + bank: virtualIban.bank.name, + iban: virtualIban.iban, + bic: virtualIban.bank.bic, + sepaInstant: virtualIban.bank.sctInst, + isPersonalIban: true, + reference: this.getBuyReference(buy?.bankUsage, false), + }; + } + // asset-specific personal IBAN if ( buy && diff --git a/src/subdomains/supporting/fiat-output/fiat-output-job.service.ts b/src/subdomains/supporting/fiat-output/fiat-output-job.service.ts index a8d19cc2de..f23df436bb 100644 --- a/src/subdomains/supporting/fiat-output/fiat-output-job.service.ts +++ b/src/subdomains/supporting/fiat-output/fiat-output-job.service.ts @@ -393,7 +393,6 @@ export class FiatOutputJobService { amount: Not(IsNull()), isComplete: false, bankTx: { id: IsNull() }, - isReadyDate: Not(IsNull()), }, relations: { bankTx: { transaction: true }, bankTxReturn: true, bankTxRepeat: true }, }); @@ -401,7 +400,7 @@ export class FiatOutputJobService { for (const entity of entities) { try { const bankTx = await this.getMatchingBankTx(entity); - if (!bankTx || entity.isReadyDate > bankTx.created) continue; + if (!bankTx || (entity.isReadyDate && entity.isReadyDate > bankTx.created)) continue; const updateData: Partial = { bankTx,