---
title: "POST /payouts/preview-bank-payout"
method: POST
path: "/payouts/preview-bank-payout"
tags: ["Payouts", "Preview"]
---

# POST /payouts/preview-bank-payout

`POST /payouts/preview-bank-payout`

Validates bank payout details like amount, order-reference and verifies payout channels availability. When beneficiary name lookup is available for the selected bank, the response may include the account holder name.

## Request body

- object
  - `amount` number, required
  - `accountNumber` string, required
  - `currency` 'TZS' | 'USD', required — Account currency to pay out from (TZS or USD)
  - `accountCurrency` 'TZS' — Receiving currency for the payout (TZS)
  - `orderReference` string, required — Your unique Order reference
  - `bic` string, required — Beneficiary bank BIC. You can fetch the list of bank BICs from the [banks list endpoint.](/api-reference/list/get-bank-list)
  - `transferType` 'ACH' | 'RTGS', required
  - `checksum` string — If enabled, this is the generated checksum of the payload. Refer to the [documentation](/home/checksum) for more details.

## Response `200`

Bank payout preview response

- PreviewBankPayoutResponse
  - `amount` number — Total amount to be deducted from your account balance (includes fee)
  - `balance` number
  - `channelProvider` string
  - `fee` number — Transaction fee deducted from source currency (included in amount)
  - `exchanged` boolean — Indicates if currency conversion was applied (true when source currency differs from receiving currency)
  - `exchange` object — Exchange rate details (only present when exchanged is true)
    - `sourceCurrency` string — Source currency for the exchange
    - `targetCurrency` string — Target currency for the exchange
    - `sourceAmount` number — Amount in source currency
    - `rate` number — Exchange rate used for conversion
  - `order` object
    - `amount` number — Amount to be added during order creation/payload
    - `currency` string
    - `id` string
  - `payoutFeeBearer` 'merchant' | 'both' | 'customer'
  - `nameLookupStatus` 'RESOLVED' | 'UNAVAILABLE' — Indicates whether the beneficiary name was resolved. `RESOLVED` when `receiver.accountName` is present; `UNAVAILABLE` when lookup did not return a name.
  - `receiver` object
    - `accountNumber` string
    - `accountName` string — Beneficiary account holder name when lookup succeeds. Omitted when `nameLookupStatus` is `UNAVAILABLE`.
    - `accountCurrency` string — Currency the user will receive funds in
    - `amount` number — Amount the user will receive in accountCurrency
  - `transferType` 'ACH' | 'RTGS'

## Other responses

- `400` — Validation Error
- `401` — Invalid or Expired Token
- `409` — Conflict Error
- `500` — Internal Server Error

---

[API](https://skmtc.dev/clickpesa/apis/core-api-openapi-specification.md) · [All operations](https://skmtc.dev/clickpesa/apis/core-api-openapi-specification/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/clickpesa/core-api-openapi-specification/revisions/9f70f35c5590/schema)
