Auto-Consolidate Assets in Master Wallet

Auto-consolidation is a native feature of the Layer1 platform that automatically aggregates dispersed liquidity from multiple blockchain deposit wallets into a designated master address per blockchain network.

This ensures that your funds remain accessible for withdrawal and payment processing, thereby eliminating the operational risks associated with stranded or fragmented balances. Over time, without this consolidation, incoming deposits would accumulate across numerous wallet addresses, resulting in inefficient and fragmented access to funds.

Auto-consolidation unlocks your operational liquidity, centralising it and making it ready for supercharged digital asset payments.

This feature is built into Layer1, and requires no custom wallet orchestration from your side. It works out of the box using carefully designed parameters optimised for the economics and network characteristics of each blockchain.

There’s no code to write, no infrastructure to maintain—integrate your system into Layer1 and start consolidating.


Automatic creation of a master wallet

The successfully deposited funds undergo an auto-consolidation phase. That means they are transferred from the deposit address to a central pooled wallet, ensuring they aren't left spread across multiple wallets. If this is the first deposit of this cryptocurrency type to the asset pool, a master wallet is automatically created.

The following webhook of the layer1:digital:address:created event type is initially sent once the deposit has been updated to SUCCESS:

{
  "event": "layer1:digital:address:created",
  "timestamp": "2024-06-05T20:40:31.443861137Z",
  "data": {
    "id": "8e1fcdb5-8edc-49b7-9289-1c41c5bcd818",
    "address": "0x96073c4b415d60ade18de32e43efc2914731e03d",
    "network": "ETHEREUM",
    "keyPairId": "fdc9f5a0-698c-4163-ab21-df85f343a2a4",
    "reference": "AssetPoolTwo",
    "assetPoolId": "2be1cc9c-a5af-47e2-9dba-b7b82317e600"
  }
}

From now on, the funds will be swept into the master address 0x96073c4b415d60ade18de32e43efc2914731e03d.

Automated gas fee funding

Because consolidation is an on-chain operation, it does incur gas fees. To simplify this:

  • We automatically fund gas fees using the native token from your master address.
  • You don’t need to pre-fund each deposit wallet or manage gas provisioning yourself.
  • The system handles the timing and funding logic to ensure smooth execution.

Based on years of experience processing low-value, high-frequency payments with BVNK, we’ve developed various gas fee optimisation strategies tailored to the tokenomics of each network, such as:

  • Minimum value threshold
  • Batch consolidations
  • Staking (TRON network)
  • And more

Contact the Solutions team for more information and features.


Manual consolidation

While our automated consolidation logic is designed to optimise liquidity centralisation and on-chain cost efficiency, there may be operational cases where you need immediate control.

With the Manual Consolidation feature in the Layer1 Portal, you can initiate fund consolidation on demand, bypassing scheduled or threshold-based logic.

Use this to:

  • Quickly prepare funds for an urgent withdrawal.
  • Consolidate a specific set of wallets regardless of network economics.
  • Manage a network where your desired operational thresholds differ from the default settings.

To consolidate specific assets:

  1. In Layer1 Portal, go to Digital Assets > Pools and click Consolidate.
  1. On the Consolidation screen, complete the following fields:
    • Asset Pool ID: Select the asset pool to consolidate into a single collection of assets.
    • Network: Select the blockchain or platform where your distributed funds are currently held.
    • Asset: Select the particular cryptocurrency or token you want to consolidate on the selected network.
    • Minimum wallet balance: Set a threshold for including wallets in the consolidation process. For example, consolidate only addresses with a balance >0.1 of your chosen asset. This allows you to optimise the operation by excluding low-value addresses where consolidation costs outweigh benefits.
    • Maximum number of addresses: Set the maximum number of wallets to consolidate. This feature enables you to manage the process in smaller, more controllable batches, allowing for review and adjustment before proceeding with larger consolidations. This gives you control to consolidate economically vs. the gas fee.

Webhooks

"Balance updated" webhooks

During the auto-consolidation phase, the balance is updated for both the deposit address and the new master address. The following "balance updated" webhooks are received during consolidation:

  • "Balance Update: Funds Reserved" shows the amount actioned in the consolidation move from AVAILABLE to RESERVED in the original deposit address.
  • "Balance Update: New Funds Available" shows that the funds have been received by the new master address as shown in the AVAILABLE section. Note it is slightly less due to network fees.
  • "Balance Update: Funds Released" shows the amount released from the RESERVED section and the BLOCKCHAIN section after the successful consolidation. Note the small leftover funds or 'dust'.
{
  "event": "layer1:digital:balance:updated",
  "timestamp": "2024-06-05T20:40:31.641988100Z",
  "data": {
    "reference": "First Eth Address",
    "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9",
    "asset": "ETH",
    "funds": [
      {
        "type": "AVAILABLE",
        "balance": "0.00",
        "delta": "-0.20"
      },
      {
        "type": "BLOCKCHAIN",
        "balance": "0.20",
        "delta": "0.00"
      },
      {
        "type": "RESERVED",
        "balance": "0.20",
        "delta": "0.20"
      }
    ]
  }
}
{
  "event": "layer1:digital:balance:updated",
  "timestamp": "2024-06-05T20:41:27.349393331Z",
  "data": {
    "reference": "AssetPoolTwo",
    "address": "0x96073c4b415d60ade18de32e43efc2914731e03d",
    "asset": "ETH",
    "funds": [
      {
        "type": "AVAILABLE",
        "balance": "0.199630313934810125",
        "delta": "0.199630313934810125"
      },
      {
        "type": "BLOCKCHAIN",
        "balance": "0.199630313934810125",
        "delta": "0.199630313934810125"
      },
      {
        "type": "RESERVED",
        "balance": "0.00",
        "delta": "0.00"
      }
    ]
  }
}
{
  "event": "layer1:digital:balance:updated",
  "timestamp": "2024-06-05T20:41:27.341091297Z",
  "data": {
    "reference": "First Eth Address",
    "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9",
    "asset": "ETH",
    "funds": [
      {
        "type": "AVAILABLE",
        "balance": "0.000058795984828875",
        "delta": "0.000058795984828875"
      },
      {
        "type": "BLOCKCHAIN",
        "balance": "0.000058795984828875",
        "delta": "-0.199941204015171125"
      },
      {
        "type": "RESERVED",
        "balance": "0.00",
        "delta": "-0.20"
      }
    ]
  }
}

"Consolidation status change" webhooks

These webhooks are sent out to inform you about the current status of the consolidation of funds from one address you own to another address in the same asset pool. This means there could be duplicates of the same type of webhook but from different addresses, so pay special attention to these in the webhook. There are seven or ten update webhooks expected during the consolidation phase:

  1. CREATED
  2. FUNDS_RESERVED
  3. SIGNED
  4. DETECTED: two webhooks, one for each address
  5. UNCONFIRMED: two webhooks, one for each address
  6. CONFIRMED: two webhooks, one for each address
  7. SUCCESS
{
  "event": "layer1:digital:consolidation:status-change",
  "timestamp": "2024-06-05T20:40:31.722661928Z",
  "data": {
    "id": "018fea21bff771e791d51a34af5c59b7d18a869f191944a09e5e784d7ca8f45a69",
    "type": "CONSOLIDATION",
    "asset": "ETH",
    "amount": "0.20",
    "status": "CREATED",
    "address": {
      "id": "d18a869f-1919-44a0-9e5e-784d7ca8f45a",
      "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9",
      "network": "ETHEREUM",
      "keyPairId": "44cf54df-93e9-4dd9-84c9-e96f0cf90f3e",
      "reference": "First Eth Address",
      "customerId": "customerOne",
      "assetPoolId": "2be1cc9c-a5af-47e2-9dba-b7b82317e600"
    },
    "sources": [
      {
        "amount": "0.20",
        "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9"
      }
    ],
    "createdAt": "2024-06-05T20:40:31.479Z",
    "reference": "consolidation-ETH-018fea20-a69e-7cc5-8066-f8d03362e797",
    "updatedAt": "2024-06-05T20:40:31.692479Z",
    "destinations": [
      {
        "amount": "0.20",
        "address": "0x96073c4b415d60ade18de32e43efc2914731e03d"
      }
    ]
  }
}
{
  "event": "layer1:digital:consolidation:status-change",
  "timestamp": "2024-06-05T20:40:31.872516799Z",
  "data": {
    "id": "018fea21bff771e791d51a34af5c59b7d18a869f191944a09e5e784d7ca8f45a69",
    "type": "CONSOLIDATION",
    "asset": "ETH",
    "amount": "0.20",
    "status": "FUNDS_RESERVED",
    "address": {
      "id": "d18a869f-1919-44a0-9e5e-784d7ca8f45a",
      "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9",
      "network": "ETHEREUM",
      "keyPairId": "44cf54df-93e9-4dd9-84c9-e96f0cf90f3e",
      "reference": "First Eth Address",
      "customerId": "customerOne",
      "assetPoolId": "2be1cc9c-a5af-47e2-9dba-b7b82317e600"
    },
    "sources": [
      {
        "amount": "0.20",
        "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9"
      }
    ],
    "createdAt": "2024-06-05T20:40:31.479Z",
    "reference": "consolidation-ETH-018fea20-a69e-7cc5-8066-f8d03362e797",
    "updatedAt": "2024-06-05T20:40:31.849128Z",
    "destinations": [
      {
        "amount": "0.20",
        "address": "0x96073c4b415d60ade18de32e43efc2914731e03d"
      }
    ]
  }
}
{
  "event": "layer1:digital:consolidation:status-change",
  "timestamp": "2024-06-05T20:40:32.408072441Z",
  "data": {
    "id": "018fea21bff771e791d51a34af5c59b7d18a869f191944a09e5e784d7ca8f45a69",
    "type": "CONSOLIDATION",
    "asset": "ETH",
    "amount": "0.20",
    "status": "SIGNED",
    "address": {
      "id": "d18a869f-1919-44a0-9e5e-784d7ca8f45a",
      "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9",
      "network": "ETHEREUM",
      "keyPairId": "44cf54df-93e9-4dd9-84c9-e96f0cf90f3e",
      "reference": "First Eth Address",
      "customerId": "customerOne",
      "assetPoolId": "2be1cc9c-a5af-47e2-9dba-b7b82317e600"
    },
    "sources": [
      {
        "amount": "0.20",
        "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9"
      }
    ],
    "createdAt": "2024-06-05T20:40:31.479Z",
    "reference": "consolidation-ETH-018fea20-a69e-7cc5-8066-f8d03362e797",
    "updatedAt": "2024-06-05T20:40:32.385590Z",
    "destinations": [
      {
        "amount": "0.20",
        "address": "0x96073c4b415d60ade18de32e43efc2914731e03d"
      }
    ]
  }
}
{
  "event": "layer1:digital:consolidation:status-change",
  "timestamp": "2024-06-05T20:40:34.593627067Z",
  "data": {
    "id": "018fea21bff771e791d51a34af5c59b78e1fcdb58edc49b792891c41c5bcd8186f",
    "hash": "0xc12e1f147b72e697469e24a5caadac1f4cf938cb7d40187eef3612746eb6b53e",
    "type": "CONSOLIDATION",
    "asset": "ETH",
    "amount": "0.199630313934810125",
    "status": "DETECTED",
    "address": {
      "id": "8e1fcdb5-8edc-49b7-9289-1c41c5bcd818",
      "address": "0x96073c4b415d60ade18de32e43efc2914731e03d",
      "network": "ETHEREUM",
      "keyPairId": "fdc9f5a0-698c-4163-ab21-df85f343a2a4",
      "reference": "AssetPoolTwo",
      "assetPoolId": "2be1cc9c-a5af-47e2-9dba-b7b82317e600"
    },
    "sources": [
      {
        "amount": "0.199630313934810125",
        "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9"
      }
    ],
    "createdAt": "2024-06-05T20:40:31.479Z",
    "reference": "consolidation-ETH-018fea20-a69e-7cc5-8066-f8d03362e797",
    "updatedAt": "2024-06-05T20:40:34.531163Z",
    "destinations": [
      {
        "amount": "0.199630313934810125",
        "address": "0x96073c4b415d60ade18de32e43efc2914731e03d"
      }
    ]
  }
}
{
  "event": "layer1:digital:consolidation:status-change",
  "timestamp": "2024-06-05T20:40:37.022040178Z",
  "data": {
    "id": "018fea21bff771e791d51a34af5c59b78e1fcdb58edc49b792891c41c5bcd8186f",
    "hash": "0xc12e1f147b72e697469e24a5caadac1f4cf938cb7d40187eef3612746eb6b53e",
    "type": "CONSOLIDATION",
    "asset": "ETH",
    "amount": "0.199630313934810125",
    "status": "UNCONFIRMED",
    "address": {
      "id": "8e1fcdb5-8edc-49b7-9289-1c41c5bcd818",
      "address": "0x96073c4b415d60ade18de32e43efc2914731e03d",
      "network": "ETHEREUM",
      "keyPairId": "fdc9f5a0-698c-4163-ab21-df85f343a2a4",
      "reference": "AssetPoolTwo",
      "assetPoolId": "2be1cc9c-a5af-47e2-9dba-b7b82317e600"
    },
    "sources": [
      {
        "amount": "0.199941204015171125",
        "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9"
      }
    ],
    "createdAt": "2024-06-05T20:40:31.479Z",
    "reference": "consolidation-ETH-018fea20-a69e-7cc5-8066-f8d03362e797",
    "updatedAt": "2024-06-05T20:40:36.987028Z",
    "destinations": [
      {
        "amount": "0.199630313934810125",
        "address": "0x96073c4b415d60ade18de32e43efc2914731e03d"
      }
    ],
    "networkDetail": {
      "fee": {
        "asset": "ETH",
        "amount": "0.000310890080361"
      },
      "block": {
        "number": 6046670,
        "timestamp": "2024-06-05T20:40:36Z"
      }
    }
  }
}
{
  "event": "layer1:digital:consolidation:status-change",
  "timestamp": "2024-06-05T20:41:27.295882772Z",
  "data": {
    "id": "018fea21bff771e791d51a34af5c59b78e1fcdb58edc49b792891c41c5bcd8186f",
    "hash": "0xc12e1f147b72e697469e24a5caadac1f4cf938cb7d40187eef3612746eb6b53e",
    "type": "CONSOLIDATION",
    "asset": "ETH",
    "amount": "0.199630313934810125",
    "status": "CONFIRMED",
    "address": {
      "id": "8e1fcdb5-8edc-49b7-9289-1c41c5bcd818",
      "address": "0x96073c4b415d60ade18de32e43efc2914731e03d",
      "network": "ETHEREUM",
      "keyPairId": "fdc9f5a0-698c-4163-ab21-df85f343a2a4",
      "reference": "AssetPoolTwo",
      "assetPoolId": "2be1cc9c-a5af-47e2-9dba-b7b82317e600"
    },
    "sources": [
      {
        "amount": "0.199941204015171125",
        "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9"
      }
    ],
    "createdAt": "2024-06-05T20:40:31.479Z",
    "reference": "consolidation-ETH-018fea20-a69e-7cc5-8066-f8d03362e797",
    "updatedAt": "2024-06-05T20:41:27.268151Z",
    "destinations": [
      {
        "amount": "0.199630313934810125",
        "address": "0x96073c4b415d60ade18de32e43efc2914731e03d"
      }
    ],
    "networkDetail": {
      "fee": {
        "asset": "ETH",
        "amount": "0.000310890080361"
      },
      "block": {
        "number": 6046670,
        "timestamp": "2024-06-05T20:40:36Z"
      }
    }
  }
}
{
  "event": "layer1:digital:consolidation:status-change",
  "timestamp": "2024-06-05T20:41:27.398050688Z",
  "data": {
    "id": "018fea21bff771e791d51a34af5c59b7d18a869f191944a09e5e784d7ca8f45a69",
    "hash": "0xc12e1f147b72e697469e24a5caadac1f4cf938cb7d40187eef3612746eb6b53e",
    "type": "CONSOLIDATION",
    "asset": "ETH",
    "amount": "0.199941204015171125",
    "status": "SUCCESS",
    "address": {
      "id": "d18a869f-1919-44a0-9e5e-784d7ca8f45a",
      "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9",
      "network": "ETHEREUM",
      "keyPairId": "44cf54df-93e9-4dd9-84c9-e96f0cf90f3e",
      "reference": "First Eth Address",
      "customerId": "customerOne",
      "assetPoolId": "2be1cc9c-a5af-47e2-9dba-b7b82317e600"
    },
    "sources": [
      {
        "amount": "0.199941204015171125",
        "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9"
      }
    ],
    "createdAt": "2024-06-05T20:40:31.479Z",
    "reference": "consolidation-ETH-018fea20-a69e-7cc5-8066-f8d03362e797",
    "updatedAt": "2024-06-05T20:41:27.375074Z",
    "destinations": [
      {
        "amount": "0.199630313934810125",
        "address": "0x96073c4b415d60ade18de32e43efc2914731e03d"
      }
    ],
    "networkDetail": {
      "fee": {
        "asset": "ETH",
        "amount": "0.000310890080361"
      },
      "block": {
        "number": 6046670,
        "timestamp": "2024-06-05T20:40:36Z"
      }
    }
  }
}

At the final point of getting the SUCCESS webhook, the deposit has been successfully received by the asset pool. This triggers an automatic consolidation round, which transfers the funds to a central master wallet that pools all the funds for future use.

Now that the central wallet address exists, the consolidation can be triggered, which will send out a series of consolidation webhooks, which show the funds moving from the deposit address, 0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9, to the new central wallet under the destinations array, 0x96073c4b415d60ade18de32e43efc2914731e03d.

{
  "event": "layer1:digital:consolidation:status-change",
  "timestamp": "2024-06-05T20:40:31.722661928Z",
  "data": {
    "id": "018fea21bff771e791d51a34af5c59b7d18a869f191944a09e5e784d7ca8f45a69",
    "type": "CONSOLIDATION",
    "asset": "ETH",
    "amount": "0.20",
    "status": "<STATUS>",
    "address": {
      "id": "d18a869f-1919-44a0-9e5e-784d7ca8f45a",
      "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9",
      "network": "ETHEREUM",
      "keyPairId": "44cf54df-93e9-4dd9-84c9-e96f0cf90f3e",
      "reference": "First Eth Address",
      "customerId": "customerOne",
      "assetPoolId": "2be1cc9c-a5af-47e2-9dba-b7b82317e600"
    },
    "sources": [
      {
        "amount": "0.20",
        "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9"
      }
    ],
    "createdAt": "2024-06-05T20:40:31.479Z",
    "reference": "consolidation-ETH-018fea20-a69e-7cc5-8066-f8d03362e797",
    "updatedAt": "2024-06-05T20:40:31.692479Z",
    "destinations": [
      {
        "amount": "0.20",
        "address": "0x96073c4b415d60ade18de32e43efc2914731e03d"
      }
    ]
  }
}

Further webhooks will be sent, showing the funds have been moved from the source address to the destination address.

{
  "event": "layer1:digital:balance:updated",
  "timestamp": "2024-06-05T20:41:27.341091297Z",
  "data": {
    "reference": "First Eth Address",
    "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9",
    "asset": "ETH",
    "funds": [
      {
        "type": "AVAILABLE",
        "balance": "0.000058795984828875",
        "delta": "0.000058795984828875"
      },
      {
        "type": "BLOCKCHAIN",
        "balance": "0.000058795984828875",
        "delta": "-0.199941204015171125"
      },
      {
        "type": "RESERVED",
        "balance": "0.00",
        "delta": "-0.20"
      }
    ]
  }
}

{
  "event": "layer1:digital:balance:updated",
  "timestamp": "2024-06-05T20:41:27.349393331Z",
  "data": {
    "reference": "AssetPoolTwo",
    "address": "0x96073c4b415d60ade18de32e43efc2914731e03d",
    "asset": "ETH",
    "funds": [
      {
        "type": "AVAILABLE",
        "balance": "0.199630313934810125",
        "delta": "0.199630313934810125"
      },
      {
        "type": "BLOCKCHAIN",
        "balance": "0.199630313934810125",
        "delta": "0.199630313934810125"
      },
      {
        "type": "RESERVED",
        "balance": "0.00",
        "delta": "0.00"
      }
    ]
  }
}