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

# Overview

> Stay up-to-date with the latest changes to our APIs.

### Upcoming changes

We are working on exciting new features that will enhance your experience. While we continue to develop these updates, you can keep building!

<Note>
  We recommend regularly checking this changelog for the latest updates and planning your development cycles accordingly. Your feedback is invaluable to us, so feel free to share any suggestions or issues you encounter.
</Note>

# Product updates

> New releases and improvements

<Update label="January 31, 2026" tags={["Improvements", "Asset Updates"]} rss={{ title: "cNGN Contract Address Updates", description: "Updated cNGN contract addresses across 5 networks with new v3 deployment" }}>
  ## cNGN Contract Address Updates

  The cNGN team has deployed new contract addresses across 5 networks. Previous addresses are now labeled "Old v2" and will be phased out.

  ### What Changed

  * **New cNGN deployment**: Updated contract addresses for cNGN across Ethereum, BNB Chain, Base, Asset Chain, and Arc
  * **Previous addresses relabeled**: Existing addresses are now marked as "Old v2" in the dashboard
  * **New network support**: cNGN is now available on the Arc network

  ### What you need to do

  * Go to your dashboard and add the new cNGN assets (look for the ones without the "Old" label)
  * Update your integrations to use the new contract addresses
  * Previous addresses will continue to work during the transition period

  ### New Contract Addresses

  | Network     | New cNGN Contract Address                    |
  | ----------- | -------------------------------------------- |
  | Ethereum    | `0xF55E56423e6b50808fD07cB62b6A32B91903f50E` |
  | BNB Chain   | `0x8a078b182bA9649c03982c2a80CDcc81cdc99dA8` |
  | Base        | `0xEFdF04BAfE0ebabb5F5cD9e3f36564f51CFe1530` |
  | Asset Chain | `0x00F0a33d9AFaC108A4963D4Cb4Ef6A9C6B8D8859` |
  | Arc         | `0x1716Df6A18DcFF031BFD209aDB8035174AdC0D31` |

  ### Test cNGN Tokens

  Need test cNGN for your sandbox (testnet) integration? Use the official [cNGN Faucet](https://cngn.co/faucet) to get test tokens.

  For more information about the cNGN stablecoin project, visit the [official repository](https://github.com/wrappedcbdc/stablecoin-cngn).
</Update>

<Update label="January 22, 2026" tags={["Breaking Change", "Virtual Accounts"]} rss={{ title: "Virtual Accounts API Breaking Changes", description: "Virtual accounts endpoints now return multiple records with pagination support" }}>
  ## Virtual Accounts API Breaking Changes

  <Warning>
    **Breaking Change**: This update is now live. Existing integrations using the Virtual Accounts API should update to the new response format.
  </Warning>

  ### Why This Changed

  Previously, each wallet or address could only have one virtual account. We've heard from businesses that need multiple virtual accounts per wallet—for example, to assign separate accounts to different customers or use cases. This update enables that flexibility while maintaining backwards compatibility for retrieving individual accounts.

  ### What Changed

  | Endpoint                                                         | Previous Behavior        | New Behavior              |
  | ---------------------------------------------------------------- | ------------------------ | ------------------------- |
  | `GET /wallets/{walletId}/virtual-accounts`                       | Returned a single object | Returns a paginated array |
  | `GET /wallets/{walletId}/addresses/{addressId}/virtual-accounts` | Returned a single object | Returns a paginated array |

  ### New Endpoints

  To retrieve a specific virtual account (equivalent to the old single-object response), use these new endpoints:

  | Endpoint                                                                                         | Description                                    |
  | ------------------------------------------------------------------------------------------------ | ---------------------------------------------- |
  | `GET /wallets/{walletId}/virtual-accounts/{virtualAccountId}`                                    | Get a specific virtual account                 |
  | `GET /wallets/{walletId}/virtual-accounts/{virtualAccountId}/transactions`                       | Get transactions for a virtual account         |
  | `POST /wallets/{walletId}/virtual-accounts/{virtualAccountId}/regenerate`                        | Regenerate a virtual account                   |
  | `GET /wallets/{walletId}/addresses/{addressId}/virtual-accounts/{virtualAccountId}`              | Get a specific child address virtual account   |
  | `GET /wallets/{walletId}/addresses/{addressId}/virtual-accounts/{virtualAccountId}/transactions` | Get child address virtual account transactions |
  | `POST /wallets/{walletId}/addresses/{addressId}/virtual-accounts/{virtualAccountId}/regenerate`  | Regenerate a child address virtual account     |

  ### Pagination Details

  All list endpoints now support pagination with these query parameters:

  | Parameter | Type    | Default | Max   | Description                |
  | --------- | ------- | ------- | ----- | -------------------------- |
  | `page`    | integer | `1`     | —     | Page number to retrieve    |
  | `limit`   | integer | `10`    | `100` | Number of records per page |

  ### New Features

  * **Virtual account labels**: Add custom labels to organize accounts (e.g., "Customer A", "Payroll")
  * **Account regeneration**: Generate new account numbers with reason tracking for audit purposes
  * **Transaction history**: Query transactions linked to specific virtual accounts

  ### Migration Guide

  **Before** — Single object response:

  ```javascript theme={null}
  const response = await fetch(`/wallets/${walletId}/virtual-accounts`);
  const account = await response.json();

  console.log(account.accountNumber);
  console.log(account.bankName);
  ```

  **After** — Paginated array response:

  ```javascript theme={null}
  const response = await fetch(`/wallets/${walletId}/virtual-accounts`);
  const { data, meta } = await response.json();

  // Handle empty array case
  if (data.length === 0) {
    console.log('No virtual accounts found');
    return;
  }

  // Get the first account (equivalent to old behavior)
  const account = data[0];
  console.log(account.accountNumber);
  console.log(account.bankName);

  // Or iterate through all accounts
  for (const account of data) {
    console.log(account.accountNumber);
  }

  // Pagination info available in meta
  console.log(`Page ${meta.currentPage} of ${meta.totalPages}`);
  ```

  **To get a specific account by ID** (recommended):

  ```javascript theme={null}
  const response = await fetch(`/wallets/${walletId}/virtual-accounts/${virtualAccountId}`);

  if (!response.ok) {
    console.log('Virtual account not found');
    return;
  }

  const { data } = await response.json();
  console.log(data.accountNumber);
  ```

  ### Example API Response

  **List endpoint** `GET /wallets/{walletId}/virtual-accounts`:

  ```json theme={null}
  {
    "message": "Virtual accounts retrieved successfully",
    "statusCode": 200,
    "data": [
      {
        "id": "550e8400-e29b-41d4-a716-446655440000",
        "accountNumber": "8012345678",
        "accountName": "Blockradar/John Doe",
        "bankName": "Wema Bank",
        "bankCode": "035",
        "isActive": true,
        "type": "AUTO_FUNDING",
        "label": "Customer Deposits",
        "createdAt": "2026-01-22T10:30:00.000Z",
        "updatedAt": "2026-01-22T10:30:00.000Z"
      }
    ],
    "meta": {
      "itemCount": 1,
      "totalItems": 1,
      "itemsPerPage": 10,
      "totalPages": 1,
      "currentPage": 1
    }
  }
  ```

  **Single account endpoint** `GET /wallets/{walletId}/virtual-accounts/{virtualAccountId}`:

  ```json theme={null}
  {
    "message": "Virtual account retrieved successfully",
    "statusCode": 200,
    "data": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "accountNumber": "8012345678",
      "accountName": "Blockradar/John Doe",
      "bankName": "Wema Bank",
      "bankCode": "035",
      "isActive": true,
      "type": "AUTO_FUNDING",
      "label": "Customer Deposits",
      "createdAt": "2026-01-22T10:30:00.000Z",
      "updatedAt": "2026-01-22T10:30:00.000Z"
    }
  }
  ```

  ### Need Help?

  * **Documentation**: [Virtual Accounts guide](/en/essentials/virtual-accounts)
  * **API Reference**: [Virtual Accounts endpoints](/en/api-reference/virtual-accounts/master-wallet-get-all)
  * **Email support**: [support@blockradar.co](mailto:support@blockradar.co)
</Update>

<Update label="November 7, 2025" tags={["New Feature", "Virtual Accounts"]} rss={{ title: "Virtual Accounts API", description: "New API for managing virtual bank accounts with automatic fiat-to-stablecoin conversion" }}>
  ## Virtual Accounts API

  * **New feature**: Virtual Accounts API enables businesses to create and manage virtual bank accounts linked to master wallets or child addresses
  * **Fiat-to-stablecoin conversion**: Customers can receive NGN payments through traditional bank transfers, automatically converted to cNGN stablecoins
  * **Auto-funding support**: AUTO\_FUNDING type accounts automatically mint cNGN when fiat payments are received and transfer to linked wallets
  * **Master wallet integration**: Create virtual accounts directly linked to master wallets
  * **Child address integration**: Create virtual accounts linked to specific child addresses for granular control
  * **Account management**: Activate or deactivate virtual accounts to control auto-funding behavior

  ### What you need to do

  * **Enable the feature**: Contact [support@blockradar.co](mailto:support@blockradar.co) to enable virtual accounts for your business
  * **Ensure cNGN support**: Make sure your master wallet supports the cNGN stablecoin asset
  * **Mainnet only**: Note that virtual accounts are only available in the MAINNET environment
  * **Review API endpoints**: Check the [Virtual Accounts API documentation](/en/essentials/virtual-accounts) for implementation details

  ## API Endpoints

  Below are the core API endpoints for Virtual Accounts operations:

  ### **Master Wallet Endpoints**

  * [POST /wallets/{walletId}/virtual-accounts](/en/api-reference/virtual-accounts/master-wallet-create) – Create a virtual account for a master wallet
  * [GET /wallets/{walletId}/virtual-accounts](/en/api-reference/virtual-accounts/master-wallet-get) – Retrieve virtual account details
  * [PATCH /wallets/{walletId}/virtual-accounts/{id}](/en/api-reference/virtual-accounts/master-wallet-update) – Update virtual account status

  ### **Child Address Endpoints**

  * [POST /wallets/{walletId}/addresses/{addressId}/virtual-accounts](/en/api-reference/virtual-accounts/child-address-create) – Create a virtual account for a child address
  * [GET /wallets/{walletId}/addresses/{addressId}/virtual-accounts](/en/api-reference/virtual-accounts/child-address-get) – Retrieve virtual account details
  * [PATCH /wallets/{walletId}/addresses/{addressId}/virtual-accounts/{virtualAccountId}](/en/api-reference/virtual-accounts/child-address-update) – Update virtual account status

  ### Key Features

  * **Supported currency**: NGN (Nigerian Naira) for fiat payments, cNGN for stablecoin conversion
  * **Auto-funding flow**: Automatic minting and transfer of cNGN when payments are received (AUTO\_FUNDING type)
  * **Account activation**: Control auto-funding behavior by activating or deactivating accounts
  * **Customer management**: Create accounts with customer information (firstname, lastname, email, phone)

  For more information, see the [Virtual Accounts documentation](/en/essentials/virtual-accounts) and [API Reference](/en/api-reference/virtual-accounts/master-wallet-create).
</Update>

<Update label="October 20, 2025" tags={["Improvements", "Asset Updates"]} rss={{ title: "cNGN Address Updates", description: "Updated testnet addresses and Tron USDT support" }}>
  ## cNGN Testnet Address Updates

  * **Updated cNGN testnet addresses**: The cNGN team has updated their testnet addresses across multiple networks
  * **New asset support**: Added support for the updated cNGN stablecoin in the dashboard
  * **Asset management**: Previous testnet addresses are now labeled as "old" and will be removed in 30 days
  * **Tron USDT support**: Added updated supported Tron USDT address with previous address labeled as "old"

  ### What you need to do

  * Go to your dashboard and add the new cNGN assets (look for the ones without the "old" label)
  * Update your integrations to use the new testnet addresses
  * The old testnet addresses will be automatically removed after 30 days
  * **Note**: These changes only apply to testnet environments - mainnet addresses remain unchanged

  ### Updated Testnet Addresses

  | Network    | New cNGN Contract Address                  |
  | ---------- | ------------------------------------------ |
  | ASSETCHAIN | 0x4c00E85cd0B0307D8ED0b5534Bc678776C4aa7D3 |
  | BASE       | 0x929A08903C22440182646Bb450a67178Be402f7f |
  | BNBCHAIN   | 0x20354A3Ad3B67836ab9c6D7D82cF5e5Ddfe104dD |
  | ETHEREUM   | 0xd076ceCB8af5D92F7f6F32bDf24Da708859593d3 |
  | POLYGON    | 0xf24B1Cee8cA70341FcefBCa10e7e4Db9A4896486 |
  | LISK       | 0x999E3A32eF3F9EAbF133186512b5F29fADB8a816 |

  ### Updated Tron USDT Address

  | Network | New Tron USDT Contract Address     |
  | ------- | ---------------------------------- |
  | TRON    | TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf |

  For more information about the cNGN stablecoin project, visit the [official repository](https://github.com/wrappedcbdc/stablecoin-cngn).
</Update>
