@develit-services/bank 5.5.1 → 5.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/base.cjs CHANGED
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  const backendSdk = require('@develit-io/backend-sdk');
4
- const paymentDirection = require('./shared/bank.DMrkshJa.cjs');
4
+ const paymentDirection = require('./shared/bank.Dhf4K9Z2.cjs');
5
5
  const drizzleOrm = require('drizzle-orm');
6
6
  const cloudflare_workers = require('cloudflare:workers');
7
7
  const d1 = require('drizzle-orm/d1');
8
8
  require('jose');
9
- const bank = require('./shared/bank.B04qoHtD.cjs');
9
+ const bank = require('./shared/bank.cuh6lhhy.cjs');
10
10
  const zod = require('zod');
11
11
  const database_schema = require('./shared/bank.9Yw4KHyl.cjs');
12
12
  const generalCodes = require('@develit-io/general-codes');
package/dist/base.d.cts CHANGED
@@ -2699,9 +2699,9 @@ declare const getBatchesInputSchema: z.ZodObject<{
2699
2699
  limit: z.ZodNumber;
2700
2700
  sort: z.ZodObject<{
2701
2701
  column: z.ZodEnum<{
2702
+ batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
2702
2703
  createdAt: "createdAt";
2703
2704
  updatedAt: "updatedAt";
2704
- batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
2705
2705
  }>;
2706
2706
  direction: z.ZodEnum<{
2707
2707
  asc: "asc";
@@ -2825,9 +2825,9 @@ declare const getPaymentsInputSchema: z.ZodObject<{
2825
2825
  limit: z.ZodNumber;
2826
2826
  sort: z.ZodObject<{
2827
2827
  column: z.ZodEnum<{
2828
- amount: "amount";
2829
2828
  createdAt: "createdAt";
2830
2829
  updatedAt: "updatedAt";
2830
+ amount: "amount";
2831
2831
  }>;
2832
2832
  direction: z.ZodEnum<{
2833
2833
  asc: "asc";
@@ -3875,9 +3875,9 @@ declare const getPaymentRequestsInputSchema: z.ZodObject<{
3875
3875
  limit: z.ZodNumber;
3876
3876
  sort: z.ZodObject<{
3877
3877
  column: z.ZodEnum<{
3878
- amount: "amount";
3879
3878
  createdAt: "createdAt";
3880
3879
  updatedAt: "updatedAt";
3880
+ amount: "amount";
3881
3881
  }>;
3882
3882
  direction: z.ZodEnum<{
3883
3883
  asc: "asc";
package/dist/base.d.mts CHANGED
@@ -2699,9 +2699,9 @@ declare const getBatchesInputSchema: z.ZodObject<{
2699
2699
  limit: z.ZodNumber;
2700
2700
  sort: z.ZodObject<{
2701
2701
  column: z.ZodEnum<{
2702
+ batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
2702
2703
  createdAt: "createdAt";
2703
2704
  updatedAt: "updatedAt";
2704
- batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
2705
2705
  }>;
2706
2706
  direction: z.ZodEnum<{
2707
2707
  asc: "asc";
@@ -2825,9 +2825,9 @@ declare const getPaymentsInputSchema: z.ZodObject<{
2825
2825
  limit: z.ZodNumber;
2826
2826
  sort: z.ZodObject<{
2827
2827
  column: z.ZodEnum<{
2828
- amount: "amount";
2829
2828
  createdAt: "createdAt";
2830
2829
  updatedAt: "updatedAt";
2830
+ amount: "amount";
2831
2831
  }>;
2832
2832
  direction: z.ZodEnum<{
2833
2833
  asc: "asc";
@@ -3875,9 +3875,9 @@ declare const getPaymentRequestsInputSchema: z.ZodObject<{
3875
3875
  limit: z.ZodNumber;
3876
3876
  sort: z.ZodObject<{
3877
3877
  column: z.ZodEnum<{
3878
- amount: "amount";
3879
3878
  createdAt: "createdAt";
3880
3879
  updatedAt: "updatedAt";
3880
+ amount: "amount";
3881
3881
  }>;
3882
3882
  direction: z.ZodEnum<{
3883
3883
  asc: "asc";
package/dist/base.d.ts CHANGED
@@ -2699,9 +2699,9 @@ declare const getBatchesInputSchema: z.ZodObject<{
2699
2699
  limit: z.ZodNumber;
2700
2700
  sort: z.ZodObject<{
2701
2701
  column: z.ZodEnum<{
2702
+ batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
2702
2703
  createdAt: "createdAt";
2703
2704
  updatedAt: "updatedAt";
2704
- batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
2705
2705
  }>;
2706
2706
  direction: z.ZodEnum<{
2707
2707
  asc: "asc";
@@ -2825,9 +2825,9 @@ declare const getPaymentsInputSchema: z.ZodObject<{
2825
2825
  limit: z.ZodNumber;
2826
2826
  sort: z.ZodObject<{
2827
2827
  column: z.ZodEnum<{
2828
- amount: "amount";
2829
2828
  createdAt: "createdAt";
2830
2829
  updatedAt: "updatedAt";
2830
+ amount: "amount";
2831
2831
  }>;
2832
2832
  direction: z.ZodEnum<{
2833
2833
  asc: "asc";
@@ -3875,9 +3875,9 @@ declare const getPaymentRequestsInputSchema: z.ZodObject<{
3875
3875
  limit: z.ZodNumber;
3876
3876
  sort: z.ZodObject<{
3877
3877
  column: z.ZodEnum<{
3878
- amount: "amount";
3879
3878
  createdAt: "createdAt";
3880
3879
  updatedAt: "updatedAt";
3880
+ amount: "amount";
3881
3881
  }>;
3882
3882
  direction: z.ZodEnum<{
3883
3883
  asc: "asc";
package/dist/base.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  import { uuidv4, first, buildMultiFilterConditions as buildMultiFilterConditions$1, bankAccountMetadataSchema, structuredAddressSchema, workflowInstanceStatusSchema, develitWorker, createInternalError, action, service } from '@develit-io/backend-sdk';
2
- import { G as tables, g as accountInsertSchema, H as relations, o as isProcessedStatus, p as isTerminalStatus, L as getNonTerminalPaymentRequestsQuery, x as toIncomingPayment, N as calculateCzechIban, j as assignAccount, u as toBatchedPayment, y as toPaymentRequestInsert, a as FinbricksClient, F as FINBRICKS_ENDPOINTS } from './shared/bank.D0iIfh-X.mjs';
2
+ import { G as tables, g as accountInsertSchema, H as relations, o as isProcessedStatus, p as isTerminalStatus, L as getNonTerminalPaymentRequestsQuery, x as toIncomingPayment, N as calculateCzechIban, j as assignAccount, u as toBatchedPayment, y as toPaymentRequestInsert, a as FinbricksClient, F as FINBRICKS_ENDPOINTS } from './shared/bank.Hd9x3c7P.mjs';
3
3
  import { eq, sql, and, like, asc, desc, inArray, gte, lte, isNull, count } from 'drizzle-orm';
4
4
  import { WorkerEntrypoint } from 'cloudflare:workers';
5
5
  import { drizzle } from 'drizzle-orm/d1';
6
6
  import 'jose';
7
- import { h as encrypt, d as createCredentialsResolver, i as initiateConnector, e as updatePaymentRequestStatusCommand, a as getPaymentRequestsByBatchIdQuery, g as getBatchByIdQuery, u as upsertBatchCommand, j as importAesKey, f as createPaymentCommand, b as getAccountByIdQuery } from './shared/bank._VynZSqn.mjs';
7
+ import { h as encrypt, d as createCredentialsResolver, i as initiateConnector, e as updatePaymentRequestStatusCommand, a as getPaymentRequestsByBatchIdQuery, g as getBatchByIdQuery, u as upsertBatchCommand, j as importAesKey, f as createPaymentCommand, b as getAccountByIdQuery } from './shared/bank.Bq1AfddY.mjs';
8
8
  import { z } from 'zod';
9
9
  import { I as INSTRUCTION_PRIORITIES, C as CHARGE_BEARERS, g as PAYMENT_TYPES, b as CONNECTOR_KEYS, a as BATCH_STATUSES, f as PAYMENT_STATUSES, P as PAYMENT_DIRECTIONS, e as PAYMENT_REQUEST_STATUSES } from './shared/bank.BzDNLxB_.mjs';
10
10
  import { CURRENCY_CODES } from '@develit-io/general-codes';
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  const backendSdk = require('@develit-io/backend-sdk');
4
- const paymentDirection = require('../shared/bank.DMrkshJa.cjs');
4
+ const paymentDirection = require('../shared/bank.Dhf4K9Z2.cjs');
5
5
  const batchLifecycle = require('../shared/bank.NF8bZBy0.cjs');
6
6
  const drizzleOrm = require('drizzle-orm');
7
- const bank = require('../shared/bank.B04qoHtD.cjs');
7
+ const bank = require('../shared/bank.cuh6lhhy.cjs');
8
8
  const cloudflare_workers = require('cloudflare:workers');
9
9
  const cloudflare_workflows = require('cloudflare:workflows');
10
10
  const d1 = require('drizzle-orm/d1');
@@ -1,8 +1,8 @@
1
1
  import { first, uuidv4, asNonEmpty } from '@develit-io/backend-sdk';
2
- import { G as tables, H as relations, v as toBatchedPaymentFromPaymentRequest, z as toPreparedPayment, m as isPaymentCompleted } from '../shared/bank.D0iIfh-X.mjs';
2
+ import { G as tables, H as relations, v as toBatchedPaymentFromPaymentRequest, z as toPreparedPayment, m as isPaymentCompleted } from '../shared/bank.Hd9x3c7P.mjs';
3
3
  import { i as isBatchAuthorized, b as isBatchFailed, d as isBatchProcessing } from '../shared/bank.XqSw509X.mjs';
4
4
  import { eq, and, inArray } from 'drizzle-orm';
5
- import { g as getBatchByIdQuery, a as getPaymentRequestsByBatchIdQuery, c as checksum, u as upsertBatchCommand, b as getAccountByIdQuery, d as createCredentialsResolver, i as initiateConnector, e as updatePaymentRequestStatusCommand, f as createPaymentCommand } from '../shared/bank._VynZSqn.mjs';
5
+ import { g as getBatchByIdQuery, a as getPaymentRequestsByBatchIdQuery, c as checksum, u as upsertBatchCommand, b as getAccountByIdQuery, d as createCredentialsResolver, i as initiateConnector, e as updatePaymentRequestStatusCommand, f as createPaymentCommand } from '../shared/bank.Bq1AfddY.mjs';
6
6
  import { WorkflowEntrypoint } from 'cloudflare:workers';
7
7
  import { NonRetryableError } from 'cloudflare:workflows';
8
8
  import { drizzle } from 'drizzle-orm/d1';
@@ -1,5 +1,5 @@
1
1
  import { sql, and, eq, isNull } from 'drizzle-orm';
2
- import { G as tables, b as FinbricksConnector, J as buildEndToEndId, c as MockConnector, D as DbuConnector, C as CsobConnector, K as KBConnector, M as MockCobsConnector, E as ErsteConnector } from './bank.D0iIfh-X.mjs';
2
+ import { G as tables, b as FinbricksConnector, J as buildEndToEndId, c as MockConnector, D as DbuConnector, C as CsobConnector, K as KBConnector, M as MockCobsConnector, E as ErsteConnector } from './bank.Hd9x3c7P.mjs';
3
3
  import { uuidv4 } from '@develit-io/backend-sdk';
4
4
  import './bank.BzDNLxB_.mjs';
5
5
  import 'date-fns';
@@ -644,6 +644,9 @@ const SEPA_COUNTRIES = /* @__PURE__ */ new Set([
644
644
  "GI",
645
645
  "XK"
646
646
  ]);
647
+ const BANK_CODE_SET = new Set(generalCodes.BANK_CODES);
648
+ const isBankCode = (value) => BANK_CODE_SET.has(value);
649
+ const toBic = (value) => value && backendSdk.bicSchema.safeParse(value).success ? value : void 0;
647
650
  function parseOtherIdentification(value) {
648
651
  if (!value) return {};
649
652
  const [first, second] = value.split("/");
@@ -651,33 +654,36 @@ function parseOtherIdentification(value) {
651
654
  const looksLikeIban = first.length >= 15 && /^[A-Z]{2}\d{2}[A-Z0-9]+$/.test(first);
652
655
  if (looksLikeIban) {
653
656
  const iban = first;
654
- const swiftBic = second || void 0;
657
+ const swiftBic = toBic(second);
655
658
  if (iban.startsWith("CZ") && iban.length === 24) {
656
- const bankCode = iban.slice(4, 8);
659
+ const code = iban.slice(4, 8);
657
660
  const number = iban.slice(14, 24).replace(/^0+/, "") || iban.slice(14, 24);
658
- return { iban, swiftBic, bankCode, number };
661
+ return {
662
+ iban,
663
+ swiftBic,
664
+ bankCode: isBankCode(code) ? code : void 0,
665
+ number
666
+ };
659
667
  }
660
668
  return { iban, swiftBic };
661
669
  }
662
- return {
663
- number: first,
664
- bankCode: second || void 0
665
- };
670
+ if (!second) return { number: first };
671
+ if (isBankCode(second)) return { number: first, bankCode: second };
672
+ return { number: first, swiftBic: toBic(second) };
666
673
  }
667
- function detectPaymentType(tx, isIncoming) {
674
+ function detectPaymentType(tx, isIncoming, otherParsed) {
668
675
  const related = tx.entryDetails?.transactionDetails?.relatedParties;
669
676
  const otherParty = isIncoming ? related?.debtorAccount : related?.creditorAccount;
670
- if (otherParty?.identification?.other?.identification) return "DOMESTIC";
671
- const otherIban = otherParty?.identification?.iban;
672
- const otherCountry = otherIban?.slice(0, 2);
673
- if (otherCountry === "CZ") return "DOMESTIC";
674
- if (otherIban && otherCountry) {
675
- if (SEPA_COUNTRIES.has(otherCountry) && tx.amount?.currency === "EUR")
676
- return "SEPA";
677
+ const currency = tx.amount?.currency || "CZK";
678
+ const otherIban = otherParty?.identification?.iban || otherParsed.iban;
679
+ const otherCountry = otherParsed.bankCode ? "CZ" : otherIban?.slice(0, 2) || otherParsed.swiftBic?.slice(4, 6);
680
+ if (otherCountry) {
681
+ if (currency === "EUR" && SEPA_COUNTRIES.has(otherCountry)) return "SEPA";
682
+ if (otherCountry === "CZ" && currency === "CZK") return "DOMESTIC";
677
683
  return "SWIFT";
678
684
  }
679
- if (tx.amount?.currency === "EUR") return "SEPA";
680
- if (tx.amount?.currency !== "CZK") return "SWIFT";
685
+ if (currency === "EUR") return "SEPA";
686
+ if (currency !== "CZK") return "SWIFT";
681
687
  return "DOMESTIC";
682
688
  }
683
689
  const mapFinbricksTransactionToPayment = (tx, account) => {
@@ -714,7 +720,11 @@ const mapFinbricksTransactionToPayment = (tx, account) => {
714
720
  bankRefId: tx.fbxReference ?? tx.entryReference,
715
721
  amount: tx.amount?.value || 0,
716
722
  currency: tx.amount?.currency || "CZK",
717
- paymentType: detectPaymentType(tx, isIncoming),
723
+ paymentType: detectPaymentType(
724
+ tx,
725
+ isIncoming,
726
+ isIncoming ? debtorParsed : creditorParsed
727
+ ),
718
728
  status: mapFinbricksStatus(tx.status, !!tx.bookingDate?.date),
719
729
  message: td?.remittanceInformation?.unstructured || td?.additionalRemittanceInformation || td?.additionalTransactionInformation || null,
720
730
  processedAt: new Date(tx.bookingDate.date),
@@ -1046,7 +1056,7 @@ class FinbricksConnector extends IBankConnector {
1046
1056
  throw backendSdk.createInternalError(null, {
1047
1057
  message: `Batch for unauthorized client with iban: ${payments[0].debtor.iban}`
1048
1058
  });
1049
- const clientId = await this.getClientId(authorizedClient.id);
1059
+ await this.getClientId(authorizedClient.id);
1050
1060
  const [response, error] = await backendSdk.useResult(
1051
1061
  this.finbricks.request({
1052
1062
  endpoint: FINBRICKS_ENDPOINTS.TRANSACTION_BATCH_INIT,
@@ -1055,7 +1065,8 @@ class FinbricksConnector extends IBankConnector {
1055
1065
  batchPaymentIdentification: {
1056
1066
  merchantId: this.finbricks.MERCHANT_ID,
1057
1067
  debtorAccountIban: resolveCzechDomesticIban(payments[0].debtor),
1058
- clientId,
1068
+ // TEMP: clientId disabled per client request — do not send.
1069
+ // clientId,
1059
1070
  callbackUrl: `${this.finbricks.REDIRECT_URI}?type=batch&batchId=${batchId}`,
1060
1071
  merchantBatchId: batchId
1061
1072
  },
@@ -1097,7 +1108,7 @@ class FinbricksConnector extends IBankConnector {
1097
1108
  const debtorAccount = this.connectedAccounts.find(
1098
1109
  (acc) => acc.iban === payment.debtorIban
1099
1110
  );
1100
- const clientId = await this.getClientId(debtorAccount.id);
1111
+ await this.getClientId(debtorAccount.id);
1101
1112
  const creditorAddress = mapToFinbricksAddress(payment.creditor.address);
1102
1113
  const debtorAddress = mapToFinbricksAddress(payment.debtor.address);
1103
1114
  const debtorIdentification = resolveAccountIdentification(payment.debtor);
@@ -1125,8 +1136,9 @@ class FinbricksConnector extends IBankConnector {
1125
1136
  method: "POST",
1126
1137
  body: {
1127
1138
  merchantIdentification: {
1128
- merchantId: this.finbricks.MERCHANT_ID,
1129
- clientId
1139
+ merchantId: this.finbricks.MERCHANT_ID
1140
+ // TEMP: clientId disabled per client request — do not send.
1141
+ // clientId,
1130
1142
  },
1131
1143
  paymentIdentification: {
1132
1144
  merchantTransactionId: bankRefId
@@ -1177,7 +1189,7 @@ class FinbricksConnector extends IBankConnector {
1177
1189
  const debtorAccount = this.connectedAccounts.find(
1178
1190
  (acc) => acc.iban === payment.debtorIban
1179
1191
  );
1180
- const clientId = await this.getClientId(debtorAccount.id);
1192
+ await this.getClientId(debtorAccount.id);
1181
1193
  const creditorAddress = mapToFinbricksAddress(payment.creditor.address);
1182
1194
  const debtorAddress = mapToFinbricksAddress(payment.debtor.address);
1183
1195
  const message = payment.message?.trim() ?? "";
@@ -1194,8 +1206,9 @@ class FinbricksConnector extends IBankConnector {
1194
1206
  method: "POST",
1195
1207
  body: {
1196
1208
  merchantIdentification: {
1197
- merchantId: this.finbricks.MERCHANT_ID,
1198
- clientId
1209
+ merchantId: this.finbricks.MERCHANT_ID
1210
+ // TEMP: clientId disabled per client request — do not send.
1211
+ // clientId,
1199
1212
  },
1200
1213
  paymentIdentification: {
1201
1214
  merchantTransactionId: bankRefId,
@@ -1245,7 +1258,7 @@ class FinbricksConnector extends IBankConnector {
1245
1258
  const debtorAccount = this.connectedAccounts.find(
1246
1259
  (acc) => acc.iban === payment.debtor.iban
1247
1260
  );
1248
- const clientId = await this.getClientId(debtorAccount.id);
1261
+ await this.getClientId(debtorAccount.id);
1249
1262
  const [response, error] = await backendSdk.useResult(
1250
1263
  this.finbricks.request({
1251
1264
  endpoint: FINBRICKS_ENDPOINTS.TRANSACTION_INIT,
@@ -1258,13 +1271,16 @@ class FinbricksConnector extends IBankConnector {
1258
1271
  creditorAccountIban: resolveCzechDomesticIban(payment.creditor),
1259
1272
  creditorName: payment.creditor.holderName,
1260
1273
  description: this.PROVIDER === "CSOB" ? composeWithUltimateCreditor(payment.message, payment.creditor, {
1261
- stripDiacritics: payment.currency !== "CZK"
1274
+ // This rail is CZK-only (it sends no currency), and CZ domestic
1275
+ // clearing accepts diacritics — unlike the foreign rail.
1276
+ stripDiacritics: false
1262
1277
  }) : payment.message,
1263
1278
  variableSymbol: payment.vs ?? (payment.ss ? void 0 : autoVariableSymbol(payment.id)),
1264
1279
  specificSymbol: payment.ss,
1265
1280
  constantSymbol: payment.ks,
1266
1281
  callbackUrl: `${this.finbricks.REDIRECT_URI}?type=paymentRequest&paymentRequestId=${payment.id}`,
1267
- clientId,
1282
+ // TEMP: clientId disabled per client request — do not send.
1283
+ // clientId,
1268
1284
  paymentProvider: this.PROVIDER,
1269
1285
  instructionPriority: payment.instructionPriority ?? "NORM"
1270
1286
  }
@@ -1,10 +1,10 @@
1
- import { uuidv4, createInternalError, useResult, structuredAddressSchema } from '@develit-io/backend-sdk';
1
+ import { uuidv4, createInternalError, bicSchema, useResult, structuredAddressSchema } from '@develit-io/backend-sdk';
2
2
  import { format, parseISO } from 'date-fns';
3
3
  import { s as schema, h as account, i as accountCredentials, o as ott } from './bank.BzDNLxB_.mjs';
4
4
  import { defineRelations, and, not, inArray, isNull } from 'drizzle-orm';
5
5
  import { importPKCS8, SignJWT } from 'jose';
6
6
  import { z } from 'zod';
7
- import { CURRENCY_CODES } from '@develit-io/general-codes';
7
+ import { BANK_CODES, CURRENCY_CODES } from '@develit-io/general-codes';
8
8
  import { createInsertSchema, createUpdateSchema, createSelectSchema } from 'drizzle-orm/zod';
9
9
  import 'node:crypto';
10
10
 
@@ -642,6 +642,9 @@ const SEPA_COUNTRIES = /* @__PURE__ */ new Set([
642
642
  "GI",
643
643
  "XK"
644
644
  ]);
645
+ const BANK_CODE_SET = new Set(BANK_CODES);
646
+ const isBankCode = (value) => BANK_CODE_SET.has(value);
647
+ const toBic = (value) => value && bicSchema.safeParse(value).success ? value : void 0;
645
648
  function parseOtherIdentification(value) {
646
649
  if (!value) return {};
647
650
  const [first, second] = value.split("/");
@@ -649,33 +652,36 @@ function parseOtherIdentification(value) {
649
652
  const looksLikeIban = first.length >= 15 && /^[A-Z]{2}\d{2}[A-Z0-9]+$/.test(first);
650
653
  if (looksLikeIban) {
651
654
  const iban = first;
652
- const swiftBic = second || void 0;
655
+ const swiftBic = toBic(second);
653
656
  if (iban.startsWith("CZ") && iban.length === 24) {
654
- const bankCode = iban.slice(4, 8);
657
+ const code = iban.slice(4, 8);
655
658
  const number = iban.slice(14, 24).replace(/^0+/, "") || iban.slice(14, 24);
656
- return { iban, swiftBic, bankCode, number };
659
+ return {
660
+ iban,
661
+ swiftBic,
662
+ bankCode: isBankCode(code) ? code : void 0,
663
+ number
664
+ };
657
665
  }
658
666
  return { iban, swiftBic };
659
667
  }
660
- return {
661
- number: first,
662
- bankCode: second || void 0
663
- };
668
+ if (!second) return { number: first };
669
+ if (isBankCode(second)) return { number: first, bankCode: second };
670
+ return { number: first, swiftBic: toBic(second) };
664
671
  }
665
- function detectPaymentType(tx, isIncoming) {
672
+ function detectPaymentType(tx, isIncoming, otherParsed) {
666
673
  const related = tx.entryDetails?.transactionDetails?.relatedParties;
667
674
  const otherParty = isIncoming ? related?.debtorAccount : related?.creditorAccount;
668
- if (otherParty?.identification?.other?.identification) return "DOMESTIC";
669
- const otherIban = otherParty?.identification?.iban;
670
- const otherCountry = otherIban?.slice(0, 2);
671
- if (otherCountry === "CZ") return "DOMESTIC";
672
- if (otherIban && otherCountry) {
673
- if (SEPA_COUNTRIES.has(otherCountry) && tx.amount?.currency === "EUR")
674
- return "SEPA";
675
+ const currency = tx.amount?.currency || "CZK";
676
+ const otherIban = otherParty?.identification?.iban || otherParsed.iban;
677
+ const otherCountry = otherParsed.bankCode ? "CZ" : otherIban?.slice(0, 2) || otherParsed.swiftBic?.slice(4, 6);
678
+ if (otherCountry) {
679
+ if (currency === "EUR" && SEPA_COUNTRIES.has(otherCountry)) return "SEPA";
680
+ if (otherCountry === "CZ" && currency === "CZK") return "DOMESTIC";
675
681
  return "SWIFT";
676
682
  }
677
- if (tx.amount?.currency === "EUR") return "SEPA";
678
- if (tx.amount?.currency !== "CZK") return "SWIFT";
683
+ if (currency === "EUR") return "SEPA";
684
+ if (currency !== "CZK") return "SWIFT";
679
685
  return "DOMESTIC";
680
686
  }
681
687
  const mapFinbricksTransactionToPayment = (tx, account) => {
@@ -712,7 +718,11 @@ const mapFinbricksTransactionToPayment = (tx, account) => {
712
718
  bankRefId: tx.fbxReference ?? tx.entryReference,
713
719
  amount: tx.amount?.value || 0,
714
720
  currency: tx.amount?.currency || "CZK",
715
- paymentType: detectPaymentType(tx, isIncoming),
721
+ paymentType: detectPaymentType(
722
+ tx,
723
+ isIncoming,
724
+ isIncoming ? debtorParsed : creditorParsed
725
+ ),
716
726
  status: mapFinbricksStatus(tx.status, !!tx.bookingDate?.date),
717
727
  message: td?.remittanceInformation?.unstructured || td?.additionalRemittanceInformation || td?.additionalTransactionInformation || null,
718
728
  processedAt: new Date(tx.bookingDate.date),
@@ -1044,7 +1054,7 @@ class FinbricksConnector extends IBankConnector {
1044
1054
  throw createInternalError(null, {
1045
1055
  message: `Batch for unauthorized client with iban: ${payments[0].debtor.iban}`
1046
1056
  });
1047
- const clientId = await this.getClientId(authorizedClient.id);
1057
+ await this.getClientId(authorizedClient.id);
1048
1058
  const [response, error] = await useResult(
1049
1059
  this.finbricks.request({
1050
1060
  endpoint: FINBRICKS_ENDPOINTS.TRANSACTION_BATCH_INIT,
@@ -1053,7 +1063,8 @@ class FinbricksConnector extends IBankConnector {
1053
1063
  batchPaymentIdentification: {
1054
1064
  merchantId: this.finbricks.MERCHANT_ID,
1055
1065
  debtorAccountIban: resolveCzechDomesticIban(payments[0].debtor),
1056
- clientId,
1066
+ // TEMP: clientId disabled per client request — do not send.
1067
+ // clientId,
1057
1068
  callbackUrl: `${this.finbricks.REDIRECT_URI}?type=batch&batchId=${batchId}`,
1058
1069
  merchantBatchId: batchId
1059
1070
  },
@@ -1095,7 +1106,7 @@ class FinbricksConnector extends IBankConnector {
1095
1106
  const debtorAccount = this.connectedAccounts.find(
1096
1107
  (acc) => acc.iban === payment.debtorIban
1097
1108
  );
1098
- const clientId = await this.getClientId(debtorAccount.id);
1109
+ await this.getClientId(debtorAccount.id);
1099
1110
  const creditorAddress = mapToFinbricksAddress(payment.creditor.address);
1100
1111
  const debtorAddress = mapToFinbricksAddress(payment.debtor.address);
1101
1112
  const debtorIdentification = resolveAccountIdentification(payment.debtor);
@@ -1123,8 +1134,9 @@ class FinbricksConnector extends IBankConnector {
1123
1134
  method: "POST",
1124
1135
  body: {
1125
1136
  merchantIdentification: {
1126
- merchantId: this.finbricks.MERCHANT_ID,
1127
- clientId
1137
+ merchantId: this.finbricks.MERCHANT_ID
1138
+ // TEMP: clientId disabled per client request — do not send.
1139
+ // clientId,
1128
1140
  },
1129
1141
  paymentIdentification: {
1130
1142
  merchantTransactionId: bankRefId
@@ -1175,7 +1187,7 @@ class FinbricksConnector extends IBankConnector {
1175
1187
  const debtorAccount = this.connectedAccounts.find(
1176
1188
  (acc) => acc.iban === payment.debtorIban
1177
1189
  );
1178
- const clientId = await this.getClientId(debtorAccount.id);
1190
+ await this.getClientId(debtorAccount.id);
1179
1191
  const creditorAddress = mapToFinbricksAddress(payment.creditor.address);
1180
1192
  const debtorAddress = mapToFinbricksAddress(payment.debtor.address);
1181
1193
  const message = payment.message?.trim() ?? "";
@@ -1192,8 +1204,9 @@ class FinbricksConnector extends IBankConnector {
1192
1204
  method: "POST",
1193
1205
  body: {
1194
1206
  merchantIdentification: {
1195
- merchantId: this.finbricks.MERCHANT_ID,
1196
- clientId
1207
+ merchantId: this.finbricks.MERCHANT_ID
1208
+ // TEMP: clientId disabled per client request — do not send.
1209
+ // clientId,
1197
1210
  },
1198
1211
  paymentIdentification: {
1199
1212
  merchantTransactionId: bankRefId,
@@ -1243,7 +1256,7 @@ class FinbricksConnector extends IBankConnector {
1243
1256
  const debtorAccount = this.connectedAccounts.find(
1244
1257
  (acc) => acc.iban === payment.debtor.iban
1245
1258
  );
1246
- const clientId = await this.getClientId(debtorAccount.id);
1259
+ await this.getClientId(debtorAccount.id);
1247
1260
  const [response, error] = await useResult(
1248
1261
  this.finbricks.request({
1249
1262
  endpoint: FINBRICKS_ENDPOINTS.TRANSACTION_INIT,
@@ -1256,13 +1269,16 @@ class FinbricksConnector extends IBankConnector {
1256
1269
  creditorAccountIban: resolveCzechDomesticIban(payment.creditor),
1257
1270
  creditorName: payment.creditor.holderName,
1258
1271
  description: this.PROVIDER === "CSOB" ? composeWithUltimateCreditor(payment.message, payment.creditor, {
1259
- stripDiacritics: payment.currency !== "CZK"
1272
+ // This rail is CZK-only (it sends no currency), and CZ domestic
1273
+ // clearing accepts diacritics — unlike the foreign rail.
1274
+ stripDiacritics: false
1260
1275
  }) : payment.message,
1261
1276
  variableSymbol: payment.vs ?? (payment.ss ? void 0 : autoVariableSymbol(payment.id)),
1262
1277
  specificSymbol: payment.ss,
1263
1278
  constantSymbol: payment.ks,
1264
1279
  callbackUrl: `${this.finbricks.REDIRECT_URI}?type=paymentRequest&paymentRequestId=${payment.id}`,
1265
- clientId,
1280
+ // TEMP: clientId disabled per client request — do not send.
1281
+ // clientId,
1266
1282
  paymentProvider: this.PROVIDER,
1267
1283
  instructionPriority: payment.instructionPriority ?? "NORM"
1268
1284
  }
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const drizzleOrm = require('drizzle-orm');
4
- const paymentDirection = require('./bank.DMrkshJa.cjs');
4
+ const paymentDirection = require('./bank.Dhf4K9Z2.cjs');
5
5
  const backendSdk = require('@develit-io/backend-sdk');
6
6
  require('./bank.9Yw4KHyl.cjs');
7
7
  require('date-fns');
package/dist/types.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const paymentDirection = require('./shared/bank.DMrkshJa.cjs');
3
+ const paymentDirection = require('./shared/bank.Dhf4K9Z2.cjs');
4
4
  const database_schema = require('./shared/bank.9Yw4KHyl.cjs');
5
5
  const batchLifecycle = require('./shared/bank.NF8bZBy0.cjs');
6
6
  const generalCodes = require('@develit-io/general-codes');
package/dist/types.d.cts CHANGED
@@ -114,7 +114,7 @@ type FinbricksSupportedBanksQuery = {
114
114
  type FinbricksForeignPaymentBody = {
115
115
  merchantIdentification: {
116
116
  merchantId: string;
117
- clientId: string;
117
+ clientId?: string;
118
118
  initiatorName?: string;
119
119
  };
120
120
  paymentIdentification: {
package/dist/types.d.mts CHANGED
@@ -114,7 +114,7 @@ type FinbricksSupportedBanksQuery = {
114
114
  type FinbricksForeignPaymentBody = {
115
115
  merchantIdentification: {
116
116
  merchantId: string;
117
- clientId: string;
117
+ clientId?: string;
118
118
  initiatorName?: string;
119
119
  };
120
120
  paymentIdentification: {
package/dist/types.d.ts CHANGED
@@ -114,7 +114,7 @@ type FinbricksSupportedBanksQuery = {
114
114
  type FinbricksForeignPaymentBody = {
115
115
  merchantIdentification: {
116
116
  merchantId: string;
117
- clientId: string;
117
+ clientId?: string;
118
118
  initiatorName?: string;
119
119
  };
120
120
  paymentIdentification: {
package/dist/types.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { B as BASE_TERMINAL_STATUSES, C as CsobConnector, D as DbuConnector, E as ErsteConnector, F as FINBRICKS_ENDPOINTS, a as FinbricksClient, b as FinbricksConnector, I as IBankConnector, K as KBConnector, M as MockCobsConnector, c as MockConnector, d as accountCredentialsInsertSchema, e as accountCredentialsSelectSchema, f as accountCredentialsUpdateSchema, g as accountInsertSchema, h as accountSelectSchema, i as accountUpdateSchema, j as assignAccount, k as dbuAccountConfigSchema, l as hasPaymentAccountAssigned, m as isPaymentCompleted, n as isPendingStatus, o as isProcessedStatus, p as isTerminalStatus, q as ottInsertSchema, r as ottSelectSchema, s as ottUpdateSchema, t as signFinbricksJws, u as toBatchedPayment, v as toBatchedPaymentFromPaymentRequest, w as toCompletedPayment, x as toIncomingPayment, y as toPaymentRequestInsert, z as toPreparedPayment, A as useFinbricksFetch } from './shared/bank.D0iIfh-X.mjs';
1
+ export { B as BASE_TERMINAL_STATUSES, C as CsobConnector, D as DbuConnector, E as ErsteConnector, F as FINBRICKS_ENDPOINTS, a as FinbricksClient, b as FinbricksConnector, I as IBankConnector, K as KBConnector, M as MockCobsConnector, c as MockConnector, d as accountCredentialsInsertSchema, e as accountCredentialsSelectSchema, f as accountCredentialsUpdateSchema, g as accountInsertSchema, h as accountSelectSchema, i as accountUpdateSchema, j as assignAccount, k as dbuAccountConfigSchema, l as hasPaymentAccountAssigned, m as isPaymentCompleted, n as isPendingStatus, o as isProcessedStatus, p as isTerminalStatus, q as ottInsertSchema, r as ottSelectSchema, s as ottUpdateSchema, t as signFinbricksJws, u as toBatchedPayment, v as toBatchedPaymentFromPaymentRequest, w as toCompletedPayment, x as toIncomingPayment, y as toPaymentRequestInsert, z as toPreparedPayment, A as useFinbricksFetch } from './shared/bank.Hd9x3c7P.mjs';
2
2
  export { A as ACCOUNT_STATUSES, B as BATCH_MODES, a as BATCH_STATUES, a as BATCH_STATUSES, C as CHARGE_BEARERS, b as CONNECTOR_KEYS, c as COUNTRY_CODES, d as CREDENTIALS_TYPES, I as INSTRUCTION_PRIORITIES, P as PAYMENT_DIRECTIONS, e as PAYMENT_REQUEST_STATUSES, f as PAYMENT_STATUSES, g as PAYMENT_TYPES, T as TOKEN_TYPES } from './shared/bank.BzDNLxB_.mjs';
3
3
  export { i as isBatchAuthorized, a as isBatchCompleted, b as isBatchFailed, c as isBatchInitiated, d as isBatchProcessing, e as isBatchReadyToSign } from './shared/bank.XqSw509X.mjs';
4
4
  export { BANK_CODES, CURRENCY_CODES } from '@develit-io/general-codes';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@develit-services/bank",
3
- "version": "5.5.1",
3
+ "version": "5.5.3",
4
4
  "author": "Develit.io s.r.o.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -62,5 +62,10 @@
62
62
  "drizzle-orm": "^1.0.0-rc.1",
63
63
  "zod": "^4.1.13",
64
64
  "@develit-io/platform-sdk": "^4.7.2"
65
+ },
66
+ "peerDependenciesMeta": {
67
+ "@develit-io/platform-sdk": {
68
+ "optional": true
69
+ }
65
70
  }
66
71
  }