---
title: "Mark Paid"
method: POST
path: "/api/asclepius/admin/earnings/mark-paid"
tags: ["asclepius-payments"]
---

# Mark Paid

`POST /api/asclepius/admin/earnings/mark-paid`

## 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/mark-paid`
- Auth: none declared

Record that a batch of approved earnings has actually been disbursed.

This is the ledger's record that money moved; it does not move money. The
transfer is a treasury operation, and ``payout_batch_id`` is how the two are
reconciled — ``GET /admin/earnings?payout_batch_id=...`` returns exactly the
rows a given disbursement covered.

``user_id`` appears here and nowhere else on this router. That is the point of
the split: every doctor-facing route scopes from the session and cannot name
another physician, and the one route that must name one is admin-gated.

## Headers

- `authorization` string, nullable

## Request body

- MarkPaidBody
  - `payout_batch_id` string
  - `earning_ids` string[], nullable
  - `user_id` string, nullable

## 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)
