---
title: "Simulate a deposit to a virtual account"
method: POST
path: "/v2/users/{userId}/virtual-accounts/{accountId}/simulate-deposit"
tags: ["Virtual Account"]
---

# Simulate a deposit to a virtual account

`POST /v2/users/{userId}/virtual-accounts/{accountId}/simulate-deposit`

## Request

- Base URL: `https://production.hifibridge.com`
- URL: `https://production.hifibridge.com/v2/users/{userId}/virtual-accounts/{accountId}/simulate-deposit`
- Auth: HTTP bearer

Simulate a deposit to a virtual account in sandbox environment. This endpoint is only available in sandbox and allows testing deposit flows.

**Note:** This endpoint is only available in sandbox environment.

## Path parameters

- `userId` string, required
- `accountId` string, required

## Request body

- SimulateVirtualAccountDeposit
  - `amount` string, required: Amount to simulate deposit
  - `paymentRail` 'WIRE' | 'ACH' | 'RTP', required: Payment rail for the simulated deposit , recommended to use WIRE for faster settlement
  - `requestId` string, required: Unique identifier for the request (recommend using uuid v4)
  - `source` object, required
    - `routingNumber` string, required: Routing number of the source bank account
    - `accountNumber` string, required: Account number of the source bank account
    - `name` string, required: Name on the source bank account
    - `bankName` string, required: Name of the source bank
  - `userId` string: Optional user ID to associate with this deposit
  - `reference` string: Optional reference for this deposit
  - `description` string: Optional description for this deposit
  - `sandboxScenario` 'FIAT_FAILED' | 'COMPLETED': Sandbox-only field that forces the onramp created by this deposit to a predetermined outcome

## Response `200`

Successfully triggered sandbox deposit

- SimulateVirtualAccountDeposit
  - `amount` string, required: Amount to simulate deposit
  - `paymentRail` 'WIRE' | 'ACH' | 'RTP', required: Payment rail for the simulated deposit , recommended to use WIRE for faster settlement
  - `requestId` string, required: Unique identifier for the request (recommend using uuid v4)
  - `source` object, required
    - `routingNumber` string, required: Routing number of the source bank account
    - `accountNumber` string, required: Account number of the source bank account
    - `name` string, required: Name on the source bank account
    - `bankName` string, required: Name of the source bank
  - `userId` string: Optional user ID to associate with this deposit
  - `reference` string: Optional reference for this deposit
  - `description` string: Optional description for this deposit
  - `sandboxScenario` 'FIAT_FAILED' | 'COMPLETED': Sandbox-only field that forces the onramp created by this deposit to a predetermined outcome

## Other responses

- `401`: Unauthorized
- `404`: Resource not found
- `500`: Internal Server Error

## Changes

- **2026-11-03** `319fa6bd5bc6`: 1 warning, 3 info
  - added the new `RTP` enum value to the `paymentRail` response property for the response status `200`
  - added the new optional request property `sandboxScenario`
  - added the new `RTP` enum value to the request property `paymentRail`
  - added the optional property `sandboxScenario` to the response with the `200` status

[Operation history](https://skmtc.dev/hifi/apis/hifi-api/changes/v2/users/:userId/virtual-accounts/:accountId/simulate-deposit/post.md)

---

[API](https://skmtc.dev/hifi/apis/hifi-api.md) - [All operations](https://skmtc.dev/hifi/apis/hifi-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hifi/apis/hifi-api/revisions/319fa6bd5bc6?raw)
