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

# Virtual Account Payments

## Overview

Virtual Account Payments makes it easy to turn **fiat money into crypto automatically.** When funds are sent to a virtual bank account, Transak converts them into crypto and delivers the assets directly to a predefined wallet—no user action needed at the time.

Transak handles everything behind the scenes: providing local virtual bank accounts, tracking incoming payments, converting funds to crypto, and offering simple APIs so partners can easily manage transactions and reconciliation.

**Ideal for** — Payroll platforms, fintech companies, and wallets that want a seamless **fiat in → crypto out** experience running in the background, instead of a one-time checkout flow.

## Key Characteristics & Features

<table>
  <tbody>
    <tr>
      <td>
        <strong>
          Virtual bank accounts per user
        </strong>

        Create named VBAs in supported fiat currencies (EUR, GBP, USD, etc). Each VBA is linked to a specific wallet address, crypto asset, and network to define how incoming fiat should be converted.
      </td>
    </tr>

    <tr>
      <td>
        <strong>
          Automatic on-ramp order creation
        </strong>

        When fiat is received into a VBA, Transak automatically creates an on-ramp order, generates a quote, reserves the wallet, and dispatches crypto to the configured wallet.
      </td>
    </tr>

    <tr>
      <td>
        <strong>
          Risk, compliance, and limits
        </strong>

        Standard KYC is required for end users. Virtual Account Payments is explicitly scoped to bank transfers and excludes direct B2C app flows.
      </td>
    </tr>
  </tbody>
</table>

## How the flow works

The partner ensures the user is authenticated and verified. This includes user authentication and completion of required KYC checks, either directly through Transak or via supported reliance mechanisms.

Partner can create a Virtual Bank Account (VBA) that is assigned to the user and mapped to a predefined crypto destination, including the wallet address, asset, and network.

The Partner/User needs to send fiat to the assigned **Virtual bank account** using a standard bank transfer method supported in their region (SEPA, Faster Payments, ACH, wire, etc).

Once the payment is received and confirmed, Transak automatically converts the fiat amount into the configured crypto asset and sends it to the mapped wallet address.

## What are the use cases?

The user or partner provider wants payouts in stablecoins, but the entity and provider do not want to touch crypto or overhaul payroll systems.

<table>
  <tbody>
    <tr>
      <td>
        <strong>
          Configure payout
        </strong>

        User configures a crypto payout method (token, chain, wallet) once in the partner UI.
      </td>
    </tr>

    <tr>
      <td>
        <strong>
          Create VBA
        </strong>

        Transak creates an employee-named VBA in local contract currency (EUR, GBP, USD, etc) via Virtual Account Payments.
      </td>
    </tr>

    <tr>
      <td>
        <strong>
          Send salary
        </strong>

        User sends salary to that VBA as usual. Transak auto-converts the configured portion to stablecoin (e.g., USDC on Base) and sends it on-chain to the user's wallet address created through Transak.
      </td>
    </tr>

    <tr>
      <td>
        <strong>
          Track orders
        </strong>

        Partner receives webhooks with status, tx hash, and reporting fields for order tracking.
      </td>
    </tr>
  </tbody>
</table>

<table>
  <tbody>
    <tr>
      <td>
        <strong>
          Streamed deposits
        </strong>

        Wallets or exchanges can offer "streamed deposits" where users receive regular bank transfers into a VBA.
      </td>
    </tr>

    <tr>
      <td>
        <strong>
          Automatic accumulation
        </strong>

        Crypto automatically accumulates in the user's self-custodial or exchange wallet without having to initiate each purchase.
      </td>
    </tr>
  </tbody>
</table>

## How to integrate?

| Action                                                                                                                 |
| ---------------------------------------------------------------------------------------------------------------------- |
| Follow the steps in the [Need help in Integration](/getting-started/help-and-support#need-help-in-integration) section |
| Request **API key whitelisting** and ask to **enable Virtual Account Payments** for your API key                       |
| Share your public IP addresses with Transak for whitelisting to use our APIs in your backend                           |

You can use either of the following authentication options:

| Option               | Description                                                                                                                                                                                                                                                                                                 |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **White-label Auth** | Use the standard Transak authentication flow to generate a user access token. Partners can do this by calling the [Send User OTP API](/api/whitelabel/user/send-user-otp) followed by the [Verify User API](/api/whitelabel/user/verify-user-otp) to generate the access token.<br /><br />Learn more<br /> |
| **Auth Reliance**    | Use [Auth Reliance](/features/auth-reliance) by passing these headers with every request: `x-user-identifier` and `x-access-token`                                                                                                                                                                          |

Please refer to the tutorial on [how to create partner access token](/guides/how-to-create-partner-access-token).

KYC is a mandatory step in compliance with regulatory requirements. Each user should be Standard KYC Approved before the creation of Virtual Bank Account. You can use either of the following KYC options:

| Option                      | Description                                                                                                                                                               |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **White label KYC**         | Partners can collect the required KYC information on their end and then forward it to Transak for review and approval. Learn more: [Whitelabel KYC](/integration/api#kyc) |
| **KYC Reliance via Sumsub** | Partners can share their KYC data from their platform with Transak using Sumsub. Learn more: [KYC Reliance Guide](/features/kyc-reliance#using-sumsub)                    |

Call the [Create VBA API](/api/whitelabel/virtual-account-payments/create-virtual-bank-account) to generate a virtual bank account that is linked to a crypto wallet.

Call the [Get VBA by ID API](/api/whitelabel/virtual-account-payments/get-virtual-bank-account-by-id) to check the VBA status.

| Status    | Action                                                      |
| --------- | ----------------------------------------------------------- |
| ACTIVE    | Proceed to the next step.                                   |
| INITIATED | Poll the Get VBA by ID API until the status becomes ACTIVE. |

Use the virtual bank account details to send fiat payments. Incoming funds are automatically converted to crypto and sent to the linked wallet.

## Integration Options

Virtual Account Payments is an API-only product. Integrate via our backend APIs:

Integrate our APIs in your backend to build a fully custom UI and user journey.

## Supported Fiat Currencies

Virtual bank accounts can only be created for the following fiat currencies and supported payment methods:

| Fiat Currency | Payment Methods                  |
| ------------- | -------------------------------- |
| EUR           | SEPA/SEPA Instant Bank Transfers |
| GBP           | Faster Payments                  |
| USD           | Wire, ACH (Coming Soon)          |

## API Overview

Creates a Virtual bank account that auto-converts fiat to crypto and sends to the predefined wallet address.

Lists all virtual bank accounts of a user created under your partner account, along with their status and configuration details.

Retrieves the complete details of a specific virtual bank account, including its fiat setup, crypto destination, and current status.

Updates the configuration of an existing virtual bank account, including the linked wallet address, crypto asset, network, and related payout details.

Delete an existing virtual bank account, preventing it from receiving any further incoming fiat transfers.

Virtual Account Payments APIs are to be called only from the partner backend and subjected to the whitelisting of partner IP addresses. Direct API calls from the frontend apps are not supported.