> ## Documentation Index
> Fetch the complete documentation index at: https://developers.fireblocks.com/llms.txt
> Use this file to discover all available pages before exploring further.

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://developers.fireblocks.com/feedback

```json
{
  "path": "/docs/network-link-integration-guide-for-provider-connectivity",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# Overview

<Info>
  ### Want to know more about the Provider Network and commercial prerequisites?

  Visit [our Help Center article about the Provider Network](https://support.fireblocks.io/hc/en-us/articles/22144765384348) to learn more.

  See the [Fireblocks Provider Connectivity API v2 documentation](https://fireblocks.github.io/fireblocks-network-link/v2/docs.html) on GitHub to learn how to connect your service to Fireblocks.
</Info>

# Registering as a service provider

<Info>
  ### Note on the supported testing scope

  As a best practice, we recommend that your onboarding should cover only up to three stages: **Dev** → **Staging** → **Production**. Additional testing setups for supporting multiple internal environments are not supported by default and require explicit approval.
</Info>

Once your license agreement for listing your service with Fireblocks is signed, the Fireblocks technical team will request the following connected account registration settings:

1. Display name (e.g., "My Exchange" or "My Exchange Sandbox")

2. Icon (a 32x32 .svg file)

3. Step-by-step guide for generating an API key for your platform
   1. A public link to your knowledge base is preferred. A shareable document or PDF is also acceptable.

4. Base URL for your API endpoints (e.g., "[https://my-service.com/fireblocks"](https://my-service.com/fireblocks%22))

5. Will your service provide a sandbox environment?

6. For Off-Exchange capabilities, please provide your CSR file.

7. User credentials for testing

8. Which signing method will your server use for all requests? Please choose one of the supported options by specifying the pre-encoding function, signing algorithm, and post-encoding function during the server onboarding process.

   1. **Pre-encoding options:**

      1. `URL encoded`
      2. `Base64`
      3. `HexStr`
      4. `Base58`
      5. `Base32`

   2. **Signing algorithms & possible hash functions:**

      1. `HMAC (SHA512, SHA3_256, or SHA256)`
      2. `RSA PKCS1v15 (SHA512, SHA3_256, or SHA256)`
      3. `ECDSA prime256v1/secp256k1 (SHA256 only)`

   3. **Post-encoding options:** (URL encoding not supported)

      1. `Base64`
      2. `HexStr`
      3. `Base58`
      4. `Base32`

9. [Validation tool results](https://github.com/fireblocks/fireblocks-network-link/tree/main/v2/api-validator)

# Asset Mapping in Network Link v2

For Network Link v2 integrations, asset mapping is based on the provider's response to `GET/capabilities/assets`. The required fields are:

* ID (on the provider's side)
* Name (on the provider's side)
* Symbol (on the provider's side)
* Decimal places (number of decimals for the asset on the provider's side)
* Test asset (true/false)
* Type (BucketAsset, ERC20Token, BEP20Token, StellarToken, Jetton, SPLToken)

# IP allowlisting

All API calls from Fireblocks to your service are sent from a fixed set of IP addresses, grouped by geographical region. Your service should allowlist these addresses to allow Fireblocks communication with your servers.

| Singapore                                                                                                                                                                     | Europe                                                                                                                                                                                                                                                                                                                                                                                                                                                              | USA                                                                                                                                                                                     |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 18.99.36.0<br />18.99.36.1<br />18.99.36.2<br />18.99.36.3<br />18.99.36.4<br />18.99.36.5<br />18.99.36.6<br />18.99.36.7<br />18.99.36.8<br />18.99.36.9<br />52.76.208.129 | 18.98.161.0<br />18.98.161.1<br />18.98.161.2<br />18.98.161.3<br />18.98.161.4<br />18.98.161.5<br />18.98.161.6<br />18.98.161.7<br />18.98.161.8<br />18.98.161.9<br />18.98.161.10<br />18.98.161.11<br />18.98.161.12<br />18.98.161.13<br />18.98.161.14<br />18.98.161.15<br />18.98.161.16<br />18.98.161.17<br />18.98.161.18<br />18.98.161.19<br />18.133.153.74<br />3.10.68.107<br />3.64.123.47<br />18.158.242.74<br />3.10.103.242<br />3.67.233.15 | 18.97.132.0<br />18.97.132.1<br />18.97.132.2<br />18.97.132.3<br />18.97.132.4<br />18.97.132.5<br />18.97.132.6<br />18.97.132.7<br />18.97.132.8<br />18.97.132.9<br />40.117.39.160 |

# Mandatory endpoints implementation per user flow

## Minimum viable provider

* **Required`GET /capabilities` response:** "accounts": \["\*"]
* **Required endpoints:**
  * `GET /capabilities`
  * `GET /capabilities/assets`
  * `GET /accounts`
  * `GET /accounts/{accountId}`

## Balance support

* **Required`GET /capabilities` response:** "accounts": \["*"], "balances": \["*"]
* **Required endpoints:**
  * `GET /accounts/{accountId}/balances`

## Transfer support

* **Required`GET /capabilities` response:** "accounts": \["*"], "balances": \["*"], "transfers": \["\*"]
* **Required endpoints:**
  * `GET /accounts/{accountId}/capabilities/transfers/deposits`
  * `GET /accounts/{accountId}/capabilities/transfers/withdrawals`
  * `GET /accounts/{accountId}/transfers/deposits`
  * `GET /accounts/{accountId}/transfers/deposits/{id}`
  * `GET /accounts/{accountId}/transfers/withdrawals`
  * `GET /accounts/{accountId}/transfers/withdrawals/{id}`

## Blockchain transfer

* **Required`GET /capabilities` response:** "accounts": \["*"], "balances": \["*"], "transfers": \["*"], "transfersBlockchain": \["*"]
* **Required endpoints:**
  * `GET /accounts/{accountId}/capabilities/transfers/deposits`
  * `GET /accounts/{accountId}/capabilities/transfers/withdrawals`
  * `GET /accounts/{accountId}/transfers/deposits`
  * `GET /accounts/{accountId}/transfers/deposits/{id}`
  * `GET /accounts/{accountId}/transfers/withdrawals`
  * `GET /accounts/{accountId}/transfers/withdrawals/{id}`
  * `POST /accounts/{accountId}/transfers/deposits/addresses`
  * `GET /accounts/{accountId]/transfers/deposits/addresses`
  * `GET /accounts/{accountId}/transfers/deposits/addresses/{id}`
  * `POST /accounts/{accountId}/transfers/withdrawals/blockchain`

## Peer transfer

* **Required`GET /capabilities` response:** "accounts": \["*"], "balances": \["*"], "transfers": \["*"], "transfersPeerAccounts": \["*"]
  * For fiat assets, add "transfersFiat": \["\*"] to the response.
* **Required endpoints:**
  * `GET /accounts/{accountId}/capabilities/transfers/deposits`
  * `GET /accounts/{accountId}/capabilities/transfers/withdrawals`
  * `GET /accounts/{accountId}/transfers/deposits`
  * `GET /accounts/{accountId}/transfers/deposits/{id}`
  * `GET /accounts/{accountId}/transfers/withdrawals`
  * `GET /accounts/{accountId}/transfers/withdrawals/{id}`
  * `POST /accounts/{accountId}/transfers/withdrawals/peeraccount`

## Internal transfer

* **Required`GET /capabilities` response:** "accounts": \["*"], "balances": \["*"], "transfers": \["*"], "transfersInternal": \["*"]
  * For fiat assets, add "transfersFiat": \["\*"] to the response.
* **Required endpoints:**
  * `GET /accounts/{accountId}/capabilities/transfers/deposits`
  * `GET /accounts/{accountId}/capabilities/transfers/withdrawals`
  * `GET /accounts/{accountId}/transfers/deposits`
  * `GET /accounts/{accountId}/transfers/deposits/{id}`
  * `GET /accounts/{accountId}/transfers/withdrawals`
  * `GET /accounts/{accountId}/transfers/withdrawals/{id}`
  * `POST /accounts/{accountId}/transfers/withdrawals/subaccount`

## Fiat transfer

* **Required`GET /capabilities` response:** "accounts": \["*"], "balances": \["*"], "transfers": \["*"], "transfersFiat": \["*"]
* **Required endpoints:**
  * `GET /accounts/{accountId}/capabilities/transfers/deposits`
  * `GET /accounts/{accountId}/capabilities/transfers/withdrawals`
  * `GET /accounts/{accountId}/transfers/deposits`
  * `GET /accounts/{accountId}/transfers/deposits/{id}`
  * `GET /accounts/{accountId}/transfers/withdrawals`
  * `GET /accounts/{accountId}/transfers/withdrawals/{id}`
  * `POST /accounts/{accountId}/transfers/withdrawals/fiat`

## Liquidity/RFQ support

* **Required`GET /capabilities` response:** "accounts": \["*"], "balances": \["*"], "liquidity": \["\*"]
* **Required endpoints:**
  * `GET /capabilities/liquidity/quotes`
  * `POST /accounts/{accountId}/liquidity/quotes`
  * `GET /accounts/{accountId}/liquidity/quotes`
  * `GET /accounts/{accountId}/liquidity/quotes/{id}`
  * `POST /accounts/{accountId}/liquidity/quotes/{id}/execute`

## On-/Off-Ramp & Bridging

* **Required`GET /capabilities` response:** "accounts": \["*"], "ramps": \["*"], "balances": \["\*"]
  * For prefunded flows, "balances": \["\*"] must be returned with `GET` account API. See below.
* **Required endpoints:**
  * `GET /accounts/{accountId}/capabilities/ramps`
  * `POST /accounts/{accountId}/ramps`
  * `GET /accounts/{accountId}/ramps`
  * `GET /accounts/{accountId}/ramps/{id}`
  * `GET /accounts/{accountId}/balances` (only for prefunded flows)
  * `GET /accounts/{accountId}/rate`
    * Your service should implement the `rate` endpoint to ensure Fireblocks customers see your service's real-time rates for asset pairs. Otherwise, Fireblocks defaults to quotes or its internal rating service.

## Collateral

<Info>
  ### **Note:**

  In addition to implementing the endpoints below, providers supporting Collateral/Off-Exchange flows must also integrate with the Fireblocks Off-Exchange API. This is required for reporting events from the provider back to Fireblocks (e.g., confirming deposits or settlements).

  Technical Reference: [Fireblocks Off-Exchange - Exchange to Fireblocks](https://fireblocks.github.io/fireblocks-off-exchange/#tag/Exchange-to-Fireblocks)
</Info>

The provider should also use this [endpoint](https://fireblocks.github.io/fireblocks-off-exchange/#tag/Exchange-to-Fireblocks).

* **Required`GET /capabilities` response:** "accounts": \["*"], "balances": \["*"], "transfers": \["*"], "transfersBlockchain": \["*"], "collateral": \["\*"]
* **Required endpoints:**
  * `GET /accounts/{accountId}/balances`
  * `GET /accounts/{accountId}/capabilities/transfers/deposits`
  * `GET /accounts/{accountId}/capabilities/transfers/withdrawals`
  * `GET /accounts/{accountId}/transfers/deposits`
  * `GET /accounts/{accountId}/transfers/deposits/{id}`
  * `GET /accounts/{accountId}/transfers/withdrawals`
  * `GET /accounts/{accountId}/transfers/withdrawals/{id}`
  * `POST /accounts/{accountId}/transfers/deposits/addresses`
  * `GET /accounts/{accountId}/transfers/deposits/addresses`
  * `GET /accounts/{accountId}/transfers/deposits/addresses/{id}`
  * `POST /accounts/{accountId}/transfers/withdrawals/blockchain`
* **Collateral endpoints:**
  * `POST accounts/{accountId}/collateral/link`
  * `GET accounts/{accountId}/collateral/link`
  * `POST accounts/{accountId}/collateral/{collateralId}/addresses`
  * `GET accounts/{accountId}/collateral/{collateralId}/addresses`
  * `GET accounts/{accountId}/collateral/{collateralId}/addresses/{id}`
  * `POST accounts/{accountId}/collateral/{collateralId}/intents/deposits`
  * `POST accounts/{accountId}/collateral/{collateralId}/deposits`
  * `GET accounts/{accountId}/collateral/{collateralId}/deposits`
  * `GET accounts/{accountId}/collateral/{collateralId}/deposits/{collateralTxId}`
  * `POST accounts/{accountId}/collateral/{collateralId}/intents/withdrawals`
  * `POST accounts/{accountId}/collateral/{collateralId}/withdrawals`
  * `GET accounts/{accountId}/collateral/{collateralId}/withdrawals`
  * `GET accounts/{accountId}/collateral/{collateralId}/withdrawals/{collateralTxId}`
  * `POST accounts/{accountId}/collateral/{collateralId}/settlement`
  * `GET accounts/{accountId}/collateral/{collateralId}/settlement`
  * `GET accounts/{accountId}/collateral/{collateralId}/settlements/{settlementVersion}`
