Internal transfers are movements of funds between accounts, wallets, or exchange balances that belong to the same entity. Cryptoworth can automatically tag these transactions as internal transfers when the related transactions can be matched during or after a sync.
When Cryptoworth Tags Internal Transfers
Cryptoworth identifies internal transfers in two main ways:
During sync, when the connector or blockchain-specific logic can identify the transfer immediately.
After sync, when Cryptoworth compares transactions across connected wallets and exchanges in the same portfolio.
The matching logic depends on the transfer type.
Wallet-to-Wallet Transfers
Wallet-to-wallet internal transfers are usually detected when funds move between two wallets that are both connected to the same portfolio.
After each sync, Cryptoworth compares the send and receive sides of the movement. A transfer is typically tagged as internal when the following details match:
From and to addresses
Transaction ID
Timestamp
Amount
Asset
Direction, such as send and receive
Portfolio
For example, if Wallet A sends 50 USDC to Wallet B, and both wallets are connected to the same Cryptoworth portfolio, Cryptoworth can match the outgoing transaction from Wallet A with the incoming transaction to Wallet B and tag both as an internal transfer.
Wallet Transfers Detected During Sync
Some wallet transfers can be detected during the sync process itself. This may happen for certain EVM-based chains or blockchain-specific transaction patterns, including:
Bridge transactions between chains where the source and destination wallets belong to the same entity.
Transactions where the origin and destination address are the same.
Other chain-specific cases where Cryptoworth can identify the internal movement directly from the synced transaction data.
In bridge transactions, the sent and received amounts may differ slightly because of fees.
Exchange-to-Wallet Transfers
Exchange-to-wallet transfers are also evaluated after sync when the exchange account and wallet are connected to the same portfolio.
Cryptoworth compares transaction details such as:
Transaction ID
Timestamp
Amount
Asset
Direction
Portfolio
Unlike wallet-to-wallet matching, exchange transactions often do not include reliable from and to addresses. Because of this, from and to addresses are usually not required for exchange-to-wallet internal transfer detection.
Exchange Transfers Detected During Sync
Some exchange transactions are automatically marked as internal during sync based on the transaction category provided by the exchange.
Examples include:
Transfers between a Binance Funding Wallet and Spot Wallet.
Transfers between a parent account and sub-account.
Other exchange-side transfer types that represent movement within the same entity rather than an external deposit or withdrawal.
Exchange-to-Exchange Transfers
Exchange-to-exchange internal transfers are less common. When they occur, Cryptoworth uses similar matching details, such as transaction ID, timestamp, asset, amount, direction, and portfolio, to determine whether the two sides of the transfer belong together.
Examples
Example 1: Matching Wallet-to-Wallet Transfer
If Wallet A sends 50 USDC to Wallet B, and both wallets are connected to Portfolio 100, the outgoing and incoming transactions can be tagged as internal when the transaction details match.
Wallet | Direction | Amount | Asset | Portfolio | Internal Transfer |
Wallet A | Send | 50 | USDC | 100 | Yes |
Wallet B | Receive | 50 | USDC | 100 | Yes |
Example 2: Amounts Do Not Match
If Wallet A sends 20 USDC but Wallet B receives 50 USDC, Cryptoworth will not tag the pair as an internal transfer because the amounts do not match within the allowed tolerance.
Wallet | Direction | Amount | Asset | Portfolio | Internal Transfer |
Wallet A | Send | 20 | USDC | 100 | No |
Wallet B | Receive | 50 | USDC | 100 | No |
Example 3: Different Portfolios
If the send and receive sides are in different portfolios, Cryptoworth will not tag them as an internal transfer.
Wallet | Direction | Amount | Asset | Portfolio | Internal Transfer |
Wallet A | Send | 50 | USDC | 100 | No |
Wallet B | Receive | 50 | USDC | 200 | No |
Example 4: Missing Connected Wallet
If Wallet C sends funds to Wallet B, but Wallet C is not connected to the same portfolio, Cryptoworth may not tag the movement as internal. To tag this type of transfer, connect the missing wallet to the portfolio and sync again.
Time Gap Settings
The send and receive sides of an internal transfer may not always appear at the exact same time. This is common when a transaction takes time to process on-chain or through an exchange.
Cryptoworth uses an internal transfer detection time gap to decide how far apart the send and receive transactions can be while still being considered a match.
The default time gap is 5 minutes.
Admins can configure this setting in:
Settings > Entity Settings > Internal Transfers
If two matching transactions are outside the configured time gap, Cryptoworth may not tag them as internal.
Amount Difference Tolerance
In some blockchain transactions, especially bridge transactions, the sent and received amounts may differ slightly because of network fees or chain-specific logic.
Cryptoworth allows a small amount difference when matching internal transfers. This tolerance is not configurable by users and is currently set to:
0.0000000001
If the amount difference is larger than the allowed tolerance, the transfer may not be tagged as internal.
What To Check If a Transfer Is Not Tagged as Internal
If a transaction was not tagged as an internal transfer, check the following:
Confirm that both wallets or exchange accounts are connected to the same portfolio.
Confirm that the send and receive transactions use the same asset.
Confirm that the amounts match, or differ only by a very small fee or tolerance amount.
Confirm that the transaction timestamps are within the configured internal transfer detection time gap.
For wallet transfers, confirm that the from and to addresses match the connected wallets.
For exchange transfers, confirm that the exchange account is connected and fully synced.
If a wallet is missing from the portfolio, connect it and sync again.
Notes
Wallet-to-wallet detection relies heavily on from and to addresses.
Exchange-to-wallet detection may not use from and to addresses because exchanges often do not provide them.
Some EVM, bridge, and exchange-category transactions can be tagged during sync without waiting for post-sync matching.
Fee transactions are not treated the same way as the main internal transfer movement.