---
title: "Send dollars to a bank account"
method: GET
path: "/send-bank-payment"
---

# Send dollars to a bank account

`GET /send-bank-payment`

## Request

- Base URL: `https://laso.finance`
- URL: `https://laso.finance/send-bank-payment`
- Auth: none declared

Pay USDC to send dollars to a bank account by ACH. The x402 USDC price is the requested amount plus a 0.25% transfer fee (with a \$1.50 minimum fee). On-chain payment credits the calling wallet's Laso account balance via the standard deposit webhook; the callable then debits the gross amount and queues the transfer.

**A bank destination is required first.** `destination_id` comes from the banking callables: create the banking profile with `createBankingProfile`, register who is being paid with `createBankingRecipient`, and attach their bank account with `addBankingDestination`, which returns the id. List what you already have at `GET /bank-recipients` (free). See the [bank accounts guide](/guides/agent-bank-accounts) for the full setup.

**Identity verification is required** on the account that owns the banking profile, and only the human owner can complete it. `createBankingProfile` hands back a `kycUrl` when it is outstanding.

**If the payout cannot be fulfilled** (no approved banking profile, a destination that is not yours, an amount out of range), nothing is stranded: the USDC you paid has already credited your account balance. Fix the problem and retry, or recover it with `POST /withdraw`.

**Settlement:** ACH, normally 1-2 business days. Follow it with `listBankingTransactions` / `getBankingTransaction`.

**Fee:** 0.25% with a \$1.50 minimum (included in the USDC price).

## Query parameters

- `amount` number, required
- `destination_id` string, required

## Response `200`

Bank payment queued.

- object
  - `auth` AuthCredentials
    - `id_token` string: ID token — use as Bearer token for Laso Finance APIs
    - `refresh_token` string: Use with POST /auth (grant_type=refresh_token) to get a new id_token when it expires
    - `expires_in` string: Token lifetime in seconds
  - `callable_base_url` string
  - `user_id` string
  - `success` boolean
  - `message` string
  - `bank_payment` object
    - `payout_id` string
    - `amount` number: USD delivered to the bank account.
    - `fee_amount` number: Transfer fee charged on top of the amount.
    - `charged_amount` number: amount + fee_amount, the total debited.
    - `destination_id` string
    - `state` string
    - `timestamp` number
    - `destination` object: The bank account being paid, summarized. The account number is masked to its last four digits.
      - `name` string
      - `bank_name` string
      - `account_holder_name` string
      - `account_number_last4` string

## Other responses

- `400`: Missing or out-of-range `amount`, or a missing `destination_id`.
- `402`: Payment required. The challenge is base64-encoded in the `PAYMENT-REQUIRED` response header and echoed as JSON in the response body. A **second** 402 on the paid retry means something different: the payment was refused, either at verification (most often an underfunded wallet) or at on-chain settlement. That response body is not empty and carries no `accepts` — it is the x402 settlement-failure shape `{"success": false, "errorReason": "...", "errorMessage": "..."}`, plus `x_laso_guidance` when a concrete next step applies. Distinguish the two by body: a challenge carries `accepts`, a failure carries `success: false`. The usual cause is an underfunded wallet, and the usual cause of that is the fee being charged **on top of** `amount` on routes that add one (a wallet holding exactly \$2,000 cannot send a \$2,000 bank payment; `/get-card` adds no fee, so it costs exactly `amount`). Nothing is charged for a failed settlement, so retrying with a smaller amount is safe.
- `403`: Account is frozen.
- `412`: No approved banking profile, or the destination is not one of yours. The USDC paid is credited to your account balance and recoverable with `POST /withdraw`.

---

[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)
