Overview
An organization is resolved from the API key. Every org method onTrustodianSDK reads the caller’s active membership out of the key, and there is no orgId parameter anywhere in the org surface.
Organization support splits into four areas:
Organization Wallets
Create, list, rename, and delete org wallets; portfolios, UTXOs, history, corporate address book
Organization Vaults
Org multisig vault lifecycle per chain, and orders against org vaults
Governance & Policies
Security policies, daily spending limits, limit groups, audit logs
Key Management
Key shares,
shareStore, and the wallet-password sessionRoles and statuses
403 and surfaces as PermissionDeniedError.
A couple of operations require a passkey step-up for browser sessions, but for API-key callers the check defers to the key’s own permissions. No step-up material is needed from the SDK.
Reading the org context
getOrgMe() is allowed for both Master and Employee and needs no API-key permission at all, which makes it the cheapest probe to run on SDK init before any other org call. Its organizationId is the value the organization-scoped reads take, such as listAllowances({ organizationId }) and getStrictAuthStatus({ organizationId }).
Team directory
userId, userName, kycStatus and joinedAt are null until the invitation is accepted. member.id is the memberId every other team method takes, not userId.
Invitations
ApiError with status 409.
Removing a member
- deletes every wallet assignment for the member,
- deletes the member’s server shares for those wallets (never the Master’s own),
- voids the member’s signatures on pending org orders and recomputes the affected orders, writing one
Org Signature Voidedaudit row per voided signature, - writes the
Org Member Removedaudit row,
Wallet assignment
walletId may point at a wallet or a vault, and the backend validates that the asset belongs to the organization. A duplicate assignment returns 409.
unassignOrgWallet is idempotent. Unassigning a wallet the member does not have returns 204, not 404. A 404 here means the member is not in this organization.Employee wallet provisioning
Assignment alone grants no cryptographic access. Signing capability moves through a three-step handshake in which neither party ever learns the other’s wallet password, and no readable private key is ever transmitted.1
Assign (Master)
cryptoAccessStatus on the member’s wallet listing is 'none'.2
Provision (Master)
tempPassword bound to that member. Nothing readable reaches the server. Hand tempPassword to the employee over a channel you control. It is returned once and is not recoverable.3
Accept (Employee)
address, and then immediately re-encrypts it under their own wallet password, so the one-time password stops being useful the moment accept succeeds. The employee’s device share is written to their shareStore. createEncTokenIfMissing defaults to true, so an employee with no wallet password yet has one established during accept.4
Revoke (Master)
Crypto access status
The member wallet listing carries the state machine:'none' means assigned only, 'pending' means provisioned and awaiting accept, 'accepted' means the employee holds usable shares.