Archived release note: This SDK.finance release note is kept for historical reference. For the latest product updates, improvements, fixes, and API changes, please visit our current release notes portal.
Pre-deployment steps
To be done before deployment
|
|
Check configuration changes and apply them in the application.yaml if the default configuration has been overridden there
|
|
Check if the release contains migrations. Migrations can affect deployment and downtime.
|
|
Use GET /i18n/export/{fileName} to download files with current i18n properties. Check if the downloaded file is correct.
|
|
The migration is required to migrate transaction history data from the legacy BusinessProcessHistory MongoDB collection to the new business_process collection.
Key changes:
-
Relocates process record classes to new sdk.finance.transaction.record.* package structure
-
Converts epoch milliseconds timestamps to ISO 8601 format (OffsetDateTime compatibility)
-
Consolidates type-specific fields (exchange, bank, cash desk, gate, invoice, merchant, monthly fee records)
-
Creates indexes for query performance on the new collection
Usage:
mongosh "mongodb://user:pass@host:27017/db?authSource=admin" migrate_business_process_history.js
File migrate_business_process_history.js is included in the release.
|
Post-deployment steps
To be done after deployment
|
|
Verify permission changes and assign or remove required permissions if they have been overridden
|
|
Add new properties from the I18n properties changes to the downloaded i18n properties file and add translation for them if needed.
Use POST /i18n/import to upload and apply previously downloaded i18n file with added new properties.
If any hardcoded keys are used to retrieve values from locale bundles, make sure to update the keys with the code. prefix.
|
Release migrations
|
|
|
New column resource created in i18n_property table. Default value core set to new column. Keys from key column of i18n_property table updated with added prefix core. to existing keys. Values of name_bundle_key, icon_bundle_key and description_bundle_key in gate_product_def table updated with core. prefix.
|
|
Сreated PostgreSQL table for the transactional outbox pattern to support reliable event delivery.
Key changes:
-
New business_process_outbox table with columns: id, business_process_id, version
-
Index on business_process_id for efficient outbox polling
|
|
Smart Card → In-System Card Renaming (core module)
Smart Card → In-System Card Renaming (merchant module)
|
|
Created org_prof_kyc_def table to store KYC (Know Your Customer) definition records for organization profiles. The table tracks sanction status per profile with audit support via editaction_id reference to history tracking.
Added kyc_def_id column to org_prof_profile_base table, establishing a link between organization profiles and their KYC definitions.
Introduced OpenSanctions integration schema with three tables:
-
open_sanctions_data_sync_record — tracks synchronization events with external sanctions data
-
open_sanctions_entity — stores sanctioned entity details (names, aliases, addresses, identifiers, etc.)
-
open_sanctions_match — links users to matched sanction entities with match scores for screening purposes
|
|
Added field external_integration to customer_verification_provider_def table
|
|
Added field external_integration to gate_provider_account_def table
|
|
New tables are created: customer_verification_provider, customer_verification_provider_def, customer_verification_item_settings, customer_verification_item_settings_def.
New entity CustomerVerificationProvider (customer_verification_provider, customer_verification_provider_def) will be used to store data based on system configuration which include: Verification provider name, supported organizaition types, supported verification item types, is the provider currently Active in the system, has external integration or not.
New entity CustomerVerificationItemSettings (customer_verification_item_settings, customer_verification_item_settings_def) will be used for storing data related to verification item settings like it’s type of the verification item, verification provider, organization type code, verification item group, boolean value if the item is required for KYC verification.
|
Changes to notice
|
|
|
The following APIs are deprecated:
API PATCH /organizations/{organizationId}/identification-request/{requestId} should be used instead
|
New functionality
|
Feature
|
Description
|
Benefits
|
|
Added ability for compliance to view, approve/decline the reset identification request for the company.
|
To make changes to the already approved company, the user must send a reset identification request. When the request is approved, statuses are changed in the following way, which allows for making changes:
|
|
|
|
|
Company
|
Approved
|
None
|
|
Company documents
|
Approved
|
Outdated
|
|
Shareholders
|
Approved
|
None
|
|
Shareholder documents
|
Approved
|
Outdated
|
|
More flexible management of the company’s information.
|
|
Added ability for service users to manage companies (UI changes)
|
Service users can manage companies on the UI.
|
More convenient company management.
|
|
Added ability to customise the list of mandatory fields required for KYC in the Individual profile at the system level (API changes).
|
Added APIs to manage the list of mandatory fields required for KYC for Individual user.
|
More flexible platform management.
|
|
Added ability to configure a custom KYC provider with external integration enabled (platform configuration changes).
|
An administrator or DevOps engineer configures a custom KYC provider in the SDK.finance platform and defines whether this provider uses an external integration.
This configuration determines whether marking the organisation as ready for review should trigger outbound webhooks.
|
More flexible platform management and the ability to use external integration in the middleware.
|
|
Added ability to specify that external integration is enabled for the custom gate provider (API changes).
|
An administrator creates a custom gate provider in the SDK.finance platform and defines whether this provider uses an external integration.
This configuration determines whether the initiation of a top-up or withdrawal triggers outbound webhooks.
|
More flexible platform management and the ability to use external integration in the middleware.
|
|
Added ability to enable Fireblocks integration at the currency level (UI change)
|
If Fireblocks integration is enabled, Fireblocks will be used to open an account in this currency and to perform top-up and withdrawal.
|
Fireblocks integration enables operating with cryptocurrency.
|
Improvements
|
Feature
|
Description
|
|
Added the ability to create and delete bundle keys.
|
Added APIs to update and delete bundle key
|
|
Added prefix to the bundle keys to separate resources.
|
core. prefix was added to all existing bundle keys
|
|
OpenSanctions integrations changed to improve performance and to remove NodeRed usage
|
Sanctions Database Management
Maintain an up-to-date local copy of global sanctions lists to ensure compliance with international regulations and avoid doing business with sanctioned individuals or entities.
-
Automatic Updates: The system automatically synchronizes with OpenSanctions (a global sanctions aggregator) multiple times per day, ensuring your organization always screens against the latest sanctions
data
-
Coverage: Consolidates sanctions lists from multiple authorities (UN, US OFAC, EU, UK, etc.) into a single screening database
-
Efficiency: Uses incremental updates to minimize data transfer and processing time – only new changes are downloaded after initial setup
Customer Screening Process
Systematically screen all customers against sanctions lists to identify potential matches and prevent prohibited transactions.
|
|
Status of individual profile is changed to pending by calling API POST /v1/organizations/{organizationId}/review-request instaed of when the first profile document is uploaded.
|
Pending status means that the Individual profile is ready for compliance review and is changed now by the user when all required information is specified and all required documents are uploaded.
|
|
OTP confirmation screen for self-registration is shown only when OTP is sent.
|
New parameter requiresConfirmation (boolean true/false) added to response:
POST:
response body example:
{
"action": "EMAIL_SENT",
"requiresConfirmation": true
|
|
Added information about allowed transaction types for reconciliation in CFO -> Reconciliation -> Files -> Upload file popup
|
Added information message on UI
|
|
Added tooltip text for mismatch with type ‘Transaction not found’ in CFO -> Reconciliation (Transaction) -> Reconciliation details
|
Added information message on UI
|
|
When reset identification is approved status is changed to None for Individual
|
Reset identification for companies and individual users works in the same way: when reset identification is approved status is changed to None (previously it was Pending for individual)
|
Fixes
All amounts in the Backoffice UI are shown according to the currency scale.
Front-end changes
|
New APIs are used to work with the Individual profile:
|
|
Removed the ability to specify filters in the Export Transactions sidebar and used the same filters as were chosen in the Transactions list.
|
|
Used new API to manage user-level notifications:
instead of
|
|
Changed APIs usage:
GET /users/{userId}
GET /organizations/{organizationId}/profile
|
|
Changed API usage:
GET /kyc-providers
|
API changes
Updated
|
|
POST /reports
API accepts the same list of filters as POST /transactions/view
The following filterType values are supported:
-
TransactionFilter
-
TransactionStatementFilter
-
PaymentTransactionFilter
-
GateMerchantPaymentTransactionFilter
-
GateTransactionFilter
-
BusinessUserTransactionReportFilter
|
|
GET /reports
Removed functionality:
-
Sorting by createdAt
-
Filtering by name
-
Filtering by lastReport
-
Filtering by description
|
|
New organisation status SanctionStatus was introduced.
- NOT_SCREENED # Organization hasn't been screened yet
- CLEARED # Passed sanction screening
- SUSPECTED # Flagged for potential sanctions match
- CONFIRMED # Confirmed to be on sanctions list
- RESOLVED # Previously flagged but issue resolved
Any endpoint returning OrganizationShortDto will now include this field.
e.g:
{
"id": "7cf1f309-09cd-4eda-8b2c-682bf64fd7cd",
"type": "MERCHANT",
"name": "Tony Stark",
"organizationStatus": "approved",
"contract_info": {
"id": "contract-123",
"name": "Standard Agreement"
},
"sanctionStatus": "CLEARED"
}
|
|
New parameter requiresConfirmation (boolean true/false) added to response:
POST /registration
|
|
POST /gate-providers
|
|
GET /gate-providers
Response (ViewGateProvidersResp) contains GateProviderDto which now includes externalIntegration
|
|
PATCH /gate-providers/{gateProviderId}
|
|
PATCH /gate-providers/{gateProviderId}/link
Response (ShortGateProviderDto) now includes externalIntegration
|
|
GET /users/{userId}
GET /organizations/{organizationId}/profile
Response extended with new fields
|
Added
|
|
POST /i18n
{
"key": "core.greeting.message.sms",
"resource": "core",
"values": [
{
"locale": "en",
"value": "Hello, {name}!"
}
]
}
|
|
DELETE /i18n/{key}
|
|
PATCH /organizations/{organizationId}/identification-request/{requestId}
|
|
GET /kyc-settings/verification-items
PATCH /kyc-settings/verification-items/{verificationItemId}
DELETE /kyc-settings/verification-items/{verificationItemId}
|
Deprecated/Deleted
|
|
POST /profiles/{userId}/reset-identification-requests/{reqId}/approve
POST /profiles/{userId}/reset-identification-requests/{reqId}/decline
|
I18n properties changes
Added
|
|
core. prefix was added to all existing bundle keys
|
Configuration changes
|
OpenSanctions Configuration Properties
url: https://data.opensanctions.org/datasets/
Base API endpoint for OpenSanctions data services. Used to fetch index files, delta updates, and CSV downloads.
dataset: sanctions
Selects which OpenSanctions dataset to use. Options: sanctions (sanctioned entities), PEPs (politically exposed persons), crime (criminal watchlists).
filename: targets.simple.csv
CSV file name for full database downloads. The “simple” format contains core fields only (name, ID, dates) vs. the full format with all metadata.
sanctions-check: 0 0 2 * * *
Schedule for screening all users. Runs daily at 2:00 AM. Checks existing customers against the sanctions database for new matches.
database-update: 0 0 */6 * * *
Schedule for syncing sanctions data. Runs every 6 hours (00:00, 06:00, 12:00, 18:00). Downloads the latest changes from OpenSanctions.
|
|
Added flag to KYC providers configuration:
compliance:
document-verification:
providers:
- name: MANUAL
external-integration: false
|
|
Configuration properties removed:
New configuration properties introduced:
compliance.document-verification.active-provider-name:MANUAL
or COMPLIANCE_DOCUMENT_VERIFICATION_ACTIVE_PROVIDER_NAME
default value: MANUAL
posible values: MANUAL/SUMSUB/OPEN_SANCTIONS/COMPLY_ADVANTAGE
Configuration property structure changed for:
compliance.document-verification.providers
It’s a list of verification providers; each of them must contain the following required nodes:
– name Provider name. Ex: MANUAL/SUMSUB/OPEN_SANCTIONS/COMPLY_ADVANTAGE
– organization-types List of supported organization types. e.g.: individual, business, shareholder
– verification-item-types List of supported verification item types. e.g.: USER_ID, FIRST_NAME_PLAIN, LAST_NAME_PLAIN, DATE_OF_BIRTH, ORGANIZATION_TYPE, CREDENTIAL, COUNTRY, ZIPCODE, REGION
– external-integration Boolean value define if verification provider has external integration e.g.: true/false
Default configuration properties:
compliance:
change-submitted-documents:
enabled: true
profile-auto-reset: false
document-verification:
auto-enabled: true
active-provider-name: MANUAL
providers:
- name: MANUAL
organization-types:
- individual
- business
- shareholder
verification-item-types:
- USER_ID
- FIRST_NAME_PLAIN
- LAST_NAME_PLAIN
- DATE_OF_BIRTH
- ORGANIZATION_TYPE
- CREDENTIAL
- COUNTRY
- ZIPCODE
- REGION
external-integration: false
- name: SUMSUB
organization-types:
- individual
- business
- shareholder
verification-item-types:
- USER_ID
- FIRST_NAME_PLAIN
- LAST_NAME_PLAIN
- DATE_OF_BIRTH
- ORGANIZATION_TYPE
- CREDENTIAL
- COUNTRY
- ZIPCODE
- REGION
external-integration: false
- name: OPEN_SANCTIONS
organization-types:
- individual
- business
- shareholder
verification-item-types:
- USER_ID
- FIRST_NAME_PLAIN
- LAST_NAME_PLAIN
- DATE_OF_BIRTH
- ORGANIZATION_TYPE
- CREDENTIAL
- COUNTRY
- ZIPCODE
- REGION
external-integration: false
- name: COMPLY_ADVANTAGE
organization-types:
- individual
- business
- shareholder
verification-item-types:
- USER_ID
- FIRST_NAME_PLAIN
- LAST_NAME_PLAIN
- DATE_OF_BIRTH
- ORGANIZATION_TYPE
- CREDENTIAL
- COUNTRY
- ZIPCODE
- REGION
external-integration: false
documents:
- organization-types: [ 'individual','merchant','corporate' ]
legal-types:
- 'individual'
- 'none'
required-documents:
- 'passport'
- 'selfie'
optional-documents:
- 'utility_bill'
- 'drivers_license'
- 'other'
- 'photo_id'
- 'poa'
- 'tax_id'
plain-text-documents:
- 'passport'
- 'bill'
- 'drivers_license'
- 'other'
- 'photo_id'
- 'poa'
- 'tax_id'
change-login-documents:
- 'passport_for_change_login'
- 'selfie_for_change_login'
- organization-types: [ 'merchant' ]
legal-types: [ 'corporation' ]
required-documents:
- 'statute'
- 'egrpo_excerpt'
- 'order_nominating_director'
- 'passport_of_director'
- 'tax_id_of_director'
- 'founder_passport'
- 'founder_tax_id'
optional-documents:
- 'bill'
- 'other'
plain-text-documents:
- 'statute'
- 'egrpo_excerpt'
- 'order_nominating_director'
- 'passport_of_director'
- 'tax_id_of_director'
- 'founder_passport'
- 'founder_tax_id'
- 'bill'
- 'other'
change-login-documents:
- organization-types: [ 'business' ]
legal-types:
required-documents:
- 'required-business-document-1'
- 'required-business-document-2'
optional-documents:
- 'optional-business-document-1'
- 'optional-business-document-2'
plain-text-documents:
- 'required-business-document-2'
- 'optional-business-document-2'
change-login-documents:
- organization-types: [ 'shareholder' ]
legal-types:
required-documents:
- 'required-shareholder-document-1'
- 'required-shareholder-document-2'
optional-documents:
- 'optional-shareholder-document-1'
- 'optional-shareholder-document-2'
plain-text-documents:
- 'required-shareholder-document-2'
- 'optional-shareholder-document-2'
change-login-documents:
useThirdPartyVerificationService: ${USE_THIRD_PARTY_VERIFICATION:true}
flyway:
location: 'sdk/finance/compliance/db/migration'
table: 'migrations_compliance'
baseline-version: '0.1'
|
Permission changes
New permissions created: CUSTOMER_VERIFICATION_ITEM_SETTINGS_MANAGER, CUSTOMER_VERIFICATION_ITEM_SETTINGS_VIEWER
And granted to:
administrator, ceo