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

# Release Payments

Release the payments for a confirmed [Balance Transfer](https://docs.methodfi.com/opal/balance_transfer/overview.md) session. Method creates one [Payment](https://docs.methodfi.com/2026-03-30/reference/payments/overview.md) per allocated account, from the source account to that liability account, for the allocated amount.

> [!NOTE]
>
> This endpoint requires your secret API key. Requests authenticated with an
> Opal token are rejected. Sessions that do not belong to your team return
> `404`.

## Behavior

* The session must have a `bt.payout_status` of `pending_release`. Calling this endpoint before the user confirms returns `BT_NO_ALLOCATIONS`.
* Method re-checks the allocations, the source account, and every destination account before any money moves. If a check fails, the request returns an error, the session stays in `pending_release`, and you can retry after resolving the issue.
* Releasing is idempotent. Calling this endpoint on a `released` session returns the session unchanged and creates no new payments.
* Each payment is created independently. If Method cannot create the payment for one account, that account's entry in `bt.payment_ids` is `null` and the other payments still go out. A released session cannot be released again, so handle any `null` entry separately.
* Payments use the description configured for your team. The description cannot be set in the request. Contact your CSM to set or change it.

## Path Parameters

## Body

## Returns

Returns the updated Opal session. See [Retrieve Session](https://docs.methodfi.com/2026-03-30/reference/opal/retrieve_session.md) for the full list of fields. After a successful release, `bt.payout_status` is `released` and `bt.payment_ids` maps each allocated account to its Payment ID.

## Errors

Errors use the `INVALID_REQUEST` type with one of the following sub types.

| Sub type | When it occurs |
| - | - |
| `INVALID_MODE_CONFIG` | The session is not a balance transfer session. |
| `BT_NO_ALLOCATIONS` | The user has not confirmed allocations yet. |
| `BT_MISSING_SOURCE` | No `data.source` was provided and no default source account is configured for your team. |
| `BT_ACCOUNT_NOT_PAYABLE` | An allocated account can no longer receive payments. |
| `BT_AMOUNT_OUT_OF_BOUNDS` | An allocation exceeds `maximum_payment`. |
| `BT_ALLOCATIONS_EXCEED_LOAN` | The total allocated exceeds `loan_amount`. |
| `BT_RESIDUAL_EXCEEDS_MAX` | The unallocated amount exceeds `residual_amount_max`. |

An invalid source account returns the same errors as [Create a Payment](https://docs.methodfi.com/2026-03-30/reference/payments/create.md).

```bash cURL theme={null}
curl https://production.methodfi.com/opal/sessions/osess_zde3mW34pEHqV \
  -X POST \
  -H "Method-Version: 2026-03-30" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "release_payments",
    "data": {
      "source": "acc_Zc4F2aTLt8CBt"
    }
  }'
```

```json theme={null}
{
  "success": true,
  "data": {
    "id": "osess_zde3mW34pEHqV",
    "mode": "balance_transfer",
    "bt": {
      "loan_amount": 1000000,
      "minimum_payment": 5000,
      "maximum_payment": 500000,
      "residual_amount_max": 150000,
      "allocations": {
        "acc_hmap9mbgfLcf9": 500000,
        "acc_YXDrjADGjC76U": 350000
      },
      "payout_status": "released",
      "payment_ids": {
        "acc_hmap9mbgfLcf9": "pmt_VeCfmkwGKb",
        "acc_YXDrjADGjC76U": "pmt_rPrDPEwyCVUcm"
      },
      "released_at": "2026-09-24T14:05:21.118Z",
      "completed": true
    },
    "created_at": "2026-09-23T22:31:40.312Z",
    "updated_at": "2026-09-24T14:05:21.402Z"
  },
  "message": null
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.