1. Core Concepts
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. Core Concepts

Policies and Signing

What is a policy?#

Every TrustVault wallet has a policy — a set of rules that determines which keys must sign before a transaction or policy change can be executed. The policy is enforced by the TrustVault HSM and cannot be bypassed.
A policy has two parts:
Delegate schedules — govern who can authorise transactions
Recoverer schedules (aka admin schedules) — govern who can change the policy itself (key rotation, recovery). Recoverer keys cannot authorise transactions.

Policy structure#

Policies are composed of schedules, clauses, and keys:
Policy
  ├── delegateSchedules: Schedule[]   (OR'd)
  └── recovererSchedules: Schedule[]  (OR'd)
        └── Schedule: Clause[]        (AND'd)
              └── Clause
                    ├── keys: string[]     (public keys)
                    └── quorumCount: int   (min signatures required)
Both delegate and recoverer schedules use the same structure.
Clauses are AND'd within a schedule — all clauses must be satisfied.
Schedules are OR'd — any single satisfied schedule activates the policy.

Example: 1-of-2 OR CEO approval#

{
  "delegateSchedules": [
    [
      { "keys": ["04aa...", "04bb..."], "quorumCount": 1 }
    ],
    [
      { "keys": ["04cc..."], "quorumCount": 1 }
    ]
  ]
}
Either one of the first two keys signs, OR the CEO key signs.

Example: 1-of-2 AND compliance key#

{
  "delegateSchedules": [
    [
      { "keys": ["04aa...", "04bb..."], "quorumCount": 1 },
      { "keys": ["04cc..."], "quorumCount": 1 }
    ]
  ]
}
One of the two ops keys and the compliance key must both sign.

Instruction Key#

The Instruction Key is the private key corresponding to a public key in the delegate schedule. It is what you (or the iOS app) use to sign transactions.
Keys must be on the secp256r1 (P-256) curve — not secp256k1 (the Bitcoin/Ethereum curve). Public keys are uncompressed hex, 130 characters, prefixed 04.

Changing a policy#

Policy changes are approved by the wallet admins (recoverers) only. Delegates cannot approve a policy change. By default (includeBitpandaAdmins: true) Bitpanda Custody admins are included as recoverers, so Bitpanda Custody also signs.
There are two types of Policy Change Request: RECOVERY and a special type called ZERO.
A ZERO request removes every delegate from a wallet without needing any signatures, so you can lock a wallet down straight away in an emergency.
To replace or rotate an Instruction Key:
1.
Create a new key pair (on secp256r1)
2.
Call createChangePolicyRequest with the new delegate schedule
3.
Sign the shaSignData with the required recoverer (admin) keys
4.
Wait for Bitpanda Custody to co-sign
See Change Wallet Policy for a full walkthrough, including how the request type is determined.

Signing a transaction#

When a transaction is created, TrustVault returns unverifiedDigestData:
FieldDescription
transactionDigestThe raw chain-specific digest (e.g. keccak(rlp(tx)) for Ethereum)
signDataThe digest with the HD wallet path appended in DER format
shaSignDataSHA-256(signData) — what you sign with your key
Policy change requests return only signData and shaSignData (there is no transactionDigest).
Production
In production, recreate the digests from your original inputs and verify they match unverifiedDigestData before signing. Do not blindly sign shaSignData without verification — use the SDK's built-in verify methods or implement your own. See Create an Ethereum Transaction for details.

TCSS destination allowlisting#

The Transaction Co-Signing Service (TCSS) runs after your Instruction Key has signed. If your wallet has an Address Book attached, TCSS will reject any transaction to an address not in the book — regardless of whether the delegate key signed it.
See Address Book V2 for managing allowlisted destinations.

Further reading#

How TrustVault Works — architecture overview
Change Wallet Policy — tutorial
Webhooks: Policy Change Request Created — signing via webhook
Modified at 2026-10-29 12:46:11
Previous
Address Book V2
Next
Travel Rule API
Built with