---
title: "Create Payout"
method: POST
path: "/api/v1/admin/affiliates/{affiliate_id}/payouts"
tags: ["admin"]
---

# Create Payout

`POST /api/v1/admin/affiliates/{affiliate_id}/payouts`

## Request

- Base URL: `https://api.nudgelink.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.nudgelink.co/api/v1/admin/affiliates/{affiliate_id}/payouts`
- Auth: HTTP bearer

Record a manual payout: mark the affiliate's pending commissions paid and
bundle them into one AffiliatePayout. The actual money moves off-app (bank /
Stripe dashboard); ``external_reference`` records where.

Concurrency-safe: the pending rows are locked FOR UPDATE, so a double-submit
finds nothing pending on the second pass and 409s instead of double-paying.

## Path parameters

- `affiliate_id` string, uuid, required

## Request body

- CreatePayoutRequest
  - `commission_ids` string[], nullable
  - `external_reference` string, nullable
  - `note` string, nullable

## Response `200`

Successful Response

- PayoutResult
  - `payout_id` string, uuid, required
  - `affiliate_id` string, uuid, required
  - `total_amount_usd` number, required
  - `commission_count` integer, required
  - `paid_at` string, date-time, required

## Other responses

- `422`: Validation Error

---

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