Personal tax details

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:readaccounting:writeaccounting:admin

Who can call it

admin, finance, contributor, accountant

Retries

Idempotency key required

MCP

Not offered 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

  • organizationIdstringRequired

    The company to work in, for people who belong to more than one. API keys belong to one company.

    1–200 characters

  • existingHolderIdstring

    Matches ^[a-z0-9][a-z0-9-]{7,39}$

  • holderobjectRequired

    No other fields

  • expectedRegisterRevisionintegerRequired

    The related record's current revision, from the last time you read it.

    0 to 1000000000

  • expectedAssociationFingerprintstringRequired

    SHA-256 hash as 64 lowercase hex characters

  • idempotencyKeystringRequired

    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

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"
}'
Response
{
  "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.

POST/api/v1/accounting/personalTax.shareholder.addSelf
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"
}'

More in Personal tax details.