post_payout_accounts_by_orgid_tax_details
Calls POST /api/payout-accounts/{orgId}/tax-details as the signed-in person · REST reference
Add the full SSN or EIN a payout account was set up without
Stripe files a clinic's Form 1099 only with its full TIN. A sole proprietor onboarded with the last four of its SSN, or a company whose EIN Stripe does not hold, reads taxIdProvided: false on its payout account, and the Payout tab asks for this once. The body is for the business type the account already has; the other type's is refused (400, details.field businessType). Submitted to Stripe as individual.id_number, or company.name and company.tax_id; NOT stored and NOT logged — Stripe then answers only whether it holds one. Needs execute:UpdateOrgCommand in this organization, or platform staff; the organization must be a SERVICE_PROVIDER.
Arguments
| Argument | Type | Description | |
|---|---|---|---|
orgIdpath | string (uuid) | required | |
bodyJSON | object | required | The request body, as a JSON object. Its fields are listed below. |
Fields of body
| Field | Type | Description | |
|---|---|---|---|
businessType | "company" | "individual" | required | |
company | object | Required for company. | |
company.ein | string | required | The full nine digits; spaces and dashes are ignored. |
company.name | string | required | The legal name the EIN is registered to. |
ssn | string | Required for individual. The full nine digits; spaces and dashes are ignored. |
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": "post_payout_accounts_by_orgid_tax_details",
"arguments": {
"orgId": "11111111-1111-4111-8111-111111111111",
"body": {
"businessType": "company",
"company": {
"ein": "string",
"name": "string"
},
"ssn": "string"
}
}
}
}Result
On success (HTTP 200) the tool returns one text item holding the API's JSON, pretty-printed.
Where the payout account stands once Stripe has taken them.
{
"bankLast4": "string",
"bankName": "string",
"businessType": "individual",
"detailsSubmitted": true,
"payoutsEnabled": true,
"requirementsDue": [
"string"
],
"status": "NOT_STARTED",
"taxIdProvided": true
}Fields
| Field | Type | Description |
|---|---|---|
bankLast4 | string | null | Last four digits of the bank account Stripe pays out to, when Stripe reported one. |
bankName | string | null | |
businessType | "individual" | "company" | null | The business type the details were submitted as; null when none were, or Stripe did not answer. |
detailsSubmitted | boolean | |
payoutsEnabled | boolean | |
requirementsDue | array of string | Stripe's requirement ids still owed, past due first. Empty when none or unknown. |
status | "NOT_STARTED" | "INCOMPLETE" | "VERIFYING" | "ACTION_REQUIRED" | "REJECTED" | "ACTIVE" | NOT_STARTED — no connected account. INCOMPLETE — setup on Stripe's page was not finished. VERIFYING — everything was submitted and Stripe has not enabled payouts yet. ACTION_REQUIRED — Stripe needs more information. REJECTED — Stripe rejected the account. ACTIVE — payouts are enabled. |
taxIdProvided | boolean | null | Whether Stripe holds the full SSN (individual.id_number_provided) or EIN (company.tax_id_provided) it files the clinic's Form 1099 under; null when unknown. False on an account whose details were submitted is what POST /tax-details completes. |
When it fails
A failed call returns isError: true with the API's message as text. A change the person declines, or lets time out, also comes back this way and nothing changes.
400A field is missing, the wrong shape, for the other business type, or refused by Stripe.
details.fieldnames it; no submitted value is echoed back.403Not platform staff and not holding
execute:UpdateOrgCommandin the organization, or the organization is not a service provider.409The organization has no payout account whose details were submitted (
EFT_NOT_SET_UP).502Stripe refused the submission for a reason that names no field of this form.
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": "post_payout_accounts_by_orgid_tax_details",
"description": "POST /api/payout-accounts/{orgId}/tax-details — Stripe files a clinic's Form 1099 only with its full TIN. A sole proprietor onboarded with the last four of its SSN, or a company whose EIN Stripe does not hold, reads `taxIdProvided: false` on its payout account, and the Payout tab asks for this once. The body is for the business type the account already has; the other type's is refused (400, `details.field` `businessType`). Submitted to Stripe as `individual.id_number`, or `company.name` and `company.tax_id`; NOT stored and NOT logged — Stripe then answers only whether it holds one. Needs `execute:UpdateOrgCommand` in this organization, or platform staff; the organization must be a SERVICE_PROVIDER.\n\nThis changes data. The person is asked to confirm it before it runs, and nothing happens if they decline.",
"inputSchema": {
"type": "object",
"properties": {
"orgId": {
"type": "string"
},
"body": {
"type": "string",
"description": "The JSON request body: { businessType*: one of \"company\" | \"individual\"; company: { ein*: string (The full nine digits; spaces and dashes are ignored.); name*: string (The legal name the EIN is registered to.) } (Required for `company`.); ssn: string (Required for `individual`.) }"
}
},
"required": [
"orgId",
"body"
]
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": false,
"openWorldHint": false
}
}