Release Version 4.25.0 (December, 2024)
- Pre-deployment steps
- Post-deployment steps
- New functionality
- Improvements
- Fixes
- API changes
- Configuration changes
Pre-deployment steps
Review API Changes to check if there are any breakable changes in the consumed APIs.
Post-deployment steps
To be done after deployment
To change currencies type from default “FIAT” to “CRYPTO”, except those whose code is present in ISO 4217 alphabetic three-letter code of FIAT currencies, please execute Post-deployment migration SQL scripts.
Check Configuration changes and define configuration parameters if required.
New functionality
Feature |
Description |
Benefits |
Ability to initiate Refund for Purchase via provider operation was added |
Service user with appropriate permission is able to initiate a Refund for the “Purchase via provider” operation manually, as a separate operation linked to the original one. Refund means paying back to a customer unsatisfied with goods or services bought. This dispute operation can be initiated only when the bank day (operational day) of the original transaction is closed. During refund operation system refunds the funds that were debited from the customer (Individual or Merchant) when the transaction “Purchase via provider” was performed. While refund processing in case the commission for Purchase operation was OUT, only the product price that was debited from the customer wallet must be credited back (REFUND AMOUNT DOES NOT INCLUDE COMMISSION AMOUNT) Contact us to get more information about the Refund processing accounting model. |
Allows team members to initiate a refund on purchase via provider operation and credited the price of the product to the customer’s wallet balance. |
Ability for Administrator to set Monthly Fee for System Vendor |
Administrators can now configure and manage monthly fees, specifying a fixed fee amount and currency, which is applied as a platform service charge to Business users. This fee setting feature is available exclusively for the platform owner (System Vendor). Administrators have control over fee setup, including editing and managing the status of monthly fees.
To create monthly fees, the Administrator is allowed to specify the following parameters:
By default, Monthly fee should be created with status “Active“ Administrator is allowed to edit the following parameters of the Monthly Fees (on the Vendor level):
Parameters to view Monthly Fees with filter and pagination:
Parameters to filter by:
|
|
Ability to Retrieve Detailed Refund Information by Transaction ID, Including Original Transaction Details
|
Administrators can now retrieve detailed information for a specified refund by transaction ID, with additional contextual details from the original transaction. This includes key attributes such as the original transaction ID, creation date, transaction type, amount, currency, product ID, commission details, and relevant parties (e.g., sender or recipient). The front-end design supports these enhanced views, while backend updates ensure accurate data retrieval. |
This feature enables administrators to access comprehensive refund and transaction details in one place. It reduces time spent navigating between transactions and improves operational efficiency by offering a unified view of related transactions and refunds. |
Ability for service user to view and update Status for Assets rates. |
This update introduces the ability for authorized service users to manage the status of asset rates, enabling them to set rates as “Active” or “Disabled” after initial creation. Initially, all asset rates will be automatically assigned a default status of “Created” upon setup, preventing use in exchange operations until manually activated. Additionally, a new status, “Unavailable,” is now available in the system, marking rates that are unsupported by specific rate sources (to be fully implemented in a future task). Service users with appropriate permission will be able to see and update the status of the asset rate for certain asset pairs after the creation, so that they can set the status as “Disabled” and PROHIBIT exchange operation with such asset pair.
|
This feature improves control and compliance over asset rate management, ensuring only valid rates are used for exchange operations. |
Ability to view all asset pairs available for exchange with rates against the main asset, including filters and pagination. |
This update introduces the ability for service users to view all asset pairs available for exchange and their rates against the main asset. The feature includes filter and pagination capabilities for efficient navigation and management. It applies to both manual and integration rate sources. Key Features:
Affected Endpoint: Changed API: New API: |
This feature enhances visibility into asset pair rates and improves management efficiency for service users, ensuring streamlined exchange operations. |
Ability for service users to configure exchange rates manually for multiple asset pairs at once |
Users can now manage exchange rates efficiently, viewing all existing rates and updating them in bulk when the rate source is set to “manual”. Key Features:
Error Handling:
Affected Endpoints: POST |
This enhancement streamlines the process of managing exchange rates, saving time for service users and improving operational efficiency. |
Ability to Modify Rate for Specific Currency Pair
|
Service users with the appropriate permissions can now manually modify the rate for specific currency pairs, provided that the rate is set up manually (not through an integration source). Each rate modification automatically updates and displays the date of the last rate change. This ensures that users see the most current rates and the timing of the last modification in the system.
Affected Endpoint: POST
|
This feature enhances operational flexibility by allowing service users to update asset rates on demand. |
Cash Desk Creation and Management |
This feature allows service users with appropriate permissions to create and manage cash desks, link cashiers, and update additional details. Cash desks represent physical locations where cashiers operate. Service users can also view a comprehensive list of cash desks with relevant parameters and apply filters for efficient management. Cash Desk Creation:
Details Modification:
Cash Desk List:
Filters and Search:
New APIs were added to create and manage cash-desks. |
This update enhances operational efficiency by streamlining the management of cash desks and ensuring that cashiers and their associated operations are seamlessly organized. |
Enable registered but not logged-in users to create a request to change their registered phone number used for login. |
This feature allows users who cannot access their current phone number to initiate a request to update it. The process generates a temporary token enabling users to proceed with the next steps, including identity verification, to complete the phone number change.
|
This feature enhances the user experience by providing a secure and streamlined process for updating phone numbers when the current number is inaccessible. |
Enable registered but not logged-in users to upload a selfie and identification document for identity verification as part of the phone number change request process. |
This feature allows users to securely upload a selfie and an identification document using a temporary token, enabling identity verification to proceed with a phone number change request. Key Features:
|
This feature enhances security and usability by enabling users to complete identity verification seamlessly as part of the phone number change process. |
Allow registered but not logged-in users to provide a new phone number for login and initiate OTP verification. |
This feature enables users in the phone number change process to submit a new phone number and link it to their account. The system sends a one-time password (OTP) to verify the new phone number, ensuring secure account updates. Request Parameters
Response parameters:
|
This feature enhances the security and reliability of the phone number change process, ensuring only verified users can update their login credentials. |
Phone Number Change Request – OTP Verification. Added ability for not logged-in users to verify their new phone number and create a request to change the registered phone number used for login. |
This update allows registered users who are not logged in to change their phone number used for login. After requesting a phone number change, users will receive an OTP on their new phone number, which they can use to verify the change. If the OTP is valid, a request to change the phone number is created. Key Features:
New API:
|
This feature ensures users who are unable to access their current registered phone number can securely change it and continue to use the system with their updated credentials. |
This release introduces the Reports Module, which can now be included or excluded from the build based on your configuration needs. The module provides robust reporting functionality, integrating with Kafka for real-time data processing and consumption. |
Notes:
Introduced new Reports API to manage reports: POST /report GET /report/{id} |
This update enhances the reporting capabilities within the system by integrating it with Kafka for real-time processing, giving users the flexibility to customize configurations based on their specific envi |
Ability for Business User to View Pool Bank Account Details for Manual Top-up |
This release introduces the ability for a registered and logged-in business user to view pool bank account details when performing a manual bank transfer to top-up their wallet in FIAT currency. If no bank account is linked to the wallet, the system will display the necessary pool bank account details to allow the user to proceed with the top-up. Key Features:
|
This enhancement improves the flexibility for users who need to manually top up their wallet but have not linked a bank account, ensuring seamless wallet funding through pool bank accounts. |
Ability for Service Users to Manage Pool Bank Accounts |
In this release, we have introduced the ability for service users with appropriate permissions to manage the list of POOL bank accounts in the system. These accounts can now be linked to in-system accounts and used for top-up operations. Service users with the appropriate permissions will be able to view, add, edit, and delete pool bank accounts. Key Changes:
Added new API: POST {{host}}/bank-accounts Added new permission
|
|
Ability for Service Users to Specify, View, and Manage Currency Type |
In this release, we’ve introduced the ability for service users with appropriate permissions to specify, view, and manage the currency type during currency creation and editing. This update allows users to properly classify currencies based on their functional purpose within the system. Key Changes:
Affected Endpoints: POST: |
These changes enhance the flexibility of currency management, enabling service users to classify and organize currencies more effectively, making it easier to distinguish their functional roles within t |
Ability to view account details for currency types other then FIAT (CRYPTO, BONUS, VIRTUAL) |
In this release, we have introduced a new feature allowing registered and logged-in users to add money to their wallets for CRYPTO, BONUS, and VIRTUAL currencies. When users select a non-FIAT currency type (such as cryptocurrency, bonus points, or virtual goods) to add money, they will now be able to specify the amount to top-up, choose a different wallet if needed, and view detailed account information for the wallet they are topping up. Key Changes:
Affected Endpoints: POST /v1/coins/view GET /v1/organizations/system/coins GET /v1/organizations/{organizationId}/coins GET /v1/coins |
|
Ability to get list of users in the system by the list of credentials (emails or phones) |
This release introduces the ability for registered and logged-in users to search for contacts using a list of email addresses or phone numbers. This functionality enables users to view only the contacts that are registered in the system, making it easier to choose recipients for money transfers. Key Changes:
|
|
Exchange Transfer Between Different User Wallets |
Description: This release introduces the ability for registered and logged-in users to send money to another user’s wallet, even if the destination wallet uses a different currency from the source wallet. The system will automatically handle the currency conversion during the transfer, eliminating the need for users to perform a separate exchange operation before making the transfer. Key Changes:
|
|
Ability for business user to create a template for Bank withdrawal |
This release enables registered and logged-in business users to create templates for IBAN transfers by saving the parameters used in a performed transfer. The user can specify a name for the template, allowing them to easily reuse the details for future transactions. Key Changes:
New API was added: POST: |
|
Ability for service user to unban another service user if it was banned after several attempts of specifying wrong password. |
Option “Unban user” added for the team member in the Team member list, if they are banned and the current service user has permission to unban (USER_MANAGER). |
|
Bank accounts menu is moved to the Clients section |
|
|
Added default filters to the Transactions and Log history sections. |
If there are no filters defined for these views, the current-day filter is applied by default starting from 00:00:00.0000 to 23:59:59.9999 |
|
Improvements
Feature |
Description |
Updated country data format for Kafka topic |
Affected Endpoint: Description:
"country": { "alfa2": "UA", "alfa3": "UKR", "numeric": "804", "name": "Ukraine" } |
Configurable Option to Skip KYC Process |
Feature: Introduced a system configuration to enable or skip the KYC process for business user creation. Description: This update allows administrators to configure the system to bypass the KYC process during the creation of business users. When enabled, the system will automatically assign the Approved KYC Identification Status to newly created users, streamlining the onboarding process for specific use cases. |
Front-End Support for Managing Identification Reset Requests |
Service users with appropriate permissions can now manage identification reset requests directly through the back-office UI. This feature streamlines the process of approving or declining requests, providing greater control and efficiency. Key Features:
|
Ability for business and service user to enable/disable email notifications related to business user profiles was added |
Ability to enable/disable the following notifications was added for business user:
If some of new optional settings for notifications were not provided, the following default values will be used for updating settings:
|
Addition of gate transaction (provider transaction) details to the transactions view API. Provider transaction external ID added to the transaction details. |
This update enhances the Key Features:
Affected Endpoint: POST /transactions/view Added |
Allow business users to view and manage their email and phone notification settings directly in their profile. |
Business users can now control whether they receive notifications for specific events via email or phone. This feature provides flexibility to enable or disable notifications based on individual preferences, ensuring users are informed only about events they find relevant.
If for some phone: true – if phone is verified, otherwise false email: true – if email is verified, otherwise false will be applied for each of existing Affected Endpoints:
|
Ability for business user to view comprehensive account details on the user dashboard for a full overview of all accounts. |
This feature provides registered and logged-in users with a unified view of all their accounts, including key details such as balances, linked cards, status, and associated bank accounts. This allows users to have a holistic view of their financial information on one screen.
New API was added: |
Masked Phone Number in OTP Authorization Response Added masked phone number in the response of the POST /authorization API when an OTP is sent to the user’s phone. |
To improve security and user experience, the POST /authorization API response now includes a masked version of the user’s phone number when an OTP is sent for verification. This ensures that sensitive phone number details are obscured while still providing enough information for the user to verify the phone number being used. Key Features:
Affected Endpoint: id=”POST-/authorization” data-renderer-start-pos=”36975″> |
Ability for business user to create withdrawal via Bank request without specifying bank account ID |
In this release, business users can now create a withdrawal request to transfer funds to an IBAN without the need to first create and link a bank account. Users will only need to specify the recipient account details, making the process simpler and faster. Key Changes:
Affected Endpoints: POST bank-withdrawals/create-request |
Ability to See Blocked Date for Blocked Accounts in Accounts List |
As a registered and logged-in user, you can now view the blocked date for any blocked account in the Accounts list. This helps users quickly check when an account was blocked. API Changes:
|
The list of country codes in the system was updated |
The list of country codes in the system was updated according to the following: Removed country codes (‘AQ’, ‘AN’, ‘TF’, ‘PS’, ‘HM’, ‘BV’)
The fields with country codes in tables country in org_prof_address_def |
Fixes
- Improved Transaction Reconciliation Status Handling. The previous method of using the business process status to indicate whether a transaction was reconciled or not often caused issues, particularly with moving transactions to the “processed” status. To address this, a new field,
reconciliationStatus
, has been added to the API response for the endpoint /v1/transactions/{transactionId}. - Deleted roles are now properly removed from the
supervisingRoles
andmanageableRoles
associations, ensuring they no longer appear in responses or remain linked to other roles. -
The HTTP status code when attempting to delete a non-existent or already deleted exchange rate has been updated from 204 No Content to 404 Not Found.
Additionally, the error message will now return
"code": "exception.rate.not_found"
to accurately reflect the issue when trying to delete an exchange rate that doesn’t exist or has already been deleted. -
Error exception.entity.ambiguity while user registration and top-up was fixed.
The type of the
requestIdentifier
path parameter has been updated across several API endpoints. Previously, an integer identifier was used, but it has now been replaced with a string-based request ID.This update affects the following API endpoints:
-
POST /v1/bank-top-ups/{requestIdentifier}/accept
-
POST /v1/bank-top-ups/{requestIdentifier}/decline
-
POST /v1/bank-withdrawals/{requestIdentifier}/accept
-
POST /v1/bank-withdrawals/{requestIdentifier}/decline
-
POST /v1/bank-withdrawals/{requestIdentifier}/lift-limit
-
POST /v1/bank-withdrawals/{requestIdentifier}/reject
-
GET /v1/cash-desk-withdrawals/details/{requestIdentifier}
-
POST /v1/cash-desk-withdrawals/{requestIdentifier}/perform-withdrawal
-
POST /v1/cash-desk-withdrawals/{requestIdentifier}/approve
-
POST /v1/cash-desk-withdrawals/{requestIdentifier}/decline
-
GET /v1/collects/{requestIdentifier}
-
POST /v1/collects/{requestIdentifier}/accept
-
POST /v1/issue-card/cards/issue/{requestIdentifier}/accept
-
POST /v1/issue-card/cards/issue/{requestIdentifier}/decline
-
GET /v1/inputs/{requestIdentifier}
-
POST /v1/inputs/{requestIdentifier}/accept
-
GET /v1/investments/{requestIdentifier}
-
POST /v1/investments/{requestIdentifier}/accept
-
POST /v1/business-requests/{requestIdentifier}/approve
-
POST /v1/business-requests/{requestIdentifier}/decline
-
POST /v1/business-requests/{requestIdentifier}/repeat
-
POST /v1/business-requests/{requestIdentifier}/reject
In addition, the type of the identifier field has been updated in the following components:
-
BusinessProcessDto
-
BusinessRequestFilterDto
-
TransactionFilterDto
-
BusinessRequestDto
-
-
Enable Notifications by Default for Users with Verified Contacts
A bug has been fixed where notifications were disabled by default for newly created users with verified contacts.
The system now ensures that notifications are enabled by default when a user has verified contact information. This update ensures proper notification settings for new users without requiring manual configuration after creation.
- Display All Available Contracts in “Change Contract” Window
A bug has been fixed where only the first 10 contracts were displayed in the “New contract” dropdown when editing contracts for a client. The system has been updated to ensure that all contracts are displayed in the dropdown, resolving the issue of incomplete contract visibility. -
The API POST /v1/assets/exchange-rates/view was fixed.
API returned all currency rates, including deleted ones. Now API returns only actual currency rates and excludes deleted ones.
API changes v.4.25.0
Endpoint |
Updated |
POST |
The refunding filtering fields and refundProcess node were added |
POST |
New fields were added in response.
|
POST
|
Added filtering and pagination
|
POST |
API receives request of currency pairs with rate value. Changed request body to accept list of exchange rates:
now:
in the response, a list of rates is returned instead of one rate:
|
POST /transactions/view |
Added |
PATCH /my/security-settings PATCH /profiles/{userId}/security-settings |
New required field was introduced
For each
in If for some
will be applied for each of the existing request body:
response body:
|
GET /v1/profiles/my PATCH /v1/profiles/my/additional PATCH /v1/profiles/my/address PATCH /v1/profiles/my/business POST /v1/profiles/my/contact/confirm PATCH /v1/profiles/my/person
POST /v1/profiles/{userId}/approve POST /v1/profiles/{userId}/decline POST /v1/profiles/{userId}/reset PATCH /v1/profiles/{userId}
GET /v1/profiles/{userId} PATCH /v1/profiles/{userId}/additional PATCH /v1/profiles/{userId}/address PATCH /v1/profiles/{userId}/integration PATCH /v1/profiles/{userId}/business PATCH /v1/profiles/{userId}/contact PATCH /v1/profiles/{userId}/person |
Fields were removed from the response:
New required node was added to the response:
response:
|
POST /v1/authorization |
The new parameter “maskedPhoneNumber” was added to the response. |
POST /v1/my/bank-accounts/view |
The logic for the API operation POST /my/bank-accounts/view has been updated to handle scenarios Key Changes:
|
POST /v1/bank-accounts/view POST/v1/bank-accounts PATCH /v1/bank-accounts/{bankAccountId}/with-bank DELETE /v1bank-accounts/{bankAccountId}
|
Added new permission |
POST /v1/currencies/view |
New field “type” was added to the request body in node filter for the API to view currencies. Request body example:
|
POST /v1/currencies |
New field “type” was added to the request body for the API to create a currency Request body example:
*if “type” is not provided in the body, default value “FIAT” will be used to create a new currency. |
PATCH /v1/currencies/{currencyId} |
New field “type” was added to the request body for the API to update a currency. Request body example:
*If the “type” is not included in the body, the existing value of the currency type will persist. |
POST /v1/currencies/view POST /v1/currencies PATCH /v1/currencies/{currencyId} PATCH /v1/currencies/{currencyId}/set-main GET /v1/currencies |
New field “type” was added to the response body for following APIs
Response body example:
|
POST /v1/coins/view GET /v1/organizations/system/coins GET /v1/organizations/{organizationId}/coins GET /v1/coins |
The new field “coins.currency.type” was added to the response. |
POST bank-withdrawals/create-request |
The following API operation was changed The new optional section “bankAccountData” was added to the request:
Implementation details
|
GET /v1/coins |
The new field “coins.deactivationDate” was added to the response showing the deactivation date for the account.
|
GET /v1/transactions/{transactionId} |
A new field, Field Added:
Sample API Response: Below is an example of the updated API response structure, including the new
|
Endpoint |
Added |
POST /v1/system-vendor/monthly-fees
|
A new API to create monthly fee for system vendor was added. Required permissions: SYSTEM_VENDOR_MONTHLY_FEE_MANAGER
|
PATCH /v1/system-vendor/monthly-fees/{monthlyFeeId}
|
A new API to update system vendor monthly fee was added
|
DELETE /v1/system-vendor/monthly-fees/{monthlyFeeId} |
A new API to delete system vendor monthly fee was added Required permissions: SYSTEM_VENDOR_MONTHLY_FEE_MANAGER |
POST /v1/system-vendor/monthly-fees/view |
A new API to view system vendor monthly fees was added
|
POST /v1/gate/transactions/{tx}/refund |
Added API to initiate the refund transaction: Permission – tx *required – Is an internal id of gate transaction. Example : d8617ed2-f152-4ba9-84ed-da05486f19e2
|
PATCH /exchange-rates/rate |
Added a new API to update rate status Permission required: Use this API to update the status of currency exchange rates.
|
POST |
New API was added to view the currency exchange rates in a pair with main asset.
|
PATCH /exchange/rate/provider/{id} |
Use this API to update rate provider.
|
GET /exchange/rate/provider |
Use this API to get all rate providers.
|
PATCH /v1/management/cash-desks/{cashDeskId} |
A new API was added to allow modifying details of an existing cash desk. Users can update information Request Headers:
Path Parameter
Request Body: The request body should be in JSON format and can include the following fields for updating the cash desk’s details:
Example Request:
Permission: |
POST /v1/management/cash-desks/{cashDeskId}/cashiers |
A new API was added to retrieve a paginated list of all cashiers associated with a specific cash desk, Request Headers
Path Parameter:
Request Body: The request body should be in JSON format and can be empty as no additional parameters are needed for this operation. Example Request:
Permission: |
GET /v1/management/cash-desks/{cashDeskId} |
API to view cash-desk data by identifier Use cashDeskId as organisation ID of the Cashdesk.
Permission: |
POST login-change/authorization |
The following API operation was added: POST login-change/authorization Use this API to get access token to authenticate APIs required to initiate login change.
Response example:
|
GET login-change/profile-documents/view-document-types |
The following API operations were added: GET login-change/profile-documents/view-document-types to get list of profile document types required for login change. Response body:
These API operations can be called only with temporary token generated by the API operation |
POST login-change/profile-documents |
Response body:
These API operations can be called only with temporary token generated by the API operation |
POST login-change/new-login/send-otp |
New API was added to Send OTP to new login
These API operation can be called only with temporary token generated by the API operation |
|
Added new API to get all account details (coins, cards, bank accounts) for current use Allowed with permission
|
POST /report |
To be able to use the report module it should be configured.
A new API to create a report if it doesn’t exist and return its ID This can only be done by authorized user with permission REPORT_MANAGER Request body:
|
GET /report/{id}
|
To be able to use the report module it should be configured.
This can only be done by authorized user with permission REPORT_MANAGER
|
POST login-change/request |
New API was added to create change login request Request body:
OTP will be sent to user’s new login. These API operation can be called only with temporary token generated by the API operation |
POST /bank-accounts |
New API that can be used by users with service roles to add pool bank account to the system. Request body:
Response body:
|
POST /v1/templates/withdrawal/operation/{id} |
A new API to create withdrawal template by already executed withdrawal. Permission: Request example to create Transfer template by providing Bank process id:
Response example:
|
POST /v1/authorization |
|
Endpoint |
Deprecated/Deleted |
Configuration changes
To enable the reporting module
-
Optional Inclusion in Build
The Reports Module can now be included in the build or excluded based on the business needs. -
General Properties
The following general properties need to be configured:spring: kafka: bootstrap-servers: ${SPRING_KAFKA_BOOTSTRAPSERVERS} enabled: ${KAFKA_ENABLED} client-id: ssl-endpoint-identification-algorithm: sasl-mechanism: ${SPRING_KAFKA_PROPERTIES_SASL_MECHANISM} sasl-jaas-config: ${SPRING_KAFKA_PROPERTIES_SASL_JAAS_CONFIG} security-protocol: ${SPRING_KAFKA_PROPERTIES_SECURITY_PROTOCOL}
-
Module-Specific Properties
The following properties are specific to the Reports Module:reports: kafka: topic: ${KAFKA_REPORTS_TOPIC:transaction-topic-dev} group-id: ${REPORTS_GROUP_ID:reports-kafka-consumer-group}
Notes:
-
The
ssl-endpoint-identification-algorithm
andreports.kafka.include
properties are intentionally left without default values to allow for customization based on the environment. -
Ensure all environment-specific variables are properly set for seamless integration.
To configure currency exchange rates provider
Configuration structure changed from:
rate: exchange-rates: ttl: PT10H # https://developer.currencycloud.com/ currency-cloud: enabled: false url: 'https://devapi.currencycloud.com/v2' login-id: 'system_sdk5@sdk.finance' api-key: 'some-hidden-key' available-currencies: - USD - EUR - GBP - CHF
to
exchange-rates: timer: enabled: true schedule-expression: '0 0/5 * ? * * *' providers: - name: 'Manual' active: true enabled: true description: 'Manual currency exchange rates' default-ttl: 'P0D' - name: 'Currency-cloud' active: false enabled: true description: 'Currency cloud exchange provider' default-ttl: PT10H currency-cloud: identifier: 'Currency-cloud' # must be unique and the same with exchange-rates.providers[*].name url: 'https://devapi.currencycloud.com/v2' login-id: 'system_sdk5@sdk.finance' api-key: 'some-hidden-key' available-currencies: - USD - EUR - GBP - CHF
Post-deployment migration SQL scripts
UPDATE currency_def SET "type" = 'CRYPTO' WHERE id IN ( SELECT c.def_id FROM currency c WHERE c.code NOT IN ('ADP', 'AED', 'AFA', 'AFN', 'ALK', 'ALL', 'AMD', 'ANG', 'AOA', 'AOK', 'AON', 'AOR', 'ARA', 'ARP', 'ARS', 'ARY', 'ATS', 'AUD', 'AWG', 'AYM', 'AZM', 'AZN', 'BAD', 'BAM', 'BBD', 'BDT', 'BEC', 'BEF', 'BEL', 'BGJ', 'BGK', 'BGL', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BOP', 'BOV', 'BRB', 'BRC', 'BRE', 'BRL', 'BRN', 'BRR', 'BSD', 'BTN', 'BUK', 'BWP', 'BYB', 'BYN', 'BYR', 'BZD', 'CAD', 'CDF', 'CHC', 'CHE', 'CHF', 'CHW', 'CLF', 'CLP', 'CNY', 'COP', 'COU', 'CRC', 'CSD', 'CSJ', 'CSK', 'CUC', 'CUP', 'CVE', 'CYP', 'CZK', 'DDM', 'DEM', 'DJF', 'DKK', 'DOP', 'DZD', 'ECS', 'ECV', 'EEK', 'EGP', 'ERN', 'ESA', 'ESB', 'ESP', 'ETB', 'EUR', 'FIM', 'FJD', 'FKP', 'FRF', 'GBP', 'GEK', 'GEL', 'GHC', 'GHP', 'GHS', 'GIP', 'GMD', 'GNE', 'GNF', 'GNS', 'GQE', 'GRD', 'GTQ', 'GWE', 'GWP', 'GYD', 'HKD', 'HNL', 'HRD', 'HRK', 'HTG', 'HUF', 'IDR', 'IEP', 'ILP', 'ILR', 'ILS', 'INR', 'IQD', 'IRR', 'ISJ', 'ISK', 'ITL', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAJ', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LSM', 'LTL', 'LTT', 'LUC', 'LUF', 'LUL', 'LVL', 'LVR', 'LYD', 'MAD', 'MDL', 'MGA', 'MGF', 'MKD', 'MLF', 'MMK', 'MNT', 'MOP', 'MRO', 'MRU', 'MTL', 'MTP', 'MUR', 'MVQ', 'MVR', 'MWK', 'MXN', 'MXP', 'MXV', 'MYR', 'MZE', 'MZM', 'MZN', 'NAD', 'NGN', 'NIC', 'NIO', 'NLG', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEH', 'PEI', 'PEN', 'PES', 'PGK', 'PHP', 'PKR', 'PLN', 'PLZ', 'PTE', 'PYG', 'QAR', 'RHD', 'ROK', 'ROL', 'RON', 'RSD', 'RUB', 'RUR', 'RWF', 'SAR', 'SBD', 'SCR', 'SDD', 'SDG', 'SDP', 'SEK', 'SGD', 'SHP', 'SIT', 'SKK', 'SLL', 'SOS', 'SRD', 'SRG', 'SSP', 'STD', 'STN', 'SUR', 'SVC', 'SYP', 'SZL', 'THB', 'TJR', 'TJS', 'TMM', 'TMT', 'TND', 'TOP', 'TPE', 'TRL', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UAK', 'UGS', 'UGW', 'UGX', 'USD', 'USN', 'USS', 'UYI', 'UYN', 'UYP', 'UYU', 'UYW', 'UZS', 'VEB', 'VEF', 'VES', 'VNC', 'VND', 'VUV', 'WST', 'XAF', 'XAG', 'XAU', 'XBA', 'XBB', 'XBC', 'XBD', 'XCD', 'XDR', 'XEU', 'XFO', 'XFU', 'XOF', 'XPD', 'XPF', 'XPT', 'XRE', 'XSU', 'XTS', 'XUA', 'XXX', 'YDD', 'YER', 'YUD', 'YUM', 'YUN', 'ZAL', 'ZAR', 'ZMK', 'ZMW', 'ZRN', 'ZRZ', 'ZWC', 'ZWD', 'ZWL', 'ZWN', 'ZWR') );