---
title: "Create payout"
method: POST
path: "/v2/payouts"
tags: ["Payouts API"]
---

# Create payout

`POST /v2/payouts`

Request a payout from one of your balances to the balance's configured bank account.

The payout will be executed on the next scheduled business day. If no `amount` is specified, the full available
balance minus any configured balance reserve is paid out.

Once the payout is created with status `requested`, you can cancel it via the
[Cancel payout](cancel-payout) endpoint, up until the payout moves to `initiated`.

Creating a payout via the API automatically sets the balance's `transferFrequency` to `never`,
pausing any previously configured automatic settlement schedule. To resume automatic settlements,
update the transfer frequency via the dashboard.

### Webhooks

Subscribe to the following webhook events to track payout status changes. See the
[Webhook Subscriptions API](list-webhooks) for details on subscribing.

| Event | Description |
|---|---|
| `payout.initiated` | The payout is being executed and funds are reserved. |
| `payout.processing-at-bank` | The payout has been submitted to the bank. |
| `payout.completed` | The payout has been sent to the destination bank account. |
| `payout.canceled` | The payout was canceled via the API before being submitted to the bank. |
| `payout.failed` | The payout failed after creation, including bank rejections and post-submission cancellations. |

### Payout failure reasons

A payout request may fail immediately if one of the following conditions applies:

- A payout is already scheduled for the next business day for this balance.
- The balance has insufficient funds.
- The balance is not active.
- Payouts are blocked for this organization.
- The balance has queued refunds.
- One of the organization's balances is below the negative balance threshold.
- The payout destination (bank account) is invalid or not configured.

## Headers

- `idempotency-key` string

## Request body

- PayoutRequest
  - `resource` string, required — Indicates the response contains a payout object. Will always contain the string `payout` for this endpoint.
  - `id` string, required — The identifier uniquely referring to this payout. Mollie assigns this identifier at payout creation time. Mollie will always refer to the payout by this ID. Example: `payout_j8NvRAM2WNZtsykpLEX8J`.
  - `balanceId` string, required — The identifier of the balance that will be paid out. Example: `bal_gVMhHKqSSRYJyPsuoPNFH`.
  - `amount` AmountNullable, nullable — In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field.
    - `currency` string, required — A three-character ISO 4217 currency code.
    - `value` string, required — A string containing an exact monetary amount in the given currency.
  - `description` string, nullable — The description that will appear on the bank statement for this payout.
  - `status` 'requested' | 'initiated' | 'processing-at-bank' | 'completed' | 'failed' | 'canceled', required — The status of the payout.
  - `statusReason` PayoutStatusReason, required — The reason for the payout's current status.
    - `code` 'requested' | 'initiated' | 'processing_at_bank' | 'completed' | 'canceled' | 'failed' | 'insufficient_funds' | 'returned' | 'invalid_request' | 'organization_inactive' | 'payouts_blocked' | 'bank_processing_failed' | 'balance_not_found' | 'expired', required — A machine-readable code describing the reason for the payout's current status.
    - `message` string, required — A human-readable description of the status reason.
  - `createdAt` string, required — The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
  - `initiatedAt` string, nullable — The date and time the payout was initiated, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. This is the moment Mollie attempted to reserve the funds on the balance.
  - `completedAt` string, nullable — The date and time the payout was sent to the destination bank account, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. `null` if the payout has not completed yet.
  - `canceledAt` string, nullable — The date and time the payout was canceled, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. `null` if the payout was not canceled.
  - `mode` 'live' | 'test', required — Whether this entity was created in live mode or in test mode.
  - `testmode` boolean, nullable — Whether to create the entity in test mode or live mode. Most API credentials are specifically created for either live mode or test mode, in which case this parameter must not be sent. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting `testmode` to `true`.
  - `_links` object — An object with several relevant URLs. Every URL object will contain an `href` and a `type` field.
    - `self` Url, required — In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.
      - `href` string, required — The actual URL string.
      - `type` string, required — The content type of the page or endpoint the URL points to.
    - `documentation` Url, required — In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.
      - `href` string, required — The actual URL string.
      - `type` string, required — The content type of the page or endpoint the URL points to.

## Response `201`

The newly created payout object.

## Other responses

- `422` — The request contains issues. For example, the `balanceId` is invalid or the balance has insufficient funds.
- `429` — Rate Limit has been reached.

---

[API](https://skmtc.net/mollie/apis/mollie-api.md) · [All operations](https://skmtc.net/mollie/apis/mollie-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mollie/mollie-api/revisions/d2a3bd80c1fa/schema)
