1. Getting Started
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. Getting Started

Security

Authentication#

All of our API requests are authenticated by providing your API key in the headers.
{
  "x-api-key": "your-key-here"
}

Verifying Provenance#

In order to be sure that any public key returned from the API is the correct public key from the HSM Cluster, most queries will return a provenance signatures.
Each wallet (HD wallet) allows you to create many public keys. e.g wallet A might have a sub-wallet for an EVM address. This EVM address has a public key. The public key is then used to create the on chain address.
The point of verifying the provnance is to ensure the address is what you expect. E.g. Image you create a subwallet with address 0xdead. You may wish to send funds to your own address so you use the API to return your address and send funds to it. Image that someone hacks your network and changes that adress to 0xattack. You may then send funds to the wrong address.
In order to protect from this each HSM is initialised with a provnance private key. This is a key that only the HSM Clusters contain. As such whenever the HSM creates a new public key it will sign the key (plus some other data) with the provnenace private key.
If you use the shared use HSM Clusters the provnenace key can be seen below. If you use your own HSM you'll need to get in touch to understand how the process to extract the HSM provenance public key works.
To do so API users will receive a signature over the encoding of some of the returned data (depends on the request)
To verify API users will need to use TrustVault's public key for the environment and cluster the wallet is held in.
NB: There are many clusters. Your cluster is returned in the WalletInfo section of the SubWallet query; speak to your account manager if you are unsure.

Production Public Key#

uk-online-1: 041cbce9985c7627f67b60b65cd1921fc79cbbc5b38a8c5702579d9573dd3b90f4e8c189679f1911335fd753510706d66c9c76147b961b085e25e3742e02524b01

Pre-production Public Key#

uk-online-1: 040e177769d4302f6cb0a1229d13d106ad9eb7ea53042bfb24cf4eb572ced1c13da2621b202cfd475e2847d6e380bd00b747a6dacf99381dc9e99bc567b4edf994
These keys can also be found in our postman docs.
You can verify our Production Public Key by querying the provenance-public-key.bitpandacustody.com dns TXT record.
This can be done using a command line tool like dig.
dig provenance-public-key.bitpandacustody.com TXT

Verifying a provenance signature in code#

If you use the TrustVault Node.js SDK, createSubWallet checks the provenance signature for you. If you call the GraphQL API directly, you must check it yourself before you use a returned public key or address.
The HSM signs a DER-encoded structure that contains the wallet ID, the HD path and the public key:
TrustVaultPublicKeyProvenance ::= SEQUENCE {
  walletId   PrintableString,      -- the wallet ID, e.g. "5d169161-...-17988eb391c5" (not the sub-wallet ID)
  path       SEQUENCE OF INTEGER,  -- the HD path, e.g. ["0x8000002c", ...] as integers
  publicKey  OCTET STRING          -- the 65-byte uncompressed public key (04-prefixed)
}
To verify:
1.
DER-encode walletId, path and publicKey as shown above.
2.
Hash the encoded bytes with SHA-256.
3.
Verify trustVaultProvenanceSignature against the hash. The signature is 64 bytes, r followed by s, as hex. Use ECDSA on the P-256 (secp256r1) curve and the provenance public key for your environment and cluster.
4.
Only if the signature is valid, derive the address from the verified public key yourself. Use your chain's library, for example computeAddress in ethers.js for EVM chains. Check that the address matches unverifiedAddress, and never use unverifiedAddress directly.
The example below uses only Node.js's built-in crypto module (Node 16 or later):
If the check returns false, do not use the public key or address. Contact Support.

Safely Storing your Instruction Key#

Do not hard code your key in scripts or config files. We recommend you use products like AWS Key Management Service to safely manage your keys.
Modified at 2026-10-29 12:46:11
Previous
API Onboarding
Next
Create a Bitcoin Transaction
Built with