# personalTax.shareholder.addSelf

As an active company administrator, explicitly add your own real individual shareholder details to the canonical register against the exact reviewed register and association fingerprints. Email must belong to your verified account. Never invent holdings, share classes or ownership. Does not save a tax number or approve sharing.

`POST /api/v1/accounting/personalTax.shareholder.addSelf`

Permissions: `accounting:read`, `accounting:write`, `accounting:admin` · Roles: admin, finance, contributor, accountant · Idempotency key required

Not available over MCP: Saving shareholder details requires fresh administrator access in the explicitly selected company and accounting:admin OAuth consent. The current workspace role and its API-key scope ceiling do not authorize this global personal action.

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `organizationId` | string | Yes | The company to work in, for people who belong to more than one. API keys belong to one company. 1–200 characters. |
| `existingHolderId` | string |  | Matches ^[a-z0-9][a-z0-9-]{7,39}$. |
| `holder` | object | Yes | No other fields. |
| `holder.legalName` | string | Yes | 1–200 characters. |
| `holder.email` | string (email) | Yes | An email address. at most 254 characters. |
| `holder.residency` | enum | Yes | One of: `canada`, `other`. |
| `holder.address` | object | Yes | No other fields. |
| `holder.address.line1` | string | Yes | at most 120 characters. |
| `holder.address.line2` | string | Yes | at most 120 characters. |
| `holder.address.city` | string | Yes | at most 80 characters. |
| `holder.address.region` | string | Yes | at most 80 characters. |
| `holder.address.postalCode` | string | Yes | at most 20 characters. |
| `holder.address.country` | string | Yes | exactly 2 characters. |
| `holder.note` | string |  | A short note, kept with the record. at most 500 characters. |
| `expectedRegisterRevision` | integer | Yes | The related record's current revision, from the last time you read it. 0 to 1000000000. |
| `expectedAssociationFingerprint` | string | Yes | SHA-256 hash as 64 lowercase hex characters. |
| `idempotencyKey` | string | Yes | Any 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 request

```bash
curl https://app.getoatmilk.com/api/v1/accounting/personalTax.shareholder.addSelf \
  -H "Authorization: Bearer $OATMILK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "organizationId": "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"
}'
```

Reference page: https://app.getoatmilk.com/docs/api/personalTax.shareholder.addSelf
