Download OpenAPI specification:Download
Fireblocks is the digital asset infrastructure for 1,000s of the leading trading desks, hedge funds, broke rages, custodians, and banks. Through the Fireblocks Console, users connect and trade on over 30 exchanges. As part of an important inti ative, making sure that the end user still has complete control over his own asset Fireblocks offers the Off Exchange solution. This way , the end user can enjoy the various benefits of the exchange while avoiding the risk of a centralized malfunction.
To implement the collateral accounts functionality, an active Fireblocks/Exchange integration is needed. It is recommended to implement the Fireblocks Network Link to enable Fireblocks users to link exchange accounts to their Fireblocks’ workspaces.
The purpose of the Fireblocks collateral account is to enable a middle ground for Traders and Exchanges where Traders assets are not stored in Exchange’s private ledger, yet the exchange get the comfort to lend against the collateral account assets, by having the collateral assets locked by Fireblocks, preventing the Trader from removing collateral assets without getting Exchange confirmation first.
Fireblocks enables any user to link exchange accounts to their workspace. Once an exchange account is linked to Fireblocks, the user can at least view the account balance, and deposit and withdraw assets directly from the Fireblocks workspace.
For the collateral assets, Fireblocks will open a dedicated Vault Account which will be called Collateral Vault Account (CVA). Any assets added to the CVA will be locked by the Fireblocks Policy and removing collateral assets from the CVA will require exchange’s confirmation.
Fireblocks users will be able to add collateral for main exchange accounts only (MEA).
There is a 1:1 relation between a CVA and a main exchange account (MEA).
The expected flow is for Traders to add collateral for a MEA, gain credit on their MEA balance, and then allocate assets to the various MEA child-accounts.
Exchanges need to track collateralId to an internal accountId and in case of an API key replacement, to respond to CVA initiation with the existing collateralId.
For settlements, Traders would need to transfer assets up to the MEA as settlements will be executed on the CVA and MEA balances only.
The collateral functionality should apply to any main exchange account of a customer that has enabled this functionality. Meaning, once a customer is eligible and onboarded, all the existing main exchange accounts of this customer should be enabled for gaining credit against CVA assets, while maintaining the usual deposit and withdrawal functionality.
We use the terms ‘add collateral’ and ‘remove collateral’ to distinguish between the CVA and the MEA. For the MEA, we keep referring with the usual deposit and withdraw terminology.
Please be aware that Fireblocks expect the deposits and withdrawals to and from the MEA to remain active and available for CVA-linked MEAs.
If a withdrawal from a MEA is denied due to outstanding MEA credit or customer-level credit, the exchange needs to respond with a ‘settlement is required’ note/status.
As mentioned, FB will send a POST request each time a collateral is added via the FB systems. The request will include the address/es to which the collateral assets are deposited. The Exchange needs to identify whether the address/es are new and if so then to add the new addresses to the CVA addresses list. FB will not supply TxID for adding collateral, as the Exchange is expected to monitor the on-chain transactions and to credit once completed, based on the exchange confirmation threshold and risk management engine.
Once a CVA is created for a MEA, Fireblocks will start presenting Traders with 3 types of exchange balance.
Initiation - we send Collateral ID and we want to get back a success with Collateral ID. If the API Key we use is of an account that already has a collateral ID, we want the success message to contain the existing collateral ID and we will not use the new one.
Settlement transactions are on-chain transactions. Exchange should estimate future fees once crediting a Trader account relying on the CVA locked assets.
Exchange A may choose to credit 1:1 (e.g 1 BTC credit for each 1 BTC in CVA), but to ask for settlements earlier than Exchange B that chooses to credit 0.8:1 in order to keep aside an amount to cover settlement transactions’ network fees.
Settlements that involve gas-powered assets transferred from a CVA to an exchange OTA, require the Trader to make sure there’s enough gas.
As a fallback, Exchange can deposit gas to the CVA by querying for the Ethereum address or any other base asset address.
At this time, Fireblocks will not manage gas stations for CVAs.
The identifier of the CVA is called ‘collateral ID’ and is represented as a series of 3 uuid4 formats separated with a . delimiter.
Fireblocks keeps a record of each exchange supported assets. On each deposit into the CVA, Fireblocks sends a POST call to the exchange with the address to which the asset is being deposited, the name of the asset and network as the exchange defined them, and the unique fireblocksAssetId which the exchange needs to track in order to communicate with Fireblocks about this asset.
Fireblocks will not allow users to add unsupported assets as collateral. A caveat to that rule is that a user may transfer funds to a CVA not via the Fireblocks UI/API. In that case, the exchange would not get a POST ‘address’, and may ignore that deposit, not credit against it, and confirm its removal once asked for.
Assets that Fireblocks do not support cannot be included in settlements. If a non-supported asset is at the MEA and needs to settle, the exchange wouldn't be able to include it in the settlement as there isn’t any Fireblocks Asset Id for assets that Fireblocks do not support.
As settlement transactions are on-chain transactions, frequency based settlements are not recommended, to minimize network fees. Instead, the best practice for exchanges to trigger settlements would be based on the value difference between the CVA assets and the total exchange account value (including unrealised P&L). Traders may trigger settlements after spot trading where the value difference may be minimal, but for the exchange-side settlement-logic, risk appetite for a specific
The following description is for the available auto-sign mechanism for settlement transactions that customers do not respond to.
Exchanges can choose to require some or all customers to create an API-based user in the Collaterals Workspace, for the exchange to run on an exchange owned and operated machine. This is a user from a Collaterals Signer role, which is limited, cannot fetch balances, cannot initiate transactions, but can sign some settlement transactions as described below.
If a customer does not sign and does not deny settlement transactions during the SLA that was defined by the exchange for the customers to respond to settlement transactions, then at the end of this SLA time, these transactions which the customer did not sign nor deny, will be sent by Fireblocks to the exchange Collaterals Signer user to be automatically signed.
No development is required, only operations of deploying and running a machine for the Collaterals Signer user to be online ready to sign transactions if needed.
Customers can create a Collaterals Signer user after getting a CSR from the exchange.
If customers deny a settlement transaction, the denied transaction will not be sent to the Collaterals Signer for auto-sign.
For exchanges that want to prevent continuous ‘deny’ situations with customers, Fireblocks enables the Forced Settlement flow, which like the Auto-sign flow, requires the exchange to run a Collaterals Signer machine.
At the end of the Auto-sign SLA, if customers have denied some or all of the settlement transactions, the exchange can mark the settlement as a Forced Settlement candidate. We strongly recommend the exchange to contact the customer and get to an agreed upon settlement terms, Fireblocks will anyway alert the customer about any settlement that is being marked for enforcement.
Marking a settlement as a Forced Settlement candidate means that all of the non-completed transactions that were part of the settlement ID will be enforced. Per-transaction marking is not supported, but a new settlement can be created if as a result of discussing with the customer, some of the transactions from the original settlement have changed.
The marking is done by sending a PUT request to Fireblocks settlements/force endpoint, and can be done for the last settlement only. A request to mark a settlement ID which is not the last settlement ID created, will be failed. Once a settlement has been marked as a Forced Settlement candidate, no other settlement can be initiated before either the marking is canceled, or the Forced Settlement is completed. Only one settlement can be marked at a given time.
Once a settlement has been marked as a Forced Settlement candidate, Fireblocks stops Off-exchange operations (Add collateral, Remove collateral, GET/POST Settlement request from the customer).
Canceling the marking is done by sending a DEL request to Fireblocks settlements/force endpoint.
An Enforcement SLA should be set by the exchange and communicated to customers.
During the time between marking a settlement and forcing it at the end of the SLA, the exchange can get information about a marked settlement by sending a GET request to Fireblocks settlements/force endpoint.
At the end of the Enforcement SLA, the exchange can force all the non-completed transactions from the original settlement by sending a POST request to Fireblocks settlements/force endpoint. This request starts an asynchronous process. This request will not be answered before the following process ends. Once Fireblocks get the POST Force req, Fireblcoks send a POST request to the exchange on the settlements/force endpoint on the exchange side, with a list of the transactions to be created. If the exchange approves the transactions list, Fireblocks creates a new settlement ID, new transaction IDs, and those are included in the response to the POST request from the exchange that started this asynchronous process.
We will enable exchanges to mark the last settlement ID for up to 7 days since the settlement ID creation.
We will enable exchanges to force a settlement for up to 10 days since the settlement ID creation.
Contact your Fireblocks Sales Rep to list your exchange (partner) in the Fireblocks ecosystem. You will need to sign a licensing agreement for listing your exchange. Please note that an exchange listing license agreement is separate from a self-custody license agreement, and neither agreement is required to sign the other.
Once your license agreement for listing your exchange with Fireblocks is signed, the Fireblocks technical team will request the following partner registration settings:
To ensure a seamless onboarding process the off-exchange clients, we have developed an automation for creating the Collateral Signer user. This user is created right after the creation of a collateral workspace that will hold the CVAs. The creation process for the Collateral Signer user entails pairing it with a designated co-signer that runs on a Partner’s owned machine. This pairing procedure utilizes a user pairing token, which can be pulled from Fireblocks. Upon completion of the user creation process, Fireblocks will notify the Partner that a Collateral Signer user is ready, and its pairing token can be pulled. Afterwards, the pairing token can be added as a new Collateral Signer user to the Partner’s Collateral Signer machine.
Validation for Fireblocks events is done by validating the signature attached in the request header:
Fireblocks signs the eventbody with a private RSA key using the hash function SHA512.
Apply BASE64 encoding onto the signature result.
The Fireblocks server will look for a response to confirm the notification was received. All events should receive an HTTP-200 (OK) response. If no response is received, Fireblocks will resend the request several more times, the retry schedule (in seconds) is 15, 45, 105, 225, 465, 945, 1905, 3825, 7665, and 15345.
Fireblocks Verify Code Example
All requests will contain the following header:
Fireblocks-Signature The payload signature output:
Fireblocks-Signature: Base64(RSA512(_RSA_PRIVATE_KEY, SHA512(eventBody)))
Fireblocks supports the key/secret authentication for outgoing requests as with regular non off-exchange customer requests. In addition, RSA-4096 digital signature scheme will be used for sign and verification for all Fireblocks to Exchange Operations requests/responses. Important note: Authentication is an enhancement in the secure communication between Fireblocks and partners, utilized alongside user authentication for the exchange integration.
Create a prehash string {timestamp+nonce+method+endpoint+body}. Prehash string is not encoded (using a plain text).
[The request body is a JSON string and need to be the same with the parameters passed by the API]
Fireblocks signs the string with the company's private RSA key using the hash function SHA512.
Apply BASE64 encoding onto the signature result.
List of public keys per environment:
All requests will contain the following headers:
X-OFF-EXCHANGE-NONCE A unique reference to the request (Random GUID)
X-OFF-EXCHANGE-TIMESTAMP A timestamp of the request (in milliseconds)
X-OFF-EXCHANGE-SIGNATURE The payload signature output: Using Fireblocks private RSA key on the signature payload: {timestamp+nonce+method+endpoint+body}
X-OFF-EXCHANGE-SIGNATURE The payload signature output: Using partner private RSA key on the signature payload: {timestamp+nonce+method+endpoint+body} NOTE: The timestamp and nonce is the same as the request!
The following are the endpoints that Fireblocks can call against the exchange. Technical documentation can be seen under the endpoint description.
Exchange should a valid signed JWT in every request. The CSR that is correlated to the private key with which the JWTs are signed with, should be delivered to Fireblocks during the integration development process. Fireblocks will supply the exchange with an api key to use in the sub field of the JWT.
The following are the endpoints that the exchange can call against Fireblocks. Technical documentation can be seen under the endpoint description.
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
30 October 2024
20 September 2024
20 June 2024
5 March 2024
4 March 2024
id
renamed to forceSettlementId
initiator
was removedexchangeReply
was removedexchangeRequestedTransactions
was removed22 January 2024
2 January 2024
2 November 2023
7 July 2023
25 April 2023
17 April 2023
/v1/collateral/transactions/{collateralTxId}
/v1/collateral/settlements
13 Feb 2023
16 Jan 2023
16 Jan 2023
05 Jan 2023
status
field is now a boolean and not a string - indicating success and failure.collateralId
field in the response is a mandatory field in case of status
= true, added documentation.26 Dec 2022
transactionId
renamed to collateralTransactionId
25 Dec 2022
approved
renamed to status
was forgotten, fixedfee
isn't required for to_collateral
, removed requirement18 Dec 2022
approved
renamed to status
, contains an enum of options: APPROVED, DENIED, REPLACED.status
is REPLACED, a new field of collateralId
to set on the response.18 Dec 2022
to_collateral
and to_exchange
, they are now arrays of objects instead of just objects.to_collateral
and to_exchange
, they are now arrays of objects instead of just objects.sourceAddress
field can be null for to_collateral
.fireblocksStatus
field renamed to status
- field should show the status on the exchange's side.asset
field renamed to assets
- assets
is now an array of asset
.transactionId
is now a required field.destinationAddress
and destinationTag
.18 Dec 2022
Verifies with the exchange if the customer can create a collateral account. Each Collateral Account is linked to a corresponding Exchange Main Account.
X-OFF-EXCHANGE-NONCE | string (X-OFF-EXCHANGE-NONCE) Example: 8853b277-d5f5-4363-bf5f-633b735e1413 All Fireblocks to Exchange requests must include the X-OFF-EXCHANGE-NONCE header, a unique GUID string to the request being a reference for that request. |
X-OFF-EXCHANGE-TIMESTAMP | number <UNIX-timestamp-epoch> (X-OFF-EXCHANGE-TIMESTAMP) Example: 1546658861000 All Fireblocks to Exchange requests must include the X-OFF-EXCHANGE-TIMESTAMP header containing the timestamp (in milliseconds). |
X-OFF-EXCHANGE-SIGNATURE | string (X-OFF-EXCHANGE-SIGNATURE) All Fireblocks to Exchange requests/responses must include the X-OFF-EXCHANGE-SIGNATURE header containing the signature of the request/response. |
collateralId required | string (Collateral_Id) Unique string representing the collateral account Id. |
workspaceId | string <uuid> (WorkspaceId) Workspace Id value |
env | string Enum: "prod" "sandbox" "stage" Environment field describes which environment is being run at the moment. This field will appear if enabled by a partner configuration (supports multiple environments flag). If disabled, the field will not be included in the request. For existing partners the configuration can be updated per a request. For future partners the "env" field should be mandatory supported. |
{- "collateralId": "123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000",
- "workspaceId": "2424d10c-8099-40d7-b06b-5191b983d366",
- "env": "prod"
}
{- "status": false,
- "collateralId": "123e4567-e89b-12d3-a456-426614174000:123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000",
- "rejectionReason": ""
}
Notifies the Exchange to listen/deposit to these addresses.
X-OFF-EXCHANGE-NONCE | string (X-OFF-EXCHANGE-NONCE) Example: 8853b277-d5f5-4363-bf5f-633b735e1413 All Fireblocks to Exchange requests must include the X-OFF-EXCHANGE-NONCE header, a unique GUID string to the request being a reference for that request. |
X-OFF-EXCHANGE-TIMESTAMP | number <UNIX-timestamp-epoch> (X-OFF-EXCHANGE-TIMESTAMP) Example: 1546658861000 All Fireblocks to Exchange requests must include the X-OFF-EXCHANGE-TIMESTAMP header containing the timestamp (in milliseconds). |
X-OFF-EXCHANGE-SIGNATURE | string (X-OFF-EXCHANGE-SIGNATURE) All Fireblocks to Exchange requests/responses must include the X-OFF-EXCHANGE-SIGNATURE header containing the signature of the request/response. |
collateralId required | string (Collateral_Id) Unique string representing the collateral account Id. |
required | Array of objects (Asset_Address) The addresses of relevant assets. |
{- "collateralId": "123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000",
- "assets": [
- {
- "currency": "USDC",
- "network": "XLM",
- "fireblocksAssetId": "USDC_XLM",
- "address": "GCVYAUVUZK2BGKVQ37YG6UXV55ZAV37KHHIU5N2HHOVAPMS3A6DSKK3F",
- "tag": "147192386",
- "recoveryAccountId": "12",
- "collateralTxId": "0.8e4cfce8-0182-4c6d-b9dd-a291c105e1d2.0.5a814998-ec0f-4f1c-92bf-fb5f7dc09ea2"
}
]
}
{- "received": false,
- "rejectionReason": ""
}
Initiates a withdrawal request from the customers Collateral Account. The withdrawal must be confirmed by the Exchange before it can be signed by the customer. Once the exchange confirms withdrawal from the Collateral Account, the Exchange will reduce the customers available balance in the Exchange Main Account based on the withdrawal amount.
X-OFF-EXCHANGE-NONCE | string (X-OFF-EXCHANGE-NONCE) Example: 8853b277-d5f5-4363-bf5f-633b735e1413 All Fireblocks to Exchange requests must include the X-OFF-EXCHANGE-NONCE header, a unique GUID string to the request being a reference for that request. |
X-OFF-EXCHANGE-TIMESTAMP | number <UNIX-timestamp-epoch> (X-OFF-EXCHANGE-TIMESTAMP) Example: 1546658861000 All Fireblocks to Exchange requests must include the X-OFF-EXCHANGE-TIMESTAMP header containing the timestamp (in milliseconds). |
X-OFF-EXCHANGE-SIGNATURE | string (X-OFF-EXCHANGE-SIGNATURE) All Fireblocks to Exchange requests/responses must include the X-OFF-EXCHANGE-SIGNATURE header containing the signature of the request/response. |
collateralId required | string (Collateral_Id) Unique string representing the collateral account Id. |
collateralTransactionId required | string (Tx_Id) A unique identifier of the transaction to track. |
fireblocksAssetId required | string (Fireblocks_Asset) |
amount required | string (Amount) |
destinationAddress required | string (Address) Your address. |
destinationTag | string or null (Tag) Your address tag. |
{- "collateralId": "123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000",
- "collateralTransactionId": "0.8e4cfce8-0182-4c6d-b9dd-a291c105e1d2.0.5a814998-ec0f-4f1c-92bf-fb5f7dc09ea2",
- "fireblocksAssetId": "USDC_XLM",
- "amount": "13.184",
- "destinationAddress": "GCVYAUVUZK2BGKVQ37YG6UXV55ZAV37KHHIU5N2HHOVAPMS3A6DSKK3F",
- "destinationTag": "147192386"
}
{- "approved": false,
- "rejectionReason": ""
}
Gets the status of required transactions to finalize the settlement or the current status of an ongoing settlement by providing a settlement Id.
collateralId required | string (Collateral_Id) Example: collateralId=123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000 Unique string representing the collateral account Id. |
settlementId | string (Settlement_Id) Example: settlementId=123e4567-e89b-12d3-a456-426614174000 The ID of the settlement |
X-OFF-EXCHANGE-NONCE | string (X-OFF-EXCHANGE-NONCE) Example: 8853b277-d5f5-4363-bf5f-633b735e1413 All Fireblocks to Exchange requests must include the X-OFF-EXCHANGE-NONCE header, a unique GUID string to the request being a reference for that request. |
X-OFF-EXCHANGE-TIMESTAMP | number <UNIX-timestamp-epoch> (X-OFF-EXCHANGE-TIMESTAMP) Example: 1546658861000 All Fireblocks to Exchange requests must include the X-OFF-EXCHANGE-TIMESTAMP header containing the timestamp (in milliseconds). |
X-OFF-EXCHANGE-SIGNATURE | string (X-OFF-EXCHANGE-SIGNATURE) All Fireblocks to Exchange requests/responses must include the X-OFF-EXCHANGE-SIGNATURE header containing the signature of the request/response. |
{- "to_exchange": [
- {
- "fireblocksAssetId": "USDC_XLM",
- "amount": "13.184",
- "destinationAddress": "GCVYAUVUZK2BGKVQ37YG6UXV55ZAV37KHHIU5N2HHOVAPMS3A6DSKK3F",
- "destinationTag": "147192386",
- "status": "NOT_FOUND"
}
], - "to_collateral": [
- {
- "fireblocksAssetId": "USDC_XLM",
- "amount": "13.184",
- "fee": "0.0183",
- "sourceAddress": "GCVYAUVUZK2BGKVQ37YG6UXV55ZAV37KHHIU5N2HHOVAPMS3A6DSKK3F",
- "sourceTag": "147192386",
- "status": "NOT_FOUND"
}
]
}
Send a settlement request to the exchange. The response will include the transactions that will be performed in order to finalize the settlement.
X-OFF-EXCHANGE-NONCE | string (X-OFF-EXCHANGE-NONCE) Example: 8853b277-d5f5-4363-bf5f-633b735e1413 All Fireblocks to Exchange requests must include the X-OFF-EXCHANGE-NONCE header, a unique GUID string to the request being a reference for that request. |
X-OFF-EXCHANGE-TIMESTAMP | number <UNIX-timestamp-epoch> (X-OFF-EXCHANGE-TIMESTAMP) Example: 1546658861000 All Fireblocks to Exchange requests must include the X-OFF-EXCHANGE-TIMESTAMP header containing the timestamp (in milliseconds). |
X-OFF-EXCHANGE-SIGNATURE | string (X-OFF-EXCHANGE-SIGNATURE) All Fireblocks to Exchange requests/responses must include the X-OFF-EXCHANGE-SIGNATURE header containing the signature of the request/response. |
collateralId required | string (Collateral_Id) Unique string representing the collateral account Id. |
settlementId required | string (Settlement_Id) The ID of the settlement |
{- "collateralId": "123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000",
- "settlementId": "123e4567-e89b-12d3-a456-426614174000"
}
{- "to_exchange": [
- {
- "fireblocksAssetId": "USDC_XLM",
- "amount": "13.184",
- "destinationAddress": "GCVYAUVUZK2BGKVQ37YG6UXV55ZAV37KHHIU5N2HHOVAPMS3A6DSKK3F",
- "destinationTag": "147192386"
}
], - "to_collateral": [
- {
- "fireblocksAssetId": "USDC_XLM",
- "amount": "13.184",
- "fee": "0.0183",
- "sourceAddress": "GCVYAUVUZK2BGKVQ37YG6UXV55ZAV37KHHIU5N2HHOVAPMS3A6DSKK3F",
- "sourceTag": "147192386"
}
]
}
Supplying the exchange with the transactions instructions object, for a final confirmation that indeed these transactions should be created as part of the requested forced settlement.
X-OFF-EXCHANGE-NONCE | string (X-OFF-EXCHANGE-NONCE) Example: 8853b277-d5f5-4363-bf5f-633b735e1413 All Fireblocks to Exchange requests must include the X-OFF-EXCHANGE-NONCE header, a unique GUID string to the request being a reference for that request. |
X-OFF-EXCHANGE-TIMESTAMP | number <UNIX-timestamp-epoch> (X-OFF-EXCHANGE-TIMESTAMP) Example: 1546658861000 All Fireblocks to Exchange requests must include the X-OFF-EXCHANGE-TIMESTAMP header containing the timestamp (in milliseconds). |
X-OFF-EXCHANGE-SIGNATURE | string (X-OFF-EXCHANGE-SIGNATURE) All Fireblocks to Exchange requests/responses must include the X-OFF-EXCHANGE-SIGNATURE header containing the signature of the request/response. |
collateralId required | string (Collateral_Id) Unique string representing the collateral account Id. |
settlementId required | string (Settlement_Id_To_Force) The settlement Id to force |
required | object The instructions to be forced. |
{- "collateralId": "123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000",
- "settlementId": "123e4567-e89b-12d3-a456-426614174000",
- "transactions": {
- "to_exchange": [
- {
- "fireblocksAssetId": "USDC_XLM",
- "amount": "13.184",
- "destinationAddress": "GCVYAUVUZK2BGKVQ37YG6UXV55ZAV37KHHIU5N2HHOVAPMS3A6DSKK3F",
- "destinationTag": "147192386"
}
], - "to_collateral": [
- {
- "fireblocksAssetId": "USDC_XLM",
- "amount": "13.184",
- "fee": "0.0183",
- "sourceAddress": "GCVYAUVUZK2BGKVQ37YG6UXV55ZAV37KHHIU5N2HHOVAPMS3A6DSKK3F",
- "sourceTag": "147192386"
}
]
}
}
{- "approved": false,
- "rejectionReason": ""
}
Gets the details of an existing transaction.
collateralTxId required | string (Tx_Id) Example: 0.8e4cfce8-0182-4c6d-b9dd-a291c105e1d2.0.5a814998-ec0f-4f1c-92bf-fb5f7dc09ea2 A unique identifier of the transaction to track. |
{- "transactionDetails": {
- "id": "string",
- "assetId": "string",
- "source": {
- "type": "VAULT_ACCOUNT",
- "id": "string",
- "name": "string",
- "subType": "string",
- "virtualType": "OFF_EXCHANGE",
- "virtualId": "string"
}, - "destination": {
- "type": "VAULT_ACCOUNT",
- "id": "string",
- "name": "string",
- "subType": "string",
- "virtualType": "OFF_EXCHANGE",
- "virtualId": "string"
}, - "requestedAmount": 0,
- "amount": 0,
- "netAmount": 0,
- "amountUSD": 0,
- "serviceFee": 0,
- "fee": 0,
- "networkFee": 0,
- "createdAt": 0,
- "lastUpdated": 0,
- "status": "SUBMITTED",
- "txHash": "string",
- "tag": "string",
- "subStatus": "INSUFFICIENT_FUNDS",
- "destinationAddress": "string",
- "sourceAddress": "string",
- "destinationAddressDescription": "string",
- "destinationTag": "string",
- "signedBy": [
- "string"
], - "createdBy": "string",
- "rejectedBy": "string",
- "addressType": "string",
- "note": "string",
- "exchangeTxId": "string",
- "feeCurrency": "string",
- "operation": "BURN",
- "networkRecords": [
- {
- "source": {
- "type": "VAULT_ACCOUNT",
- "id": "string",
- "name": "string",
- "subType": "string",
- "virtualType": "OFF_EXCHANGE",
- "virtualId": "string"
}, - "destination": {
- "type": "VAULT_ACCOUNT",
- "id": "string",
- "name": "string",
- "subType": "string",
- "virtualType": "OFF_EXCHANGE",
- "virtualId": "string"
}, - "txHash": "string",
- "networkFee": "string",
- "assetId": "string",
- "netAmount": "string",
- "isDropped": true,
- "type": "string",
- "destinationAddress": "string",
- "sourceAddress": "string",
- "amountUSD": "string",
- "index": 0,
- "rewardInfo": {
- "srcRewards": "string",
- "destRewards": "string"
}
}
], - "amlScreeningResult": {
- "provider": "string",
- "payload": { }
}, - "customerRefId": "string",
- "numOfConfirmations": 0,
- "amountInfo": {
- "amount": "string",
- "requestedAmount": "string",
- "netAmount": "string",
- "amountUSD": "string"
}, - "feeInfo": {
- "networkFee": "string",
- "serviceFee": "string",
- "gasPrice": "string"
}, - "signedMessages": [
- {
- "content": "string",
- "algorithm": "MPC_ECDSA_SECP256K1",
- "derivationPath": [
- 0
], - "signature": {
- "fullSig": "string",
- "r": "string",
- "s": "string",
- "v": 0
}, - "publicKey": "string"
}
], - "extraParameters": { },
- "externalTxId": "string",
- "destinations": [
- {
- "amount": "string",
- "amountUSD": "string",
- "amlScreeningResult": {
- "provider": "string",
- "payload": { }
}, - "destination": {
- "type": "VAULT_ACCOUNT",
- "id": "string",
- "name": "string",
- "subType": "string",
- "virtualType": "OFF_EXCHANGE",
- "virtualId": "string"
}, - "authorizationInfo": {
- "allowOperatorAsAuthorizer": true,
- "logic": "AND",
- "groups": [
- {
- "th": 0,
- "users": {
- "property1": "PENDING_AUTHORIZATION",
- "property2": "PENDING_AUTHORIZATION"
}
}
]
}
}
], - "blockInfo": {
- "blockHeight": "string",
- "blockHash": "string"
}, - "authorizationInfo": {
- "allowOperatorAsAuthorizer": true,
- "logic": "AND",
- "groups": [
- {
- "th": 0,
- "users": {
- "property1": "PENDING_AUTHORIZATION",
- "property2": "PENDING_AUTHORIZATION"
}
}
]
}, - "index": 0,
- "rewardInfo": {
- "srcRewards": "string",
- "destRewards": "string"
}, - "feePayerInfo": {
- "feePayerAccountId": "string"
}, - "treatAsGrossAmount": true
}
}
Initiate a settlement request to Fireblocks, settling the funds of the co-responding collateralId.
collateralId required | string (Collateral_Id) Unique string representing the collateral account Id. |
{- "collateralId": "123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000"
}
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "initiator": "EXCHANGE",
- "exchangeReply": "REJECTED",
- "fireblocksInitiatedTransactions": {
- "toExchange": [
- {
- "collateralTxId": "0.8e4cfce8-0182-4c6d-b9dd-a291c105e1d2.0.5a814998-ec0f-4f1c-92bf-fb5f7dc09ea2",
- "status": "SUBMITTED"
}
], - "toCollateral": [
- {
- "collateralTxId": "0.8e4cfce8-0182-4c6d-b9dd-a291c105e1d2.0.5a814998-ec0f-4f1c-92bf-fb5f7dc09ea2",
- "status": "SUBMITTED"
}
]
}, - "exchangeRequestedTransactions": {
- "toExchange": [
- {
- "assetId": "USDC_XLM",
- "amount": "13.184",
- "dstAddress": "GCVYAUVUZK2BGKVQ37YG6UXV55ZAV37KHHIU5N2HHOVAPMS3A6DSKK3F",
- "dstTag": "147192386"
}
], - "toCollateral": [
- {
- "assetId": "USDC_XLM",
- "amount": "13.184",
- "fee": "0.0183",
- "srcAddress": "GCVYAUVUZK2BGKVQ37YG6UXV55ZAV37KHHIU5N2HHOVAPMS3A6DSKK3F",
- "srcTag": "147192386"
}
]
}
}
Returns the ids of the transactions created in a specific settlement.
settlementId required | string The settlement id of Fireblocks requested. |
collateralId required | string (Collateral_Id) Example: collateralId=123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000 Unique string representing the collateral account Id. |
{- "toExchange": [
- "0.8e4cfce8-0182-4c6d-b9dd-a291c105e1d2.0.5a814998-ec0f-4f1c-92bf-fb5f7dc09ea2"
], - "toCollateral": [
- "0.8e4cfce8-0182-4c6d-b9dd-a291c105e1d2.0.5a814998-ec0f-4f1c-92bf-fb5f7dc09ea2"
]
}
Get deposit address by Fireblocks's asset id.
assetId required | string The asset id of Fireblocks requested. |
collateralId required | string (Collateral_Id) Example: collateralId=123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000 Unique string representing the collateral account Id. |
{- "address": "string",
- "tag": "string"
}
Mark an existing settlement as a candidate for enforcement, this is the first step in enforcing a settlement.
collateralId required | string (Collateral_Id) Unique string representing the collateral account Id. |
settlementId required | string (Settlement_Id_To_Force) The settlement Id to force |
{- "collateralId": "123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000",
- "settlementId": "123e4567-e89b-12d3-a456-426614174000"
}
{- "forceUnixTime": 1698749982
}
Gets info of the currently marked enforcement candidate.
collateralId required | string (Collateral_Id) Example: collateralId=123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000 Unique string representing the collateral account Id. |
{- "forceUnixTime": 1698749982,
- "settlementId": "123e4567-e89b-12d3-a456-426614174000"
}
Cancels the marked status of the enforcement candidate.
collateralId required | string (Collateral_Id) Example: collateralId=123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000 Unique string representing the collateral account Id. |
{- "settlementId": "123e4567-e89b-12d3-a456-426614174000"
}
All of the disputed and failed transactions in the marked settlement will be duplicated and will be immediately sent to the Collaterals Signer to sign them.
collateralId required | string (Collateral_Id) Unique string representing the collateral account Id. |
settlementId required | string (Settlement_Id_To_Force) The settlement Id to force |
{- "collateralId": "123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000.123e4567-e89b-12d3-a456-426614174000",
- "settlementId": "123e4567-e89b-12d3-a456-426614174000"
}
{- "forceSettlementId": "123e4567-e89b-12d3-a456-426614174000",
- "fireblocksInitiatedTransactions": {
- "toExchange": [
- {
- "collateralTxId": "0.8e4cfce8-0182-4c6d-b9dd-a291c105e1d2.0.5a814998-ec0f-4f1c-92bf-fb5f7dc09ea2",
- "status": "SUBMITTED"
}
], - "toCollateral": [
- {
- "collateralTxId": "0.8e4cfce8-0182-4c6d-b9dd-a291c105e1d2.0.5a814998-ec0f-4f1c-92bf-fb5f7dc09ea2",
- "status": "SUBMITTED"
}
]
}
}
In the onboarding procedure of the clients, a Collateral Signer is automatically created. To connect to the Collateral Signer, a token is employed for pairing, accessible via this endpoint.
workspaceId required | string <uuid> Collateral workspace Id value |
collateralSignerId required | string <uuid> Collateral signer user Id value |
{- "workspaceId": "a3afd794-df78-4e55-8f49-acf0b970de5c",
- "collateralSignerId": "9eefedfe-5e8b-4ceb-8657-6a5378ab7f79"
}
{- "workspaceId": "a3afd794-df78-4e55-8f49-acf0b970de5c",
- "collateralSignerId": "9eefedfe-5e8b-4ceb-8657-6a5378ab7f79",
- "pairingToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTIzMTQ5NjYsImlhdCI6MTcxMjIyODU2NiwidGVuYW50SWQiOiJiNTRkZjMwNC03ZmM3LTViMjMtYWU5ZC1lNTAwMzczNmVjZmMiLCJ0ZW5hbnROYW1lIjoiTWVsdmluIENvbGxhdGVyYWwgVGVuYW50IiwidHlwZSI6ImRldmljZVBhaXJpbmciLCJ1c2VySWQiOiIyMzRkYmI4NC0xYWMxLTQwMjgtYTY1OS02NGE5MDk1ZTZjYjkifQ."
}
Get info of existing collateral signers in a Collateral workspace and their current status
workspaceId required | string <uuid> (WorkspaceId) Example: workspaceId=2424d10c-8099-40d7-b06b-5191b983d366 Workspace Id value |
{- "collateralSignersList": [
- {
- "signerId": "9eefedfe-5e8b-4ceb-8657-6a5378ab7445",
- "signerStatus": "READY"
}
]
}
In the client onboarding process to Off-exchange, a Collateral Signer user may be established for the partner to run on its Collateral Signer machine. For the partner to add a new Collateral Signer user to the machine, a pairing token that is issued by the Fireblocks system is needed. Once a Collateral Signer user is created for an partner, a COLLATERAL_SIGNER_READY_EVENT notification is sent to /collateral/v1/notify. The notification indicates that a pairing token is available via this endpoint.
Fireblocks-Signature | string (Fireblocks-Signature) All Fireblocks to Exchange Notifications will include Fireblocks-Signature header containing the signature of the request. Use this guide to understand how to verify it: https://developers.fireblocks.com/docs/webhooks-notifications |
type required | any Value: "COLLATERAL_SIGNER_READY_EVENT" |
required | CollateralSignerReadyEvent (object) |
{- "type": "COLLATERAL_SIGNER_READY_EVENT",
- "eventData": {
- "collateralSignerId": "9eefedfe-5e8b-4ceb-8657-6a5378ab7f79",
- "workspaceId": "2424d10c-8099-40d7-b06b-5191b983d366"
}
}