> For a complete page index, fetch https://docs.transak.com/llms.txt

# Query Parameters

**Query Parameters** help partners customize the Transak experience across **On-Ramp, Off-Ramp, and NFT Checkout** flows.

Pass the supported parameters in the `widgetParams` of the [Create Widget URL API](/api/public/create-widget-url) to customize the user flow.

`apiKey` and `referrerDomain` are mandatory for all products.

```bash {9}
curl --request POST \
  --url https://api-gateway-stg.transak.com/api/v2/auth/session \
  --header 'access-token: YOUR_ACCESS_TOKEN' \
  --header 'content-type: application/json' \
  --data '{
    "widgetParams": {
      "apiKey": "YOUR_API_KEY",
      "referrerDomain": "yourdomain.com",
      // Add any other supported parameters here
    }
  }'
```

#### On/Off Ramp

#### Widget Appearance

Controls the visual look, layout, and product mode of the widget.

**`environment`** — default: PRODUCTION JS SDK

Switches between `STAGING` and `PRODUCTION` environments.

---

**`widgetHeight`** `string` — default: 100% JS SDK

Height of the widget iFrame.

---

**`widgetWidth`** `string` — default: 100% JS SDK

Width of the widget iFrame.

---

**`themeColor`** `string` — default: BUY SELL

Widget primary color in hex (e.g. `#000000`). Used for buttons, links, and highlights.

---

**`colorMode`** `'LIGHT' | 'DARK'` — default: system BUY SELL

Defaults to the user's system theme when not set.

---

**`hideMenu`** `boolean` — default: false BUY SELL

When `true`, hides the menu options completely.

---

**`productsAvailed`** `string` — default: BUY,SELL BUY SELL

Services to display: `BUY` (on-ramp only), `SELL` (off-ramp only), or `BUY,SELL` (both). Order controls which tab appears first. SELL must be enabled in the partner portal.

---

#### Exchange Screen

Controls everything visible on the exchange screen — title, currencies, amounts, networks, payment methods, and fee display.

**General**

**`exchangeScreenTitle`** `string` — default: BUY SELL

Custom title for the exchange screen. Cannot be changed when both BUY and SELL are active simultaneously.

---

**`hideExchangeScreen`** `boolean` — default: false BUY SELL

When `true`, skips the exchange screen entirely. Requires `fiatCurrency`, `network`, `paymentMethod`, and `cryptoCurrencyCode` for BUY; additionally `cryptoAmount` for SELL.

---

**`isFeeCalculationHidden`** `boolean` — default: false BUY SELL

When `true`, hides the fee breakdown and shows only the total fee. Ignored if your fee exceeds 1%.

---

**Fiat Currency**

**`fiatCurrency`** `string` — default: BUY SELL

Fiat currency code (e.g. `GBP`). Customer **cannot** change.

---

**`defaultFiatCurrency`** `string` — default: BUY SELL

Default fiat currency; customer can change. Skipped if `fiatCurrency` or `countryCode` is passed. Use alongside `defaultFiatAmount`, not `fiatAmount`.

---

**`fiatAmount`** `number` — default: BUY

Fixed fiat amount. Customer **cannot** change. Skipped if `fiatCurrency` or `countryCode` is not passed.

---

**`defaultFiatAmount`** `number` — default: BUY

Default fiat amount; customer can change. Skipped if `fiatCurrency`/`countryCode` not passed, or if `fiatAmount` is set.

---

**`countryCode`** `string` — default: BUY SELL

[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code (e.g. `US`). Sets fiat currency based on country. Skipped if `fiatCurrency` is passed.

---

**`excludeFiatCurrencies`** `string` — default: BUY SELL

Comma-separated fiat currencies to hide from the dropdown (e.g. `GBP,USD`). Skipped if `fiatCurrency` or `countryCode` is passed.

---

**Crypto Currency**

**`cryptoCurrencyCode`** `string` — default: ETH BUY SELL

Crypto currency code (e.g. `DAI`). Customer **cannot** change. See [supported cryptocurrencies](https://transak.com/crypto-coverage).

---

**`defaultCryptoCurrency`** `string` — default: BUY SELL

Default cryptocurrency; customer can change. Skipped if `cryptoCurrencyCode` is passed.

---

**`cryptoCurrencyList`** `string` — default: BUY SELL

Comma-separated allowed cryptos (e.g. `ETH,DAI,USDT`). Skipped if `cryptoCurrencyCode` is passed.

---

**`defaultCryptoAmount`** `number` — default: BUY SELL

Default crypto amount. Skipped if `cryptoCurrencyCode` is not set, or if `fiatCurrency` + `fiatAmount`/`defaultFiatAmount` are passed. Must be within min/max limits.

---

**`cryptoAmount`** `number` — default: SELL

Fixed crypto amount to sell (e.g. `0.5678`). Customer **cannot** change.

---

**Networks**

**`network`** `string` — default: BUY SELL

Single allowed network (e.g. `ethereum`). Skipped if `networks` is passed.

---

**`networks`** `string` — default: BUY SELL

Comma-separated list of allowed networks (e.g. `ethereum,polygon`).

---

**`defaultNetwork`** `string` — default: BUY SELL

Default network (e.g. `polygon`). Customer can still select another.

---

**Payment Methods**

**`paymentMethod`** `string` — default: BUY SELL

Payment method to lock in. Customer **cannot** select another. See [payment method list in ](/api/public/get-fiat-currencies).

---

**`defaultPaymentMethod`** `string` — default: BUY SELL

Default payment method; customer can change. Skipped if `paymentMethod` is passed. See [payment method list](/api/public/get-fiat-currencies).

---

**`disablePaymentMethods`** `string` — default: BUY SELL

Array of payment methods to hide (e.g. `["gbp_bank_transfer"]`). see all the payment methods [payment method list](/api/public/get-fiat-currencies).

---

#### Wallet Address

Controls the destination wallet address for purchased crypto.

**`walletAddress`** `string` — default: BUY

Destination wallet address (e.g. `0x8634...`). Customer can edit. Pass `cryptoCurrencyCode` or `network` alongside.

---

**`walletAddressesData`** `object` — default: BUY

Multiple wallet addresses keyed by network/coin in JSON format. Skipped if `walletAddress` is passed. See [example](/guides/how-to-use-advanced-query-params#wallet-configuration).

---

**`disableWalletAddressForm`** `boolean` — default: false BUY

When `true`, customer cannot edit the destination address. Requires `walletAddress` or `walletAddressesData`.

---

**`walletRedirection`** `boolean` — default: false SELL

Enables wallet redirection for off-ramp flows. See [details](/guides/how-to-use-advanced-query-params#wallet-configuration).

---

#### KYC & User Identity

Pre-fills customer identity data to streamline or skip the KYC form.

**`email`** `string` — default: BUY SELL

Customer email (e.g. `user@mail.com`). URL-encode if it contains special characters.

---

**`userData`** `object` — default: BUY SELL

User details (name, address, date of birth). If all fields are provided, the customer won't be prompted to enter them. See [example](/guides/how-to-use-advanced-query-params#user-identity--kyc).

---

**`isAutoFillUserData`** `boolean` — default: false BUY SELL

When `true`, auto-fills the email field without skipping the KYC screen. Ignored if `email` or `userData` is not passed.

---

#### Advanced — Tracking, Redirects & Session

Session control, partner tracking IDs, and post-transaction redirects.

**`referrerDomain`** `string` — required, default: BUY SELL

Your domain URL. Used with `apiKey` to identify and track your project.

---

**`widgetUrl`** `string` — default: JS SDK

One-time signed URL from the [Create Widget URL](/api/public/create-widget-url) API. Encapsulates all other parameters securely.

---

**`partnerOrderId`** `string` — default: BUY SELL

Your internal order ID returned in webhook callbacks (e.g. `5e2f559511a9de`).

---

**`partnerCustomerId`** `string` — default: BUY SELL

Your internal customer ID returned in webhook callbacks (e.g. `23487492`).

---

**`redirectURL`** `string` — default: BUY SELL

URL to redirect to after the transaction completes. Must be a valid `https://` URL. See [details](/guides/how-to-use-advanced-query-params#redirects--tracking).

> **Info**
>
> The URL must be a **plain URL**. For example, `https://yourdomain.com/thank-you` is valid, while `https%3A%2F%2Fyourdomain.com%2Fthank-you` is invalid.

---

#### NFT Checkout

#### NFT Configuration

Core parameters required for any NFT Checkout integration.

**`isNFT`** `boolean` — required

Pass as `true` to enable NFT Checkout mode.

---

**`calldata`** `string` — required

The calldata to pass to your smart contract. [How to generate calldata](/guides/how-to-generate-calldata-for-nft-checkout). **Note:** If the function accepts a user wallet address, use Transak's smart contract address. See [example](/products/nft-checkout#transak-smart-contract-addresses).

---

**`contractId`** `string` — required

Unique identifier for your smart contract address and network combination. Generate via [dashboard.transak.com](https://dashboard.transak.com). Staging: whitelisted immediately. Production: requires smart contract audit review.

---

**`cryptoCurrencyCode`** `string` — required

The cryptocurrency your smart contract accepts. See [supported cryptocurrencies](https://transak.com/crypto-coverage).

---

**`estimatedGasLimit`** `number` — required

Gas limit to execute the transaction on your smart contract. See [Ethereum Gas Docs](https://ethereum.org/en/developers/docs/gas/) for EVM chains. **Cannot be 0.**

---

**`nftData`** `array` — required

Pass NFT details as an array of JSON objects. Fields: `imageURL` (optional), `nftName` (optional), `collectionAddress`, `tokenID` (array), `price` (absolute crypto value), `quantity`, `nftType` (`ERC721` or `ERC1155`). Length of `price` and `tokenID` arrays must equal `quantity`. See [example](/guides/how-to-use-advanced-query-params#nftdata).

---

#### Wallet, Fiat & Payment

Destination wallet, fiat currency, and payment method controls for the NFT purchase flow.

**Wallet**

**`walletAddress`** `string`

Blockchain address where the purchased NFT will be sent. Users can edit. Pass `cryptoCurrencyCode` or `network` to ensure a valid address.

---

**`disableWalletAddressForm`** `boolean` — default: false

When `true`, customer cannot change the destination address. Requires `walletAddress`.

---

**Fiat Currency**

**`fiatCurrency`** `string`

Fiat currency code for the NFT purchase (e.g. `GBP`). If unsupported, widget loads with all supported currencies.

---

**`defaultFiatCurrency`** `string`

Default fiat currency; customer can change. Skipped if `fiatCurrency` or `countryCode` is passed.

---

**`countryCode`** `string`

[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code (e.g. `US`). Skipped if `fiatCurrency` is passed.

---

**Payment Methods**

**`paymentMethod`** `string`

Payment method to lock in (e.g. `credit_debit_card`). Customer cannot select another. See [payment method list](/customization/control-fiat-crypto-options#payment-method).

---

**`defaultPaymentMethod`** `string`

Default payment method; customer can change. Skipped if `paymentMethod` is passed.

---

**`disablePaymentMethods`** `string`

Comma-separated list of payment methods to hide (e.g. `credit_debit_card`).

---

#### User Identity & Tracking

Pre-fill customer data to streamline KYC, and set partner-level tracking identifiers.

**User Identity**

**`email`** `string`

Email to identify the customer. URL-encode if it contains special characters.

---

**`userData`** `object`

User details (name, address, date of birth). If all fields are provided, the customer won't be prompted to enter them. See [example](/guides/how-to-use-advanced-query-params#user-identity--kyc).

---

**Tracking**

**`partnerOrderId`** `string`

Your internal order ID (e.g. `5e2f559511a9de`). Returned in webhook callbacks.

---

**`partnerCustomerId`** `string`

Your internal customer ID (e.g. `23487492`). Returned in webhook callbacks.

---

#### Widget Appearance

Visual customization options for the NFT Checkout widget.

**`themeColor`** `string`

Widget primary color in hex (without `#`, e.g. `000000`). Used for buttons, links, and highlighted text.

---

**`colorMode`** `'LIGHT' | 'DARK'` — default: system

Defaults to the user's system theme when not set.

---

**`exchangeScreenTitle`** `string`

Custom title for the exchange screen (e.g. `Buy NFT`).

---

**`hideMenu`** `boolean` — default: false

When `true`, hides menu options completely.

---

**`isFeeCalculationHidden`** `boolean` — default: false

When `true`, shows only the total fee instead of the full breakdown. Ignored if your fee exceeds 1%.

---

**`widgetHeight`** `string` — default: 100% JS SDK

Height of the widget iFrame.

---

**`widgetWidth`** `string` — default: 100% JS SDK

Width of the widget iFrame.

---