---
title: "Open an on-ramp or off-ramp account"
method: POST
path: "/createBankingAccount"
tags: ["Banking"]
---

# Open an on-ramp or off-ramp account

`POST /createBankingAccount`

## Request

- Base URL: `https://laso.finance`
- URL: `https://laso.finance/createBankingAccount`
- Auth: API key in header `Authorization`

Opens a banking rail. An **on-ramp** issues a virtual US bank account: dollars sent to it arrive as USDC in the managed wallet. An **off-ramp** pays out to a bank account you have registered, and is opened automatically by `/send-bank-payment`, so most agents never call this for one directly.

A Firebase callable. Callables wrap the request in `{"data": ...}` and the reply in `{"result": ...}`. Send the `id_token` from `/auth` as a Bearer token. Free.

## Request body

- object
  - `data` object, required
    - `userId` string, required: The Laso user id (the `usr_...` value from /auth).
    - `accountType` 'onramp' | 'offramp', required: Which rail to open.
    - `cryptoAddress` string: On-ramp only. Where the converted USDC should land. Defaults to the managed agent wallet.
    - `networkId` string: On-ramp only. Defaults to Solana mainnet.
    - `asset` string: Crypto asset ticker, uppercase.
    - `fiatDestinationId` string: Off-ramp only. The bank destination payouts go to, from `addBankingDestination`.
    - `capabilities` string[]: On-ramp only. Bank rails to support. Defaults to ACH and wire.
    - `rail` string: The payment rail for the account.

## Response `200`

The account, including its bank details for an on-ramp.

- object
  - `result` object

## Other responses

- `400`: A required field is missing or invalid.
- `401`: Missing, invalid, or expired Bearer token.
- `403`: The caller is not this user and is not an admin.

---

[API](https://skmtc.dev/laso/apis/laso-finance-x402-api.md) · [All operations](https://skmtc.dev/laso/apis/laso-finance-x402-api/llms.txt) · [OpenAPI document](https://skmtc.dev/laso/apis/laso-finance-x402-api/revisions/ff8ce20b49ba?raw)
