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"
}
}'
{
"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
}
Opal
Release Payments
POST
/
opal
/
sessions
/
{session_id}
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"
}
}'
{
"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
}
Release the payments for a confirmed Balance Transfer session. Method creates one Payment per allocated account, from the source account to that liability account, for the allocated amount.
An invalid source account returns the same errors as Create a Payment.
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_statusofpending_release. Calling this endpoint before the user confirms returnsBT_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
releasedsession 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_idsisnulland the other payments still go out. A released session cannot be released again, so handle anynullentry 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 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 theINVALID_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. |
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"
}
}'
{
"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
}