Skip to main content

FAQ

Welcome to Vezgo’s Frequently Asked Questions! Whether you're a developer exploring the possibilities of financial technology or a business seeking seamless integration with crypto exchanges (CEXs) and Wallets, find answers to common queries about Vezgo’s robust API solutions here.

How long does it take to sync a CEX account or wallet?

Positions and balances are updated immediately within 30 seconds of connection. The transaction is the step that takes more time depending on the number of transactions to synchronize. We recommend using the webhook to know when the sync is complete.

The best way to use Vezgo is to immediately show your users' positions and balances while displaying a message or icon that mentions that transactions are loading in the background. When the Sync transaction status changes to ok, you can display the transactions.

To view the balance immediately, start a connection and do a polling up to 30 seconds with an interval of 5 seconds each. Once you see a value in the Accounts & Balances array, you can display it and wait for transactions until the full synchronization is completed.

The polling should be done for account this endpoint: Get Account

What is the status_details field?

The Status and Status Details fields show the detailed sync status of the last sync, and is updated when the entire sync is complete. The subfields include wallets, balances, and transactions. When you connect your account, it is normal for it to still be in a syncing status after a few minutes, as these fields are not yet updated even though the wallet & balances are synced.

The status_details field is not dynamic. Its utility was to tell us the detailed status of the last sync, i.e. which steps were successful & on which retry/error came.

All or some transactions are missing from my Wallet or CEX account.

Start by making sure you are using from/to parameters, pagination and respecting the hard limit of 6MB response size for transactions. Usually, it's caused by one of three things:

Missing from parameter. By default, only data for the current year is returned. You need to make sure to pass the from parameter;

Missing API key permissions. Sometimes API key could have permission to fetch balances and positions, but not for transactions. This won’t result in an error, but you will not receive any transaction data. Please check the API key permissions.

Make sure you are using pagination to fetch all the transactions.You can use limit param to decide the chunk size & last param to pass the ID of last fetched transaction. Here is an example of pagination implementation using our JS SDK link.

If you confirm that both from parameter and API key permissions are set correctly & you are using pagination, please escalate this to our team who will investigate the account in trouble.

When I call sync, I get an empty balances array.

Because /sync is an asynchronous endpoint, what you see in the response is an in-progress snapshot of the state of the account, indicated by the "syncing" status.

You must wait for the synchronization to complete, which is indicated by the ok status. This usually takes a few seconds or minutes. Alternatively, you can wait for a SyncAccount webhook and then call GET /accounts/:id to get an up-to-date information, which would also include positions, as they should be synced by that moment.

Why do we get a different number of transactions when connecting the same account?

Some connectors have limits on the number of transactions per sync (either a number or a time span).

For example, some CEX connectors only retrieve 1 year of transactions per sync, while some blockchain connectors are limited to 5-10k transactions per sync (you can find more details on the providers page).

What is the difference between a manual sync and a regular API call?

Manual syncs retrieve the latest data directly from the connected sources. To get the most recent transactions, you can perform a manual sync.

API calls only access data stored in our database. If you have not triggered a manual sync, this information is from the last time we synced this account. This is usually done daily via the daily sync.

How do I get the latest transactions?

To get the most recent transactions, you can perform a manual sync. Manual syncs retrieve the latest data directly from the connected sources, rather than relying on API calls that may only access data stored in our database.

Here's the link it the docs; Vezgo Docs

Are there any limits on manual syncs?

The number of manual syncs you can perform per client is limited based on the plan you select. Each plan has a different allocation of manual syncs to ensure optimal performance and resource utilization. Each time you trigger a sync, it counts as a single sync credit. The total number of sync credits available applies to all connected accounts.

For more information on the specific limitations for each plan, please visit our pricing page or contact our team.

Why can't I add large (whale) wallets?

This is done intentionally to prevent abuse that would degrade our ability to maintain consistent daily sync performance for all users. Normal users don't have millions of transactions in their wallets.

We limit wallet import to up to 1,000,000 transactions and up to 10,000 internal transactions.

More than 250K transactions is considered large. We parse all transactions and enhance the data, add fiat equivalents and such. These operations have a significant cost to perform. If you are testing, we recommend using small wallets (in terms of transactions).

You can use explorers to find random addresses to test against. These explorers, such as Etherscan, usually show the number of transactions in the wallet.

If your use case is for large wallets with 250K+ transactions most of the time, we recommend you contact the team and see if we can come up with a special plan for you.

Why does a connector take a long time to sync?

Most connectors take a few seconds to sync. Some (such as Binance and Coinbase) have certain API design limitations that cause us to make hundreds or thousands of requests to sync a single account, which combined with rate limits leads to longer sync times, but no longer than a few minutes. Some of these issues should be partially resolved with the introduction of real-time data, which is already available for the Binance connector. To get access to it, please contact our team.

Billing: Since a user can be connected and then disconnected, how are connections per month measured?

A connection is counted and considered active if it has synced at least 1 time in a month. After the month is over, we look at the number of connections that have synced at least 1 time in the previous month.

On which chains do you support internal transactions? Are there any restrictions?

We offer it on the major EVM chains: Ethereum, Avalanche, BSC, Fantom, Polygon, and Cronos for now.

The limit is 10,000 internal transactions max, and we get all the types we know to exist.

What authentication types do you support?

The authentication type column in our integration list refers to the method used to access data from the exchanges, blockchains, and wallets. Here's a brief explanation of each authentication type:

  • Token: Also known as API, this method requires an API token or key to access the data. The user generates the token from the exchange or platform and provides it to our API for authentication.

  • Wallet: For wallet + blockchain integrations, users need to provide their wallet address to access the data. We do not require any private keys or sensitive information. Our API fetches the public data available on the blockchain for the provided wallet address.

  • OAuth: OAuth (Open Authorization) is a standard that allows secure and limited access to a user's data without sharing their credentials. In this case, users will be redirected to the exchange or platform's authorization page, where they grant our API access to their data. Once authorized, our API receives an access token to fetch the required data.

  • Credentials: This method involves providing the user's login credentials (such as username and password) to access their data. We use a secure and encrypted process to handle the credentials, ensuring data privacy and security. We always try to avoid building credential connectors, but sometimes we have no choice due to exchange restrictions.

Is there a way to detect if the same account has been linked twice by different users (across wallets and exchanges)?

For blockchain wallets, you can check account.wallets[].address . If two accounts have the same wallet address, they are duplicates.

For exchanges, in most cases, credentials are the only real unique identifier for an account. But the credentials are encrypted and not exposed, so it is not possible to find duplicate exchange accounts. In some cases, the exchange will provide us with some unique identifier for the account (such as the custodian account number), and it will also be in account.wallets[].address for you to use.

How are fiat values calculated for transactions?

When the CEX/Blockchain returns an already calculated fiat value, we usually return it as it is. When they don't, we use our market data API to fetch the fiat value on date X. If the end result is null, it's one of 3 reasons:

  • A missing symbol in our Market Data API. It possible that we do not support this coin (it could be a scam token) or it could be a coin that we plan to add support for;

  • No rate for that particular symbol on date X (very rare, either we support a coin or we don't);

  • A temporary network error occurred when calling the Market Data API.

We welcome reports of null fiat values, regardless of the reason, as they can help us continually improve our systems.

I trigger a sync, and get back status 202 "syncing".

When synchronization is complete, the status changes to ok if it was successful. You can check the account status until it shows ok. We strongly recommend that you use webhooks to be notified when the sync status is now ok.

Please find the webhook documentation here.

You can also get further details :

"status_details": {
"date": "2022-07-14T12:51:29.370Z",
"wallets": "ok",
"balances": "ok",
"transactions": "ok",
}
  • Date shows you the last time it was successfully synced;

  • Wallet, Balances & Transactions will give you details if there was an error updating some data.

We sync 3 types of data: wallet balances, token balances, and transactions. Each has its own status.

How will I know when the sync is complete and the data is ready?

You can configure a webhook to receive an alert. This is a paid feature. Please find the webhook documentation here.

Connect Flow Customization

Dark Theme Option

&theme=dark

In order to use the Vezgo Connect Dark Theme, simply add a &theme=dark argument when you redirect to the Connect flow.

Simple List Option

&providers_per_line=2

By default, Vezgo Connect will show the list of providers in two columns. You can get a clean 1 provider per line list by simply using &providers_per_line=2 as an argument when you redirect to the Vezgo Connect flow.

Provider selection screen customization

You can fully customize the provider selection screen by implementing your own user interface (within your application) that redirects your users to Vezgo Connect for the preselected provider.

Your provider selection screen can even include multiple data providers or some connections your own team develops. From this selection provider screen, you will redirect your users to a preselected provider within the Vezgo Connect flow.

  • To start widget flow you would use user.connect().

  • To start redirect flow you would use user.getConnectData(). getConnectData is used to fetch Connect URL and token

Can I use the Vezgo API if there isn't an SDK available for my programming language?

Yes, you can still use the Vezgo API even if we don't currently offer an SDK for your specific programming language. While our JavaScript SDKs for front-end (Web, React Native) and back-end (Node.js) streamline the integration process, they are not required to use the Vezgo API. You can call the API endpoints directly from your application in any programming language and implement the functionality you need. The SDKs are provided as a convenience to make integration easier, but are not a strict requirement.

We offer the direct API with our Enterprise Plan. Please contact our team to learn more.