1. Overview
Bitpanda Enterprise
  • Bitpanda Enterprise
    • Getting Started
      • Overview
      • Authentication
      • Versioning and API Changes
      • Changelog
    • REST API Endpoints
      • Overview
      • Auth Tokens
        • Obtain a Refresh and Access Tokens
        • Revoke a Refresh Token
      • User Administration
        • Individual Users
          • Create new user
          • Get user list v2
          • Search for users
          • Get user details v2
          • Update an existing user
          • Get user details
          • Off-boarding user
          • Inactivate user
          • Get user accepted Terms & Conditions
          • Get user Terms & Conditions v2
          • User verification files
          • Get account levels
          • Get account levels v2
          • Refresh KYC data for an existing user
        • Businesses
          • Get risk questions
          • Get a list of available businesses
          • Create new business
          • Get business details
          • Update an existing business
          • Create Authorized Individual
          • Get a list of Authorized Individuals
          • Get Authorized Individual details
          • Update Authorized Individual
          • Delete Authorized Individual
          • Create Shareholder
          • Get a list of Shareholders
          • Get Shareholder details
          • Update Shareholder
          • Delete Shareholder
          • Create Beneficial Owner
          • Get a list of Beneficial Owners
          • Get Beneficial Owner details
          • Update Beneficial Owner
          • Delete Beneficial Owner
          • Create Managing Director
          • Get a list of Managing Directors
          • Get Managing Director details
          • Update Managing Director
          • Delete Managing Director
          • Create Individual
          • Get a list of Individuals
          • Get Individual details
          • Update Individual
          • Delete Individual
        • User Files
          • Upload a file
          • Get file contents
          • Get file information
          • Upload a financial file
        • Legal & Regulatory
          • Get Terms & Conditions
          • Get Terms & Conditions v2
          • Get AML questions
          • Get appropriateness questions
          • Get client categorization questionnaire
          • Get DAC8 questionnaire
          • Get FATCA questionnaire
          • Get Legal Documents
          • Capture consent for User's final check
          • Retrieve Tax Identification Number Configuration
          • Get UK appropriateness questionnaire
          • Get appropriateness questionnaire for complex products
          • Get UK Risk Disclosure Warning
          • Acknowledge UK Risk Disclosure Warning
          • Get user compliance status
      • Asset Oversight
        • Asset History
          • Get asset history
          • Get asset history V2
        • Available Assets
          • Get a list of available assets
          • Get a list of available assets v2
        • Asset Details
          • Get asset details
          • Get asset details v2
        • Asset Info
          • Get asset information
          • Get asset information V2
        • Cryptocoin Details
          • Get cryptocoin details
          • Get cryptocoin details V2
        • Metal Details
          • Get metal details
          • Get metal details V2
        • Crypto Index Details
          • Get crypto index details
          • Get crypto index details V2
        • Stock Details
          • Get stock details
          • Get stock details V2
        • Equity Stock Details
          • Get equity stock details
          • Get equity stock details V2
        • ETF Details
          • Get ETF details
          • Get ETF details V2
        • Equity ETF Details
          • Get equity ETF details
          • Get equity ETF details V2
          • Get equity complex ETF details
          • Get equity complex ETF details V2
        • ETC Details
          • Get ETC details
          • Get ETC details V2
          • Get equity complex ETC details
          • Get equity complex ETC details V2
        • Equity ETC Details
          • Get Equity ETC details
          • Get Equity ETC details V2
        • Token Details
          • Get token details
          • Get token details V2
        • Asset ESG Data
          • Get asset ESG data
          • Get asset ESG data V2
        • List all available fiats per partner
        • Get the exchange rate for two assets
        • Get the swap exchange rate between two assets
        • Get assets under management
        • Get assets under management grouped by type
        • Get assets under management grouped by user
        • Get crypto index allocations
        • Get asset tags mapping
        • Get prices
        • Get prices V2
      • Trading Capabilities
        • Trades
          • Create a trade offer
          • [Deprecated] Accept a trade offer
          • Accept a trade offer V2
          • Accept a trade offer V3
          • Get a trade offer status
          • Create a trade offer V2
          • Sell asset with auto-withdraw
        • Swaps
          • Create a swap offer
          • Accept a swap offer
          • Accept a swap offer V2
          • Create a swap offer V2
        • Automated Orders
          • List automated orders
          • Get automated order price estimation
          • Create an automated order
          • Get an automated order details
          • Cancel an automated order
      • Portfolio Management
        • Returns the list of owned assets
        • Returns the list of owned asset groups
        • Portfolio performance based on timeframe
        • Returns the enhanced portfolio detail of an asset
        • Returns the list of owned assets
        • Returns the list of owned asset groups
        • Portfolio performance based on timeframe
        • Returns the enhanced portfolio detail of an asset
        • Returns the list of owned fiat wallets
      • Transactions Timeline
        • All
          • Transaction timeline per user
        • Trades
          • List all trades per user
          • Get trade details
          • Get trades history for user using asset and fiat uuid
          • Search for trades
          • Lightweight Search for trades V2
        • Swaps
          • Search for swaps
          • Search for swaps V2
          • Swap details by swap offer ID
          • Swap details by swap offer ID V2
        • Crypto Transfers
          • List all crypto transfers per user
          • Search for crypto transfers
        • Non-User Initiated Transactions
          • Non-user initiated transaction details
          • List all non-user initiated transactions per partner or per user
          • List all non-user initiated transactions per partner or per user V2
        • Corporate Actions
          • List all corporate actions per partner or per user
          • Corporate action details
          • Corporate action details V2
        • Crypto Actions
          • Crypto action details V2
          • Crypto action details
        • Staking Actions
          • List all staking actions per user
          • List all staking actions per user V2
        • Fiat Transfers
          • Search for fiat transfers
      • Reports
        • Get all available report types per user
        • Get all generated reports per user
        • Download a specific report
        • Create Account Statement Report
        • Get ex-ante report for an offer
        • Get kid information for an offer
        • List partner reports
        • Download a partner report file
      • Tax Insights
        • Get user’s tax eligibility status
        • Update user’s tax eligibility status
        • Get trade tax details
      • Notification Events
        • List all notification events per partner
        • Get JSON Web Key Set
      • Smart Investment Features
        • Crypto Transfers
          • List external addresses
          • Create deposit address
          • Update external address
          • Create withdrawal address
          • Create withdrawal address V2
          • List of VASPs
          • Validate crypto address
          • Update tax declaration status for a crypto deposit transaction
          • Create a crypto withdrawal offer
          • Confirm a withdrawal offer
          • Get public address verification details
          • Submit address verification result
        • Crypto Staking
          • Get staking overview
          • Get bonded overview
          • Stake a crypto asset
          • Stake a crypto asset V2
          • Unstake a crypto asset
          • Unstake a crypto asset V2
          • Get a staking action status
        • Savings Plans
          • Create a savings plan
          • Search for savings plans
          • Search for savings plans V2
          • Get savings plan next recurrence date.
          • Cancel a savings plan
          • Cancel a savings plan V2
          • Confirm a savings plan transaction
          • Confirm a savings plan transaction V2
          • Create a savings plan V2
        • Fiat Transfers
          • Initiate a fiat deposit
          • Create a payout account
          • Get payout accounts
          • Verify a payout account
          • Update a verification
          • Initiate a fiat withdrawal
          • List all fiat transfers per user
          • Get fiat transfer fees
          • Get fiat balances
          • Get deposit bank details
          • Initiate a bank fiat deposit
      • Settlements
        • List all available fiats per partner
        • Create a settlement deposit
        • Update the fiat stock
        • List all settlement transactions per partner
    • Webhooks
      • Overview
      • Setting up Webhooks
      • Handling Webhooks Events
        • User Updates Notifications
          • User Updates Notifications
        • Corporate Actions Notifications
          • Corporate Actions Notifications
          • Corporate Actions Notifications V2
        • Crypto Transfers Notifications
          • Deposit or withdrawal notification
        • Settlement Notifications
          • Send Money
          • Send Money V2
          • Send Money Success
          • Send Money Success V2
          • Top-Up Request
          • Top-Up Request V2
          • Top-Up Success
          • Top-Up Success V2
        • Non-user Initiated Transactions Notifications
          • Non-user Initiated Transactions
          • Non-user Initiated Transactions V2
          • Non-user Initiated Transactions V3
        • Savings Plans Notifications
          • Savings Plan Upcoming Trade
          • Savings Plan Upcoming Trade v2
          • Savings Plan Successful Trade
          • Savings Plan Failed Trade
          • Savings Plan Auto Cancel
          • Savings Transaction Updates
        • Crypto Actions Notifications
          • Crypto Actions Notifications
        • Report Notifications
          • Reports Notifications
        • Automated Orders Notifiations
          • Automated Orders Notifications
        • Proxy Voting
          • Proxy Voting Notifications
        • Fiat Transfers
          • Fiat transfer update notification
        • KYC
          • KYC Refresh Notification
        • Offer Status
          • Offer Status Notification
        • Financial Documents
          • User Financial Documents Notification
    • Websocket
      • Overview
      • Setting a Websocket
      • Websocket Server Documentation
    • Glosary
      • Key Terms and Definitions
    • Trades
      • List auto-conversions
  • Custody
    • Overview
      • Introduction
      • How TrustVault Works
      • Supported Assets
      • Environments
    • Getting Started
      • Getting Started
      • API Onboarding
      • Security
    • Tutorials
      • Create a Bitcoin Transaction
      • Create Ethereum Transaction GraphQL API
      • InfraOps
      • Organisation Management
      • TrustVault Node.js SDK
      • Change Wallet Policy API
      • Create an Ethereum Transaction
      • Create Transaction (Unsupported EVM chain)
      • Calculating Transaction Fee
      • Get User Portfolio
    • APIs
      • Trust API
      • Travel Rule API
      • Deprecations
    • Core Concepts
      • Webhooks
      • Address Book V2
      • Policies and Signing
      • Travel Rule API
      • Wallets and Sub-Wallets
    • Reference
      • Changelog
      • Understanding Bitcoin
      • Supported Ethereum Decoded Data
      • TrustVault Node.js SDK
      • Glossary
      • TrustVault Public Keys
  • Crypto Pay by Bitpanda
    • Overview
    • REST API Endpoints
      • Authentication
        • Obtain a Refresh and Access Tokens
        • Revoke a Refresh Token
      • Transactions
        • Get transaction details
        • Create a new transaction
        • Get transactions details
      • Get list of fiat currencies
  1. Overview

How TrustVault Works

This page explains the core architecture of TrustVault. Understanding these concepts is essential before working through any of the transaction or policy tutorials.

Wallets and sub-wallets#

A wallet in TrustVault is a BIP32 hierarchical deterministic (HD) key container. It holds the policy that governs who can sign from it — but it does not hold assets directly.
A sub-wallet is a child derivation path within a wallet. Sub-wallets hold actual on-chain addresses and balances. A single wallet can contain many sub-wallets across different chains (e.g. one ETH sub-wallet, one BTC sub-wallet). All sub-wallets inherit the signing policy of their parent wallet.
When you create a transaction, you specify the sub-wallet address to send from. The wallet's policy then determines what signatures are required before the transaction is submitted to the network.
See Wallets and Sub-Wallets for sub-wallet IDs, creation and listing.

Policies and M-of-N signing#

Each wallet has a policy made up of one or more schedules. A schedule is a set of clauses. Each clause defines a group of keys (Instruction Keys) and a quorumCount — the minimum number of those keys that must sign for the clause to be satisfied.
Clauses within a schedule are AND'd: all clauses in a schedule must be satisfied.
Schedules are OR'd: any one satisfied schedule activates the policy.
This lets you model complex approval flows — for example: "1 of 2 operations keys AND 1 CEO key", or "any 2 of 3 approvers".
In addition to delegate schedules, a policy also has recoverer schedules (aka admin schedules) — used only to change the wallet policy itself (e.g. key rotation or recovery). Recoverer keys cannot authorise transactions.
Policy changes are approved by the wallet admins (recoverers) only — delegates cannot approve a policy change. See Policies and Signing for the full policy model and examples.

Instruction Keys and signing paths#

Every wallet policy has an Instruction Key — the private/public key that must sign transactions. These are not the HSM secured keys but a set of delegation keys that customers hold to prove cryptographically the intent to send transactions. TrustVault supports two ways to hold this key:
1.
iOS app — the Instruction Key lives in the secure enclave of an iPhone. Transactions appear in the TrustVault app for manual review and approval. No programmatic signing is needed.
2.
External (programmatic) key — you generate and hold your own key pair (on secp256r1 / P-256), typically stored in a service like AWS KMS. Transactions are signed automatically in your code via the API. No iPhone is ever required.
You can switch from iOS to programmatic at any time using the Change Wallet Policy tutorial.

Provenance signatures#

When TrustVault returns transaction data or a new sub-wallet address, it includes a provenance signature — an ECDSA signature from the HSM that holds the wallet - over the returned data.
Verifying this signature against the TrustVault public key proves the data originated from TrustVault and has not been tampered with in transit. For production integrations this verification is strongly recommended before signing any transaction.
The public keys for each environment, and how to verify them via DNS, are listed on the Security page.

The HSM#

TrustVault uses a Hardware Security Module (HSM) — a tamper-resistant physical device — to hold the master signing key. The HSM:
Generates and stores cryptographic keys that never leave the device in plaintext.
Signs the provenance signatures attached to every response.
Co-signs policy changes before they become active.
The HSM is the root of trust in the TrustVault architecture. It ensures that even if application-layer components were compromised, keys cannot be exfiltrated.

The TCSS co-signing service#

The Transaction Co-Signing Service (TCSS) is an additional layer of control that runs before a transaction is submitted to the network. It enforces rules defined at the wallet level — most commonly destination allowlisting.
If your wallet is configured with an Address Book, TCSS will reject any transaction destined for an address not in that book, regardless of whether the Instruction Key has signed it.
This means the address book and TCSS work together: the address book defines the allowed destinations, and TCSS enforces them at signing time. See Address Book V2 for how to manage allowed destinations.

Putting it together: a transaction flow#

1.
Your code calls createEthereumTransaction (or equivalent) via the GraphQL API.
2.
TrustVault validates the request and constructs the transaction data, including signData and unverifiedDigestData.
3.
The provenance signature on the response lets you verify the data came from TrustVault.
4.
You (or the iOS app) sign shaSignData with the Instruction Key and submit the signature via addSignature.
5.
TCSS checks the destination against any allowlist rules.
6.
Once all required signatures are collected (per the wallet policy), TrustVault submits the transaction to the network.
7.
Webhooks fire as the request progresses (e.g. transaction created, signed, and received). See Webhooks for the full list of events.
Modified at 2026-10-29 12:49:32
Previous
Introduction
Next
Supported Assets
Built with