personalTax.shareholder.addPerson
As a freshly verified company administrator, save a known verified associated person's real shareholder details in this exact company without switching workspaces. Requires ownerUserId, real holder fields, optional explicit existingHolderId, current register and target association fingerprints. Notifies the selected person and responsible company administrators through the verified notice and email queue. Preserves all other people, classes, holdings and officers. Never invent ownership, submit a tax number, create a setup request or approve personal sharing. Use the native reviewed person form.
/api/v1/accounting/personalTax.shareholder.addPersonPermissions
Who can call it
Retries
MCP
Reaches outside Oatmilk
Fields
organizationIdstringRequiredThe company to work in, for people who belong to more than one. API keys belong to one company.
1–200 characters
ownerUserIdstringRequired1–200 characters
existingHolderIdstringMatches ^[a-z0-9][a-z0-9-]{7,39}$
holderobjectRequiredNo other fields
expectedRegisterRevisionintegerRequiredThe related record's current revision, from the last time you read it.
0 to 1000000000
expectedAssociationFingerprintstringRequiredSHA-256 hash as 64 lowercase hex characters
idempotencyKeystringRequiredAny unique text you generate once per intended change, so a retried request only happens once. Send it as the Idempotency-Key header instead if you prefer; if you send both they must match.
8–200 characters
Example
curl https://app.getoatmilk.com/api/v1/accounting/personalTax.shareholder.addPerson \
-H "Authorization: Bearer $OATMILK_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"organizationId": "example",
"ownerUserId": "example",
"holder": {
"legalName": "Synthetic Ventures Inc.",
"email": "finance@example.com",
"residency": "canada",
"address": {
"line1": "example",
"line2": "example",
"city": "example",
"region": "example",
"postalCode": "example",
"country": "CA"
}
},
"expectedRegisterRevision": 3,
"expectedAssociationFingerprint": "9f2b5c1d7e3a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4e6f8a0b2c4d6e8f0a2b4c"
}'{
"data": { … }
}Try it
Try it
Checks your input with this action’s real schema and answers like the API, with synthetic data. No key needed, and nothing changes.
curl https://app.getoatmilk.com/api/v1/accounting/personalTax.shareholder.addPerson \
-H "Authorization: Bearer $OATMILK_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"organizationId": "example",
"ownerUserId": "example",
"holder": {
"legalName": "Synthetic Ventures Inc.",
"email": "finance@example.com",
"residency": "canada",
"address": {
"line1": "example",
"line2": "example",
"city": "example",
"region": "example",
"postalCode": "example",
"country": "CA"
}
},
"expectedRegisterRevision": 3,
"expectedAssociationFingerprint": "9f2b5c1d7e3a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4e6f8a0b2c4d6e8f0a2b4c"
}'More in Personal tax details.