MiCA Changes for EEA Users
Transak serves users in the European Economic Area (EEA) under the EU Markets in Crypto-Assets Regulation (MiCA), as a Crypto Asset Service Provider (CASP) licensed by the Austrian Financial Market Authority (FMA).
MiCA adds new requirements for EEA users: a pricing disclaimer on every quote, a one-time consent for existing users, extra KYC data, stricter ID documents, and a restricted token list. This guide explains each change and what you need to update for your integration mode.
These changes apply only to EEA users. Users in all other countries see no change.
Transak enables MiCA for API partners in stages, after the Transak-hosted widget goes live. Your Transak account manager will confirm the go-live date for your API key. Test every change in staging before go-live.
Who is an EEA user?
Transak treats a user as an EEA user when their KYC country is one of the 30 EEA countries below. Before the user completes KYC, Transak uses the country you pass in the quote. See Show the MiCA Quote Disclaimer.
The United Kingdom and Switzerland are not part of the EEA. UK users continue to follow the FCA flow.
Changes at a Glance
An EEA user who was APPROVED before MiCA can return ADDITIONAL_FORMS_REQUIRED or NOT_SUBMITTED from the Get KYC Requirement API until they complete the new MiCA steps or a KYC refresh. Always call Get KYC Requirement with a fresh quoteId before each order.
1. Show the MiCA Quote Disclaimer
The FMA requires every EEA user to see that the exchange rate is an estimate before they pay. The Get Quote API returns this disclaimer as MICA_EEA_BUY or MICA_EEA_SELL in the termsIds array.
What you need to do:
- Get the quote as the logged-in user. Pass the user authentication headers so Transak uses the user’s KYC country. Without them,
termsIdsis always empty:quoteCountryCodeand the user’s IP do not decide it. Get a new quote once the user logs in. - Show the disclaimer on both the quote screen and the order confirmation screen, above the button, in full and without scrolling. The user does not need to accept it.
Required for go-live: Transak reviews your checkout before enabling EEA users on your API key. A checkout that does not show every disclaimer returned in termsIds will not be approved for EEA go-live.
2. Collect MiCA Consent from Existing EEA Users
EEA users who completed KYC with Transak before MiCA must give a one-time MiCA consent. Until they do, the user cannot place orders.
When it is required
The Get KYC Requirement API returns ADDITIONAL_FORMS_REQUIRED, and the Get Additional Requirements API returns a CONSENT form. CONSENT is usually returned first. Process forms in the order they are returned.
New EEA users who complete KYC after MiCA go-live do not get the CONSENT form.
What to show the user
Show one screen with the following content. The data fields are read-only. Prefill them from the Get User Details API.
How to submit it
Record the time the user agreed
Capture the timestamp when the user clicks Agree & Continue, in ISO 8601 format with a time zone offset, for example 2026-11-26T10:15:00Z.
Submit the consent
Call the Submit MiCA Consent API with the user authentication headers for your flow.
SUBMITTED means the consent was recorded. FAILED (still HTTP 200) means it was not, so retry the request. Validation and authentication problems return a 4xx error. See API Errors.
Continue the KYC flow
Call Get KYC Requirement again. If it returns ADDITIONAL_FORMS_REQUIRED, call Get Additional Requirements and complete the remaining forms. After submitting each form, call Get Additional Requirements again: more forms (for example IDPROOF) can appear until Get KYC Requirement returns APPROVED. Once it returns APPROVED, the user can place orders.
consentedAt rules:
- Use the time the user agreed, not the time you send the request.
- Include seconds and a time zone offset (
Zor±HH:mm), for example2026-11-26T10:15:00Z,2026-11-26T10:15:00.000Zor2026-11-26T11:15:00+01:00. Milliseconds are optional. - It cannot be in the future, and it cannot be earlier than Transak’s MiCA go-live date.
KYC Reliance using API: send the same timestamp in the consent object of the Identity Details API instead of calling Submit MiCA Consent. To check whether a user needs it, call Get KYC Requirement with the quoteId and the user authentication headers. If it returns ADDITIONAL_FORMS_REQUIRED, call Get Additional Requirements. If formsRequired contains type: CONSENT, send the consent object. Otherwise, leave it out.
3. Collect Source of Income, Employment Status and Nationality
EEA users must provide their source of funds, expected monthly volume, employment status and nationality. This applies to all EEA users, not only Enhanced KYC. Simple KYC is not offered to EEA users.
The SOURCE_OF_INCOME form
For a new user, Transak decides whether the user is an EEA user from the address country sent with Patch User Details, not from the fiat currency. Until an EEA address is submitted, the SOURCE_OF_INCOME form and its EEA options are not returned, so call Get Additional Requirements again after patching the address.
For EEA users, the SOURCE_OF_INCOME form from Get Additional Requirements returns the options for each field in metadata:
The example is shortened. Always build the dropdowns from the options in the response, and send the value of the selected option. For EEA users, employment status and nationality are part of the SOURCE_OF_INCOME form, not a separate form, so the user completes all four fields on one screen.
Submit the form
Call the Submit Source of Income API:
SUBMITTED means the data was recorded. FAILED (still HTTP 200) means it was not, so retry the request. Validation and authentication problems return a 4xx error. See API Errors.
Employment status values
Source of funds values
salary_payment, savings, property_sale, sale_of_crypto, inheritance, pension, loan, dividends, gift_or_donation, income_from_services_provided, stock_share_sale
4. Accepted Identity Documents
Driving licences are not accepted for new EEA users or when an existing EEA user verifies again. Existing users who verified with a valid driving licence can continue until the document expires or a KYC refresh is required.
- Whitelabel API and Headless KYC: the Transak-hosted ID check only offers the accepted documents. No change is needed.
- KYC Reliance using API: do not send
DRIVING_LICENSEin Document Details for EEA users. - KYC Reliance using Sumsub: share tokens for EEA users must contain a passport or national ID card.
5. KYC Refresh for Existing Users
After the consent step, Transak can ask an existing EEA user to verify again. This happens when, for example, the ID document has expired, the user completed KYC more than 12 months ago, or Transak’s risk checks require it.
There is no new KYC status. A user who needs a refresh returns NOT_SUBMITTED or ADDITIONAL_FORMS_REQUIRED from Get KYC Requirement. Handle them exactly as in the standard KYC flow: patch user details if asked, then complete every form returned by Get Additional Requirements, including a new ID proof check (IDPROOF) if returned.
KYC Reliance using API: if Get KYC Requirement returns ADDITIONAL_FORMS_REQUIRED for a returning EEA user, call Get Additional Requirements and submit Identity Details again with the sourceOfIncome and additionalDetails objects, plus the consent object if formsRequired contains type: CONSENT.
6. Tokens and Products Not Available to EEA Users
Some crypto assets do not meet MiCA requirements and are not available to EEA users for buying or selling, on any network. These include USDT, DAI, PYUSD and Tether Gold (XAUT). Transak may restrict more assets as regulators publish new guidance.
When an EEA user requests a quote for a restricted asset, Get Quote returns:
Show the message and ask the user to pick another asset.
The following products are not available to EEA users at launch:
7. Transaction Limits
EEA users have their own transaction limits, set in EUR, for each payment method and KYC level. Do not hard-code limits. Read them from the Get User Limits API for the user before you show the amount screen.
Integration Checklist by Mode
Non-Auth Reliance
Auth Reliance
KYC Reliance using Sumsub
KYC Reliance using API
Headless KYC
For partners using the Whitelabel API with Transak OTP login (authorization header).
- Pass
authorizationon Get Quote once the user is logged in. Quotes without it return an emptytermsIds. - Show
MICA_EEA_BUYorMICA_EEA_SELLon the quote and order confirmation screens. - Handle the
CONSENTform: show the consent screen and call Submit MiCA Consent. - Add
employmentStatusandcountryOfCitizenshipto yourSOURCE_OF_INCOMEscreen, using the options in the form metadata. - Do not cache
APPROVED. Call Get KYC Requirement before every order. - Handle error
5011on Get Quote. - Read limits from Get User Limits.