---
title: "Simulate a Bank Transfer to a Virtual Account"
source_url: https://docs.rapyd.net/en/simulate-a-bank-transfer-to-a-virtual-account.html
lang: en
---

# Simulate a Bank Transfer to a Virtual Account

Simulate a deposit to a virtual account that was issued to a wallet.

This method is relevant only for testing in the sandbox. The currency of the transfer must be supported by the specific virtual account.

This method triggers [Deposit Completed Webhook](https://docs.rapyd.net/en/deposit-completed-webhook.md "Deposit Completed Webhook").

> **Note:**
>
> - This endpoint replaces the deprecated endpoint - `POST /v1/issuing/bankaccounts/bankaccounttransfertobankaccount`
> - Rapyd no longer supports the deprecated endpoint.
> - The code samples include successful requests (200) and bad requests (400).
>
>   - For error messages that appear due to bad requests (400), see:
>
>     - [General Errors](https://docs.rapyd.net/en/general-errors.md "General Errors")
>     - [Virtual Account Errors](https://docs.rapyd.net/en/virtual-account-errors.md "Virtual Account Errors")
>   - For information about unauthorized request (401) and other authentication errors, see [Troubleshooting Authentication and Authorization Errors](https://docs.rapyd.net/en/troubleshooting-authentication-and-authorization-errors.md "Troubleshooting Authentication and Authorization Errors").

**Prerequisites:**

- [Create Wallet](https://docs.rapyd.net/en/create-wallet.md "Create Wallet")
- [Verify Identity](https://docs.rapyd.net/en/verify-identity.md "Verify Identity")
- To simulate a transfer with FX, assign a value to `requested_currency`.

### Parameters

### Request Header Parameters

- - access_key
  - Unique access key provided by Rapyd for each authorized user.

    See [Developers](https://docs.rapyd.net/en/developers.md "Developers").
- - Content-Type
  - Indicates that the data appears in JSON format. Set to **application/json**.
- - idempotency
  - A unique key that prevents the platform from creating the same object twice.

    See [Idempotency](https://docs.rapyd.net/en/idempotency.md "Idempotency").
- - salt
  - Random string. Recommended length: 8-16 characters.
- - signature
  - Signature calculated for each request individually.

    See [Request Signatures](https://docs.rapyd.net/en/request-signatures.md "Request Signatures").
- - timestamp
  - Timestamp for the request, in [Unix time](https://docs.rapyd.net/en/glossary.md#UUID-945d98cf-adae-e1cf-2606-c7fae8b4a7e1_unix_time "Unix time") (seconds).

### Request Body Parameters

- - amount
  - The amount sent by the sender to the virtual account, in units of the currency defined in `currency`.
- - currency
  - Currency sent by the sender to the virtual account. Three-letter ISO 4217 code.

    To simulate a transfer without FX, set to `currency` in the virtual account.

    To simulate a transfer with FX, do not set to `requested_currency` in the virtual account.
- - issued_bank_account
  - ID of the virtual account number object. String starting with **issuing_**.
- - remitter_information
  - Details about the remitter of a transfer to a virtual account, including the following fields:

    - - account_id
      - The remitter's bank account identifier.
    - - account_name
      - Name of the bank account holder.
    - - bank_code
      - Bank identifier code, such as SWIFT, BIC, ABA, or other local identifier.
    - - iban
      - IBAN of the virtual bank account.
    - - remitter_reference
      - Information that the remitter adds to the transaction, intended for the beneficiary. Supported by some payment methods.
    - - sort_code
      - The domestic bank code that is used for transfers.
- - requested_currency
  - Indicate the 3-letter code (uppercase) for the currency sent by the sender. The funds will be converted into the "requested currency" of the virtual account.

### Response Parameters

- - bank_account
  - Details about the bank account, including the following fields:

    - - aba
      - 9-digit ABA routing number of the virtual account.
    - - aba_routing_number
      - 9-digit ABA routing number of the virtual account.
    - - account_holder
      - Name of the virtual account holder.
    - - account_no
      - The actual account number that was assigned to the virtual account when it was created.
    - - account_number
      - The actual account number that was assigned to the virtual account when it was created.
    - - address
      - Street address of the branch of the bank that issued the virtual account number.
    - - beneficiary_name
      - Name of the owner of the Rapyd Wallet that the virtual account number was issued to.
    - - bic
      - [Bank Identifier Code (BIC)](https://docs.rapyd.net/en/glossary.md#UUID-945d98cf-adae-e1cf-2606-c7fae8b4a7e1_bic "Bank Identifier Code") of the virtual account.
    - - branch_code
      - Number of the bank branch.
    - - city
      - City of the branch of the bank that issued the virtual account number.
    - - country
      - Two-letter ISO 3166-1 ALPHA-2 code of the country of the virtual account.
    - - country_iso
      - Two-letter ISO 3166-1 ALPHA-2 code of the country of the virtual account.
    - - iban
      - [International bank account number (IBAN)](https://docs.rapyd.net/en/glossary.md#UUID-945d98cf-adae-e1cf-2606-c7fae8b4a7e1_iban "International Bank Account Number") of the virtual account.
    - - payment_type
      - Method of transferring funds to and from the virtual account.
    - - sort_code
      - A six-digit bank identification number. Relevant to certain country-currency combinations.
- - currency
  - Currency of the virtual account. Three-letter ISO 4217 code.
- - description
  - Description of the transaction, as defined by the client.
- - ewallet
  - ID of the Rapyd Wallet that the virtual account is attached to. String starting with **ewallet_**.
- - funding_instructions
  - Reserved.
- - id
  - ID of the virtual account. String starting with **issuing_**.
- - merchant_reference_id
  - Identifier defined by the client for reference purposes. Limit: 45 characters.
- - metadata
  - A JSON object defined by the client. See [Metadata](https://docs.rapyd.net/en/metadata.md "Metadata").
- - requested_currency
  - Currency received by the virtual account after conversion. One of the following:

    - **AUD** - Australian Dollar
    - **EUR** - Euro
    - **GBP** - Pound Sterling
    - **HKD** - Hong Kong Dollar
    - **SGD** - Singapore Dollar
    - **USD** - US Dollar
- - status
  - Indicates the status of the virtual account.

    - **ACT** - Active.
    - **ERR** - Error.
    - **PEN** - Pending.
    - **REJ** - Rejected.
- - transactions
  - List that describes individual transactions in the wallet that were done via the virtual account number. Each object has the following fields:

    - - id
      - ID of the transaction. String starting with **isutran_**.
    - - amount
      - The amount credited to the virtual account, in units of the currency defined in `currency`.
    - - created_at
      - Timestamp for the transaction, in [Unix time](https://docs.rapyd.net/en/glossary.md#UUID-945d98cf-adae-e1cf-2606-c7fae8b4a7e1_unix_time "Unix time").
    - - currency
      - The currency credited to the virtual account. Three-letter ISO 4217 code.

        - **Transactions without FX** - The currency sent by the sender.
        - **FX transactions** - Determined by `requested_currency` in the virtual account.
    - - fx_rate
      - Currency conversion rate for the transaction.
    - - original_amount
      - The amount sent by the sender to the virtual account, in units of the currency defined in `original_currency`.
    - - original_currency
      - The currency sent by the sender to the virtual account. Three-letter ISO 4217 code.

### Code Samples

- - .NET

    - ```csharp
      using System;
      using System.Text.Json;

      namespace RapydApiRequestSample
      {
          class Program
          {
              static void Main(string[] args)
              {
                  try
                  {
                      var requestObj = new
                      {
                          issued_bank_account = "issuing_01ce6729cf4c1a6c5bd2b16901725876",
                          amount = 100,
                          currency = "EUR",

                      };

                      string request = JsonSerializer.Serialize(requestObj);

                      string result = RapydApiRequestSample.Utilities.MakeRequest("POST", "/v1/virtual_accounts/transactions", request);
                      Console.WriteLine(result);
                  }
                  catch (Exception e)
                  {
                      Console.WriteLine("Error completing request: " + e.Message);
                  }
              }
          }
      }
      ```
- - JavaScript

    - ```javascript
      const makeRequest = require('../../../../Utilities/JS/utilities').makeRequest;

      async function main() {
        try {
          const body = {
            issued_bank_account: 'issuing_01ce6729cf4c1a6c5bd2b16901725876',
            amount: 100,
            currency: 'EUR'      
            
          };
          const result = await makeRequest(
            'POST',
            '/v1/virtual_accounts/transactions',
            body
          );

          console.log(result);
        } catch (error) {
          console.error('Error completing request', error);
        }
      }
      ```
- - PHP

    - ```php
      <?php
      $path = $_SERVER['DOCUMENT_ROOT'];
      $path .= "/code_race_2020/Utilities/PHP/utilities.php";
      include($path);

      $body = [
          "issued_bank_account" => "issuing_01ce6729cf4c1a6c5bd2b16901725876",
          "amount" => "100",
          "currency" => "EUR"
      ];
      try {
          $object = make_request('post', '/v1/virtual_accounts/transactions', $body);
          var_dump($object);
      } catch(Exception $e) {
          echo "Error: $e";
      }
      ?>
      ```
- - Python

    - ```python
      from pprint import pprint

      from utilities import make_request

      body = {
          "issued_bank_account": "issuing_b812a80aab159633335bbc64c9819091",
          "amount": "100",
          "currency": "EUR"
      }

      results = make_request(method='post', path=f'/v1/virtual_accounts/transactions', body=body)
      pprint(results)
      ```

- /v1/virtual_accounts/transactions

- Simulate a Bank Transfer to a Virtual Account
- ```curl
  curl -X post
  'https://sandboxapi.rapyd.net/v1/virtual_accounts/transactions' \
  -H 'access_key: your-access-key-here' \
  -H 'Content-Type: application/json' \
  -H 'idempotency: your-idempotency-parameter-here' \
  -H 'salt: your-random-string-here' \
  -H 'signature: your-calculated-signature-here' \
  -H 'timestamp: your-unix-timestamp-here' \
  --data-raw '{
  	"issued_bank_account": "issuing_d11d404c919519c66ac61e14389f766a",
  	"amount": "100",
  	"currency": "EUR"
  }'
  ```
- ```json
  {
      "status": {
          "error_code": "",
          "status": "SUCCESS",
          "message": "",
          "response_code": "",
          "operation_id": "bdcfd0ef-8163-4230-ad39-9c38a3053712"
      },
      "data": {
          "id": "issuing_d11d404c919519c66ac61e14389f766a",
          "merchant_reference_id": "issuing_d11d404c919519c66ac61e14389f766a",
          "ewallet": "ewallet_c1943cfeda5f98247ab117e5d2648861",
          "bank_account": {
              "beneficiary_name": "CashDash UK Limited",
              "address": "Northwest House, 119 Marylebone Road NW1 5PU",
              "country_iso": "DE",
              "iban": "DE07202208000092780641",
              "bic": "SXPYDEHH"
          },
          "metadata": {},
          "status": "ACT",
          "description": null,
          "funding_instructions": null,
          "currency": "EUR",
          "requested_currency": null,
          "transactions": [
              {
                  "id": "isutran_5337361d6c62f369d98c71d9e418f063",
                  "amount": 100,
                  "currency": "EUR",
                  "original_amount": 100,
                  "original_currency": "EUR",
                  "fx_rate": 1,
                  "created_at": 1760276114
              }
          ]
      }
  }
  ```

- Simulate a Bank Transfer to a Virtual Account with FX
- ```curl
  curl -X post
  'https://sandboxapi.rapyd.net/v1/virtual_accounts/transactions' \
  -H 'access_key: your-access-key-here' \
  -H 'Content-Type: application/json' \
  -H 'idempotency: your-idempotency-parameter-here' \
  -H 'salt: your-random-string-here' \
  -H 'signature: your-calculated-signature-here' \
  -H 'timestamp: your-unix-timestamp-here' \
  --data-raw '{
      "issued_bank_account": "issuing_f0d1d873c1c02bccf0ed42de2a609fe2",
      "amount": "101",
      "currency": "USD",
      "requested_currency": "EUR"
  }'
  ```
- ```json
  {
      "status": {
          "error_code": "",
          "status": "SUCCESS",
          "message": "",
          "response_code": "",
          "operation_id": "d2bb79f4-608c-48ff-81ad-0dceef5555b5"
      },
      "data": {
          "id": "issuing_f0d1d873c1c02bccf0ed42de2a609fe2",
          "merchant_reference_id": "issuing_f0d1d873c1c02bccf0ed42de2a609fe2",
          "ewallet": "ewallet_31fb2dbbaf6519461ee4fbe1062220d3",
          "bank_account": {
              "beneficiary_name": "CashDash UK Limited",
              "address": "Northwest House, 119 Marylebone Road NW1 5PU",
              "country_iso": "DK",
              "iban": "DK4289000092780662",
              "bic": "SXPYDKKK"
          },
          "metadata": {},
          "status": "ACT",
          "description": null,
          "funding_instructions": null,
          "currency": "EUR",
          "requested_currency": "HKD",
          "transactions": [
              {
                  "id": "isutran_4c584940888bb0e727e84d4c7be55d9c",
                  "amount": 762.67,
                  "currency": "HKD",
                  "original_amount": 101,
                  "original_currency": "USD",
                  "fx_rate": 7.5511839193,
                  "created_at": 1760278636
              }
          ]
      }
  }
  ```

- Simulate a Bank Transfer to a Virtual Account - with Remitter Information
- ```curl
  curl -X post
  'https://sandboxapi.rapyd.net/v1/virtual_accounts/transactions' \
  -H 'access_key: your-access-key-here' \
  -H 'Content-Type: application/json' \
  -H 'idempotency: your-idempotency-parameter-here' \
  -H 'salt: your-random-string-here' \
  -H 'signature: your-calculated-signature-here' \
  -H 'timestamp: your-unix-timestamp-here' \
  --data-raw '{
      "issued_bank_account": "issuing_59fd68cb3837f632abdcb5ddaa75045b",
      "amount": "1",
      "currency": "IDR",
      "remitter_information": {
          "remitter_reference": "Simulating a bank transfer",
          "iban": "DK5000400440116243",
          "account_name": "John Doe",
          "sort_code": "23434",
          "account_number": "1234567",
          "bank_code": "233434",
          "bank_name": "U Bank"
      }
  }'
  ```
- ```json
  {
      "status": {
          "error_code": "",
          "status": "SUCCESS",
          "message": "",
          "response_code": "",
          "operation_id": "dd054e90-54e0-4c00-af23-9ff3fa9df157"
      },
      "data": {
          "id": "issuing_59fd68cb3837f632abdcb5ddaa75045b",
          "merchant_reference_id": "issuing_59fd68cb3837f632abdcb5ddaa75045b",
          "ewallet": "ewallet_b16ab040e51deda7f6a786862bd3fe7b",
          "bank_account": {
              "beneficiary_name": "Rapyd Holdings Pte. Ltd.",
              "country_iso": "ID",
              "bank": "Bank Sahabat Sampoerna",
              "country": "Indonesia",
              "local_bank_code": "523",
              "account_number": "4010299991035202"
          },
          "metadata": {},
          "status": "ACT",
          "description": "Issue test bank account",
          "funding_instructions": null,
          "currency": "IDR",
          "requested_currency": null,
          "transactions": [
              {
                  "id": "isutran_5ac346053c6b65b3bdcf4baa7aad67c0",
                  "amount": 1,
                  "currency": "IDR",
                  "original_amount": 1,
                  "original_currency": "IDR",
                  "fx_rate": 1,
                  "created_at": 1677495859
              },
              {
                  "id": "isutran_5fbe2b43f4aa143eea2147e3967dd2ac",
                  "amount": 1,
                  "currency": "IDR",
                  "original_amount": 1,
                  "original_currency": "IDR",
                  "fx_rate": 1,
                  "created_at": 1760277099
              }
          ]
      }
  }
  ```

- Bad Request - Virtual Account Not Found
- ```curl
  curl -X post
  'https://sandboxapi.rapyd.net/v1/virtual_accounts/transactions' \
  -H 'access_key: your-access-key-here' \
  -H 'Content-Type: application/json' \
  -H 'idempotency: your-idempotency-parameter-here' \
  -H 'salt: your-random-string-here' \
  -H 'signature: your-calculated-signature-here' \
  -H 'timestamp: your-unix-timestamp-here' \
  --data-raw '{
  	"issued_bank_account": "issuing_d11d404c919519c66ac61e14389f766",
  	"amount": "10",
  	"currency": "EUR"
  }'
  ```
- ```json
  {
      "status": {
          "error_code": "ERROR_ISSUING_DEPOSIT",
          "status": "ERROR",
          "message": "The request tried to simulate a deposit to a virtual account number that was issued to a wallet in the sandbox, but the virtual account was not found. The request was rejected. Corrective action: For 'issued_bank_account', use the ID of a Virtual Account Number that was issued to a wallet, which is a string starting with 'issuing_'.",
          "response_code": "ERROR_ISSUING_DEPOSIT",
          "operation_id": "aa69b86c-b8de-4393-b844-365f63bac36e"
      }
  }
  ```

- Bad Request - Currency Mismatch
- ```curl
  curl -X post
  'https://sandboxapi.rapyd.net/v1/virtual_accounts/transactions' \
  -H 'access_key: your-access-key-here' \
  -H 'Content-Type: application/json' \
  -H 'idempotency: your-idempotency-parameter-here' \
  -H 'salt: your-random-string-here' \
  -H 'signature: your-calculated-signature-here' \
  -H 'timestamp: your-unix-timestamp-here' \
  --data-raw '{
  	"issued_bank_account": "issuing_d11d404c919519c66ac61e14389f766a",
  	"amount": "10",
  	"currency": "PHP"
  }'
  ```
- ```json
  {
      "status": {
          "error_code": "ERROR_SIMULATE_DEPOSIT_CURRENCY_MISMATCH",
          "status": "ERROR",
          "message": "The request tried to simulate a bank transfer to a virtual account, but the currency of the deposit was not the same as the currency of the virtual account. The request was rejected. Corrective action: Set 'currency' to the currency of the virtual account.",
          "response_code": "ERROR_SIMULATE_DEPOSIT_CURRENCY_MISMATCH",
          "operation_id": "08c8dde9-807e-47f6-a8eb-42c31f71ea44"
      }
  }
  ```
