---
title: "Mark a payout paid"
method: POST
path: "/v1/payouts/{id}/mark_paid"
tags: ["Payouts"]
---

# Mark a payout paid

`POST /v1/payouts/{id}/mark_paid`

## Request

- Base URL: `https://api.affiliaterail.com`
- URL: `https://api.affiliaterail.com/v1/payouts/{id}/mark_paid`
- Auth: HTTP bearer

You paid it yourself, outside PayPal or Wise. Moves the commissions to `paid` and the money from due to paid. Allowed from `pending` and `failed`; never while a rail has it in flight, never twice.

**Scope:** `payouts:write` (or `write`)

## Path parameters

- `id` string, required: Prefixed id (`pyt_…`)

## Request body

- PayoutMarkPaid
  - `paid_at` string, date-time: ISO-8601, UTC
  - `external_id` string: Your reference from the payout method you paid through

## Response `200`

The payout

- Payout
  - `id` string, required: Prefixed id (`pyt_…`)
  - `object` 'payout', required
  - `program_id` string, required: Prefixed id (`prg_…`)
  - `partner_id` string, required: Prefixed id (`part_…`)
  - `batch_id` string, nullable, required: Prefixed id (`batch_…`)
  - `amount_minor` integer, required: Integer minor units (cents, pence). Never a float, never a string.
  - `currency` string, required: ISO-4217
  - `method` 'paypal' | 'wise' | 'bank_transfer' | 'wire' | 'crypto' | 'payoneer' | 'null', nullable, required
  - `status` 'not_eligible' | 'pending' | 'processing' | 'paid' | 'failed', required
  - `not_eligible_reason` string, nullable, required: Why this partner was not paid this period, in words
  - `external_id` string, nullable, required
  - `error_code` string, nullable, required
  - `error_message` string, nullable, required
  - `period_start` string, date-time, nullable, required: ISO-8601, UTC
  - `period_end` string, date-time, nullable, required: ISO-8601, UTC
  - `paid_at` string, date-time, nullable, required: ISO-8601, UTC
  - `metadata` object, nullable, required: Your own key/value data, stored as given
  - `created_at` string, date-time, required: ISO-8601, UTC
  - `updated_at` string, date-time, required: ISO-8601, UTC

## Other responses

- `400`: Invalid request
- `401`: Missing or unknown API key
- `403`: Key lacks the required scope
- `404`: No such object in your organization
- `422`: The request was understood and refused
- `429`: Rate limited: see Retry-After

---

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