Skip to navigation

Partner FAQs

Frequently asked questions from partners across integration, payments, KYC, and more
View as Markdown

On-Ramp / Off-Ramp

Full coverage (fiat currencies, payment methods, fees, and limits) is listed on the coverage page and the global coverage map. Coverage varies by region; users from unsupported regions cannot be processed.

Token listings require a one-time listing fee. The process is:

  1. Agree on the listing fee with your account manager.
  2. Compliance and due-diligence review (AML, Elliptic coverage checks).
  3. Technical integration by Transak’s team.

Once listed, the token is available to all Transak partners. Contact your account manager for a listing proposal.

Certain US states have regulatory restrictions on specific tokens. Use the Get Cryptocurrencies API and filter by state to see which assets are supported in each state.

Partner Experience

1

Log in to the Partner Dashboard

Go to the Partner Dashboard and login.

2

Select your environment

Note the Environment drop down in the top right. This allows you to select Staging or Production for each page.

4

View your API key

Your API key and API secret are shown for the environment selected in the top right drop down.

5

Switch environments

Change the environment selection to view your API key for Staging and Production.

You can use the Settings page of the Partner dashboard to set the additional partner fee. Enter the desired percentage in FEE PERCENTAGE and click Update.

No. Authentication and sensitive endpoints must be called from backend only to avoid CORS issues and protect API keys.

Submit the additional domain for whitelisting; domain must match exactly with referrerDomain used during session generation.

The “Invalid or Expired Session” error occurs when the same widgetUrl having same sessionId is reused or reopened after it has already been consumed or expired.

Since each sessionId is single-use, once the widget flow is completed, closed, or expires, the same widgetUrl cannot be used again. A new sessionId must be generated for every new user flow.

The standard flow is:

1. Backend → POST /partners/api/v2/refresh-token → access token
2. Backend → POST /api/v2/auth/session → widget URL
3. Frontend → load widget URL in iframe / WebView / redirect

See Refresh Access Token and Create Widget URL.

Call the session API once per user session from your backend to generate a widget URL. Calling it repeatedly can consume the one-time token (OTT), causing subsequent loads to fail.

Best practice:

  • Store the access token in a server-side cache (e.g. Redis) with a TTL.
  • Only refresh the token when the cached one has expired (the expiry time is returned in the API response; the token is valid for 7 days).
  • Never call the session or refresh-token endpoints from the frontend.

The OTT stays valid for its full 5-minute lifetime, allowing user retries within that window.

This means requests are being blocked at Transak’s Cloudflare layer. Verify your API key is correct and active. If the issue persists, contact Transak support with your API key and source IP for investigation and potential IP whitelisting.

Log in to the Partner Dashboard with your registered email. The dashboard lets you view order data, monitor volumes, and manage your partner details.

Yes. Staging access (API keys, sandbox KYC, and test payment credentials) is available immediately after signup. Production API keys can be used once KYB is approved.

A short form the Transak team uses to track your integration progress (environment, payment methods, target timeline) and unblock things like domain whitelisting, fee terms, and go-live review.

Know-Your-Business verification of your company. It’s required before your production API key is activated and before you can process live orders.

Yes, staging keys and flows work fully without KYB. KYB only gates production access.

That message applies to a production key, not a staging key. Double-check which environment/key you’re actually using in the request.

Yes, for production. Using different package names across environments won’t break the widget itself, but keep your production app/domain consistent with what you submitted during KYB.

A feature for partners who have already KYC’d a user through Sumsub to share that verification with Transak (via a kycShareToken), so the user skips Transak’s own KYC screens entirely.

Yes, Reliance works in the sandbox too. You’ll need a donor/partner token from the Transak team first to test it.

No. userDataonly pre-fills the standard KYC form fields (name, DOB, address, mobile) — the user still sees and confirms those screens. KYC Reliance (via kycShareToken) skips the KYC screens for the user entirely, unless there’s an error.

Yes, SSN can be shared for US users through KYC Reliance. Refer https://docs.transak.com/features/kyc-reliance#using-sumsub

No, apiKey itself is not sensitive and can live in a constants file or frontend code. Your api-secret and access-token are sensitive, keep them server-side (e.g. .env), never expose them client-side.

Usually either a new access-token was generated elsewhere afterward (silently invalidating the one you’re using), or a staging token is being used against the production endpoint (or vice versa). Confirm both requests hit matching environments and that you haven’t refreshed the token again since.

This needs a case-by-case review with your integration contact. The general pattern is that your domain loads first and then loads Transak’s widget inside it; whether a double iframe works depends on your specific setup.

Usually caused by using a production apiKey on a domain that isn’t your registered/whitelisted production domain (e.g., testing a prod key on a preview/staging URL). Use the domain your real users will transact on, or use the staging key for ad hoc testing.

No — staging doesn’t enforce referrerDomain. It’s still recommended to pass a real domain anyway (you can reuse the same value for staging and production) rather than leaving it blank.

Widget

Check that you are passing the API key in the parameters. Some parameters can only be used by partners that have had their KYB approved.

You can find out more details about our ❓ Query Parameters.

To submit your KYB use the below link to verify your business and enable your API key for Production. https://forms.transak.com/kyb

You can use our Get Price API for getting price.

These parameters are required to get response from the API.

"fiatCurrency" //eg: GBP
"cryptoCurrency" //eg: HIVE
"paymentMethod" //eg:gbp_bank_transfer
"partnerApiKey" //YOUR_API_KEY
"network" //mainnet
"isBuyOrSell" //BUY
"fiatAmount" / "cryptoAmount" //Any one is required

No, currently we are not supporting that feature.

You can use TRANSAK_WIDGET_CLOSE event name.

You can find more about events here.

No, but you can hide the menu option using the query parameters, then the chat will also be disabled.

No, we are not offering such API as of now.

You can use disableWalletAddressForm in our query parameters to achieve this.

You will need to pass the walletAddress. Then if disableWalletAddressForm is set to true then the wallet address screen will be skipped for the user.

Yeah you can pass meta data using partnerCustomerId & partnerOrderId and please refer Webhooks to know more about web-hooks.

Please refer to our documentation about our integration ​here.

Update your backend to call POST /api/v2/auth/session to generate the widget URL, then load the resulting URL in an iframe, WebView, or redirect. Follow the Migration guide.

Yes, both are supported (subject to device and browser compatibility). Partners can enable or disable Apple Pay and Google Pay using the disablePaymentMethod query parameter when generating the widget URL.

Verify that hideMenu: true is correctly included in the widget parameters payload. If the issue persists, share the full widget payload (API key redacted) and a screen recording with Transak support so the team can reproduce the behaviour.

Users On Boarding

No, users are only required to complete KYC once.

When their KYC is approved they only need to log into their Transak account to perform future transactions. They can use the same KYC-approved Transak account with all of our partner integrations.

Yes, we do support this feature. Please refer KYC Reliance for more details.

If two websites are with same company then you can integrate with same API_KEY.

Otherwise you need to submit KYB for each company.

No it is not required in staging. You can use our Sandbox Credentials in staging.

As of now we support only English to communicate.

Gradually we will add other languages as well.

Users must resolve the existing order first (cancel or complete payment). This prevents duplicate or conflicting transactions.

  1. Complete the Integration Checklist.
  2. Submit KYB via kyb@transak.com.
  3. Set up your staging API key for testing.

Production access is enabled after KYB approval. See What is Transak to get oriented.

Transak provides a staging environment for testing, but staging does not enforce all the same constraints as production (some risk rules and KYC thresholds differ). Use the Sandbox Credentials to test in staging.

Full KYC level details and limits are at transak.com/kyc. Limits vary by country and payment method, and are daily rather than lifetime.

Fraud rejections are driven by Transak’s internal risk policies, not by your integration. Partners cannot override risk decisions directly; Transak’s risk team reviews cases individually. To investigate, share the affected user email IDs or order IDs with Transak support.

A reduced-friction flow (full name, DOB, address, mobile number — no ID document) aimed at first-time or low-volume users, available in select regions and payment methods. Check the isLightKycAllowed field on the Get Countries API to see which countries/states currently qualify.

Some countries require extra fields — for example, US KYC requires a Social Security Number. See docs.transak.com/docs/fiat-currency-countries for the current per-country requirements.

This needs case-by-case review with your integration contact. The general pattern is your domain loads first and then loads Transak’s widget inside it; whether double-iframe works depends on your specific setup.

Usually caused by using a production apiKey on a domain that isn’t your registered/whitelisted production domain (e.g., testing a prod key on a preview/staging URL). Use the domain your real users will transact on, or use the staging key for ad hoc testing.

Payments

We create a virtual bank account for each user and currency. So if a Transak user has only made GBP transactions they will be asked to transfer funds each time to a bank account that is unique to them. Any funds that are sent to that unique account are reconciled with transactions made by that user.

If the user transfers funds in multiple currencies they will be assigned a bank account for each currency.

We create a virtual bank account for every user.

Using that, we track the payment.

Transak is dedicated to being transparent about our pricing and fees. There are four variables that are used to calculate the total amount of cryptocurrency received for the chosen amount of fiat:

  1. Partner fee: P
    • A percentage charge applied on the transaction amount on behalf of the partner. This fee is configurable by partners.
  2. Transak fee: T
    • A percentage charge applied on the transaction amount on behalf of Transak. This covers the fiat processing costs so is set depending on the chosen payment method: credit/debit card or bank transfer. Our fees are set out ​​here.
  3. Network/Exchange fee: N
    • This is the sum of the blockchain transaction fees, or gas, that is paid to make the on-chain transfer of the crypto to the user’s wallet address, plus the withdrawal fee the exchange we are using to provide liquidity. These fees vary by blockchain network and cryptocurrency, as well as changing over time depending on network demand. This fee is set by the market not by us.
  4. Exchange rate: R
    • This is the conversion rate from fiat to cryptocurrency. It is calculated by taking an up-to-date quote of the market rate from multiple pricing services and adding a small slippage percentage. The slippage varies by cryptocurrency and is calculated according to the actual rate we are able to get in the market.

To calculate the total amount of cryptocurrency, C, for the specified amount of fiat currency, F, we calculate the total fees, deduct them from the fiat amount then convert the remainder to cryptocurrency at the market rate. The formula for this is as follows:

C =(F - (F x P% + F x T% + N) x R

So in the example screenshot below where the partner fee is 1% and the payment is a GBP bank transfer, based on the market rates and blockchain transaction fees at the time:

C = (£1000 - (£1000 x 1% + £1000 x 0.99% + £0.59) x 0.0002482224
C = (£1000 - £20.49) x 0.0002482224
C = £979.51 x 0.0002482224
C = 0.24313632

Note that the market rate and network/exchange fee shown in the widget UI is an estimate. The final cryptocurrency amount the user receives is calculated when the fiat payment is settled.

Raise the issue with Transak support with:

  • Customer email address
  • Order ID or transaction ID
  • A brief description of the issue (e.g. “funds debited but not transferred”)

The ops team will investigate. Banking partner delays can sometimes slow fund reversals; Transak will communicate updates as they come in.

GET /partners/api/v2/orders?filter[partnerOrderId]=YOUR_ID

The partnerOrderId must match exactly what was submitted during session creation.

Refunds are handled by the support team. Confirm the refund wallet address with Transak support, and the ops team credits the user.

Verify that fiatAmount, cryptoCurrencyCode, and network in your session payload are correct, and test in staging before pushing to production. If discrepancies persist, share the order ID and session parameters with Transak support.

Transak operates a referral program where partners earn revenue share on referred sub-partners. The referral period is time-limited: once it ends or the referred API key becomes inactive, no further dues are accumulated.

Blockchain

Please refer to our list of Testnets.

Webhook Handling

Ensure your webhook endpoint returns HTTP 200. Also verify that your server logs are not filtering or rejecting the ORDER_COMPLETED event.

Submit your webhook URL via https://docs.transak.com/getting-started/help-and-support#need-help-in-integration. It typically takes 2–3 business days to activate once submitted.

Not the same event again, but you can retrieve past webhook events for an order via the Get Webhooks endpoint (https://docs.transak.com/api/public/get-webhooks).

See https://docs.transak.com/features/webhooks#events for the full list and lifecycle (e.g. PENDING_DELIVERY, COMPLETED, FAILED, EXPIRED).

Common causes: a payment session expiring (e.g. Apple Pay session timeout), crypto not received within the expected settlement window (off-ramp orders auto-expire if funds aren’t received in time), or a risk/fraud check blocking it. Share the order ID with your Transak contact for the specific reason.

Yes, for both webhook delivery and to reduce rate-limiting risk — submit your server’s egress IP(s) via the whitelisting form. Staging and production are whitelisted separately.

NFT Checkout & Token Listing

Generally yes for reputable auditors — confirm with your integration contact for your specific listing/checkout case.

Yes token ID should be known ahead of the mint.

Token/NFT listing is a related but separate commercial process from NFT Checkout’s technical integration. Listing is one of the prerequisites, but the team still needs to review your specific chain/contract separately for checkout support.

Miscellaneous

Please reach out to our customer support at https://support.transak.com/en/

We are allowing 40 requests per IP address in every 10 seconds. If you want to increase the limit then please contact us at support.transak.com.

Use the Get Fiat Currencies API. The minimum and maximum limits are returned in the response and should be used to display limits dynamically.

A risk engine runs checks at each step of a card payment; suspicious orders get blocked/failed rather than completed.

Yes. For high-risk investment promotions to UK/GBP users, FCA rules require a mandatory cooling-off period (minimum 24 hours) for first-time investors before they can proceed. This is regulatory, not something partners can configure.

Whitelabel API

The Whitelabel API lets partners build a fully native, branded on/off-ramp experience using Transak’s backend APIs, with no iframe or Transak-hosted UI. With the widget, Transak serves the UI; with the Whitelabel API, you own the entire front-end and call our APIs for quotes, KYC, payment processing, and order management.

Whitelabel API access requires one of:

  • Volume commitment model — commit to a monthly volume minimum (e.g. $1M/month) via a refundable deposit; any shortfall is invoiced monthly. The first 6 months are a ramp-up period and volume is not counted against the commitment.
  • One-time integration fee — a flat $10,000 fee with no volume commitment; standard Transak pricing applies and rates improve automatically as volume grows.

Contact sales@transak.com to get started.

Yes. Your existing API key must be specifically whitelisted for whitelabel access. Raise a request by writing to sales@transak.com.

EnvironmentBase URL
Staginghttps://api-gateway-stg.transak.com
Productionhttps://api-gateway.transak.com

Yes. Production Whitelabel API calls must be made from your backend, not the frontend. IP whitelisting is mandatory. See Mandatory Security Changes.

  • General APIs: 40 requests per IP per 10 seconds
  • Refresh Token API: 10 requests per 10 minutes

Avoid calling the refresh-token endpoint in quick succession to prevent rate limiting.

On-ramp is fully supported. Off-ramp via the Whitelabel API is not available.

Yes. Partners can add a percentage fee on top of Transak’s base rate, paid out at the end of every month. See Managing partner payouts and configuring partner fees.

The standard flow is:

  1. Call /api/v2/auth/login to trigger an OTP to the user’s email.
  2. Call /api/v2/auth/verify with the OTP to receive an accessToken.
  3. Pass the accessToken in the Authorization header for all subsequent authenticated calls.

Transak returns specific error codes for each authentication failure scenario (e.g. invalid email, OTP expired, internal server error). See the Verify User OTP reference.

Yes. Auth Reliance lets partners bypass Transak’s OTP flow for users already authenticated on your platform: you pass a signed token from your system and Transak trusts that authentication. See Auth Reliance.

Yes. Transak’s KYC Reliance module lets you share existing user KYC data (text fields and documents) via API, regardless of which KYC provider you use, so users aren’t re-KYC’d. See KYC Reliance using API.

Yes. Sumsub KYC token sharing (kycShareToken) is supported. See KYC Reliance using Sumsub. Note:

  • US users (who require SSN) still need to submit SSN separately.
  • Enhanced KYC is not currently supported via Sumsub token sharing.

The user is identified by the accessToken passed in the Authorization header when calling the KYC Reliance API endpoints.

The /api/v2/kyc/share-token-status endpoint returns these states in sequence: INITIALIZED → IMPORTED → VALIDATED → DONE (success) or FAILED. If you don’t have KYC webhooks enabled, poll this endpoint until you reach DONE or FAILED. See Get KYC Reliance Status.

Yes. KYC webhooks are available only for the Whitelabel API (not the standard widget). Your webhook URL must be whitelisted by Transak. See KYC Webhooks.

Headless Apple Pay

Headless Apple Pay lets whitelabel partners natively integrate Apple Pay into their app without showing any Transak UI. The partner handles the full Apple Pay UI and calls Transak’s backend APIs to process the payment. It is available exclusively to Whitelabel API partners.

After KYC completes, the partner renders the confirmation / payment screen natively on their side (e.g. a “Pay with Apple Pay” CTA). This is a native screen built by the partner; Transak does not serve any UI in this step.

Transak returns structured error responses with specific failure reasons (e.g. document mismatch, unsupported document type, incomplete data). Handle these on your side and prompt the user to retry or contact support. See the Headless Apple Pay reference.

Create your pending transaction record when the Create Order API responds — that is when the Order ID is first returned. Do not create the record at the session-generation step, as the Order ID is only available after the process call. All webhook events are keyed by Order ID.

Headless Google Pay

Like Headless Apple Pay, Headless Google Pay lets whitelabel partners natively integrate Google Pay into their app without any Transak UI. Partners handle the Google Pay sheet on their side and call Transak’s APIs to process the payment. See Headless Google Pay.

The supported regions for Google Pay are the same as for Headless Apple Pay. Use the Get Fiat Currencies API to get the list of supported countries.

Auth Reliance availability for Google Pay follows the same timeline as for Apple Pay and cards.