get_finance_payouts

Read-only

Calls GET /api/finance/payouts as the signed-in person · REST reference

A service provider's payouts, newest first (platform staff)

One clinic's most recent payouts — amount, when settled, whether the Stripe transfer is known to have moved, the transfer's id and, for an offset payout, the clawback it collected for. The Payouts tab starts a clawback from a row here; reads only.

Arguments

ArgumentTypeDescription
orgIdquerystring (uuid)required
limitqueryinteger

Example call

A client sends this over the MCP session; Claude and other agents build it for you. The values are placeholders — the shape is real.

json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_finance_payouts",
    "arguments": {
      "orgId": "11111111-1111-4111-8111-111111111111"
    }
  }
}

Result

On success (HTTP 200) the tool returns one text item holding the API's JSON, pretty-printed.

The clinic's payouts

json
{
  "count": 1,
  "data": [
    {
      "amount": 1,
      "clawbackCount": 1,
      "clawbackStatus": "REQUESTED",
      "currency": "string",
      "lastError": "string",
      "offsetForClawbackId": "11111111-1111-4111-8111-111111111111",
      "orgId": "11111111-1111-4111-8111-111111111111",
      "orgName": "string",
      "settledAt": 1,
      "stripeTransferId": "string",
      "transactionId": "11111111-1111-4111-8111-111111111111",
      "transferState": "PENDING"
    }
  ]
}

Fields

FieldTypeDescription
countinteger
dataarray of object
data[].amountintegerCENTS the payout settled.
data[].clawbackCountintegerHow many clawbacks are against the vouchers this payout settled; 0 for an offset payout.
data[].clawbackStatus"REQUESTED" | "APPROVED" | "EXECUTING" | "RECOVERED" | "PARTIALLY_RECOVERED" | "WRITTEN_OFF" | … (7 values)The status of the latest payout clawback against a voucher, resolved ones included — what the voucher's (or its payout's) clawback chip says. Null when there is none. DENIED is never reported, nor a REQUESTED clawback Pawsitive Future filed: until it is approved it is Pawsitive Future's own deliberation.
data[].currencystring
data[].lastErrorstring | nullThe transfer's last error, when it failed.
data[].offsetForClawbackIdstring (uuid) | nullThe clawback an offset payout collected for; null for a payout to the clinic.
data[].orgIdstring (uuid)
data[].orgNamestring | null
data[].settledAtintegerEpoch milliseconds.
data[].stripeTransferIdstring | nullThe Stripe transfer (tr_…) the payout moved money in; null until one is recorded.
data[].transactionIdstring (uuid)The PAYOUT Transaction's id; GET /api/finance/payouts/{payoutId}/vouchers takes it.
data[].transferState"PENDING" | "SENT" | "FAILED" | "NOT_REQUIRED"Whether the Stripe transfer is known to have moved: PENDING and FAILED are not known to have, NOT_REQUIRED is a payout that moved no money (a placeholder account's).

When it fails

A failed call returns isError: true with the API's message as text.

400

The request was malformed or failed a guard.

403

Authenticated, but the caller holds none of the required permissions.

404

No organization has the id.

What the model is shown

This is the tool exactly as the server lists it in tools/list. The description starts with the REST call it makes.

json
{
  "name": "get_finance_payouts",
  "description": "GET /api/finance/payouts — One clinic's most recent payouts — amount, when settled, whether the Stripe transfer is known to have moved, the transfer's id and, for an offset payout, the clawback it collected for. The Payouts tab starts a clawback from a row here; reads only.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "orgId": {
        "type": "string"
      },
      "limit": {
        "type": "string"
      }
    },
    "required": [
      "orgId"
    ]
  },
  "annotations": {
    "readOnlyHint": true,
    "openWorldHint": false
  }
}