Simulate (Sandbox)
Simulate a deposit (sandbox)
Returns 201 + deposit_id + status: "completed". The simulated deposit will NOT appear in GET /v1/virtual-accounts/{id}/deposits and will NOT change GET /…/balance (the sandbox balance is a fixed provider value). Confirm via the 201 response itself + the (hand-delivered) virtual_account.deposit_funds_received webhook. settlement_triggered: false on a fiat deposit is normal, not an error.
POST
Simulate a deposit (sandbox)
Authorizations
Access token from POST /auth (the data.access_token value).
API key issued by Kira. Required on every request, including /auth.
Headers
Example:
"2026-04-14"
Path Parameters
Virtual account UUID.
Body
application/json
The body is of type object.
Response
Success.
Previous
Create a quotationCreate a **quotation**: a priced, itemized fee envelope for a prospective payment. A quotation can optionally be persisted as a redeemable `quote_id` that locks the fees and FX rate so a later payout settles at the quoted price. All monetary amounts are returned as **integer minor units** paired with an explicit `precision` (e.g. `100000` at precision `2` is `1000.00`).
Provide **exactly one** of:
- `virtual_account_id` — price against an existing virtual account (the account pins the funding direction, source currency, and network). This persists the quote and returns a real `quote_id` you can redeem on a payout.
- `quote_for` — a pre-account preview (`{ rail, currency }`) that does **not** persist and returns `quote_id: null`.
Sending both, or neither, returns `400`.
**Key request fields:**
- `amount` (required) — a positive two-decimal string, e.g. `"1000.00"`.
- `target` — destination `{ currency, network? }`. `currency` is one of `USD`, `USDC`, `USDT`; `network` (`solana`, `polygon`, `tron`) is required when the target currency is a stablecoin.
- `inverse` (default `false`) — when `true`, `amount` is the desired _recipient_ amount and the engine back-solves the source amount.
- `rail` — bank-rail hint for account-bound quotes: `FEDNOW`, `ACH_STANDARD`, `ACH_SAME_DAY`, `WIRE_DOMESTIC`, `WIRE_SWIFT`.
- `payment_instructions` — declare a crypto funding leg `{ currency, network }` (account-bound quotes only).
- `from_held_balance` (default `false`) — price a payout from your on-book balance; the response may include an advisory `balance_sufficient` flag.
- `client_markup` — per-quote markup override `{ fixed_minor?, percentage_bps? }` (cents and basis points). Replaces your configured markup for this quote only.
**Response** returns `source` and `recipient` money objects, a `pricing_context`, a depeg-aware `conversion` block, an itemized `fees[]` array (each line carries `code`, `kind` `"fixed"`/`"percentage"`, `charged_by` `"kira"`/`"client"`, `status`, signed `amount`), and `totals`. The quote expires at `quote_expires_at` (default TTL 15 minutes).
**Errors:** `400` `validation_error` or `fees_exceed_amount`; `401` unauthorized; `404` for an unknown or foreign virtual account.
**Note:** the itemized response shape requires pinning to API version `2026-06-01` or later. Older versions return a simpler preview shape.
Next
Simulate a deposit (sandbox)