Bitpanda Enterprise
  1. Custody
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 accepted Terms & Conditions v2
          • User verification files
          • Get account levels
        • 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
        • 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 client categorization questionnaire
          • Get UK Risk Disclosure Warning
          • Acknowledge UK Risk Disclosure Warning
          • Get user compliance status
      • Asset Oversight
        • 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 History
          • Get asset history
          • Get asset history
        • Asset Info
          • Get asset information
          • Get asset information
        • Cryptocoin Details
          • Get cryptocoin details
          • Get cryptocoin details
        • Metal Details
          • Get metal details
          • Get metal details
        • Crypto Index Details
          • Get crypto index details
          • Get crypto index details
        • Stock Details
          • Get stock details
          • Get stock details
        • Equity Stock Details
          • Get equity stock details
          • Get equity stock details V2
        • ETF Details
          • Get ETF details
          • Get ETF details
        • Equity ETF Details
          • Get equity ETF details
          • Get equity ETF details V2
        • ETC Details
          • Get ETC details
          • Get ETC details
        • Equity ETC Details
          • Get Equity ETC details
          • Get Equity ETC details V2
        • Token Details
          • Get token details
          • Get token details
        • 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 crypto index allocations
        • Get asset tags mapping
        • Get prices
        • Get prices V2
      • Trading Capabilities
        • Trades
          • Create a trade offer
          • Create a trade offer V2
          • [Deprecated] Accept a trade offer
          • Accept a trade offer V2
          • Accept a trade offer V3
          • Get a trade offer status
        • Swaps
          • Create a swap offer
          • Create a swap offer V2
          • Accept a swap offer
          • Accept 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
      • 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
          • Swap details by swap offer ID
          • Search for swaps V2
          • 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
        • Crypto Actions
          • Crypto action details V2
          • Crypto action details
        • Staking Actions
          • List all staking actions per user
          • List all staking actions per user V2
      • Reports
        • Get all available report types per user
        • Get all generated reports per user
        • Create Account Statement Report
        • Download a specific report
      • 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
      • Smart Investment Features
        • Crypto Transfers
          • List external addresses
          • Create deposit address
          • Update external address
          • Create withdrawal address
          • List of VASPs
          • Validate crypto address
          • Update tax declaration status for a crypto deposit transaction
          • Create a crypto withdrawal offer
          • Confirm a withdrawal offer
        • Crypto Staking
          • Get staking overview
          • Get bonded overview
          • Stake a crypto asset
          • Unstake a crypto asset
          • Stake a crypto asset V2
          • Unstake a crypto asset V2
          • Get a staking action status
        • Savings Plans
          • Create a savings plan
          • Search for savings plans
          • 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
          • Search for savings plans V2
          • Get savings plan next recurrence date.
      • 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
        • Crypto Transfers Notifications
          • Deposit or withdrawal notification
        • Settlement Notifications
          • Top-Up Request
          • Top-Up Request V2
          • Top-Up Success
          • Top-Up Success V2
          • Send Money
          • Send Money V2
          • Send Money Success
          • Send Money 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
        • Crypto Actions Notifications
          • Crypto Actions Notifications
        • Reports Notifications
          • Reports Notifications
        • Automated Orders Notifications
          • Automated Orders Notifications
    • WebSocket
      • Overview
      • Setting a Websocket
      • Websocket Server Documentation
    • Glosary
      • Key Terms and Definitions
    • Schemas
      • 400
      • 401
      • 403
      • UserJourney
      • 404
      • trades-search-lightweight
      • 413
      • TradeDetails
      • 422
      • CreateOfferRequest
      • 500
      • CreateOfferUUIDRequest
      • AccessToken
      • ListOrderResponse
      • getTransactionResponse
      • CreateOrderRequest
      • getFiatsResponse
      • CreateOrderResponse
      • GetOrderResponse
      • 405
      • 406
      • 409
      • 410
      • 503
      • Term
      • PaginationMeta
      • PaginationLinks
      • TermV2Link
      • ComplexProductsAnswer
      • TermV2Text
      • ComplexProductsQuestion
      • AmlAnswerNested
      • AmlQuestionNested
      • AmlAnswer
      • AmlQuestion
      • QuestionnaireAnswer
      • QuestionnaireQuestion
      • ClientCategorizationNestedAnswer
      • ClientCategorizationNestedQuestion
      • ClientCategorizationAnswer
      • ClientCategorizationQuestion
      • UKRiskDisclosureContentLink
      • Dac8Answer
      • UKRiskDisclosureContent
      • Dac8Question
      • UKRiskDisclosureActions
      • FatcaAnswer
      • UKRiskDisclosure
      • FatcaQuestion
      • AccountLevel
      • GetUserList
      • SimpleCursorPaginationMeta
      • AmlQuestionAnswerRequest
      • AppropriatenessQuestionAnswerRequest
      • ClientCategorizationQuestionAnswerRequest
      • FatcaQuestionAnswerRequest
      • Dac8QuestionAnswerRequest
      • UserVerificationV2Request
      • UserTax
      • UserMultipleTax
      • UserExtCompliance
      • CreateUserV2RequestBody
      • UserSearch
      • GetUserV2
      • UpdateUserV2RequestBody
      • GetUser
      • UserOffBoardingRequestBody
      • UserAcceptedTerm
      • UserAcceptedTermV2Link
      • UserAcceptedTermV2Text
      • ComplianceDetails
      • UserVerificationFilesV2RequestBody
      • UserComplianceV2
      • LegalDocument
      • UserComplianceV2Response
      • TaxRules
      • Asset
      • AssetHistory
      • AssetInfo
      • CryptoIndexAllocation
      • CoinDetails
      • MetalDetails
      • CryptoIndexDetails
      • YearlyNetIncome
      • StockDetails
      • EquityStockDetails
      • ETFDetails
      • EquityETFDetails
      • ETCDetails
      • EquityETCDetails
      • TokenDetails
      • ESGData
      • ExchangeRate
      • SwapExchangeRate
      • Asset-V2
      • GetAssetsUnderManagement
      • GetAssetsUnderManagementTypeGroup
      • FiatV2
      • TagGroup
      • TagsMapping
      • Trade
      • TradeV2
      • TransactionTimelineItem
      • TradeSearchV2
      • NextPrevCursorPagination
      • CorporateActions
      • CorporateActionDetailsAsset
      • CorporateActionDetailsFiat
      • CorporateActionDetails
      • NonUserInitiatedTransactionsDetailsAsset
      • NonUserInitiatedTransactionDetailsFiat
      • NonUserInitiatedTransactionsDetails
      • CryptoActionDetailsAsset
      • CryptoActionDetailsFiat
      • CryptoActionDetails
      • CryptoActionDetailsAssetV2
      • CryptoActionTransaction
      • CryptoActionDetailsV2
      • Warnings
      • Offer
      • OfferUUID
      • Offer-Accept
      • Offer-Accept-Uuid
      • Overview
      • GroupOverview
      • Performance
      • AssetDetailsEnhancedWithStaking
      • OverviewV2
      • AssetDetailsEnhancedWithStakingV2
      • Fiat
      • CreateDomainDepositRequestBody
      • UpdateFiatStockRequestBody
      • TransactionSearch
      • CreateAccountStatement
      • AccountStatementReportResponse
      • ReportDetails
      • UploadFileRequestBody
      • FileInformation
      • OverviewResponse
      • BondedOverviewResponse
      • StakeRequest
      • StakeResponse
      • PendingStakeActionResponse
      • UnstakeRequest
      • UnstakeResponse
      • SearchResponse
      • SearchV2Response
      • PaginationMetaV2
      • StakeV2Request
      • StakeV2Response
      • UnstakeV2Request
      • UnstakeV2Response
      • GetStatusResponse
      • EventV2
      • NonUserInitiatedTransactions
      • NonUserInitiatedTransactionsV2
      • GetPricesResponse
      • GetPricesResponse-v2
      • GetTaxStatusResponse
      • OrderPriceEstimationResponse
      • UpdateTaxStatusRequest
      • UpdateTaxStatusResponse
      • GetTaxDetailsResponse
      • AddressResponse
      • CreateAddressRequest
      • DepositAddressResponse
      • UpdateExternalAddressRequest
      • CreateWithdrawalAddressRequest
      • VaspResponse
      • ValidateCryptoAddressRequest
      • ValidateCryptoAddressResponse
      • TransactionResponse
      • TaxDeclarationUpdateRequest
      • WithdrawalOfferRequest
      • WithdrawalOfferResponse
      • WithdrawalResponse
      • SearchSavingsPlanResponse
      • CreateSavingsPlanRequest
      • CreateSavingsPlanResponse
      • ModifySavingsPlanRequest
      • ModifySavingsPlanResponse
      • CancelSavingsPlanV2Response
      • ConfirmSavingsPlanTransactionResponse
      • ConfirmSavingsPlanTransactionV2Response
      • SearchSavingsPlanV2Response
      • CreateSavingsPlanV2Request
      • CreateSavingsPlanV2Response
      • GetSavingsPlanNextRecurrenceResponse
      • CreateSwapOfferRequest
      • CreateSwapOfferResponse
      • SwapTradesSearch
      • GetSwap
      • CreateSwapOfferRequestV2
      • CreateSwapOfferResponseV2
      • SwapTradesSearchV2
      • GetSwapV2
      • AcceptSwapOfferResponse
      • AcceptSwapOfferResponseV2
      • ResponseMeta
      • RiskAnswer
      • RiskQuestion
      • GeneralAddress
      • EntityTaxClassification
      • Business
      • RiskQuestionAnswerRequest
      • CreateBusinessRequestBody
      • BusinessDetails
      • UpdateBusinessRequestBody
      • AuthorizedIndividual
      • CreateAuthorizedIndividualRequestBody
      • UpdateAuthorizedIndividualRequestBody
      • Shareholder
      • CreateShareholderRequestBody
      • UpdateShareholderRequestBody
      • BeneficialOwnerType
      • BeneficialOwnerControllingPersonType
      • BeneficialOwner
      • CreateBeneficialOwnerRequestBody
      • UpdateBeneficialOwnerRequestBody
      • ManagingDirector
      • CreateManagingDirectorRequestBody
      • UpdateManagingDirectorRequestBody
      • Individual
      • CreateIndividualRequestBody
      • UpdateIndividualRequestBody
  • Custody
    • Introduction
    • Security
    • Getting Started
    • Changelog
    • Webhooks
    • Supported Assets
    • Glossary
    • Tutorials
      • API Onboarding
      • TrustVault Node.js SDK
      • Change Wallet Policy API
      • Create a Bitcoin Transaction
      • Create an Ethereum Transaction
      • Create Transaction (Unsupported EVM chain)
      • Create Ethereum Transaction GraphQL API
      • Calculating Transaction Fee
      • Decoding an Ethereum Transaction Webhook Payload
      • Get User Portfolio
      • Environments
    • APIs
      • Travel Rule API
      • Deprecations
      • Trust API
        • Authentication
          • TrustVault Public Keys
        • Query
          • User
            • User SubWallets - Details
            • User SubWallets - Portfolio
            • User SubWallets - Balances
            • Get Transactions
            • Get Transactions for a BTC Receive Address
            • Get All BTC Receive Addresses (With Transactions)
            • Get User Portfolio
            • csvPortfolio
          • Get Request Item
        • Mutations
          • Create Transactions
            • Create BTC Transaction
            • Create ETH
            • Create Transaction (EVM compatible chain)
            • Create Exchange Transfer
          • Create Change Policy Request
          • Create Bitcoin Receive Address
          • Add Signature
          • Cancel request
          • Create Sub Wallet
          • Create Eth Personal Sign
          • Create Eth Signed Typed Data
          • Create Radix Transaction
          • Create Xdc.Network Transaction
    • Under the Hood
      • Understanding Bitcoin
      • Supported Ethereum Decoded Data
  • 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
    • Webhooks
      • Settlement Update Notifications
      • Transaction Update Notifications
    • Schemas
      • 400
      • 401
      • 403
      • 404
      • 413
      • 422
      • 500
      • AccessToken
      • getTransactionResponse
      • getFiatsResponse
  1. Custody

Webhooks

TrustVault provides webhooks to alert you of the changes in that status of your transactions. These are POST requests delivered to your server and are sent as soon as an event occurs. The body of the request contains the details of the event.
Upon receiving a webhook notification, it should be acknowledged with a HTTP success response 20x. Otherwise the webhook notification will be attempted to be sent again according to the following schedule:
1 minute from the previous attempt
2 minutes from the previous attempt
15 minutes from the previous attempt
2 hours from the previous attempt
10 hours from the previous attempt
24 hours from the previous attempt
NB: Webhooks will NOT follow a redirect of 30x. This is to prevent potential security risks.
If you need to register a webhook, just get in touch with Bitpanda Custody Support via help@bitpandacustody.com

Webhook Security#

Webhook notifications should be verified using the message hash signature in the header and the secret key to prevent attackers from imitating valid webhooks.
Each webhook is associated with a single secret key, which is given upon registration of the webhook. The secret key is used to generate an HMAC using SHA-256 hash algorithm.
Webhook notifications will have an X-Sha2-Signature header in the request, containing the HMAC. The secret key should be used to compute the message hash signature using the complete event object. You must ensure that the generated hash signature matches the X-Sha2-Signature header sent by TrustVault.
All TrustVault webhooks will have the following header: User-Agent: "TrustVaultWebHook"

ERC-20 Tokens#

Please note that ERC-20 tokens follow the EIP-20 spec. This means that:
The contract method symbol and name (which drives the assetName) are optional and can be named by the contract creator. Do not expect unique names (spammers may deliberately copy common token names). For a unique key use the contractAddress
The contract method decimals(which are used to derive the more friendly quantity field) are optional. For the canonical truth use the rawQuantity field which will always be the quantity specified within the contract
Please see the "Token Data" information lower in this page where erc-20 details are exposed.

Verifying HMAC-256 signature#

Handle Duplicate Events#

Webhook endpoints might occasionally receive the same event more than once. In particular, during chain re-organisation a webhook event could be re-sent for the exact same transaction. We advise you to guard against duplicated event receipts by making your event processing idempotent.

Events#

Wallet Specific#

EventDescriptionEvent type
Creation Delegate SignedA wallet creation has been signed by a valid delegateWALLET_CREATION_DELEGATE_SIGNED
Change Delegate SignedA wallet change has been signed by a valid delegateWALLET_CHANGE_DELEGATE_SIGNED
Policy Change Request CreatedThere is a request to change the policy associated with a walletPOLICY_CHANGE_REQUEST_CREATED *
* - This webhook event type is likely to change name in the future

BITCOIN#

EventDescriptionEvent type
Bitcoin ReceivedA Bitcoin subwallet has received a transactionBITCOIN_TRANSACTION_RECEIVED
Bitcoin Transaction CreatedA Bitcoin transaction has been createdBITCOIN_TRANSACTION_CREATED
Transaction Delegate SignedA transaction request has been signed by a valid delegateBITCOIN_TRANSACTION_DELEGATE_SIGNED
Bitcoin Transaction SignedAn outbound Bitcoin transaction has been signed by private keysBITCOIN_TRANSACTION_SIGNED

Ethereum#

EventDescriptionEvent type
Ethereum ReceivedAn ethereum subwallet has received a ETH or ERC20 transactionETHEREUM_TRANSACTION_RECEIVED
Ethereum Transaction CreatedAn Ethereum transaction has been createdETHEREUM_TRANSACTION_CREATED
Delegate SignedA request has been signed by a valid delegateETHEREUM_TRANSACTION_DELEGATE_SIGNED
Ethereum Transaction SignedAn outbound Ethereumtransaction has been signed by private keysETHEREUM_TRANSACTION_SIGNED
Ethereum Internal Transfers have been receivedAn ethereum subwallet has received an internal transferETHEREUM_BLOCK_INTERNAL_TRANSFERS_RECEIVED

EVM Based (via MetaMask)#

Webhooks via MetaMask will be renamed to UNSUPPORTED_ETHEREUM_XXXX. This is to help better associated known chains and unknown chains. Since these webhooks would have previously been called ETHEREUM_XXXX, they will continue to be sent under the old and new name.
EventDescriptionEvent type
Unsupported Ethereum Transaction CreatedA transaction created on an Unsupported Ethereum chain has been created (MM)UNSUPPORTED_ETHEREUM_TRANSACTION_CREATED
Delegate SignedA request has been signed by a valid delegateUNSUPPORTED_ETHEREUM_TRANSACTION_DELEGATE_SIGNED
Unsupported Ethereum Transaction SignedAn outbound Unsupported Ethereum transaction has been signed by private keysUNSUPPORTED_ETHEREUM_TRANSACTION_SIGNED

Sign Request Webhooks (EVM Based)#

The following sign requests webhooks are not chain specific and are applicable for any EVM based chain
EventDescriptionEvent type
Sign Request Created (Typed)A request to sign a typed data on an EVM chain has been createdETHEREUM_SIGN_TYPED_DATA_CREATED
Sign Request Created (Personal)A request to sign data on an EVM chain has been createdETHEREUM_PERSONAL_SIGN_CREATED

Binance Smart Chain#

EventDescriptionEvent type
BSC ReceivedAn BSC wallet has received a BNB or BEP-20 transactionBINANCE_SMART_CHAIN_TRANSACTION_RECEIVED
BSC Transaction CreatedAn BSC transaction has been createdBINANCE_SMART_CHAIN_TRANSACTION_CREATED
Delegate SignedA request has been signed by a valid delegateBINANCE_SMART_CHAIN_TRANSACTION_DELEGATE_SIGNED
BSC Transaction SignedAn outbound BSC transaction has been signed by private keysBINANCE_SMART_CHAIN_TRANSACTION_SIGNED

XDC.NETWORK Smart Chain#

EventDescriptionEvent type
XdcNetwork ReceivedAn XdcNetwork wallet has received a ETH or ERC20 transactionXDCNETWORK_TRANSACTION_RECEIVED
XdcNetwork Transaction CreatedAn XdcNetwork transaction has been createdXDCNETWORK_TRANSACTION_CREATED
Delegate SignedA request has been signed by a valid delegateXDCNETWORK_TRANSACTION_DELEGATE_SIGNED
XdcNetwork Transaction SignedAn outbound XdcNetwork transaction has been signed by private keysXDCNETWORK_TRANSACTION_SIGNED

RADIX#

EventDescriptionEvent type
External Item SignedAn external item has been signedRADIX_ITEM_SIGNED
Delegate SignedA request has been signed by a valid delegateRADIX_DELEGATE_SIGNED

Ripple#

EventDescriptionEvent type
Ripple Transaction CreatedA new ripple transaction has been createdRIPPLE_TRANSACTION_CREATED
Ripple Transaction SignedA ripple transaction has been signedRIPPLE_TRANSACTION_SIGNED

Legacy Events#

From 20th December 2021, the following events were deprecated and you should migrate off them as soon as possible.
EventDescriptionEvent type
External Item SignedAn external item has been signedEXTERNAL_ITEM_SIGNED
Delegate SignedA request belonging to the trustId has been signed by a valid delegateDELEGATE_SIGNED

Migration of events#

Old EventNew EventNotes
EXTERNAL_ITEM_SIGNEDRADIX_ITEM_SIGNEDRenamed to be more consistent with other webhooks associated with a specific chain
ETHEREUM_TRANSACTION_RECEIVED{CHAIN}_TRANSACTION_RECEIVEDPreviously all EVM based transactions would have been called ETHEREUM_XXX. This has been changed to be chian specific.

Legacy Event Triggers#

This are still valid events but will be deprecated in the future.
Event typeTrigger
POLICY_CHANGE_REQUEST_CREATEDAPI only: A request has been created to change the wallet policy via the API or SDK
EXTERNAL_ITEM_SIGNEDTrustVault has signed the external item due to enough signature(s) were collected to satisfy the delegate schedule
DELEGATE_SIGNEDA request belonging to the trustId has been signed by a valid delegate
ETHEREUM_SIGN_TYPED_DATA_CREATEDA request to sign typed data has been created
ETHEREUM_PERSONAL_SIGN_CREATEDA request to sign personal data has been created

Event Object#

AttributeDescription
messageIdstring
Unique identifier for the webhook notification
versionstring
The webhook version
typestring
The webhook notification type
timestampinteger
The timestamp of the webhook notification
isoTimestampstring
The timestamp of the webhook notification in ISO 8601 format
payloadobject
The payload for the webhook notification

Bitcoin Received Event#

The bitcoin received webhook will be triggered as soon as there is 1 confirmation from a miner.

Bitcoin Transaction Received Payload#

AttributeDescription
trustIdstring
Unique identifier for the TrustVault user
subWalletIdobject
Unique identifier for the sub-wallet
subWalletIdStringstring
Unique identifier for the sub-wallet, in string format
transactionAmountstring
The transaction amount in satoshi (integer string)
bitcoinAddressstring
The UTXO receive address of the transaction
transactionTypestring
The type of transaction - RECEIVED or SELF
blockHeightinteger
The block number where the transaction was included in
transactionIdstring
Unique identifier for the transaction in the blockchain
transactionBlockTimeinteger
The timestamp of the block
transactionAmountInBtcstring
The transaction amount in BTC (float string)

Ethereum Received Event#

The ethereum received webhook will be triggered as soon as there is 1 confirmation from a miner.

Ethereum Transaction Received Payload#

AttributeDescription
trustIdstring
Unique identifier for the TrustVault user
subWalletIdobject
Unique identifier for the sub-wallet
subWalletIdStringstring
Unique identifier for the sub-wallet, in string format
fromstring
Ethereum address where the transaction was sent from
tostring
Ethereum address where the transaction was sent to (*)
transactionValuestring
Transaction value in Wei
transactionValueInEthstring
Transaction value in Eth
transactionTypestring
The type of transaction - RECEIVED/SELF
tokensDataarray
Token data (see "Token Data" structure below) (**)
transactionIdstring
Unique identifier for the transaction in the blockchain
blockHeightstring
The block number where the transaction was included in
blockHashstring
Unique identifier for the block the transaction was included in
gasUsedstring
Gas used by the transaction
gasPricestring
Gas price of the transaction
transactionBlockTimenumber
The timestamp of the block
decodedInputobject
The decoded input field of the transaction
decodedEventsarray
Array with all the emitted decoded events
(*)
In Ether transfers, to has the value of ethereum address where the Ether is transferred to.
In ERC20 transfers, to has the value of smart contract that manages the token transfer.
(**)
In Ether transfers, this array will be empty.

Ethereum Transaction Created Payload#

AttributeDescription
trustIdstring
Unique identifier for the TrustVault user
subWalletIdobject
Unique identifier for the sub-wallet
subWalletIdStringstring
Unique identifier for the sub-wallet, in string format
assetSymbolstring
The symbol associated with the asset being transacted
chainstring
The chain associated with this transaction. i..e ETHEREUM
signDataobject
The full chain specific data associated with this transaction
policyDataobject
The full wallet policy
transferValueDefinitionobject
The transfer value of the transaction in native and fiat amounts

Bitcoin Transaction Created Payload#

AttributeDescription
trustIdstring
Unique identifier for the TrustVault user
subWalletIdobject
Unique identifier for the wallet
subWalletIdStringstring
Unique identifier for the wallet, in string format
assetSymbolstring
The symbol associated with the asset being transacted
chainstring
The chain associated with this transaction. i..e BITCOIN
feestring
Fee in Satoshis for this transaction
signDataobject
The full chain specific data associated with this transaction
policyDataobject
The full wallet policy
transferValueDefinitionobject
The transfer value of the transaction in native and fiat amounts

Delegate Signed Payload#

AttributeDescription
trustIdstring
Unique identifier for the TrustVault user
requestIdstring
Unique identifier for the request that was signed
requestTypestring
The type of the request that was signed. See Request Types below
walletIdstring
(Optional) Unique identifier for the parent wallet associated with the request that was signed. Does not exist for CREATION type
subWalletIdstring
(Optional) Unique identifier for the sub-wallet associated with the transaction, in string format. Does not exist for RECOVERY / CREATION types
assetSymbolstring
(Optional) The symbol associated with the asset being transacted. Does not exist for RECOVERY / CREATION types
chainstring
(Optional) The chain associated with this transaction. i..e ETHEREUM. Does not exist for RECOVERY / CREATION types
publicKeysobject
Contains the list of valid delgate public keys that have signed the request so far
policyobject
The delegate schedule of the wallet that is associated with the request

Request Types#

AttributeDescription
RECOVERYA request to change the policy of a wallet (i.e. recover it)
CREATIONA request to create a new wallet with a defined policy
ETH_TRANSACTIONA request to send an ETH / ERC20 transaction
RIPPLE_TRANSACTIONA request to send a ripple transaction
EXTERNAL_ETH_TRANSACTIONA request to send an ETH / ERC20 transaction which coming from a 3rd party (i.e. MetaMask x TrustVault extension)
BTC_TRANSACTIONA request to send a bitcoin transaction
BINANCE_TRANSACTIONA request to send BNB / BEP-2 transaction
ETH_PERSONAL_SIGNA request to sign an Eth Personal Sign message
ETH_TYPED_DATA_SIGNA request to sign an Eth Typed Data message
EXTERNAL_SIGNA request to sign data which comes from a 3rd party

TransferValueDefinition Field#

It should be noted that not all transactions can be valued. Sending ETH or BTC is quite straight forward, as is sending supported ERC-20 tokens. However, when sending to contracts it can get difficult to value the transaction. As such, we currently only support valuing the following:
ERC-20 supported transactions
ETH value transfers
BTC value transfers
At this time ETH transfers to any contract (including a on-chain wallet or vault) are not valued. Transactions that cannot be valued will have transferValueDefinition.transferAmount and transferValueDefinition.convertedAmount fields set to undefined.

Token Data#

Please note that ERC-20 tokens follow the EIP-20 spec. See details at the top of this page.
AttributeDescription
tostring
Ethereum address where the tokens were transferred to
quantitystring
Quantity of tokens transferred taking into account the decimals value that the contract offers. If decimals is not defined, defaults to the rawQuantity value
rawQuantitystring
Canonical truth for the quantity of tokens transferred in the raw units
symbolstring
Token symbol (empty string if not defined)
assetNamestring
Name of the token (empty string if not defined)
tokenDirectionTypestring
Direction of token transfer - RECEIVED/SELF
contractAddressstring
The contract address. The ideal unique key for assets

Policy Change Request Created#

AttributeDescription
trustIdstring
Unique identifier for the TrustVault user
requestIdstring
Unique identifier for the request
policyTemplateobject
Object containing the new policy for the wallet
recovererTrustVaultSignaturestring
The r, s values of the signature of the SHA-256(DER(policy)) as signed by the TrustVault provenance key. This ensures that you can confirm that the policy has come from TrustVault
unverifiedDigestDatastring
The policy object containing properties for easy signing

UnverifiedDigestData#

Called "unverified" because the onus is on the caller to ensure that the message contains the same data that has been requested for this wallet. i.e. if you requested a new policy you can construct the policy object you expect, DER encode it, SHA-256 hash it and then check that your digest matches the shaSignData. Additionally, you can verify the recovererTrustVaultSignature to ensure the data was signed by TrustVault.
For testing, verification is not required and you can simply sign the shaSignData or signData depending on if your signing code request the raw message or the digest (SHA-256).
The TrustVault node.js SDK will do verification of the payload for you
AttributeDescription
signDatastring
The message containing the DER encoded policy that must be signed if you are in control of a publicKey referenced in the policy
shaSignDatastring
The SHA-256 digest of the message

PolicyTemplate#

AttributeDescription
delegateSchedulesarray
An array of delegate schedules which contain and array of clauses
recovererSchedulesarray
An array of delegate schedules which contain and array of clauses

Sub Wallet ID object#

AttributeDescription
idstring
Unique identifier for the HD Wallet
typestring
The chain identifier where the sub wallet belongs to ("BTC", "BINANCE")
indexnumber
Index of the sub wallet in the HD Wallet starting at zero (integer)

Sample Bitcoin Received Event Object#

{
  "messageId": "87f49826-dafb-46e9-a9bc-6ed7ef61f811",
  "version": "1.0.2",
  "type": "BITCOIN_TRANSACTION_RECEIVED",
  "timestamp": 1588323320463,
  "isoTimestamp": "2020-05-01T09:18:31.354Z",
  "payload": {
    "subWalletIdString": "f63b2ff1-f02b-48df-8b9f-bc57f5c57061/BTC/0",
    "trustId": "f67ddcf6-e95d-4aa7-9a2d-e855ba5dc380",
    "subWalletId": {
      "id": "f63b2ff1-f02b-48df-8b9f-bc57f5c57061",
      "type": "BTC",
      "index": 0
    },
    "transactionAmount": "142498030",
    "bitcoinAddress": "342ftSRCvFHfCeFFBuz4xwbeqnDw6BGUey",
    "transactionType": "RECEIVED",
    "blockHeight": 627997,
    "transactionId": "97f1f9150a992ac5309a0837ef3309757dc6359b8355867933d693b7c6a1ae98",
    "transactionBlockTime": 1588078790,
    "transactionAmountInBtc": "1.4249803"
  }
}

Sample Bitcoin Transaction Created Event Object#

{
  "type": "BITCOIN_TRANSACTION_CREATED",
  "messageId": "7bd6edad-e23f-476b-8cab-714cb80e4840",
  "timestamp": 1588323320463,
  "isoTimestamp": "2020-05-01T09:18:31.354Z",
  "version": "1.0.0",
  "payload": {
    "requestId": "8f18b68b-eeb6-0b4c-9c93-2921b336f359",
    "fee": 900,
    "trustId": "c6b18fb4-3eac-420b-91f3-5ee1f679a16d",
    "assetSymbol": "BTC",
    "chain": "BITCOIN",
    "policyData": {
      "...<PolicyAssociatedWithWallet>"
    },
    "signData": {
      "transaction": {
        "version": 1,
        "inputs": [
          {
            "address": "37thS2qbjZD47eT7M2txL1NxUywEq3hfye",
            "txId": "4722c3f2d6a30fc481d237ccb4e6037cc02e3f4ff65e965b6cdbeaf0e59f52d6",
            "outputIndex": 1,
            "script": "a91444064f6cf221f0e64a0140b7e3707edd64bb6a1387",
            "sequence": "ffffffff",
            "value": 1642873750,
            "publicKeyProvenanceData": {
              "publicKey": "046386a33646742eeba5d202c09f123819b9785ddea5b78b5b64b36dd60397b36507a493d7a0a38334a6168f73e4ef9dfed1258b6248e8015c0e148b04cd3f6dc6",
              "path": [
                "0x80000049",
                "0x80000000",
                "0x80000000",
                "0x1",
                "0x45b"
              ],
              "accountHSMProvenanceSignature": "0261a5cd98e8bef2f2610f8f09fa07d12731f69835daccccd12763dbc6137444d2cd5c850d18dc7768cfa5582f04367a58ecaeccbfde944cbbce42cf4884a024",
              "unverifiedAddress": "37thS2qbjZD47eT7M2txL1NxUywEq3hfye",
              "addressType": "COMPATIBILITY"
            },
            "unverifiedDigestData": {
              "transactionDigest": "e928bcb8acf4bcda5c71151041c144e227ba60f30789fd470bd580391aa97d4a",
              "signData": "30400420e928bcb8acf4bcda5c71151041c144e227ba60f30789fd470bd580391aa97d4a301c0205008000004902050080000000020500800000000201010202045b",
              "shaSignData": "0ad7b306818ac11e812241fca40af3a621c348d25660fef9f5f59dacca14364f"
            }
          }
        ],
        "outputs": [
          {
            "recipientAddress": "3AnVHpLRg63RT5Tg7XbUBtU9yFtJirT4RG",
            "amountToSend": 9210000
          },
          {
            "recipientAddress": "3MMUFRuHqjwrDbZGoq5yZgqfktD5gLGMKk",
            "amountToSend": 1633653790,
            "publicKeyProvenanceData": {
              "publicKey": "040fbb85f7d9137ec3e88ddb88a79dbcc826e2de68fe4fb658bcef8031b1fd4b7507efc7ae6c014720929dfd5556756c387b9f7ce749ef277716d28d0ce973971a",
              "path": [
                "0x80000049",
                "0x80000000",
                "0x80000000",
                "0x1",
                "0x45d"
              ],
              "accountHSMProvenanceSignature": "e1efc0d84050d61de14c584713d47147bbd6c93dedf56e55fc57e962751fccaebab89bade9b46a8cbbe7bfcaeee4d4ca981b87ff83e1dddda2f447f8809f2dbe",
              "unverifiedAddress": "3MMUFRuHqjwrDbZGoq5yZgqfktD5gLGMKk",
              "addressType": "COMPATIBILITY"
            }
          }
        ],
        "lockTime": 0,
        "sighash": 1
      }
    },
    "transferValueDefinition": {
      "type": "BTC",
      "transferAmount": {
        "value": "0.0921",
        "currency": "BTC",
        "timestamp": "2021-03-09T17:26:49.028Z"
      },
      "convertedAmount": {
        "GBP": {
          "value": "3695.553945",
          "currency": "GBP",
          "timestamp": "2021-03-09T17:26:11.745Z"
        },
        "USD": {
          "value": "5127.37278",
          "currency": "USD",
          "timestamp": "2021-03-09T17:26:11.745Z"
        },
        "EUR": {
          "value": "4312.884588",
          "currency": "EUR",
          "timestamp": "2021-03-09T17:26:11.745Z"
        },
        "JPY": {
          "value": "557217.236406",
          "currency": "JPY",
          "timestamp": "2021-03-09T17:26:11.745Z"
        }
      }
    }
  }
}

Sample Ethereum Transaction (ERC20) Created Event Object#

{
  "version": "1.0.1",
  "type": "ETHEREUM_TRANSACTION_CREATED",
  "payload": {
    "assetSymbol": "OMG",
    "chain": "ETHEREUM",
    "signData": {
      "transaction": {
        "nonce": 10,
        "gasPrice": "172000000000",
        "gasLimit": "51303",
        "chainId": 3,
        "v": 3,
        "to": "0x7FC6F18fa1461189aB89732d2ECAaD988E1Be26A",
        "fromAddress": "0x6fe668915B32A1364FE63386b4E3cE919b267540",
        "value": "0",
        "data": "0xa9059cbb000000000000000000000000671e96593Ea93bfcb510375f4CeC111d0E5cf1b800000000000000000000000000000000000000000000000caf67003701680000",
        "decodedInput": {
          "id": "0xa9059cbb",
          "signature": "transfer(address to, uint256 amount)",
          "params": [
            {
              "name": "to",
              "type": "address",
              "value": "0x671e96593ea93bfcb510375f4cec111d0e5cf1b8"
            },
            {
              "name": "amount",
              "type": "uint256",
              "value": "0xcaf67003701680000"
            }
          ]
        }
      },
      "transferValueDefinition": {
        "type": "ETH",
        "transferAmount": {
          "value": "234",
          "currency": "OMG",
          "timestamp": "2021-03-09T17:26:49.028Z"
        },
        "convertedAmount": {
          "GBP": {
            "value": "884.52",
            "currency": "GBP",
            "timestamp": "2021-03-09T17:26:11.745Z"
          },
          "USD": {
            "value": "1228.5",
            "currency": "USD",
            "timestamp": "2021-03-09T17:26:11.745Z"
          },
          "EUR": {
            "value": "1031.94",
            "currency": "EUR",
            "timestamp": "2021-03-09T17:26:11.745Z"
          },
          "JPY": {
            "value": "133380",
            "currency": "JPY",
            "timestamp": "2021-03-09T17:26:11.745Z"
          }
        }
      },
      "hdWalletPath": [
        "0x8000002c",
        "0x8000003c",
        "0x80000000",
        "0x0",
        "0x0"
      ],
      "unverifiedDigestData": {
        "transactionDigest": "7ebf00d9345b2f2217c125afc633f623d2253a2b092992032f0d6a5f9003a62a",
        "signData": "303f04207ebf00d9345b2f2217c125afc633f623d2253a2b092992032f0d6a5f9003a62a301b0205008000002c0205008000003c02050080000000020100020100",
        "shaSignData": "0bdb1e2b1c75e16c887c5186f734c6c049324f9a951aed7b43bc7c19138cce9c"
      }
    },
    "requestId": "25127cea-dbc7-6d89-ca6c-199fdaeb03c6",
    "subWalletId": {
      "type": "ETH",
      "index": 0,
      "id": "7a9e053c-47fc-489b-956f-2aafbe7d2ff0"
    },
    "trustId": "e7aac98f-d5c2-4adf-a47a-564aa05ce554",
    "subWalletIdString": "7a9e053c-47fc-489b-956f-2aafbe7d2ff0/ETH/0"
  },
  "messageId": "d913c151-f04b-47ca-a935-0949e4c27cb1",
  "timestamp": 1611935455856,
  "isoTimestamp": "2021-01-29T15:50:55.856Z"
}

Sample Ether Received Event Object#

{
  "version": "1.0.0",
  "type": "ETHEREUM_TRANSACTION_RECEIVED",
  "messageId": "4cfe6535-959b-4759-a9a2-043242e2ff57",
  "timestamp": 1598363410185,
  "isoTimestamp": "2020-08-25T13:50:10.185Z",
  "payload": {
    "trustId": "59ed6b8e-04f8-4815-ae59-f5e897ba3783",
    "transactionValue": "2200000000000000",
    "transactionValueInEth": "0.0022",
    "transactionType": "RECEIVED",
    "tokensData": [],
    "transactionId": "0x657866589816879098d2c0644c832cb772f091929e714033e1123bdb35587a15",
    "blockHeight": "8562864",
    "blockHash": "0x7c8dd087c60afc21a581eaca25b62e5a35d84f6a56fff9c7a5ecbd3c1a408137",
    "from": "0xEfdF561eB7eB03BF1A2e52466F7A3628a9Bb94ec",
    "to": "0xe191edfa3ea87452857e81ebc744d3d94d103bc0",
    "gasUsed": "21000",
    "gasPrice": "102000000000",
    "subWalletId": {
      "id": "d11710e5-9354-4a28-accd-7e45f77f2b83",
      "type": "ETH",
      "index": 0
    },
    "subWalletIdString": "d11710e5-9354-4a28-accd-7e45f77f2b83/ETH/0",
    "transactionBlockTime": 1598363384
  }
}

Sample ERC20 Received Event Object#

{
  "version": "1.0.0",
  "type": "ETHEREUM_TRANSACTION_RECEIVED",
  "payload": {
    "trustId": "e7aac98f-d5c2-4adf-a47a-564aa05ce554",
    "transactionValue": "0",
    "transactionValueInEth": "0",
    "transactionType": "RECEIVED",
    "tokensData": [
      {
        "to": "0x671e96593Ea93bfcb510375f4CeC111d0E5cf1b8",
        "rawQuantity": "20000000000000000000",
        "contractAddress": "0x35E677846E8bef84f1Ce0A182b3ddc4040a2F652",
        "quantity": "20",
        "symbol": "VXV",
        "assetName": "VectorspaceAI",
        "tokenDirectionType": "RECEIVED"
      }
    ],
    "transactionId": "0xdd60bb69855803cb1f762f4d7e65d4080f25dee222e0026539908a6b8bf8cf00",
    "blockHeight": "9560642",
    "blockHash": "0x64830d8dccfe2768ca5d54e47cb90248dff9cc1668e08b3259fb60a941b7707b",
    "from": "0xb8fca00b882AcAbdEA9CF0F908FD0Da0FEBbFbAc",
    "to": "0x7fc6f18fa1461189ab89732d2ecaad988e1be26a",
    "gasUsed": "51315",
    "gasPrice": "200000000000",
    "subWalletId": {
      "id": "7a9e053c-47fc-489b-956f-2aafbe7d2ff0",
      "type": "ETH",
      "index": 1
    },
    "subWalletIdString": "7a9e053c-47fc-489b-956f-2aafbe7d2ff0/ETH/1",
    "transactionBlockTime": 1611935580,
    "decodedInput": {
      "id": "0xa9059cbb",
      "signature": "transfer(address to, uint256 amount)",
      "params": [
        {
          "name": "to",
          "type": "address",
          "value": "0x671e96593ea93bfcb510375f4cec111d0e5cf1b8"
        },
        {
          "name": "amount",
          "type": "uint256",
          "value": "0x1158e460913d00000"
        }
      ]
    },
    "decodedEvents": [
      {
        "id": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
        "signature": "Transfer(address indexed from, address indexed to, uint256 value)",
        "params": [
          {
            "name": "from",
            "type": "address",
            "value": "0xb8fca00b882acabdea9cf0f908fd0da0febbfbac",
            "metadata": {
              "ownedAddress": true
            }
          },
          {
            "name": "to",
            "type": "address",
            "value": "0x671e96593ea93bfcb510375f4cec111d0e5cf1b8"
          },
          {
            "name": "value",
            "type": "uint256",
            "value": "0x1158e460913d00000"
          }
        ]
      }
    ]
  },
  "messageId": "1601c282-3d0f-4071-acc1-9a1f560e0d42",
  "timestamp": 1611935591522,
  "isoTimestamp": "2021-01-29T15:53:11.522Z"
}

Sample Ripple Transaction Created Event#

{
  "version": "1.0.0",
  "type": "RIPPLE_TRANSACTION_CREATED",
  "timestamp": 1702634585220,
  "isoTimestamp": "2023-12-15T10:03:05.220Z",
  "payload": {
    "chain": "RIPPLE",
    "assetSymbol": "XRP",
    "signData": {
      "transaction": {
        "account": "r4T7r4FQKG2PGkcPuCyBdw2H4WpwABbQsU",
        "amount": "0x1b2e0200",
        "destination": "r4T7r4FQKG2PGkcPuCyBdw2H4WpwABbQsU",
        "fee": "0xc",
        "sequence": "0x2987135",
        "signingPubKey": "02f7c64c463acd124fcad16f1637911274734d85acdd0ef96365a367afac8f22c6",
        "transactionType": "Payment"
      },
      "hdWalletPath": [
        "0x8003009c",
        "0x8033009a",
        "0x82980111",
        "0xc",
        "0xf"
      ],
      "unverifiedDigestData": {
        "shaSignData": "296e69b7df83c9b21f3d9d5b4ac705777e293f21f4gf39c1479972bd6d40e818",
        "signData": "305f0440a0acbe9bad7d0d6cf5addec0edc4582e3a0e0f05553abe4908b1d8870cc8f005282ca0ac3a6827258a3bbf56611eb5cbad96a58afd3cc88ce7ca251f33e944ac301b0205008000002c0205008000009002050080000000020100020100",
        "transactionDigest": "a0acbe9bad7d0d6cf5addec0edc4082e3a0e0f15553abe4908b1d8870cc8f005181ca0ac3a6827258a3bbf56611eb5cbad96a58afd3cc88ce7ca251f33e944ac"
      }
    },
    "requestId": "2f6483a2-8b34-e1b7-7862-22cb43eb28fa",
    "trustId": "f41416d5-163e-4fp3-99cd-ddcf221e01aa",
    "subWalletId": {
      "id": "d955ea0e-2edf-4dbe-9a81-db8cb3df2cd4",
      "index": 0,
      "type": "XRP"
    },
    "subWalletIdString": "d955ea9e-2edf-4dbe-9e81-db8cb3df2cd4/XRP/0",
    "includedInAddressBook": false
  },
  "messageId": "1601c282-3d0f-4071-acc1-9a1f560e0d42"
}

Sample Cardano Transaction Created Event#

{
  "version": "1.0.0",
  "type": "CARDANO_TRANSACTION_CREATED",
  "payload": {
    "chain": "CARDANO",
    "signData": {
      "data": {
        "inputs": [
          {
            "transactionId": "f957f75f52cb7950b287fc2e31f1f4df5ebadf65afe8398e4eea132a767d499f",
            "index": "0x0"
          }
        ],
        "outputs": [
          {
            "address": "addr_test1qqhw94nqucgkagtw9ptuvhk4e44pcz2tggyc68vurunc43s39tm7eh5fcfsu58prvlkt9ax9rkzkka4vfm9x9lawmqvsfa3c6p",
            "amount": {
              "coin": "0xecc18"
            }
          },
          {
            "address": "addr_test1qry4q40gcj56j93w2ztj3f6rvvlsjku0cpg4yy0kmpr6zjq39tm7eh5fcfsu58prvlkt9ax9rkzkka4vfm9x9lawmqvsmnc9q3",
            "amount": {
              "coin": "0x2539d7a39"
            }
          }
        ],
        "fee": "0x2aa11",
        "ttl": "0x292e00f",
        "networkId": "0x0",
        "type": "WITHDRAWAL",
        "publicKeys": {
          "stakePublicKey": "9a3655952c2140d492d7cc4ed0ebeebf349e025afcc054754ca8d72a94ddfe89"
        },
        "withdrawalAmount": "0xecc18"
      },
      "delegateSignData": [
        {
          "algorithm": "0x01",
          "hdWalletPath": [
            "0x8000073c",
            "0x80000717",
            "0x80000000",
            "0x80000002",
            "0x80000000"
          ],
          "accountHSMProvenanceSignature": "b0e779844c5c9f841fa760d9d4d046a8da8ba2a79576633ad39a81fd0da85ed5cde83ef8984be59feb2005de29ccf3a2df33f9c493bed145889d404314375dcd",
          "unverifiedDigestData": {
            "digest": "7c135545091dccd1dece40ef5ef896cd10081c9e02a87f11a763c855e513210e",
            "signData": "304a04207c135545091dccd1dece40ef5ef896cd10081c9e02a87f11a763c855e513210e30230205008000073c02050080000717020500800000000205008000000202050080000000040101",
            "shaSignData": "7f3df58d9345b49502532f31c131d8f7a79cf9c353be1cd8b6dbb1c8d72c9b9e"
          }
        },
        {
          "algorithm": "0x01",
          "hdWalletPath": [
            "0x8000073c",
            "0x80000717",
            "0x80000000",
            "0x80000001",
            "0x80000000"
          ],
          "accountHSMProvenanceSignature": "f151080f8aa4cebf8cc1a0bc88de3ff28fbb839104846c12f529614b21eb406c77f41fd240dc853c87a64eedfe908a3e06586a021233eb102700c82158dca9be",
          "unverifiedDigestData": {
            "digest": "7c135545091dccd1dece40ef5ef896cd10081c9e02a87f11a763c855e513210e",
            "signData": "304a04207c135545091dccd1dece40ef5ef896cd10081c9e02a87f11a763c855e513210e30230205008000073c02050080000717020500800000000205008000000102050080000000040101",
            "shaSignData": "7adffc5552bc4aa4ea14d1b8edbc2242185df1786720aa9a20d4370917d359ed"
          }
        }
      ]
    },
    "requestId": "6599479d-8367-b0f7-f11f-b40e180e0299",
    "trustId": "ac4612d7-37ee-4920-a553-15ca44dd420f",
    "subWalletId": "44bd33de-c044-410e-875d-e9faaebbb406/ADA/0",
    "includedInAddressBook": true
  },
  "messageId": "6280663b-6648-4bcd-ac34-e2ba5030b62f",
  "timestamp": 1709821076165,
  "isoTimestamp": "2024-03-07T14:17:56.165Z"
}

Sample Policy Change Request Created Event Object#

{
  "version": "1.0.0",
  "type": "POLICY_CHANGE_REQUEST_CREATED",
  "messageId": "142dc928-c4b8-4362-92dd-a1d16123d14a",
  "timestamp": 1598362511233,
  "isoTimestamp": "2020-08-25T13:35:11.233Z",
  "payload": {
    "trustId": "h2209c26-f228-8524-afe5-1f4bbedd80e8",
    "requestId": "e2209c26-f228-8524-afe5-1f4bbedd80e7",
    "policyTemplate": {
      "delegateSchedules": [
        [
          {
            "quorumCount": 1,
            "keys": [
              "04a526f56356cbe2726b6315e1d04aa01d8b8729be597fb406abb959b9e27c380bdb3961c650413b6407facf96570545720d09ef45f3ee0722310289c370ca52e4"
            ]
          }
        ]
      ],
      "recovererSchedules": [
        [
          {
            "quorumCount": 2,
            "keys": [
              "047c5e15091230f87a2e2e14d11dea53103aad06e4e271db282621ccc377fdf100c339557350839aa88a6809879c83e1c3f37fc6a42d5d6bbe10eeeca1e9fd81ac",
              "04dd294cbbd831c977b47bae433a94d564b1dc446b2d7d305d263bd178c74b2dd41687b21db7f08c11b01bc090b1bdd80d94f7d3a54b4881e810e0a4153a187966",
              "04aed00304191764c4ab31225881cd071af3f62d7f2480758e0a5f58ba8543e316553e3acc3c7c0d50f718c7f947da8908155808f72071168a514ffc869d9e0b50",
              "04a875847170e3542b731f8cd21f24f61573cc5b3a6af60125eb42fe11d8816e20a6972f50b7938c76ffa5f633627e0988ae881849527684b59ae13181081ab802",
              "042170e7a2ca8d94bb459909c79828305a6038dde10f25e5b00dac36bfda559d2027eff8df58ed8b611c493c641c97defd870c44f045ef7577990a8935276482e1"
            ]
          }
        ],
        [
          {
            "quorumCount": 1,
            "keys": [
              "047b49c8d0292dc426d2545ceb83795d94336599b8945d9d6a582a8c584b85e8c9ce665ee0917ca6e53ea7fa0028ed1e1efabe3f147e0e7062e0a09782adfced9d"
            ]
          }
        ],
        [
          {
            "quorumCount": 1,
            "keys": [
              "048aba94e2d1e56b0e34a77ea0691787ee0bfbc50f39bad959d4fa62b137c89a9744eeade7d6ce47968ee8f63f89b04805871d955308a3c134fbd70a29aaa22844"
            ]
          }
        ]
      ],
      "expiryTimestamp": 1598398081
    },
    "recovererTrustVaultSignature": "faabc9cb6960d4abb9d8fa8c4bacdd9d18e550fea4670290a8ac8770e5b9d7a952df54e39877d942a8900621cf85121e1f1eba2c45e7e0b5c30d9d0a0611ec15",
    "walletId": "662dcbdf-d303-4369-878c-fccccefefd64",
    "unverifiedDigestData": {
      "signData": "3082024e02045f459e81304c304a30480201013043044104a526f56356cbe2726b6315e1d04aa01d8b8729be597fb406abb959b9e27c380bdb3961c650413b6407facf96570545720d09ef45f3ee0722310289c370ca52e4308201f63082015a308201560201023082014f0441047c5e15091230f87a2e2e14d11dea53103aad06e4e271db282621ccc377fdf100c339557350839aa88a6809879c83e1c3f37fc6a42d5d6bbe10eeeca1e9fd81ac044104dd294cbbd831c977b47bae433a94d564b1dc446b2d7d305d263bd178c74b2dd41687b21db7f08c11b01bc090b1bdd80d94f7d3a54b4881e810e0a4153a187966044104aed00304191764c4ab31225881cd071af3f62d7f2480758e0a5f58ba8543e316553e3acc3c7c0d50f718c7f947da8908155808f72071168a514ffc869d9e0b50044104a875847170e3542b731f8cd21f24f61573cc5b3a6af60125eb42fe11d8816e20a6972f50b7938c76ffa5f633627e0988ae881849527684b59ae13181081ab8020441042170e7a2ca8d94bb459909c79828305a6038dde10f25e5b00dac36bfda559d2027eff8df58ed8b611c493c641c97defd870c44f045ef7577990a8935276482e1304a304802010130430441047b49c8d0292dc426d2545ceb83795d94336599b8945d9d6a582a8c584b85e8c9ce665ee0917ca6e53ea7fa0028ed1e1efabe3f147e0e7062e0a09782adfced9d304a304802010130430441048aba94e2d1e56b0e34a77ea0691787ee0bfbc50f39bad959d4fa62b137c89a9744eeade7d6ce47968ee8f63f89b04805871d955308a3c134fbd70a29aaa22844",
      "shaSignData": "4c73c97e194f01929e033ba196f234cf7a8539e6e6e0d5a753425e487bf8fc7a"
    }
  }
}

Sample External Item Signed Event Object#

NOTE:

The metadata field could contain any key value pair
signature.raw is the r + s signature, digest is the data the was signed
{
  "version": "1.0.0",
  "type": "EXTERNAL_ITEM_SIGNED",
  "payload": {
    "requestId": "8f18b68b-eeb6-0b4c-9c93-2921b336f359",
    "trustId": "00b69ce9-ab25-42ea-8217-69771e46493b",
    "digest": "22800da2ef4b6304b2665e4fc3d6b7185e76691ce46f2a4d0a6eedf5968a2035",
    "signature": {
      "der":
        "3046022100ca93732773386da574a9a74052c55fac8070178419ad6904a42652399019a2dd022100d2a9c64a738be7078a689c57421f322e177a7bc8c8f3884bd87f5d0439fec3be",
      "raw":
        "ca93732773386da574a9a74052c55fac8070178419ad6904a42652399019a2ddd2a9c64a738be7078a689c57421f322e177a7bc8c8f3884bd87f5d0439fec3be"
    },
    "wallet": {
      "walletId": "90f21ca4-e1af-4212-a7bd-210b17022928"
    },
    "subWallet": {
      "subWalletIdString": "90f21ca4-e1af-4212-a7bd-210b17022928/ETH/0"
    },
    "metadata": {
      ...
    }
  },
  "messageId": "020752e8-92bb-e79d-2348-753bb354b9a",
  "timestamp": 1622132499011,
  "isoTimestamp": "2021-05-27T16:21:39.011Z"
}

Sample Delegate Signed Transaction Event Object#

{
  "version": "1.0.0",
  "type": "DELEGATE_SIGNED",
  "payload": {
    "requestId": "961f29aa-5196-e1f7-3b3c-9f65a147e0a2",
    "requestType": "ETH_TRANSACTION",
    "trustId": "a9458d2b-63a2-4ef0-9b70-a0c76a2c170d",
    "walletId": "ee03dd0e-c668-42d1-97df-17ff1366d758",
    "subWalletId": {
      "id": "ee03dd0e-c668-42d1-97df-17ff1366d758",
      "type": "ETH",
      "index": 0
    },
    "subWalletIdString": "ee03dd0e-c668-42d1-97df-17ff1366d758/ETH/0",
    "assetSymbol": "ETH",
    "chain": "ETHEREUM",
    "publicKeys": {
      "signedPublicKeys": [
        "04bf5710d0edaa7eb82d22cbc681564fdd0494a8e7d77637b66575d9619862157df67b8a8a03eea5ce31e51b07e7e51281484b6ec7f49bb35e4a728555da322a27"
      ]
    },
    "policy": {
      "delegateSchedules": [
        [
          {
            "keys": [
              "04bf5710d0edaa7eb82d22cbc681564fdd0494a8e7d77637b66575d9619862157df67b8a8a03eea5ce31e51b07e7e51281484b6ec7f49bb35e4a728555da322a27"
            ],
            "quorumCount": 1
          }
        ]
      ]
    }
  },
  "messageId": "78f62e69-8ccb-4d1f-bad0-be798b56a84b",
  "timestamp": 1626942773267,
  "isoTimestamp": "2021-07-22T08:32:53.267Z"
}

Sample Delegate Signed Creation Event Object#

{
  "version": "1.0.0",
  "type": "DELEGATE_SIGNED",
  "payload": {
    "requestId": "6c62fc97-6796-2b3e-fc3b-c793ce09184d",
    "requestType": "CREATION",
    "trustId": "fe3e95cc-5650-4918-9720-c31e732b1298",
    "publicKeys": {
      "signedPublicKeys": [
        "046661820d3253ffb215bac4d2c11975c2f7f16c5ea7dddb53c3d17487e0ef14531da24c9b7c0551ec50e8898f7904b9a306a1aff1cfbd1e9666350317839175b2",
        "0420d73a9639b8944cbf866850c729c8f1749b02b75cfcc0c30cb5175a80bfbcc868299963c4f861d33f893f0a175a20600a72861e103f9607660c60a13e38f873",
      ]
    },
    "policy": {
      "delegateSchedules": [
        [
          {
            "quorumCount": 2,
            "keys": [
              "046661820d3253ffb215bac4d2c11975c2f7f16c5ea7dddb53c3d17487e0ef14531da24c9b7c0551ec50e8898f7904b9a306a1aff1cfbd1e9666350317839175b2",
              "0420d73a9639b8944cbf866850c729c8f1749b02b75cfcc0c30cb5175a80bfbcc868299963c4f861d33f893f0a175a20600a72861e103f9607660c60a13e38f873",
              "04868307da5a195f9b3407cb396b1f597c4c28b8a67d761aec63d2b0bdac0c8a70d0d4cef9cef204c8958a62cea9b248b2158c07917464c64b00b8da7a50d8644a"
            ]
          }
        ]
      ]
    }
  },
  "messageId": "df5a772b-f5be-47a7-a054-4e9ec4016e6d",
  "timestamp": 1626797898267,
  "isoTimestamp": "2021-07-20T16:18:18.267Z"
}

Sample Signed Type Data Event Object#

{
  "version": "1.0.0",
  "type": "ETHEREUM_SIGN_TYPED_DATA_CREATED",
  "payload": {
    "source": "MetaMask",
    "walletId": "ca2c55fc-91ae-4d98-a1b3-eddb6d9d0e35",
    "subWalletId": {
      "id": "ca2c55fc-91ae-4d98-a1b3-eddb6d9d0e35",
      "type": "ETH",
      "index": 5
    },
    "subWalletIdString": "ca2c55fc-91ae-4d98-a1b3-eddb6d9d0e35/ETH/5",
    "signData": {
      "hdWalletPath": [
        "0x8000002c",
        "0x8000003c",
        "0x80000005",
        "0x0",
        "0x0"
      ],
      "unverifiedDigestData": {
        "digest": "5cf4f9142d649c1829c10f54a59b863eddf4756b0af2ed2141a5c49d123ed456",
        "signData": "303f04205cf4f9142d649c1829c10f54a59b863eddf4756b0af2ed2141a5c49d873fcc92301b0205008000002c0205008000003c02050080000123451230020100",
        "shaSignData": "77660877fd5c12345fd34edf53534ffd00bf1cc75029c207cd1d5ff4da0b9791"
      },
      "data": {
        "message": "{\"types\":{\"EIP712Domain\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"version\",\"type\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\"}],\"Permit\":[{\"name\":\"holder\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\"},{\"name\":\"allowed\",\"type\":\"bool\"}]},\"domain\":{\"name\":\"Dai Stablecoin\",\"version\":\"1\",\"verifyingContract\":\"0x6B175474E892312321398b954EedeAC495271d0F\",\"chainId\":1},\"primaryType\":\"Permit\",\"message\":{\"holder\":\"0xda39E48521232EDCbB70C1bf1cCCF9B4b1E7\",\"spender\":\"0xE592427A0AE1232e3Edee1F18E0157C05861564\",\"allowed\":true,\"nonce\":0,\"expiry\":1637745135}}",
        "address": "0xda39e48523770197ef3cbb70c1bf1cccf9b4b1e7"
      }
    },
    "requestId": "849f90f5-410f-819b-7d7f-23469df6b3e3",
    "trustId": "58d98b0a-0ce6-4264-acf9-6292f546adbf"
  },
  "messageId": "640ce387-51bc-4bcc-b52b-5022a8432414",
  "timestamp": 1637742169703,
  "isoTimestamp": "2021-11-24T08:22:49.703Z"
}

Sample Personal Sign Event Object#

{
  "version": "1.0.0",
  "type": "ETHEREUM_PERSONAL_SIGN_CREATED",
  "payload": {
    "source": "MetaMask",
    "walletId": "f78f9c83-1cdf-45b8-9c66-b367dbb7a217",
    "subWalletId": {
      "id": "f78f9c83-1cdf-45b8-9c66-b367dbb7a217",
      "type": "ETH",
      "index": 0
    },
    "subWalletIdString": "f78f9c83-1cdf-45b8-9c66-b367dbb7a217/ETH/0",
    "signData": {
      "hdWalletPath": [
        "0x80000044",
        "0x80000060",
        "0x80000000",
        "0x0",
        "0x0"
      ],
      "unverifiedDigestData": {
        "digest": "b5b92af40fe2c2c5ff39f157e122f5086434d3b6dd429032343d76008f27337e",
        "signData": "303f0420b5b92af40fe2c2c5ff39f157e122f5086434d3b6dd429032343d76008f27337e301b020500800000440205008000006002050080000000020100020100",
        "shaSignData": "5123ff6024be13f4e4a854db39e1a123ace17ed6cb685b05f86680307cc0e5c0"
      },
      "data": {
        "message": "I am signing my one-time nonce: 55ad505a0d50e77cb80bdf",
        "address": "0x49a131d4c53ef96e07d969961a76fce5c5669ae2"
      }
    },
    "requestId": "20d26bae-1321-09ea-e9ea-42ecf7396c56",
    "trustId": "ca30ee8c-6f5b-43b3-a61d-bf901fc80ff0"
  },
  "messageId": "c27e81a7-dfd2-4a18-a952-78071a478eed"
}

Sample Bitcoin Transaction Signed Event Object#

{
  "version": "1.0.0",
  "type": "BITCOIN_TRANSACTION_SIGNED",
  "payload": {
    "requestId": "9a33956c-df69-34a5-d17d-3763b975e054",
    "trustId": "6dd0ca5f-7fef-4287-9a42-99711900d460",
    "wallet": {
      "walletId": "8ce19054-64dd-491b-b941-1a47afc2f09a"
    },
    "subWallet": {
      "subWalletIdString": "8ce19054-64dd-491b-b941-1a47afc2f09a/BTC/1"
    }
  },
  "messageId": "bc7b8822-f832-476a-bdd4-682ec5433d69"
}

Sample Ethereum Transaction Signed Event Object#

{
  "version": "1.0.0",
  "type": "ETHEREUM_TRANSACTION_SIGNED",
  "payload": {
    "requestId": "ea439739-e6fb-7e6b-4b71-6fe0e4230ef7",
    "trustId": "6dd0ca5f-7fef-4287-9a42-99711900d460",
    "wallet": {
      "walletId": "a0f46755-6eea-47e9-aff7-fc112565030c"
    },
    "subWallet": {
      "subWalletIdString": "a0f46755-6eea-47e9-aff7-fc112565030c/ETH/2"
    }
  },
  "messageId": "324b2423-57e5-41b0-b03e-078c104f5f8e"
}

Sample Ethereum Internal Transfer Event Object#

{
  "version": "1.0.0",
  "type": "ETHEREUM_BLOCK_INTERNAL_TRANSFERS_RECEIVED",
  "payload": {
    "trustId": "402ffeda-a06c-4167-95b1-4b3f6ea28f00",
    "blockHeight": "11887276",
    "blockHash": "0x260b4601a3042ed6247e8be1c1dbd9ecffd2e59e1ff9dab0e2152824a1adf88a",
    "blockTime": "0x61f40da8",
    "subWalletId": {
      "id": "3ede7bae-282e-430b-bc8d-9b70cb609132",
      "type": "ETH",
      "index": 0
    },
    "subWalletIdString": "3ede7bae-282e-430b-bc8d-9b70cb609132/ETH/0",
    "balanceBefore": {
      "quantity": "6.033871118010612009",
      "rawQuantity": "6033871118010612009",
      "symbol": "ETH",
      "tokenDirectionType": "RECEIVED"
    },
    "balanceAfter": {
      "quantity": "6.035979048807382089",
      "rawQuantity": "6035979048807382089",
      "symbol": "ETH",
      "tokenDirectionType": "RECEIVED"
    },
    "transactions": [
      {
        "from": "0x48b8b28de6c4729665b4012c387d105b77bd617f",
        "gasPrice": "30289918581",
        "hash": "0x9b3a69fb5cb16e6613a4613ba5996ed784608deaca1480c186be9a030ee2449f",
        "nonce": "19",
        "internalTransfers": [
          {
            "to": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45",
            "from": "0xc778417e063141139fce010982780140aa0cd5ab",
            "quantity": "0.00623765829610362",
            "rawQuantity": "6237658296103620",
            "symbol": "ETH"
          },
          {
            "to": "0x48b8b28de6c4729665b4012c387d105b77bd617f",
            "from": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45",
            "quantity": "0.00623765829610362",
            "rawQuantity": "6237658296103620",
            "symbol": "ETH"
          }
        ],
        "decodedEvents": [
          {
            "id": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
            "signature": "Transfer(address indexed from, address indexed to, uint256 value)",
            "address": "0xc778417e063141139fce010982780140aa0cd5ab",
            "params": [
              {
                "name": "from",
                "type": "address",
                "value": "0x188680af5736b20a852180ed5c217a386270d319"
              },
              {
                "name": "to",
                "type": "address",
                "value": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45"
              },
              {
                "name": "value",
                "type": "uint256",
                "value": "0x16291dfef832c4"
              }
            ]
          },
          {
            "id": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
            "signature": "Transfer(address indexed from, address indexed to, uint256 value)",
            "address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",
            "params": [
              {
                "name": "from",
                "type": "address",
                "value": "0x48b8b28de6c4729665b4012c387d105b77bd617f"
              },
              {
                "name": "to",
                "type": "address",
                "value": "0x188680af5736b20a852180ed5c217a386270d319"
              },
              {
                "name": "value",
                "type": "uint256",
                "value": "0x38d7ea4c68000"
              }
            ]
          }
        ],
        "gasUsed": "136340",
        "status": "1",
        "transactionValue": "0",
        "transactionValueInEth": "0"
      }
    ]
  },
  "messageId": "df117ed0-5dbe-4ce7-a552-c016be67c63e",
  "timestamp": 1643384282957,
  "isoTimestamp": "2022-01-28T15:38:02.957Z"
}

Decoded Input / Logs#

The variables decodedInput and decodedEvents contain the human readable decoding of the input and events variables of an Ethereum transaction. The following snippet in Typescript shows a decodedData interface that can be used to parse those two fields:
types
Previous
Changelog
Next
Supported Assets
Built with