Simulate inbound credit

View as Markdown
**Sandbox only.** Creates a simulated **inbound credit** on the treasury account identified in the path — an external deposit that appears as a bank-reported line without running a payin or ingesting a BAI2 file. Funds credit the **treasury account** (`account_id` in the path), or **`subaccount_id`** when you pass the UUID of one of its subaccounts. **Path** | Parameter | Type | Description | |-----------|------|-------------| | `account_id` | UUID | Main SIM treasury account to credit. Must belong to your test entity. | **Request Body** | Field | Type | Required | Description | Validation Rules | |-------|------|----------|-------------|------------------| | `rail` | String | Yes | Payment rail for the deposit: `standard_ach` or `wire`. | `standard_ach` requires a US/USD SIM treasury account. `wire` credits the account's currency (USD, GBP, INR, and other SIM markets). | | `amount_in_minor_units` | Integer | Yes | Amount in the smallest unit of the treasury account's currency. For USD, this is cents (100 = $1.00). | Must be a positive whole number. | | `transaction_date` | Date | No | Optional as-of calendar date for the simulated line. | ISO `YYYY-MM-DD`. Defaults to the current UTC date when omitted. | | `sender_info` | String | No | Optional label for the external sending party (shown on treasury inbound activity). | Max 200 characters. | | `subaccount_id` | UUID | No | Credit a subaccount under the path treasury account instead of the main account. | Must belong to the treasury account in the path. | **Response** Returns a treasury-aligned subset of the created bank line: | Field | Type | Description | |-------|------|-------------| | `bank_transaction_id` | UUID | Id of the simulated row (same id `GET .../bank-transactions` will use). | | `amount_in_minor_units` | Integer | Amount credited. | | `currency_code` | String | ISO currency of the credited account. | | `direction` | String | Always `credit` for this endpoint. | | `transaction_date` | Date | As-of date for the simulated line. | **Examples** - US/USD with ACH: `POST /accounts/{usd_account_id}/simulate-inbound-credit` with `{ "rail": "standard_ach", "amount_in_minor_units": 4000 }` → $40.00 inbound ACH credit. - Backdated wire: `{ "rail": "wire", "amount_in_minor_units": 50000, "transaction_date": "2026-01-15" }` → credits with as-of date 2026-01-15. - US/USD with wire: `{ "rail": "wire", "amount_in_minor_units": 100000 }` → $1,000.00 inbound wire credit. - GB/GBP with wire: `{ "rail": "wire", "amount_in_minor_units": 80000 }` → £800.00 inbound wire credit on the GBP SIM account. **Error Responses** | Status | When | |--------|------| | 400 | Live entity, non-SIM account, invalid subaccount, or ACH on non-US/USD account | | 401 | Missing or invalid auth | | 404 | Treasury account not found for your entity | | 409 | Duplicate sandbox reference |

Authentication

x-api-keystring

RootPay API key sent in the x-api-key header. Keys are environment-scoped: live_* for production, test_* for sandbox.

Path parameters

account_idstringRequiredformat: "uuid"
Main SIM treasury account ID.

Request

This endpoint expects an object.
railenumRequired

Payment rail for the simulated deposit. standard_ach requires a US/USD SIM treasury account; wire credits the account’s currency.

amount_in_minor_unitsintegerRequired

Amount in the smallest unit of the treasury account’s currency. For USD, this is cents (100 = $1.00).

transaction_datedate or nullOptional

Optional as-of calendar date for the simulated bank line (YYYY-MM-DD). Omit to use the current UTC date.

sender_infostring or nullOptional<=200 characters

Optional label for the external sending party (shown on treasury inbound activity).

subaccount_idstring or nullOptionalformat: "uuid"

Attribute the inbound amount to this subaccount (UUID of a subaccount under the treasury account in the path). Omit to credit the main account itself.

Response

Inbound credit simulation recorded for treasury.
dataobject
warningstring or null

Errors

401
Unauthorized Error
404
Not Found Error
409
Conflict Error