> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voyantcloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Approve Bank Transfer

> Mark a bank transfer session as confirmed once the payment is reconciled.

## Method

`POST` `/v1/payments/bank/approve`

## Body Parameters

<ParamField name="bookingId" type="uuid">Booking ID associated with the bank transfer (optional if `paymentId` supplied).</ParamField>
<ParamField name="paymentId" type="string">Payment session identifier (optional if `bookingId` supplied).</ParamField>

## Headers

<ParamField header="Authorization" type="string">Bearer token (workspace API key).</ParamField>
<ParamField header="content-type" type="string">`application/json`</ParamField>

## Request Example

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api.voyantcloud.com/v1/payments/bank/approve \
    -H "Authorization: Bearer $VOYANT_API_KEY" \
    -H "content-type: application/json" \
    -d '{ "paymentId": "pm_20250301_001" }'
  ```

  ```javascript Node.js theme={null}
  await fetch("https://api.voyantcloud.com/v1/payments/bank/approve", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.VOYANT_API_KEY}`,
      "content-type": "application/json",
    },
    body: JSON.stringify({ bookingId: "4a9a807e-5c7c-4f57-8e6d-2c6f1b1c5d10" }),
  })
  ```

  ```python Python theme={null}
  import os, requests

  payload = {"bookingId": "4a9a807e-5c7c-4f57-8e6d-2c6f1b1c5d10"}
  resp = requests.post(
    "https://api.voyantcloud.com/v1/payments/bank/approve",
    headers={
      "Authorization": f"Bearer {os.environ['VOYANT_API_KEY']}",
      "content-type": "application/json",
    },
    json=payload,
  )
  resp.json()
  ```
</RequestExample>

## Response

<ResponseExample>
  ```json 200 OK theme={null}
  { "ok": true }
  ```

  ```json 404 Not Found theme={null}
  { "error": "Session not found", "requestId": "req_456" }
  ```
</ResponseExample>

<Tip>On success the API marks the session as `confirmed` and triggers the <code>payments.bank-transfer-approve</code> Trigger.dev workflow to generate invoices, contracts, and customer notifications.</Tip>
