:::endpoint GET /v1/admin/payouts

Every payout request of the firm's traders. The same list as Payouts on the
website, with the same search and the same filters. Where the website reads
a value it does not know as the default, because its addresses get
bookmarked, this refuses it: a client that thinks it filtered and got
everything shows the wrong list.

A request is decided on with [review](/docs/api/admin/payout-review) and
[paid](/docs/api/admin/payout-paid). One request, with what it takes to
decide, is [a payout](/docs/api/admin/payout). The counters above the list are
the [summary](/docs/api/admin/payouts-summary).

Needs a firm. Our own staff name one with the `Propper-Workspace` header.

## Request

| Parameter        | Description                                                                                                             |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `status`         | `pending` (to review), `waiting` (pending or approved), `approved` (to pay), `paid`, `rejected`, or `all` (the default) |
| `method`         | `bank_transfer`, `crypto`, `paypal`, or `all` (the default)                                                             |
| `period`         | Asked for in the last `7d`, `30d`, `90d` or `365d`, or `all` (the default)                                               |
| `tag`            | Only requests with this [tag](/docs/api/admin/payout-tags). A tag that no longer exists finds nothing                   |
| `flagged`        | `1` for traders with open fraud flags only. Needs `view_fraud`                                                          |
| `q`              | Search: the payout number (`#Q8R3T6`), an account number, the trader's name or email, a payout, trader or account id, or the reference it was paid with |
| `sort`           | `queue` (the default), `-created_at` newest first, `created_at` oldest first, `-amount` largest first, or `trader` by name |
| `limit`          | How many, see [pagination](/docs/api/pagination)                                                                        |
| `starting_after` | The `next_cursor` of the page before. A cursor only works with the `sort` it was handed out with                        |

`queue` is the order the website opens on: what waits for a decision, then
what waits for the money, each oldest first, then everything settled, newest
first. A word in `q` starting with `#` only looks at the payout number and the
account number.

```bash
curl "https://api.proppertrading.com/v1/admin/payouts?status=pending&limit=1" \
  -H "Authorization: Bearer ptat_9f2c1a44_3b8e7d2f5c9a1b4e6d8f0a2c4e6b8d1f" \
  -H "Propper-Workspace: acme"
```

## Response

```json
{
    "data": [
        {
            "object": "payout",
            "id": "po_99fc6kngcrdz7axf",
            "number": "#DZ7AXF",
            "status": "pending",
            "amount": { "value": "762.00", "currency": "USD" },
            "trader_share": { "value": "609.60", "currency": "USD" },
            "method": "crypto",
            "created_at": "2026-10-04T03:59:48+00:00",
            "reviewed_at": null,
            "paid_at": null,
            "trader": {
                "id": "usr_33hajhd7u9q5mjqr",
                "name": "Kai Popescu",
                "email": "kai.popescu.447@example.com",
                "avatar_url": null,
                "deleted": false
            },
            "account": { "id": "acct_gsvrm4k43wtsvjj3", "number": "PA6F9BFA2E" },
            "open_flags": 0,
            "tags": [],
            "ticket": null,
            "action_url": "/admin/payouts/po_99fc6kngcrdz7axf"
        }
    ],
    "meta": {
        "request_id": "req_01m50pyyadvar0xaehmy4fzjvy",
        "has_more": true,
        "next_cursor": "eyJzIjoicXVldWUiLCJ2IjpbMCwiMTc5MTA4NjM4OC4wMDAwMDAiXSwiaWQiOiJwb185OWZjNmtuZ2NyZHo3YXhmIn0"
    }
}
```

| Field          | Description                                                                                                 |
| -------------- | ----------------------------------------------------------------------------------------------------------- |
| `number`       | What people read out: the last six characters of the id                                                      |
| `status`       | `pending`, `approved`, `processing`, `paid` or `rejected`. Nothing sets `processing` today                  |
| `amount`       | What the trader asked for, which comes off the account when it is paid                                      |
| `trader_share` | What the trader receives: `amount` times their split, fixed when they asked                                 |
| `method`       | `bank_transfer`, `crypto` or `paypal`                                                                       |
| `trader`       | Who asked. `deleted` is true for a trader who deleted their account, whose request still has to be decided  |
| `account`      | The account the money comes from. Null when it was removed                                                  |
| `open_flags`   | Open fraud flags involving the trader. Null without `view_fraud`                                            |
| `tags`         | The team's own labels, each with `id`, `name` and `color`                                                   |
| `ticket`       | The linked ticket, with `id` and `open`. Null when there is none, or without `view_tickets` or `manage_tickets` |
| `action_url`   | Where the website shows the request, a path inside the web application                                      |

## Errors

| Status | Code                      | Meaning                                                                         |
| ------ | ------------------------- | ------------------------------------------------------------------------------- |
| 400    | `workspace_required`      | Asked by our own staff without naming a firm                                    |
| 400    | `validation_failed`       | `status`, `method`, `period` or `flagged` is not one of its values             |
| 400    | `invalid_sort`            | `sort` is not one of the five orders                                            |
| 400    | `invalid_limit`           | `limit` is not a positive integer                                               |
| 400    | `invalid_cursor`          | `starting_after` is not a cursor handed out for this `sort`                     |
| 401    | `invalid_token`           | Not a token, or the secret does not match                                       |
| 401    | `revoked_token`           | Signed out here or from another device                                          |
| 401    | `expired_token`           | Ninety days without use, or a set expiry passed                                 |
| 403    | `admin_access_required`   | This account no longer helps run the environment                                |
| 403    | `insufficient_scope`      | This device does not hold `admin:read`                                          |
| 403    | `workspace_not_permitted` | The `Propper-Workspace` header names an environment this account cannot act in |
| 403    | `forbidden`               | Without `view_payouts`, or `flagged` without `view_fraud`                       |