> For the complete documentation index, see [llms.txt](https://docs.txn.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.txn.io/fiat-settlements/previewing-bank-withdrawal.md).

# Previewing bank withdrawal

<mark style="color:green;">`POST`</mark> `/api/public/v1/transactions/bank_withdrawals/build`

Calculates a bank withdrawal without creating it. The same request as [Creating bank withdrawal](/fiat-settlements/creating-bank-withdrawal.md) returns the amount that would be debited, the fee and the amount the beneficiary would receive; nothing is reserved on the account. Use it to show an operator or an end user the final figures before you commit.

**Headers**

<table><thead><tr><th width="320">Name</th><th>Value</th></tr></thead><tbody><tr><td>Content-Type</td><td><code>application/vnd.api+json</code></td></tr><tr><td>Authorization</td><td><code>Bearer &#x3C;api_key></code></td></tr></tbody></table>

**Request Body**

```json
{
  "data": {
    "type": "bankWithdrawalTransactions",
    "attributes": {
      "absorb_fees": true,
      "account_id": "13a85b45-8543-41c7-b963-394d4ea128ae",
      "bank_account_id": "456fec23-40d3-43c1-9165-2f92f7fb687c",
      "amount": 1,
      "reference": "Fiat payout from Txn to Acme"
    }
  }
}
```

<table><thead><tr><th>Name</th><th width="100">Type</th><th width="105">Required</th><th>Description</th></tr></thead><tbody><tr><td>data.type</td><td>string</td><td>Yes</td><td>Can only be <code>bankWithdrawalTransactions</code>.</td></tr><tr><td>data.attributes.reference</td><td>string</td><td>Yes</td><td>The custom reference ID to tie the request to end-user or their account who gets paid. This can be anything you choose.</td></tr><tr><td>data.attributes.amount</td><td>number</td><td>Yes</td><td>Withdrawal amount.</td></tr><tr><td>data.attributes.account_id</td><td>string</td><td>Yes</td><td>Account ID on the Txn platform, e.g. your Euro account, which Txn will debit funds from.</td></tr><tr><td>data.attributes.bank_account_id</td><td>string</td><td>Yes</td><td>Beneficiary (bank account) ID. Refer to <a href="/fiat-settlements/listing-bank-accounts.md">Listing Beneficiaries</a>.</td></tr><tr><td>absorbFees</td><td>boolean</td><td>No</td><td>If false or omitted, the service fee is deducted from the transaction amount. If true, the service fee is deducted from your account balance.</td></tr></tbody></table>

**cURL**

```bash
curl -X "POST" "https://api.sandbox.txn.io/api/public/v1/transactions/bank_withdrawals/build" \
     -H 'Content-Type: application/vnd.api+json' \
     -H 'Authorization: Bearer <api_key>' \
     -d $'{
  "data": {
    "type": "bankWithdrawalTransactions",
    "attributes": {
      "absorb_fees": true,
      "account_id": "13a85b45-8543-41c7-b963-394d4ea128ae",
      "bank_account_id": "456fec23-40d3-43c1-9165-2f92f7fb687c",
      "amount": 1,
      "reference": "Fiat payout from Txn to Acme"
    }
  }
}'
```

**Response Body**

<table><thead><tr><th>Name</th><th width="97">Type</th><th>Description</th></tr></thead><tbody><tr><td>data.id</td><td>string</td><td>Transaction ID.</td></tr><tr><td>data.type</td><td>string</td><td>Entity type returned. Always <code>transactions</code>.</td></tr><tr><td>data.attributes</td><td>object</td><td>Set of transaction attributes.</td></tr><tr><td>data.attributes.createdAt</td><td>string</td><td>Timestamp when the withdrawal was created. Refer to the <a href="/api-basics/date-and-time-format.md">Date and time format</a> page.</td></tr><tr><td>data.attributes.simplifiedState</td><td>string</td><td>Withdrawal status. One of <code>pending</code>, <code>send_failed</code>, <code>completed</code>, <code>cancelled</code>. See <a href="/transactions/listing-transactions.md#transaction-statuses">Transaction statuses</a>.</td></tr><tr><td>data.attributes.transactionType</td><td>string</td><td>Transaction type. Always <code>BankWithdrawalTransaction</code>.</td></tr><tr><td>data.attributes.amount</td><td>string</td><td>Amount debited from the account. Negative for withdrawals.</td></tr><tr><td>data.attributes.currency</td><td>string</td><td>Currency code of the transaction.</td></tr><tr><td>data.attributes.balance</td><td>string</td><td>Account balance immediately after Txn processed this transaction. <code>null</code> when not applicable.</td></tr><tr><td>data.attributes.reference</td><td>string</td><td>Bank withdrawal reference.</td></tr><tr><td>data.attributes.accountId</td><td>string</td><td>ID of the account the withdrawal was debited from.</td></tr><tr><td>data.relationships.transactionDetails</td><td>object</td><td>The bank withdrawal record. <code>data.type</code> is <code>bankWithdrawalTransactions</code> and <code>data.id</code> is the transaction's own ID; the entity is returned in <code>included[]</code>.</td></tr><tr><td>data.relationships.account</td><td>object</td><td>Not expanded (<code>meta.included</code> is <code>false</code>). Use <code>data.attributes.accountId</code>.</td></tr><tr><td>data.relationships.author</td><td>object</td><td>Not expanded (<code>meta.included</code> is <code>false</code>).</td></tr><tr><td>included[].type(bankWithdrawalTransactions)</td><td>object</td><td>The withdrawal record: what was sent to the bank, the fee, and the bank-side status. Its <code>id</code> equals <code>data.id</code>.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.amount</td><td>string</td><td>Total debited from your account, in <code>currency</code>: <code>payAmount</code> plus <code>fee</code>. Positive here; <code>data.attributes.amount</code> carries the same value negated.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.payAmount</td><td>string</td><td>Amount sent to the bank account. Equals the amount you requested when <code>absorbFees</code> is <code>true</code>, and the requested amount minus <code>fee</code> when it is <code>false</code>.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.fee</td><td>string</td><td>Txn fee for the withdrawal, in <code>currency</code>, as configured for the bank account.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.absorbFees</td><td>boolean</td><td><code>true</code>: the fee is charged on top and the beneficiary receives the full requested amount. <code>false</code>: the fee is deducted from the amount sent.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.currency</td><td>string</td><td>Currency of the bank account and of every amount in this entity. Equals <code>data.attributes.currency</code>.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.reference</td><td>string</td><td>The reference you set at creation. Same as <code>data.attributes.reference</code>.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.beneficiaryName</td><td>string</td><td>Beneficiary name of the bank account paid.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.iban</td><td>string</td><td>IBAN of the bank account paid.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.bankBic</td><td>string</td><td>BIC/SWIFT code of the beneficiary's bank. <code>null</code> when not registered on the bank account.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.bankName</td><td>string</td><td>Name of the beneficiary's bank. <code>null</code> when not registered on the bank account.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.simplifiedState</td><td>string</td><td>Withdrawal status. Same value as <code>data.attributes.simplifiedState</code>; see <a href="/fiat-settlements/bank-withdrawal-status-flow.md">Bank withdrawal status flow</a>.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.state</td><td>string</td><td>Same value as <code>simplifiedState</code>, kept for compatibility.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.paymentStatus</td><td>string</td><td>Processing status on the bank side. See <a href="/fiat-settlements/bank-withdrawal-status-flow.md#bank-side-processing-status">Bank-side processing status</a>.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.approvalStatus</td><td>string</td><td>Approval-workflow status when an approval rule applied to the withdrawal: <code>requested</code>, <code>approved</code>, <code>rejected</code> or <code>cancelled</code>. <code>null</code> when no approval was required. See <a href="/fiat-settlements/bank-withdrawal-status-flow.md#bank-side-processing-status">Bank-side processing status</a>.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.createdAt</td><td>string</td><td>When the withdrawal was created. <code>null</code> in the preview response.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).attributes.updatedAt</td><td>string</td><td>When the withdrawal last changed. <code>null</code> in the preview response.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).relationships.bankAccount</td><td>object</td><td>The bank account paid. <code>data.type</code> is <code>bankAccounts</code>; not expanded (<code>meta.included</code> is <code>false</code>) in this response; <a href="/fiat-settlements/reading-bank-withdrawal.md">Read bank withdrawal</a> returns it.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).relationships.account</td><td>object</td><td>The account debited. <code>data.type</code> is <code>accounts</code>; not expanded (<code>meta.included</code> is <code>false</code>) in this response; <a href="/fiat-settlements/reading-bank-withdrawal.md">Read bank withdrawal</a> returns it.</td></tr><tr><td>included[].type(bankWithdrawalTransactions).relationships.author</td><td>object</td><td>Not expanded (<code>meta.included</code> is <code>false</code>).</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="HTTP 200" %}

```json
{
  "data": {
    "id": "",
    "type": "transactions",
    "attributes": {
      "createdAt": null,
      "simplifiedState": "pending",
      "transactionType": "BankWithdrawalTransaction",
      "amount": "-1.01",
      "currency": "EUR",
      "balance": null,
      "reference": "Fiat payout from Txn to Acme",
      "accountId": "13a85b45-8543-41c7-b963-394d4ea128ae"
    },
    "relationships": {
      "account": {
        "meta": {
          "included": false
        }
      },
      "transactionDetails": {
        "data": {
          "type": "bankWithdrawalTransactions",
          "id": ""
        }
      },
      "author": {
        "meta": {
          "included": false
        }
      }
    }
  },
  "included": [
    {
      "id": "",
      "type": "bankWithdrawalTransactions",
      "attributes": {
        "absorbFees": true,
        "createdAt": null,
        "updatedAt": null,
        "iban": "LT483750000000000008",
        "beneficiaryName": "Acme",
        "reference": "Fiat payout from Txn to Acme",
        "paymentStatus": "draft",
        "bankBic": null,
        "bankName": null,
        "approvalStatus": null,
        "currency": "EUR",
        "amount": "1.01",
        "payAmount": "1.00",
        "fee": "0.01",
        "state": "pending",
        "simplifiedState": "pending"
      },
      "relationships": {
        "bankAccount": {
          "meta": {
            "included": false
          }
        },
        "account": {
          "meta": {
            "included": false
          }
        },
        "author": {
          "meta": {
            "included": false
          }
        }
      }
    }
  ],
  "meta": {},
  "jsonapi": {
    "version": "1.0"
  }
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.txn.io/fiat-settlements/previewing-bank-withdrawal.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
