---
title: "Payout lifecycle"
description: "Learn about payout statuses and how you can track them."
url: "https://docs.adyen.com/payouts/payout-service/payout-lifecycle"
source_url: "https://docs.adyen.com/payouts/payout-service/payout-lifecycle.md"
canonical: "https://docs.adyen.com/payouts/payout-service/payout-lifecycle"
last_modified: "2026-06-01T15:33:15+02:00"
language: "en"
---

# Payout lifecycle

Learn about payout statuses and how you can track them.

[View source](/payouts/payout-service/payout-lifecycle.md)

When you make transfer requests to pay out funds from your balance account, each payout goes through multiple stages before the funds are credited to the counterparty's bank account or card. A payout passes from one stage to another after specific events occur in the payout lifecycle.

To keep you updated about changes in a payout's status as it moves through the payout lifecycle, Adyen sends information about status changes in API responses and webhooks.

## Accounting events

Accounting events are events that occur during the lifecycle of a payout that affect the available balance in your balance account.

### Tab: Regular flow

Standard payouts that occur on your balance platform go through the following stages:

1. **Payout received**: Adyen receives your payout request and checks the request parameters, the request format, and your API permissions.

   * If the parameters, format, and permissions are correct, we accept the payout request. You receive a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with `status` **received**.
     * If there are any issues with the parameters, we reject the payout request without triggering any webhooks. You receive an error message in the API response.

2. **Payout authorized**: Adyen checks if there are enough funds in your balance account to authorize the payout.

   * If there are enough funds, we reserve the payout amount on your balance account and authorize the payout. You receive a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with `status` **authorised**.
   * If there are not enough funds, we refuse the payout. You receive a `balancePlatform.transfer.updated` webhook with `status` **refused**.

3. **Payout booked**: Adyen deducts the funds from your balance account and creates a transaction. You receive the following webhooks:

   * A `balancePlatform.transfer.updated` webhook with `status` **booked**.
   * A `balancePlatform.transaction.created` webhook which informs your server that Adyen has debited funds from your balance account.

[![](/user/pages/docs/07.payouts/02.payout-service/05.payout-lifecycle/regular_flow.svg)](/user/pages/docs/07.payouts/02.payout-service/05.payout-lifecycle/regular_flow.svg)

### Tab: Approval flow

You can create an additional review requirement for your payout by including the `review` object in your POST `/transfers` request. After we receive your transfer request:

1. Adyen checks the request format and user permissions, and initiates the payout. You receive a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with `status` **received** and `reason` **pending**.

2. A member of your team reviews the payout and takes one of the following actions:

   * **Approve:** If your team member approves the payout, Adyen checks the available funds and then authorizes the payout. You receive a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with `status` **authorised** and `reason` **approved**.
   * **Cancel:** If your team member cancels the payout, the payout fails and Adyen stops processing the request. You receive a `balancePlatform.transfer.updated` webhook with `status` **cancelled** and `reason` **refusedByCustomer**.
   * **No action:** If your team member does not approve or cancel the payout within 30 days, the payout fails and Adyen stops processing the request. You receive a `balancePlatform.transfer.updated` webhook with `status` **cancelled** and `reason` **approvalExpired**.

3. If your team approved the payout in the previous stage, Adyen deducts the funds from your balance account and creates a transaction. You receive the following webhooks:

   * A `balancePlatform.transfer.updated` webhook with status **booked**.
   * A `balancePlatform.transaction.created` webhook which informs your server that Adyen has debited funds from your balance account.

## Tracking events

After a payout reaches the **booked** `status`, the funds are deducted from your balance account. To keep you informed about the progress of your payouts, Adyen sends a `balancePlatform.transfer.updated` webhook that includes a `tracking` object.

Depending on the payout type, you receive different tracking information:

* **Instant bank transfers:** You receive a **credited** `status` when the funds arrive, or **failed** if the payout cannot be completed.
* **Payouts to cards:** You receive an **accepted** `status` when the card schemes accept the payout for processing, or **failed** if the payout cannot be completed.
* **Non-instant bank transfers:** You receive a `tracking.estimatedArrivalTime`, which returns the estimated time when the funds will be credited to the counterparty's bank account.

### Payout pending

After a payout reaches the **booked** `status`, but before the funds leave Adyen, the payout is automatically analyzed to ensure it complies with Adyen's policies. If the payout is flagged, Adyen must manually review it before sending the funds.

During the manual review process, the payout enters a pending state. You receive a `balancePlatform.transfer.updated` tracking webhook with `status` **pending**.

### Tab: Payouts to bank accounts

If the payout passes Adyen’s manual review, we send a `balancePlatform.transfer.updated` webhook with details of the payout's progress. Depending on the review, you receive:

* **Non-instant payouts**: An estimated time of arrival (ETA) for non-instant payouts, for example payouts with `priority` **regular**.
* **Instant bank payouts**: A **credited** `status` confirmation when funds arrive, or **failed** if the payout cannot be completed.
* **Card payouts**: An **accepted** `status` when the card network accepts the payout for processing, or **failed** if the payout cannot be completed.

If the payout fails Adyen’s manual review, Adyen freezes the funds and does not pay them out externally. You receive a `balancePlatform.transfer.updated` webhook with `status` **failed** and `type` **internalReview**. An Adyen employee will contact you with next steps. In some cases, this may involve the regulator.

The counterparty bank must also screen all incoming transactions.

[![](/user/pages/docs/07.payouts/02.payout-service/05.payout-lifecycle/transfer_pending.svg)](/user/pages/docs/07.payouts/02.payout-service/05.payout-lifecycle/transfer_pending.svg)

### Tab: Payouts to cards

* If the payout passes Adyen's manual review, we pay out the funds to the counterparty's card issuer. You receive a `balancePlatform.transfer.updated` tracking webhook with `status` **accepted** and `type` **internalReview**.

* If the payout fails Adyen's manual review, we freeze the funds and do not pay them out externally. You receive a `balancePlatform.transfer.updated` tracking webhook with `status` **failed** and `type` **internalReview**. An Adyen employee reaches out to you with follow-up steps. In some cases, this can involve the regulator who reaches out to all the involved parties.

[![](/user/pages/docs/07.payouts/02.payout-service/05.payout-lifecycle/transfer_pending_cards.svg)](/user/pages/docs/07.payouts/02.payout-service/05.payout-lifecycle/transfer_pending_cards.svg)

For payouts to cards, Adyen can also send a webhook with `status` **accepted** to indicate that the payout has been accepted by the card network. Card payouts are subject to additional checks by the card schemes. If a request results in an error during these checks, you can receive a `balancePlatform.transfer.updated` webhook with `status` **refused** to reflect the outcome.

### Instant vs non-instant payouts to bank accounts

The following tabs explain the tracking events for instant and non-instant payouts to bank accounts. These events do not apply to payouts to cards.

### Tab: Instant payouts

Instant payouts allow you to transfer funds instantly in the Single Euro Payments Area (SEPA), the United Kingdom and the United States. To make an instant payout, you must set the `priority` of the payout to **instant** in your POST `/transfer` request.

After the payout reaches the `status` **booked**, the payout details are sent to the counterparty's bank for review through an instant connection.

* If the counterparty's bank accepts the payout, the funds are immediately credited to their bank account. You receive a `balancePlatform.transfer.updated` tracking webhook with `tracking.status` **credited** and `priority` **instant**.

* If the counterparty's bank does not accept the payout, the payout fails and Adyen can no longer process the request. You receive a `balancePlatform.transfer.updated` webhook with `status` **failed**. A payout can fail for two reasons:

  * Network error: the counterparty's bank **cannot** accept the payout because the instant connection between the bank and Adyen failed. You must retry the payout at a later time.
  * Issue with payout data: the counterparty's bank **cannot** accept the payout because there was an issue with the data in the payout request. You must fix the issue and retry the payout.

[![](/user/pages/docs/07.payouts/02.payout-service/05.payout-lifecycle/instant_transfer.svg)](/user/pages/docs/07.payouts/02.payout-service/05.payout-lifecycle/instant_transfer.svg)

### Tab: Non-instant payouts

Non-instant payouts refer to all payouts that don't have an **instant** `priority`. After the payout reaches the `status` **booked**, and has passed Adyen's internal screening, we assign the funds to a payout batch so that they can be paid out to the counterparty's bank.

You receive a `balancePlatform.transfer.updated` tracking webhook. The `tracking.estimatedArrivalTime` returns the estimated time that the funds will be credited to the counterparty's bank account.

* If there are no issues with the payout batch, the funds are successfully paid out within the estimated arrival time.

* If there are any issues with the payout batch that prevent the funds from being paid out in the estimated time frame, Adyen tries to pay out the funds at the next available time frame by assigning them to a later payout batch. You receive a new `balancePlatform.transfer.updated` tracking webhook with an updated estimated time of arrival for the funds.

[![](/user/pages/docs/07.payouts/02.payout-service/05.payout-lifecycle/non_instant_transfer.svg)](/user/pages/docs/07.payouts/02.payout-service/05.payout-lifecycle/non_instant_transfer.svg)

## Payout returned

After a payout is sent to the counterparty's bank account, the counterparty bank or issuer is required by regulation to screen the payout. If there are any issues with the payout, they can return the funds to Adyen.

Payouts that do not have an **instant** `priority` cannot fail, but they can be returned by the counterparty's bank. After you receive the tracking webhook with the estimated arrival time of your payout:

1. The funds arrive at the counterparty's bank.

2. The counterparty's bank reviews the payout.

3. If the payout fails the review, the counterparty's bank returns the payout with a specific code that indicates the reason for the return. See [reason codes](/payouts/payout-service/pay-out-to-bank-accounts/payout-webhooks/#reason-codes) to see a list of reasons why a payout can be returned by the counterparty's bank. A new transaction is created for the return, and you receive the following webhooks:

   * A `balancePlatform.transfer.updated` webhook with `status` **returned**. The `reason` field in the last object of the `events` array indicates the reason for the return.
   * A `balancePlatform.transaction.created` webhook which informs your server that Adyen has credited funds to your balance account.

[![](/user/pages/docs/07.payouts/02.payout-service/05.payout-lifecycle/transfer_returned.svg)](/user/pages/docs/07.payouts/02.payout-service/05.payout-lifecycle/transfer_returned.svg)

## See also

* [Getting paid](/payouts/payout-service/getting-paid/)
* [Pay out to bank accounts](/payouts/payout-service/pay-out-to-bank-accounts/)
* [Pay out to cards](/payouts/payout-service/pay-out-to-cards/)
