---
title: "Admin Pay Earnings"
method: POST
path: "/api/asclepius/admin/earnings/pay"
tags: ["asclepius-payments"]
---

# Admin Pay Earnings

`POST /api/asclepius/admin/earnings/pay`

## Request

- Base URL: `https://app.archangelhealth.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://app.archangelhealth.ai/api/asclepius/admin/earnings/pay`
- Auth: none declared

Send payment for one physician's approved rows.

Thin over ``asc_payments.mark_paid`` rather than a parallel write path —
that function owns the batch-id idempotency and the compare-and-set that
makes a retried disbursement safe, and a second implementation of it is a
second chance to pay twice.

The one thing added here is the compensation guard: an advisor on
``equity_only`` holds equity and is not paid per case. It calls
``compensation.accrues_payment`` rather than re-testing the column, because
the rule that NULL is payable lives in that function and a re-implementation
written as ``!= 'equity_only'`` gets legacy contributors wrong.

## Headers

- `authorization` string, nullable

## Request body

- PayEarningsBody
  - `user_id` string, required
  - `earning_ids` string[], nullable
  - `payout_batch_id` string

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/archangelhealth/apis/archangel-health-surgical-patient-platform.md) - [All operations](https://skmtc.dev/archangelhealth/apis/archangel-health-surgical-patient-platform/llms.txt) - [OpenAPI document](https://skmtc.dev/archangelhealth/apis/archangel-health-surgical-patient-platform/revisions/3514f4e119da?raw)
