---
title: "Simulate Inbound Transfer"
method: POST
path: "/simulations/inbound_transfers"
tags: ["Simulations"]
---

# Simulate Inbound Transfer

`POST /simulations/inbound_transfers`

## Request

- Base URL: `https://api.meow.com/v1`
- URL: `https://api.meow.com/v1/simulations/inbound_transfers`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/meow/apis/meow-api/docs/simulations/inbound_transfers/post.ts> (a function with typed inputs; its response is checked against the schema)

> ⚠️ **Sandbox & development only.** Simulation endpoints are not available in production and return `404 Not Found` there.

Simulates an inbound ACH, wire, RTP, or FedNow transfer into a cash account in the sandbox. Only cash accounts support this simulation.

## Headers

- `x-entity-id` string, uuid

## Request body

- SimulateInboundTransferRequest
  - `account_id` string, required: The cash account ID, exactly as returned by the list accounts endpoint (for example, `cash_account_<uuid>`).
  - `rail` 'ach' | 'wire' | 'rtp' | 'fednow', required
  - `amount` union, required: The transfer amount, in dollars.
    - number
    - string
  - `memo` string, nullable: Optional payment memo or reference. The maximum length depends on the rail and the cash account's bank, and some combinations carry no memo. A memo that the simulator cannot carry returns 400 without creating a transfer. Omit or send null to keep the default simulation text.

## Response `200`

Successful Response

- SimulateInboundTransferResponse
  - `account_id` string, required: The cash account the simulated funds were credited to.
  - `amount` string, required: The simulated transfer amount, in dollars.
  - `rail` 'ach' | 'wire' | 'rtp' | 'fednow', required
  - `status` 'submitted', required
  - `created_at` string, date-time, required: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `sender_name` string, nullable: The simulated sender name stamped on this transfer. It appears as the transaction's counterparty name once the transfer settles, and as `originator_name` on the resulting `inbound_ach_transfer.*` / `inbound_wire_transfer.*` webhook — use it to correlate this simulation with the transaction and webhook it produces. Poll `GET /simulations/inbound_transfers/{sender_name}` to check whether it has settled yet. Null for `fednow`, whose simulation has no sender-name field.

## Other responses

- `400`: The request could not be processed.
- `401`: Authentication failed.
- `403`: The API key is not authorized for this operation, or the user of a global API key is an admin or controller without approved KYC. The KYC case returns the message `KYC is required for controllers and admins.` until that user completes KYC in the Meow dashboard.
- `429`: Too many requests.

---

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