get_finance_payouts_by_payoutid_vouchers
Calls GET /api/finance/payouts/{payoutId}/vouchers as the signed-in person · REST reference
The vouchers one payout settled (platform staff)
Each voucher the payout paid, as the code lookup (GET /api/finance/clawbacks/voucher) reads one: its state, credited amount, what is left to claw back and any clawback in flight. Empty for an offset payout, which settled no voucher. Reads only; filing is POST /api/finance/clawbacks.
Arguments
| Argument | Type | Description | |
|---|---|---|---|
payoutIdpath | string (uuid) | required |
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.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_finance_payouts_by_payoutid_vouchers",
"arguments": {
"payoutId": "11111111-1111-4111-8111-111111111111"
}
}
}Result
On success (HTTP 200) the tool returns one text item holding the API's JSON, pretty-printed.
The vouchers the payout settled
{
"count": 1,
"data": [
{
"clawbackStatus": "REQUESTED",
"code": "string",
"creditedAmount": 1,
"currency": "string",
"id": "11111111-1111-4111-8111-111111111111",
"openClawbackId": "11111111-1111-4111-8111-111111111111",
"orgId": "11111111-1111-4111-8111-111111111111",
"orgName": "string",
"paidAt": 1,
"remainingAmount": 1,
"state": "string"
}
]
}Fields
| Field | Type | Description |
|---|---|---|
count | integer | |
data | array of object | |
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[].code | string | |
data[].creditedAmount | integer | CENTS its payout credited. |
data[].currency | string | |
data[].id | string (uuid) | |
data[].openClawbackId | string (uuid) | null | The clawback of it in flight, if any; a second is refused while it is. |
data[].orgId | string (uuid) | null | The service provider that took it — the one a clawback asks; null when no clinic did. |
data[].orgName | string | null | |
data[].paidAt | integer | null | Epoch milliseconds. |
data[].remainingAmount | integer | CENTS still claimable — creditedAmount less every clawback of it that was not denied. |
data[].state | string | Its lifecycle state; only a PAID voucher's payout can be clawed back. |
When it fails
A failed call returns isError: true with the API's message as text.
400The request was malformed or failed a guard.
403Authenticated, but the caller holds none of the required permissions.
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.
{
"name": "get_finance_payouts_by_payoutid_vouchers",
"description": "GET /api/finance/payouts/{payoutId}/vouchers — Each voucher the payout paid, as the code lookup (GET /api/finance/clawbacks/voucher) reads one: its state, credited amount, what is left to claw back and any clawback in flight. Empty for an offset payout, which settled no voucher. Reads only; filing is POST /api/finance/clawbacks.",
"inputSchema": {
"type": "object",
"properties": {
"payoutId": {
"type": "string"
}
},
"required": [
"payoutId"
]
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}