---
title: "Cancel a Custom Payout"
method: DELETE
path: "/affiliates/{affiliate_id}/payouts/{payout_id}"
tags: ["Affiliates"]
---

# Cancel a Custom Payout

`DELETE /affiliates/{affiliate_id}/payouts/{payout_id}`

Cancels one of the affiliate's custom payouts while it is still `pending`, so it is never sent. The payout is kept, as `cancelled`. Monthly `performance` payouts can't be cancelled. Note 1: custom payouts must be enabled for the project. Note 2: this endpoint is only accessible with a secret API key.

## Path parameters

- `affiliate_id` string, required
- `payout_id` string, required

## Headers

- `x-api-key` string, required

## Response `200`

The payout has been cancelled.

- AffiliatePayoutResponse
  - `data` AffiliatePayoutResponseData, required
    - `payout` AffiliatePayout, required
      - `id` string, required — The payout id
      - `affiliate_id` string, required — The id of the affiliate the payout is to
      - `type` 'performance' | 'custom', required — What the payout is: `performance` collects what the affiliate earned in a calendar month; `custom` is an amount the project set itself
      - `status` 'upcoming' | 'holding' | 'pending' | 'processing' | 'sent' | 'completed' | 'failed' | 'cancelled', required — Where the payout is: `upcoming` and `holding` still collect or wait out refunds, `pending` is ready to be sent, `processing` is on its way, `completed` has been paid, `failed` goes back to pending, `cancelled` will not be paid
      - `amount` integer, required — The amount, in USD cents
      - `description` string, nullable, required — What a `custom` payout is for, as the project put it. Null for `performance` payouts
      - `period_start` string, date, required — The first day the payout covers, in UTC
      - `period_end` string, date, nullable, required — The last day the payout covers, in UTC. Null while an `upcoming` payout is still collecting
      - `created_at` string, date-time, required — When the payout was created
      - `completed_at` string, date-time, nullable, required — When the payout was paid. Null until it is

## Other responses

- `401` — Unauthorized
- `403` — Custom payouts are not enabled for the project, or the payout is not a pending custom payout.
- `404` — The payout is not one of the affiliate's on the project.
- `429` — The rate limit for this endpoint has been exceeded.

## Changes

- **2026-09-30** `f3e82ba251e6` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/winwinkit/apis/winwinkit-api/changes/affiliates/:affiliate_id/payouts/:payout_id/delete.md)

---

[API](https://skmtc.dev/winwinkit/apis/winwinkit-api.md) · [All operations](https://skmtc.dev/winwinkit/apis/winwinkit-api/llms.txt) · [OpenAPI document](https://skmtc.dev/winwinkit/apis/winwinkit-api/revisions/f3e82ba251e6?raw)
